リスト直後のリストが書きにくい
Markdownにおいて、個別のリストを連続して並べるのは少々厄介。
これから説明するけど解決法だけ求めてる人は一気に下までスクロールゴー。
リスト直後のリスト
次のように書くと、
Markdown:
1. Item1
2. Item2
1. Item-A
2. Item-B
こうなる。
Formatted:
- Item1
- Item2
-
Item-A
- Item-B
リスト直後の段落
リスト直後に段落(パラグラフ)を置いた場合も、期待しない結果になることがある。
Markdown:
1. Item1
2. Item2
上記のリストでは・・・
こうなる。
Formatted:
- Item1
- Item2
上記のリストでは・・・
少しわかりにくいかもしれなけど、『上記の~』の段落が、Item2の子としてフォーマッティングされている(ちなみに、『上記の~』段落は全角スペースで字下げしている)。
なぜか。
Markdown リスト構文の性質
リストアイテムを空行で分断する
If list items are separated by blank lines, Markdown will wrap the items in <p> tags in the HTML output.
Daring Fireball: Markdown Syntax Documentation
「もしリストアイテムが空行で分断された場合は<p>タグでラップする」とある。
最初の例(並んだリスト)では、”Item2″と”Item-A”との間に(リストを分断したつもりの)空行が存在する為、”Item2″と”Item-A”は<p>タグで括られ、続くリストはリストアイテム3、4としてフォーマッティングされる。”Item-A”と”Item-B”の間に空間が開くのは、”Item-A”が<p>タグで括られているため。
HTML:
- Item1
-
Item2
-
Item-A
- Item-B
リスト中の段落
List items may consist of multiple paragraphs. Each subsequent paragraph in a list item must be indented by either 4 spaces or one tab:
Daring Fireball: Markdown Syntax Documentation
「リスト項目は複数の段落で構成することができ、リスト項目の後続の各段落は4スペースまたはタブのいずれかでインデントしなければならない」とある。結局はこれも、リストアイテムを分断している。
こういう事。
Markdown:
1. Item1
2. Item2
リスト中の段落
3. Item3
Formatted:
- Item1
- Item2
リスト中の段落
-
Item3
HTML:
- Item1
-
Item2
リスト中の段落
-
Item3
段落については、字下げをしなければ「4スペースまたはタブのいずれかでインデントしなければならない」に合致しない(どうやら全角スペースはインデントとみなされているようだ)ため、リストは分断される。
けれど個人的には日本語の文章を書く場合、段落の先頭、段落中の改行後の先頭については、字下げしないと気分が悪い。
どうする?
解法:Wikipediaに書いてあった
WikipediaのMarkdownには、簡易的な構文サンプルが書いてあるけど、実はそこに実例が書いてあった。
* 順序無しリストのアイテム
* サブアイテムは4つのスペースでインデントする
* 順序無しリストの別のアイテム
<!-- dummy comment line for breaking list -->
1. 順序付きリストのアイテム
2. 順序付きリストの別のアイテム
要するに、分断したい個所(リストの終了)にHTMLのコメント記述をすることでリストを分断(終了)している。
これでOK。