2017-04-19 76 views
2

我有一個自述文件,其中有六個列表。Github中的列表項之間出現額外的行Markdown

一切正常,直到倒數第二個清單。問題是這些列表項之間會出現額外的換行符。這將是更清晰了截圖:

enter image description here

我用崇高的文本降價預覽包,我看到相同的格式問題,如果我預覽使用Github的降價預處理。

什麼是最奇怪的,不過,是我沒有看到同樣的問題,如果我輸入我的文字爲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

您的第一個列表是「緊密」列表,而第二個列表是「鬆散」列表,因爲它包含列表項中的一個代碼塊。如果您希望列表匹配,請爲兩者使用相同的類型。在第一個列表中的項目之間添加一個空行會使它們匹配。作爲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>標籤(包括第一項)中。雖然該示例使用了段落,但這同樣適用於任何塊級別的構造,包括示例中的代碼塊。

您還可以通過在列表項之間添加空行來強制列表成爲「鬆散」列表。例如,該列表:

* line 1 

* line 2 

結果在這個HTML:

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

因此,如果你在你的第一個列表中添加至少兩個項目之間的空行,這兩個名單將始終是在它們之間顯示一些空白空間。

<p>標籤中的列表項目內容包裝爲空白的原因在於,頁面樣式(CSS)爲<p>標籤定義了填充和/或邊距。人們可以編輯CSS來在他們自己的站點上刪除這個填充/邊距,但是在第三方主機上,這通常不是一種選擇。

至於爲什麼有些工具似乎沒有表現出這種行爲;這可能是因爲它們具有默認的CSS樣式,這會導致兩種類型的列表看起來相同(例如,StackOverflow會這樣做)。另一種可能是他們使用的是老式的Markdown解析器,而不是更新的CommonMark規範(GitHub使用的)。最初的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

相關問題