pandoc的使用方式

Pandoc 是一款自由开源、跨平台的命令行界面标记语言转换工具,使用 Haskell 编写。

Pandoc 最突出的功能在于不同标记语言间的格式转换。它支持的输入格式极为广泛,包含 Markdown 的多种变体、HTML、LaTeX、DocBook、EPUB 等常见格式。在输出格式方面同样表现卓越,可生成 HTML、PDF、Markdown、EPUB、DocBook 等文件。举例来说,研究人员可以将撰写好的 Markdown 格式学术论文,借助 Pandoc 轻松转换为 PDF 格式用于打印提交,或者转换为 HTML 格式以便在网页上发布分享 。

基础使用:

步骤 1:安装 Pandoc

我们可以从这个链接下载软件:https://github.com/jgm/pandoc/releases/tag/3.7.0.2 选择适合自己的系统即可。

这里我以windows为例,点击上面链接下载直接安装,使用cmd或者powshell打开。使用命令pandoc –version如果出现如下信息,说明安装成功。

img

步骤 2:打开终端窗口

Pandoc 是一个命令行工具,没有图形用户界面。因此,要使用它,您需要打开一个终端窗口:

  • OS X 上,终端应用程序位于 /Applications/Utilities 中。打开 Finder,导航到应用程序,然后是实用工具。双击打开 Terminal。或者,点击屏幕右上角的聚焦搜索图标并输入 Terminal,您应在应用中看到 Terminal

  • Windows 上,您可以使用经典的命令提示符或更现代的 PowerShell 终端。若在桌面模式下使用 Windows,从开始菜单运行 cmdpowershell 命令。若您使用的是 Windows 8 开始屏幕,直接键入 cmdpowershell,然后运行 “命令提示符” 或 “Windows PowerShell” 应用。如果使用 cmd,请先输入 chcp 65001 设置编码为 UTF-8

  • Linux
    

    上,具体操作依您的桌面环境而异:

    • Unity 中,使用 Dash 的搜索功能,搜索 Terminal。或使用快捷键 Ctrl-Alt-T
    • Gnome 中,前往应用程序>附件,选择 Terminal,或用 Ctrl-Alt-T 快捷键。
    • XFCE 中,进入 应用程序>系统>Terminal,或使用 Super-T 快捷键。
    • KDE 中,打开 KMenu,接着 系统>终端程序 (Konsole)。

现在,您应该能看到一个带有 “提示符”(可能只是一个符号如 % ,但通常还包括用户名和目录等更多信息)的矩形框,以及一个闪烁的光标。

让我们验证 Pandoc 是否已成功安装。键入

 pandoc --version

然后按回车。您应看到一条消息,显示已安装的 Pandoc 版本,并提供一些额外信息。

步骤 3:更改目录

首先,我们看看当前所在位置。在 Linux 或 OSX 上输入:

 pwd

在 Windows 上则输入:

 echo %cd%

然后按回车。终端会显示出您当前的工作目录。(猜猜 pwd 代表什么?)这应该是您的主目录(家目录)。

现在让我们导航到 Documents 目录下:输入

 cd Documents

按回车。再输入

 pwd

(Windows 上则是 echo %cd% ),再次回车。您应该处于家目录下的 Documents 子目录中。若要返回家目录,可以输入

 cd ..

这里的 .. 表示 “上一级” 。

如果您还没有在 Documents 目录里,请回到那里。接下来尝试创建一个名为 pandoc-test 的子目录:

 mkdir pandoc-test

现在切换到 pandoc-test 目录:

 cd pandoc-test

如果提示符没有告诉您当前所在目录,可以通过再次执行

 pwd

(或 Windows 上的 echo %cd% )来确认。

好的,目前关于使用终端的知识就这些了。但这里有一个秘诀可以帮您省去大量打字:您随时可以按上箭头键回顾之前输入过的命令历史。如果您想重复使用之前的某个命令,不必重新输入,只需按上箭头键直到找到该命令即可。试试看。(您也可以使用下箭头键反向浏览。)一旦找到命令,还可以使用左右箭头键和退格/删除键进行编辑。

