Pandoc 是用来转换标记格式的 Haskell 库。也包含对应的命令行工具。

    Pandoc 能够转换多种标记格式和字符处理格式。包括但不限于多种 Markdown 格式,HTML 格式,LaTex 和 docx 格式。可以通过查看下面的 —from 和 —to 选项来查看支持的所有输入以及输出格式。Pandoc 也可以生成 PDF 文件,具体参见创建 PDF 章节。

    Pandoc 也支持 Markdown 的加强版格式,比如 tables 语法、自定义列表,metadata 块,脚注,引用,math 等待,具体参见 Pandoc Markdown 章节。

    Pandoc 采用模块化的设计,它包含多种可以以指定格式读取文本并原生展示(抽象语法树)的 reader 以及一组 writer, writer 主要用来将原生展示输出为目标格式。所以,新增一种格式只需要定义对应的 reader 和 writer 即可,用户也可以通过自定义 pandoc filter(过滤器) 来修改产生的抽象树。

    因为 Pandoc 针对文档生成的中间态相比目标格式和原格式而言会缺乏一些表现力,所以不能指望在格式之间完美转换。Pondoc 主要功能是保留文档中的结构化元素,而对于一些类似外间距(margin)的展示可能不准。对于其他文档 元素,比如复杂的 tables, 可能不太适用于 pandoc 的简单文档模型(simple document model)。最佳实践是从 Pandoc 的 markdown 格式转换到其他格式,从更富有表现力的格式转换到 markdown 会有有一部分损失。