是否有人曾经向您发送过格式不太适合您的文档?也许您无法访问用于创建该文档的应用程序,或者也许您不需要该文档本身,而更需要其中的内容,或者也许您只是不喜欢该格式。不喜欢文件格式没有错误的原因。如果它不是您首选的格式,无论您发现它使用起来很麻烦,还是您只是不喜欢它的元数据组织方式,那么这都足以成为您转换它的理由。但是,手动转换文档很少有好的理由,而 Pandoc 在这里确保您永远不必这样做。
安装 pandoc
如果您使用的是 Linux,则可以从您的软件仓库安装 pandoc。
在 Fedora 或 CentOS 或类似系统上
$ sudo dnf install pandoc
在 Ubuntu、Elementary、Debian 或类似系统上
$ apt install pandoc
如果您使用的是 Windows 或 macOS,则可以使用第三方安装程序。对于 Windows,有 Chocolatey,而在 macOS 上,您可以使用 MacPorts 或 Homebrew。
安装完成后,您可以使用简单的版本检查进行验证
$ pandoc --version
pandoc x.y.z
[...]
Pandoc 基础知识
在最基本的情况下,pandoc 命令是最容易使用的命令之一。您在终端中键入 pandoc,提供要转换的文件,然后键入 --output 和您想要的输出文件的名称。Pandoc 通常可以从文件名扩展名自动检测两种格式,并在两者之间进行转换。
这是一个将 .docx 文件转换为 .odt 的简单示例
$ pandoc ~/Documents/example.docx --output ~/Documents/example.odt
如果您不习惯使用终端,请记住,在大多数现代终端应用程序中,您可以将桌面上的文件拖放到终端中,以将其转换为计算机可以理解的完整路径。
您可以指定几乎任何您能想到的格式
$ pandoc ~/Documents/example.docx --output ~/public_html/example.html
没错:Pandoc 使您能够从一个单一的源格式输出多种不同的格式。
查找您的源格式
很快就会意识到,Pandoc 可能比您更灵活,或者至少,它比您愿意付出的努力更灵活。因为它只是一个软件,Pandoc 不在乎您是否用 LaTeX、Docbook、Markdown 甚至 JSON 编写了最新的论文(警告:不要用 JSON 编写您的论文)。它可以处理您手头的任何内容,并将其转换为您需要的任何格式。与许多开源项目一样,您可以自由选择您最喜欢的工具。
如果您了解基本的 HTML 并想用它编写所有内容,那么请抓取一个好的 HTML 编辑器并开始编写。Pandoc 会将其转换为您的老板、客户或教授需要的任何格式。或者,也许您更喜欢 Docbook、LaTeX、CommonMark、Org 模式,或者只是普通的 LibreOffice .odt。这对 Pandoc 来说无关紧要。找到您最喜欢的格式,让您专注于完成工作的格式,然后让 Pandoc 完成困难的部分。
Pandoc 选项
看起来可能不像,但现在您已经了解了 Pandoc 的所有基础知识。它是一个简单的命令,可以将一种文档格式转换为另一种文档格式。如果这就是您所需要的全部,那么您就完成了本文的阅读。
但是,Pandoc 是一个大型应用程序,对于它可以处理的每种格式都有许多选项。如果您已经是 Pandoc 用户,或者您想更深入地了解 Pandoc 可以做什么,则需要查看其命令选项。
从和到
您需要了解的第一个选项是 --from 和 --to 标志。这些标志显式地告诉 Pandoc 要从哪个格式处理和转换到哪个格式,当 Pandoc 的输出与您的预期不符时,或者当您需要区分可能共享相同扩展名的格式时,可以使用它们。
例如,CommonMark、Markdown、markdown_phpextra、markdown_strict 和 markdown_github 可能都使用 .md 或 .txt 扩展名。HTML 和 HTML5 都使用 .html 扩展名,EPUB 版本 2 和 3 都使用 .epub 扩展名。指定您想要的格式转换可以确保 Pandoc 为您提供预期的输出
$ pandoc --from docx example.docx --to commonmark example.md
目录
它因格式而异,但 Pandoc 并不总是提供目录。--table-of-contents 选项,或简写为 --toc,确保带有章节分隔符(或子标题标记,例如 HTML 中的 h2,Markdown 中的 ## 等)的文档在前面加上章节列表。
如果您的章节中有小节,而这些小节中又有子小节,那么您可以使用 --toc-depth 来设置每个章节下列出的子标题数量。
Epub 用于电子书
Epub 是一种开放标准,是电子书最流行的格式之一。您可以从 LibreOffice、Calibre、Scribus 和许多其他应用程序生成它们,或者您可以使用 Pandoc 转换为 Epub。如果您了解一些 CSS,您可以在运行 Pandoc 时提供样式表,从而轻松地为您的 Epub 设置样式
$ pandoc --epub-stylesheet my.css foo.md --output foo.epub
此外,您可以设置自己的元数据,以便 Epub 阅读器知道如何对书籍进行排序。为此,请在任何文本编辑器中创建一个简单的 XML 文件
<dc:rights>Creative Commons</dc:rights>
<dc:creator>Seth Kenlon</dc:creator>
<dc:title>Be a Pandoc Pro</dc:title>
保存文件,然后在转换时将其用作元数据源
$ pandoc --epub-stylesheet my.css \
--epub-cover-image cover_front.jpg \
--epub-metadata data.xml \
foo.md --output foo.epub
PDF 选项
大多数 POSIX 系统都能够“打印”为 PDF。这使得生成 PDF 变得容易,但有时会导致一些怪癖,例如不正确的元数据。如果您购买 独立 和 RPG 电子书,那么您肯定遇到过其他方面质量专业的 PDF,但嵌入的标题为“Word Document.docx”,或者 PDF 中的超链接以亮蓝色呈现,而不管文档样式如何(而且它们通常甚至不是活动的)。
控制 PDF 呈现方式的一种方法是使用 Pandoc。使用 Pandoc,您可以在源文档中使用 LaTeX 命令来影响 PDF 输出,并且您可以添加自己的元数据键和值
$ pandoc --metadata=title:"My Professional Report" foo.odt --output foo.pdf
下载 Pandoc 速查表
对于任何需要转换文档格式的人来说,Pandoc 都是一个强大的工具。即使它未能完全满足您的需求,它几乎总是能够让您更接近您所需要的。在编写内容时使用开放和标准化的格式,并确信 Pandoc 可以转换为您需要的任何其他格式。您使用 Pandoc 的次数越多,就越能发现它的强大之处。
为了帮助您进行探索,我们开发了一个更新的 Pandoc 速查表,作为方便的参考。速查表几乎没有涵盖 Pandoc 的所有功能,但它提供了一些常见上下文中的常用命令,并提供了您可以期望的一般工作流程的感觉。
2 条评论