大多数终端还支持目录和文件名的自动补全功能。为了尝试这个功能,我们先回到 Documents 目录:

 cd ..

现在输入

 cd pandoc-

然后按 Tab 键而不是回车。终端会自动补全剩余部分( test ),之后按回车。

总结一下:

  • 使用 pwd(Windows 上为 echo %cd% )查看当前工作目录。
  • 输入 cd foo 以切换到当前工作目录下的 foo 子目录。
  • 输入 cd .. 上升到工作目录的父目录。
  • 输入 mkdir foo 在工作目录下创建名为 foo 的子目录。
  • 上箭头键回顾命令历史。
  • Tab 键补全目录和文件名。

步骤 4:使用 pandoc 作为过滤器

键入以下命令并按回车:

 pandoc

你应该看到光标停留在那里,等待你输入内容。输入以下文本:

 Hello *pandoc*!
 
 - one
 - two

当你完成输入(光标应位于行首时),在 OS X 或 Linux 上按下 Ctrl-D,或在 Windows 上按下 Ctrl-Z 后跟 Enter。现在,你应该看到你的文本已转换为 HTML!

 <p>Hello <em>pandoc</em>!</p>
 <ul>
   <li>one</li>
   <li>two</li>
 </ul>

刚才发生了什么?当 pandoc 被调用而没有指定任何输入文件时,它会作为一个 “过滤器” 运行,从终端接收输入,并将其输出返回到终端。你可以利用这个特性来尝试使用 pandoc。

默认情况下,输入被解释为 pandoc 标记语言,输出为 HTML。但我们可以改变这一点。让我们尝试从 HTML 转换为 markdown:

 pandoc -f html -t markdown

现在输入:

 <p>Hello <em>pandoc</em>!</p>

然后按下 Ctrl-D(或在 Windows 上按下 Ctrl-Z 后跟 Enter)。你应该看到:

 Hello *pandoc*!

现在尝试将某个内容从 markdown 转换为 LaTeX。你认为应该使用什么命令呢?

步骤 5:文本编辑器基础

你可能希望使用 pandoc 来转换文件,而不是从终端读取文本。这很简单,但首先我们需要在 pandoc-test 子目录中创建一个文本文件。

重要提示:

为了创建文本文件,你需要使用文本编辑器,而不是 像 Microsoft Word 这样的文字处理软件。在 Windows 上,你可以使用记事本(位于 附件 中)。在 OS X 上,你可以使用 TextEdit(位于 应用程序 中)。在 Linux 上,不同的平台预装了不同的文本编辑器:Gnome 提供了 GEdit,而 KDE 则有 Kate

启动你的文本编辑器,键入以下内容:

 ---
 title: 测试
 ...
 
 # 测试!
 
 这是对*pandoc*的测试。
 
 - 列表一项
 - 列表二项

现在将文件保存为 test1.md,存放在 Documents/pandoc-test 目录下。

注意:如果你经常使用纯文本,你可能需要一个比 记事本TextEdit 更好的编辑器。你可以考虑使用 Visual Studio CodeSublime Text,或者(如果你愿意花时间学习一个不熟悉的界面)VimEmacs

步骤 6:转换文件

回到你的终端,我们应当仍处于 Documents/pandoc-test 目录下。使用 pwd 命令确认当前位置。

现在键入:

 ls

(如果你在 Windows 上,则使用 dir)。这会列出当前目录中的文件。你应该能看到你创建的文件 test1.md

要将其转换为 HTML,请使用以下命令:

 pandoc test1.md -f markdown -t html -s -o test1.html

文件名 test1.md 告诉 pandoc 要转换哪个文件。选项 -s 表示创建一个带有页眉和页脚的“独立”文件,而不只是一个片段。而 -o test1.html 表示将输出放置在文件 test1.html 中。请注意,我们本可以省略 -f markdown-t html,因为默认是从 markdown 转换为 HTML,但包含它们也无妨。

