我正在尝试在Markdown中创建一个列表。正如我在一些文档中所读到的,如果我编写以下Markdown代码:
My list
* first item
* second item
* third item
Not in the list
得到的结果与用HTML编写的结果相同:
<p>My list</p>
<li>
<ul>first item</ul>
<ul>second item</ul>
<ul>third item</ul>
</li>
<p>Not in the list</p>
我使用Atom作为编辑器及其Markdown预览器,一切正常,但是当我使用pandoc
转换Markdown文件时,如下所示:
pandoc test.md -o test.odt
这是我得到的:
My list * first item * second item * third item
Not in the list
我在哪里做错了?
答案 0 :(得分:2)
有两种可能的解决方案:
在段落和列表之间添加空白行(如注释中提到的@melpomene)。
My list
* first item
* second item
* third item
Not in the list
留空行,并告诉Pandoc使用commonmark
作为input format,而不是默认值markdown
。
pandoc -f commonmark -o test.odt test.md
“问题”是Atom编辑器使用CommonMark解析器,并且默认情况下,Pandoc使用老式的Markdown解析器,该解析器主要遵循these rules和参考实现(markdown.pl
)。实际上,Commonmark spec特别承认了这种差异:
在CommonMark中,列表可以中断段落。也就是说,没有空白 需要一行来将段落与以下列表分开:
Foo - bar - baz <p>Foo</p> <ul> <li>bar</li> <li>baz</li> </ul>
Markdown.pl
不允许这样做,因为担心会触发列表 通过硬线中的数字:The number of windows in my house is 14. The number of doors is 6.
如果您希望工具之间有共同的行为,则只需要使用遵循相同行为的工具即可。