降价:列表转换得不好

时间:2019-02-04 21:09:18

标签: list markdown pandoc

我正在尝试在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

我在哪里做错了?

1 个答案:

答案 0 :(得分:2)

有两种可能的解决方案:

  1. 在段落和列表之间添加空白行(如注释中提到的@melpomene)。

    My list
    
    * first item
    * second item
    * third item
    
    Not in the list
    
  2. 留空行,并告诉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.

如果您希望工具之间有共同的行为,则只需要使用遵循相同行为的工具即可。