再次键入 ls 检查文件是否已创建。你应该能看到 test1.html。现在在浏览器中打开它。在 OS X 上,你可以键入:

 open test1.html

在 Windows 上,键入:

 .\test1.html

你应该能看到包含你的文档的浏览器窗口。

要创建 LaTeX 文档,只需稍微修改命令:

 pandoc test1.md -f markdown -t latex -s -o test1.tex

尝试在文本编辑器中打开 test1.tex

Pandoc 经常能根据文件名扩展名推断输入和输出格式。所以,你其实可以直接使用:

 pandoc test1.md -s -o test1.tex

由于 .tex 扩展名,Pandoc 知道你要创建的是 LaTeX 文档。

现在尝试创建一个 Word 文档(扩展名为 docx)。

如果你想创建 PDF,你需要安装 LaTeX。(在 OS X 上查看 MacTeX,在 Windows 上查看 MiKTeX,或在 Linux 上安装 texlive 包。)然后执行:

 pandoc test1.md -s -o test1.pdf

第7步:命令行选项

至此,你已经掌握了基本知识。Pandoc提供了大量选项。现在,你可以通过阅读 Pandoc用户指南 来进一步学习它们。

下面是一个例子。使用 --mathml 选项可以让 PandocTeX 数学公式转换成 MathML 格式。在命令行输入:

 pandoc --mathml

接着输入以下文本,然后按 Ctrl-D( 在 Windows 系统中是 Ctrl-Z 后跟 Enter ):

 $x = y^2$

现在尝试不使用 --mathml 选项重复上述操作。注意输出的差异了吗?

如果你忘记了某个选项,或者不确定支持哪些格式,可以随时运行:

 pandoc --help

以获取所有支持选项的列表。

OS XLinux 系统上,还可以通过运行:

 man pandoc

来查看Pandoc的手册页。所有这些信息同样可以在用户指南中找到。

如果遇到问题,你可以在 Pandoc讨论论坛 提问。但在提问前,请确保先查阅 常见问题解答 ,并搜索论坛看看是否已经有了解答。

进阶技巧:

HTML 片段

 pandoc MANUAL.txt -o example1.html

独立 HTML 文件

 pandoc -s MANUAL.txt -o example2.html

带目录、CSS 和自定义页脚的 HTML

 pandoc -s --toc -c pandoc.css -A footer.html MANUAL.txt -o example3.html

生成带有目录、外部 CSS 样式表和自定义页脚的 HTML 文件。

LaTeX 转换

 pandoc -s MANUAL.txt -o example4.tex

将文本文件转换为 LaTeX 格式。

从 LaTeX 到 Markdown

 pandoc -s example4.tex -o example5.text

reStructuredText 转换

 pandoc -s -t rst --toc MANUAL.txt -o example6.text

RTF 格式

 pandoc -s MANUAL.txt -o example7.rtf

生成富文本格式(RTF)文件。

Beamer 幻灯片

 pandoc -t beamer SLIDES -o example8.pdf

DocBook XML

 pandoc -s -t docbook MANUAL.txt -o example9.db

Man 页面

 pandoc -s -t man pandoc.1.md -o example10.1

ConTeXt 格式

 pandoc -s -t context MANUAL.txt -o example11.tex

网页转 Markdown

 pandoc -s -r html http://www.gnu.org/software/make/ -o example12.text

从网页直接转换为 Markdown 文本。

Markdown 到 PDF

 pandoc MANUAL.txt --pdf-engine=xelatex -o example13.pdf

PDF 增强配置(包含编号章节、自定义 LaTeX 页眉等)

 pandoc -N --variable "geometry=margin=1.2in" --variable mainfont="Palatino" --variable sansfont="Helvetica" --variable monofont="Menlo" --variable fontsize=12pt --variable version=2.0 MANUAL.txt --include-in-header fancyheaders.tex --pdf-engine=lualatex --toc -o example14.pdf

