gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:45:54 24 4
gpt4 key购买 nike

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

我使用的标志如下:

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

当我查看输出 Markdown 文件时,它有换行符分隔每个列表项。文档将其定义为 loose list比如下面这个。

- one

- two

- three

我想为如下所示的输出使用紧凑列表

- one
- two
- three

是否有使 pandoc 输出紧凑列表的标志?

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

最佳答案

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

下面的 Lua 程序就是这样做的。保存并用作 Lua filter :pandoc -t markdown --lua-filter the-filter.lua your-document.docx(需要 pandoc 2.1 或更高版本):

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
}}

如果一个人更喜欢 Haskell 而不是 Lua,也可以将下面的过滤器与 pandoc -t markdown --filter the-filter.hs your-document.docx 一起使用:

import Text.Pandoc.JSON

main = toJSONFilter compactifyList

compactifyList :: Block -> Block
compactifyList blk = case blk of
(BulletList items) -> BulletList $ map compactifyItem items
(OrderedList attrbs items) -> OrderedList attrbs $ map compactifyItem items
_ -> blk

compactifyItem :: [Block] -> [Block]
compactifyItem [Para bs] = [Plain bs]
compactifyItem item = item

如果 Lua 和 Haskell 都不是一个选项,那么使用 Python 过滤器也是可能的。参见 pandoc 的 filters详情页面。

关于markdown - 从 docx 转换为 markdown 时使用紧凑列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com