从docx转换为markdown时使用紧凑列表

时间:2016-09-19 15:23:37

标签: markdown docx pandoc

我在Windows上使用pandoc将.docx文件转换为.md文件。

我使用的标志如下:

pandoc --wrap none --to markdown_github --output fms.md "FMS.docx"

当我查看输出降价文件时,它有分隔每个列表项的换行符。文档将此定义为loose list,例如下面的那个。

- one

- two

- three

我想使用压缩列表作为输出,如下所示。

- one
- two
- three

是否有一个标志可以使pandoc输出一个紧凑的列表?

如果没有,我如何使用滤波器来实现所需的输出?

1 个答案:

答案 0 :(得分:2)

没有标志可以实现这一点,但是有一个使用pandoc的过滤器功能的简单解决方案。在内部,列表项表示为块列表;如果所有块项仅包含Makefile块,则列表是紧凑的。如果所有项目只包含一个段落,则只需将项目块的类型从Plain段落)更改为Para即可。

下面的Lua程序就是这么做的。保存并将其用作Lua filterPlain(需要pandoc 2.1或更高版本):

pandoc -t markdown --lua-filter the-filter.lua your-document.docx

如果有人喜欢Haskell而不是Lua,那么也可以使用local List = require 'pandoc.List' function compactifyItem (blocks) return (#blocks == 1 and blocks[1].t == 'Para') and {pandoc.Plain(blocks[1].content)} or blocks end function compactifyList (l) l.content = List.map(l.content, compactifyItem) return l end return {{ BulletList = compactifyList, OrderedList = compactifyList }} 下面的过滤器:

pandoc -t markdown --filter the-filter.hs your-document.docx

使用Python过滤器也是可能的,以防Lua和Haskell都不是一个选项。有关详细信息,请参阅pandoc的filters页面。