Jupyter Notebook

 pandoc example15.md -o example15.ipynb

HTML 幻灯片

 pandoc -s --mathml -i -t dzslides SLIDES -o example16a.html
 pandoc -s --webtex -i -t slidy SLIDES -o example16b.html
 pandoc -s --mathjax -i -t revealjs SLIDES -o example16d.html

数学公式在 HTML 中的渲染

 pandoc math.text -s -o mathDefault.html
 pandoc math.text -s --mathml  -o mathMathML.html
 pandoc math.text -s --webtex  -o mathWebTeX.html
 pandoc math.text -s --mathjax -o mathMathJax.html
 pandoc math.text -s --katex   -o mathKaTeX.html

代码块语法高亮

 pandoc code.text -s --highlight-style pygments -o example18a.html
 pandoc code.text -s --highlight-style kate -o example18b.html
 pandoc code.text -s --highlight-style monochrome -o example18c.html
 pandoc code.text -s --highlight-style espresso -o example18d.html
 pandoc code.text -s --highlight-style haddock -o example18e.html
 pandoc code.text -s --highlight-style tango -o example18f.html
 pandoc code.text -s --highlight-style zenburn -o example18g.html

GNU Texinfo:

 pandoc MANUAL.txt -s -o example19.texi

OpenDocument XML

 pandoc MANUAL.txt -s -t opendocument -o example20.xml

ODT (OpenDocument Text, readable by OpenOffice)

 pandoc MANUAL.txt -o example21.odt

MediaWiki markup

 pandoc -s -t mediawiki --toc MANUAL.txt -o example22.wiki

EPUB ebook

 pandoc MANUAL.txt -o MANUAL.epub

Markdown 引用

 pandoc -s --bibliography biblio.bib --citeproc CITATIONS -o example24a.html
 pandoc -s --bibliography biblio.json --citeproc --csl chicago-fullnote-bibliography.csl CITATIONS -o example24b.html
 pandoc -s --bibliography biblio.yaml --citeproc --csl ieee.csl CITATIONS -t man -o example24c.1

Textile 编辑器

 pandoc -s MANUAL.txt -t textile -o example25.textile

Textile 阅读器

 pandoc -s example25.textile -f textile -t html -o example26.html

Org-mode

 pandoc -s MANUAL.txt -o example27.org

AsciiDoc

 pandoc -s MANUAL.txt -t asciidoc -o example28.txt

转为 docx

 pandoc -s MANUAL.txt -o example29.docx

将 LaTeX 数学公式转换为 Docx 文档

 pandoc -s math.tex -o example30.docx

DocBook 转为 markdown

 pandoc -f docbook -t markdown -s howto.xml -o example31.text

MediaWiki 转为 html5

 pandoc -f mediawiki -t html5 -s haskell.wiki -o example32.html

分块 HTML

 pandoc -t chunkedhtml --split-level=2 --toc --toc-depth=2 --number-sections -o example33 MANUAL.txt

使用参考模板的 Docx 文档

 pandoc --reference-doc twocolumns.docx -o UsersGuide.docx MANUAL.txt

Docx 转为 markdown, 包括数学公式

 pandoc -s example30.docx -t markdown -o example35.md

EPUB 转为纯文本

 pandoc MANUAL.epub -t plain -o example36.text

使用模板根据结构化数据生成表格

 pandoc fishwatch.yaml -t rst --template fishtable.rst -o fish.rst # see also the partial species.rst

将 BibTeX 格式的参考书目转换为 CSL JSON 格式

 pandoc biblio.bib -t csljson -o biblio2.json

生成格式化版本的参考文献列表

pandoc biblio.bib --citeproc --csl ieee.csl -s -o biblio.html
posted @ 2025-09-04 17:28  crockery  阅读(1016)  评论(0)    收藏  举报