PandocでMarkdownからHTMLに変換すると箇条書きのネストが反映されない
TL;DR
PandocでMarkdownからHTMLに変換した際、箇条書きのネストが反映されない(全てフラットになってしまう)原因は、Pandocが空白4つのインデントを期待しており、空白2つのインデントを無視するから。
問題
VSCodeでMarkdown文書を書いてみる。こんな感じ。
# This is test
* test
* test1
* test2
プレビュー画面を見ても、問題ない。
しかし、Pandocで変換するとネストが消えてしまう。
$ pandoc -s test.md -o test.html
原因
原因は、Pandocがリストのインデントとして「空白4つ」をデフォルトにしているから。なので、空白4つで書けば良いのだが、そうするとmarkdownlintに怒られてしまう。VSCodeでMarkdown文書を書く時、markdownlintを入れている人は多いと思う。このmarkdownlintのデフォルトのインデントが「空白2つ」になっている。なので空白4つにすると怒られる。
解決策
解決策は簡単で、markdownlintの設定を「インデントは空白4つ」にすれば良い。適当な場所に.markdownlint.json
を書けば良い。
{
"MD007": {
"indent": 4
}
}
まとめ
markdownlintのインデントのデフォルトが2、pandocが4で、pandocに「インデント2」の箇条書きを食わせても何もメッセージを出さないため、ネストした箇条書きがフラットになっていることにしばらく気がつかない人もいるんじゃないかと思う(例えば私)。他の人が同じミスをしないように、ここに経験を供養しておきます。
ちなみにmarkdownlintのissueでもインデントを2にするか4にするか議論になってるみたいですね。→MD007: default value of 2 vs. 4 spaces
Author And Source
この問題について(PandocでMarkdownからHTMLに変換すると箇条書きのネストが反映されない), 我々は、より多くの情報をここで見つけました https://qiita.com/kaityo256/items/ea651436e338d79059e4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .