像专家一样使用 Pandoc 转换文档

Pandoc 是一个强大的工具,可以将任何文件转换为您想要的格式。查看我们方便的速查表。
145 位读者喜欢这篇文章。
Blender Hotkey Cheat Sheet

Opensource.com

是否有人曾经向您发送过格式不太适合您的文档?也许您无法访问用于创建文档的应用程序,或者也许您不需要文档本身,而只需要其中的内容,或者也许您就是不喜欢这种格式。不喜欢文件格式没有错误的原因。如果它不是您首选的格式,无论您觉得使用起来很麻烦,还是您只是不喜欢其元数据的组织方式,那么这都足以成为您转换它的理由。但是,手动转换文档几乎没有充分的理由,而 Pandoc 正是为了确保您永远不必这样做。

安装 Pandoc

如果您使用的是 Linux,您可以从您的软件仓库安装 pandoc

在 Fedora 或 CentOS 或类似系统上

$ sudo dnf install pandoc

在 Ubuntu、Elementary、Debian 或类似系统上

$ apt install pandoc

如果您使用的是 Windows 或 macOS,您可以使用第三方安装程序。对于 Windows,有 Chocolatey,而在 macOS 上,您可以使用 MacPortsHomebrew

安装完成后,您可以使用简单的版本检查进行验证

$ 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 mode,或者只是普通的 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 变得容易,但有时会导致一些怪癖,例如不正确的元数据。如果您购买 independentRPG 电子书,那么您肯定遇到过质量上乘的 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 的所有功能,但它提供了一些常见上下文中的常用命令,并让您了解您可以期望的总体工作流程。

接下来阅读
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,通常同时进行。

2 条评论

很棒的介绍,喜欢这个速查表!非常简单且功能强大的工具,我以前从未听说过,感谢您的介绍,并使其易于使用和理解。

© . All rights reserved.