2017-04-19 13 views
2

私は半ダースのリストを持つReadmeを持っています。Github Markdownのリスト項目の間に余分な行が表示される

すべては2番目から最後のリストまでうまく動作します。問題は、これらのリスト項目の間に余分な改行が表示されることです。これは、スクリーンショットをより明確になります:私は崇高なテキストでMarkdownをプレビューパッケージを使用していると私はGithubのMarkdownをプリプロセッサを使用してプレビューする場合、私は同じ書式の問題を参照してください

enter image description here

最も奇妙な何、しかし、あなたは次の文字列を使用して、自分を試してみたい場合は、私がhttps://jbt.github.io/markdown-editor

に私のテキストを入力する場合、私は同じ問題が表示されないということです。

_git_ 

- **gl**: `git log <optional args>` _shows the revision history_ 
- **gpoh**: `git push origin head` _pushes the current branch_ 
- **gpom**: `git push origin master` _pushes the master branch_ 
- **grv**: `git remote -v` _lists the remotes_ 
- **gs**: `git status` _shows unstaged & staged changes_ 
- **gacm**: `git add -A; git commit -m "<message>"` _commits all changes with a message_ 
- **gacm-lfs**: `sudo git add -A; sudo git commit -m <message>` _it might not be this way for everyone, 
    but for me `sudo git` uses git-lfs (git large filesystem) while `git` uses regular git. This function 
    adds and commits all files with a message in a git-lfs repo._ 
- **gc**: `git checkout <branch>` _changes branches_ 
- **gclo**: `git clone <repo>` _clones a repo_ 
- **get_branch**: `git branch -f origin/<branch>; git checkout <branch>` _gets a specific branch from a remote repo_ 

_fish meta functions_ 

- **backup_functions**: `cd ~/.config/fish/functions; git add -A; git commit -m "<message>"; git push origin master; cd -` _backups the functions folder into a repo_ 
- **cdfns**: `cd ~/.config/fish/functions` _changes into the functions dir_ 
- **cfn**: `cat ~/.config/fish/functions/<name>.fish` _shows the definition of a function_ 
- **efn**: `nano ~/.config/fish/functions/<name>.fish` _edits a function's definition (using nano)_ 
- **fn**: `echo -e "function $argv[1]\n $argv[2]\nend" > ~/.config/fish/functions/$argv[1].fish` _create a function_ 
- **fns**: `ls ~/.config/fish/functions` _list functions_ 
- **rmfn**: `rm ~/.config/fish/functions/<name>.fish` _remove a function_ 
- **fndoc**: `echo -e "- <text>" >> ~/.config/fish/functions/README.md` _adds a line to the readme documenting a function_ 
- **fs**: `funcsave <name>` _alias for funcsave, e.g.:_ 

     function fs 
     funcsave $argv 
     end 
     fs fs 

答えて

2

最初のリストは「緊密」なリストですが、2番目のリストはリスト項目の1つにコードブロックが含まれているため「緩い」リストです。リストを一致させるには、両方に同じタイプを使用します。最初のリストの項目間に空白行を追加すると、一致するようになります。 specが説明するように:その構成リスト項目のいずれかを直接それらの間に空白行を有する2つのブロックレベル要素が含まれている場合、その構成リスト項目のいずれかが空行によって分離、又はている場合

リストが緩んでいます。さもなければ、リストは緊密です。 (HTML出力の差はタイト、リスト内の段落ではないながら、緩い、リスト内の段落は、<p>タグに包まれているということです。)簡単な例として

、このリスト:

* line 1 
* line 2 

このHTMLにレンダリングされます:このリスト一方

<ul> 
    <li>line 1</li> 
    <li>line 2</li> 
</ul> 

* line 1 
* line 2 

    a second block 
番目のリスト項目は複数の段落が含まれていることを

<ul> 
    <li> 
     <p>line 1</p> 
    </li> 
    <li> 
     <p>line 2</p> 
     <p>a second block</p> 
    </li> 
</ul> 

お知らせ:

は次のようにレンダリングされます。したがって、リスト項目の各段落は<p>タグで囲まれ、リストは「緩い」リストになります。一貫性を保つために、リスト内のすべてのアイテムは、<p>タグ(最初のアイテムを含む)でラップされます。この例では段落を使用していますが、例のコードブロックを含むブロックレベルの構造にも同じことが適用されます。

リスト項目間に空白行を追加することで、リストを強制的に「緩い」リストにすることもできます。たとえば、このリスト:このHTMLで

* line 1 

* line 2 

結果:あなたが最初のリスト内の項目のうちの少なくとも2つの間に空白行を追加する場合

<ul> 
    <li> 
     <p>line 1</p> 
    </li> 
    <li> 
     <p>line 2</p> 
    </li> 
</ul> 

したがって、両方のリストは一貫なりますそれらの間に空白を入れて表示されます。

<p>タグにリスト項目の内容をラップすると、ページのスタイル(CSS)が<p>タグのパディングおよび/または余白を定義しているためです。自分のサイトでこのパディング/マージンを削除するようにCSSを編集できますが、サードパーティのホストでは一般的にオプションではありません。

理由として、いくつかのツールでこの動作が発生していないようです。両方のタイプのリストが同じに見えるようにするデフォルトのCSSスタイルを持つことができます(StackOverflowはこれを実行します)。もう一つの可能​​性は、はるか新しいCommonMark仕様(GitHubが使用する)ではなく、旧式のMarkdownパーサーを使用していることです。元のMarkdown rulesには、緩いリストとタイトなリストという概念もありましたが、その動作は特別に定義されていないため、実装の違いは多少異なります。多くの人は参照実装に従い、空白行に隣接するリスト項目を「緩く」、他のすべての項目を「きつく」にしました。あなたの例では、最後の項目だけが「緩い」ものになりますが、リストの最後の項目であるため目立ちません。さまざまな実装の動作の比較については、Babelmarkを参照してください。

実装にかかわらず、「タイト」なリストが必要な場合は、常にそれを得る唯一の方法は、リスト項目のどこにも空白行を入れないことです。

  1. 明白な例外はリストを入れ子にすることだろうが、それでも、あなたは空白行を(exampleを参照)を回避する必要があります:それはあなたが巣他のブロックレベルは、いくつかの非常に特定の例外を除いて、構築したことがないことを意味します。

    * parent item 
        * nested item 
        * Another nested item 
    * sibling of parent 
    * Another sibling of parent 
    
  2. ネストされたコードブロック又はBLOCKQUOTEは一部実装で入れ子にすることができ、それは、リスト項目の最初の行に開始し、空白行を含まない必要があります。

    * list item 
    *  A code block because it is indented appropriately 
    * > a blockquote 
    * a list item 
    

    このように、exampleのように、一部の実装でのみ動作します。注目すべきは、CommonMarkの実装です。言い換えれば、GitHub上で動作しますが、他のツールや他のサイトでは使用できません。

子供の段落、コードブロック、ブロッククォートが複数ある場合は、厳密なリストを作成することはできません。

+0

ありがとう、この区別を知らなかった。それが厳しいリストになるように強制する方法はありますか? –

+0

あなたのリストに空白行が全くない場合は、ブロックレベルの構造(コードブロックなし)がないことを意味します。 – Waylan

+0

最後に、いくつかの実装が異なる動作を示す理由についての説明を追加しました。 – Waylan

関連する問題