Pandoc 的简单使用
本文的大部分内容是 Pandoc官方文档 的翻译。
简介
Pandoc 是一个用 Haskell 编写的库,这是一个用来将文本从一种格式转成另一种格式的命令行工具。
Pandoc 支持大量的格式,包括但不限于 Markdown(和它的一些方言)、HTML、LaTeX、Word docx 等。Pandoc 也可以输出 PDF 格式的文件。
使用 Pandoc
如果没有指定任何输入文件,那么 Pandoc 会从标准输入(也就是命令行)读入数据。同理,如果没有指定任何输出文件,那么 Pandoc 会向标准输出 输出数据。
如果你希望输出到某个文件,则使用 -o
:
pandoc -o output.html input.txt
指定格式
输入和输出的格式可以使用命令行选项来指定。
-
使用
-f
或--from
来指定输入的格式(而非具体的文件)。 -
使用
-t
或--to
来指定输出的格式(而非具体的文件)。
比如,你要将 hello.txt
的内容从 Markdown 转成 LateX,那么你应该输入:
pandoc -f markdown -t latex hello.txt
你可以使用 pandoc --list-input-formats
和 pandoc --list-output-formats
来查看完整的支持格式的列表。
字符编码
Pandoc 使用 UTF-8 作为输入和输出的编码。
导出为 PDF
要导出为 PDF,只需指示输出格式为 PDF 即可。但需要安装 至少一个 PDF 引擎(PDF engine)。Pandoc 会在导出 PDF 时自动到 PATH
环境变量中寻找可用的 PDF 引擎。如果你的 PDF 引擎不在 PATH
中,那么你需要指定完整的路径。
Pandoc 默认使用 LaTeX 来导出 PDF,这需要你安装一个 LaTeX 发行版。要使用其他 PDF 扩展,需要使用 --pdf-engine
参数来指定。这个参数的合法值为 pdflatex
, lualatex
, xelatex
, latexmk
, tectonic
, wkhtmltopdf
, weasyprint
, pagedjs-cli
, prince
, context
和 pdfroff
。如果你没有指定这个参数,那么 Pandoc 根据你需要的输出格式,按照下面的标准来默认地设置这个参数:
-t latex
或未指定输出格式: pdflatex (pdflatex 不可用时选择: xelatex, lualatex, tectonic, latexmk)-t context
: context-t html
: wkhtmltopdf (wkhtmltopdf 不可用时选择: prince, weasyprint, pagedjs-cli;)-t ms
: pdfroff
啰嗦了一大堆,总结一下,如果你安装了某个 LaTeX 发行版(比如 Tex Live),而且编译命令在 PATH
中,那么你无需指定额外的格式,直接指定输出为 PDF 即可:
pandoc test.md -o test.pdf
从网络输入数据
你也可以不指定输入的文件,而是要求 Pandoc 从一个绝对的 URI 地址读取。此种情况下 Pandoc 会使用 HTTP 协议来读取。
pandoc -f html -t markdown https://www.fsf.org
你也可以指定 UA:
pandoc -f html -t markdown --request-header User-Agent:"Mozilla/5.0" \
https://www.fsf.org