从docx转换为markdown时使用压缩列表

从docx转换为markdown时使用压缩列表,markdown,docx,pandoc,Markdown,Docx,Pandoc,我正在Windows上使用pandoc将.docx文件转换为.md文件 我使用的标志如下所示: pandoc --wrap none --to markdown_github --output fms.md "FMS.docx" 当我查看输出标记文件时,它有分隔每个列表项的新行。文档将其定义为如下所示的 - one - two - three - one - two - three 我想为输出使用一个紧凑的列表,例如下面的列表 - one - two - three - one

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

我使用的标志如下所示:

pandoc --wrap none --to markdown_github --output fms.md "FMS.docx"
当我查看输出标记文件时,它有分隔每个列表项的新行。文档将其定义为如下所示的

- one

- two

- three
- one
- two
- three
我想为输出使用一个紧凑的列表,例如下面的列表

- one

- two

- three
- one
- two
- three
是否有标志使pandoc输出成为紧凑列表


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

没有标志来实现这一点,但有一个简单的解决方案使用pandoc的过滤器功能。在内部,列表项表示为块列表;如果所有块项仅由
Plain
块组成,则列表是紧凑的。如果所有项目仅包含一个段落,则将项目块的类型从
段落
(对于段落)更改为
普通

下面的Lua程序就是这样做的。将其保存并用作:
pandoc-t标记--lua filter the-filter.lua您的文档.docx
(需要pandoc 2.1或更高版本):

local List=需要“pandoc.List”
函数项(块)
返回(#blocks==1和blocks[1]。t==Para)
和{pandoc.Plain(块[1].content)}
或块
结束
函数压缩列表(l)
l、 content=List.map(l.content,compactifyItem)
返回l
结束
返回{{
BulletList=compactifyList,
OrderedList=compactifyList
}}
如果您更喜欢Haskell而不是Lua,也可以将下面的过滤器与
pandoc-t markdown一起使用--过滤-filter.hs您的文档.docx

import Text.Pandoc.JSON
main=toJSONFilter compactifyList
compactifyList::Block->Block
compactifyList blk=案例blk
(BulletList项目)->BulletList$map CompactifyItems项目
(OrderedList attrbs items)->OrderedList attrbs$map CompactifyItems
_->blk
compactifyItem::[Block]->[Block]
compactifyItem[段落bs]=[普通bs]
compactifyItem=项目

如果Lua和Haskell都不是选项,那么使用Python过滤器也可以实现同样的效果。有关详细信息,请参见pandoc的页面。

没有实现这一点的标志,但有一个使用pandoc的过滤功能的简单解决方案。在内部,列表项表示为块列表;如果所有块项仅由
Plain
块组成,则列表是紧凑的。如果所有项目仅包含一个段落,则将项目块的类型从
段落
(对于段落)更改为
普通

下面的Lua程序就是这样做的。将其保存并用作:
pandoc-t标记--lua filter the-filter.lua您的文档.docx
(需要pandoc 2.1或更高版本):

local List=需要“pandoc.List”
函数项(块)
返回(#blocks==1和blocks[1]。t==Para)
和{pandoc.Plain(块[1].content)}
或块
结束
函数压缩列表(l)
l、 content=List.map(l.content,compactifyItem)
返回l
结束
返回{{
BulletList=compactifyList,
OrderedList=compactifyList
}}
如果您更喜欢Haskell而不是Lua,也可以将下面的过滤器与
pandoc-t markdown一起使用--过滤-filter.hs您的文档.docx

import Text.Pandoc.JSON
main=toJSONFilter compactifyList
compactifyList::Block->Block
compactifyList blk=案例blk
(BulletList项目)->BulletList$map CompactifyItems项目
(OrderedList attrbs items)->OrderedList attrbs$map CompactifyItems
_->blk
compactifyItem::[Block]->[Block]
compactifyItem[段落bs]=[普通bs]
compactifyItem=项目
如果Lua和Haskell都不是选项,那么使用Python过滤器也可以实现同样的效果。有关详细信息,请参见pandoc的页面