0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PandocでMarkdownからHTMLに変換すると箇条書きのネストが反映されない

Posted at

TL;DR

PandocでMarkdownからHTMLに変換した際、箇条書きのネストが反映されない(全てフラットになってしまう)原因は、Pandocが空白4つのインデントを期待しており、空白2つのインデントを無視するから。

問題

VSCodeでMarkdown文書を書いてみる。こんな感じ。

# This is test

* test
  * test1
  * test2

プレビュー画面を見ても、問題ない。

image.png

しかし、Pandocで変換するとネストが消えてしまう。

$ pandoc -s test.md -o test.html

image.png

原因

原因は、Pandocがリストのインデントとして「空白4つ」をデフォルトにしているから。なので、空白4つで書けば良いのだが、そうするとmarkdownlintに怒られてしまう。VSCodeでMarkdown文書を書く時、markdownlintを入れている人は多いと思う。このmarkdownlintのデフォルトのインデントが「空白2つ」になっている。なので空白4つにすると怒られる。

image.png

解決策

解決策は簡単で、markdownlintの設定を「インデントは空白4つ」にすれば良い。適当な場所に.markdownlint.jsonを書けば良い。

.markdownlint.json
{
  "MD007": {
    "indent": 4
  }
}

まとめ

markdownlintのインデントのデフォルトが2、pandocが4で、pandocに「インデント2」の箇条書きを食わせても何もメッセージを出さないため、ネストした箇条書きがフラットになっていることにしばらく気がつかない人もいるんじゃないかと思う(例えば私)。他の人が同じミスをしないように、ここに経験を供養しておきます。

ちなみにmarkdownlintのissueでもインデントを2にするか4にするか議論になってるみたいですね。→MD007: default value of 2 vs. 4 spaces

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?