Pandoc 命令速查表 - 文档格式转换命令大全

把文档从一种格式复制粘贴到另一种,通常会把辛苦调好的结构一并毁掉。Pandoc 基于统一的文档模型转换,标题、表格、引用都能保住。本表覆盖 Markdown/HTML/PDF/DOCX/EPUB 互转、PDF 中文与字体设置、模板样式、幻灯片、电子书,以及引用文献与数学公式。当你的 CMS、wiki 或客户只认某一种格式、而你习惯用另一种写作时,用它一次转换到位。读完能在不重排版式的前提下跨格式搬运文档。

开发工具·共 38 条命令·最后更新 2026-07-21
pandocmarkdown文档转换pdf

典型使用场景

面向需要一份源文件同时产出多种格式的技术写作者与文档维护者:Markdown 写稿,投递到 Word 走评审、发 PDF 走归档、发 HTML 走官网、发幻灯片走分享。本表按「格式对 / 元数据对 / 版式对 / 参考文献对」四层组织:格式用 -f/-t 与 -o,元数据用 -V 与 --metadata-file,版式用 --reference-doc / --template / --self-contained,文献用 --citeproc 与 --csl。适合做「一份 Markdown 统一输出」的内容流水线,或排查输出丢失样式、目录、数学公式不渲染这类问题。

基础转换 8

pandoc input.md -o output.html
Markdown 转 HTML
pandoc input.md -o output.pdf
Markdown 转 PDF(需 LaTeX)
pandoc input.md -o output.docx
Markdown 转 Word
pandoc input.html -o output.md
HTML 转 Markdown
pandoc input.docx -o output.md
Word 转 Markdown
pandoc input.md -o output.epub
Markdown 转电子书
pandoc -f markdown -t html5 input.md -o output.html
显式指定输入输出格式
pandoc input.md -o output.org
Markdown 转 Org-mode

PDF 高级选项 5

pandoc input.md -o output.pdf --pdf-engine=xelatex
使用 xelatex 引擎(支持中文)
pandoc input.md -o output.pdf -V mainfont="Noto Sans CJK SC"
指定中文字体
pandoc input.md -o output.pdf --toc
生成目录
pandoc input.md -o output.pdf --toc --toc-depth=3
目录层级 3 级
pandoc input.md -o output.pdf -V geometry:margin=1in
设置页边距

模板与样式 5

pandoc -s input.md -o output.html
生成独立 HTML(含 head)
pandoc input.md --template=mytemplate.html -o output.html
使用自定义模板
pandoc input.md --css=style.css --self-contained -o output.html
内嵌 CSS 生成单文件
pandoc input.md -H header.html -o output.html
在 head 中插入自定义内容
pandoc -o template.html --print-default-template html5
输出默认模板

元数据与幻灯片 5

pandoc input.md -V title="标题" -V author="作者" -o output.pdf
设置元数据
pandoc input.md -t beamer -o output.pdf
Markdown 转 Beamer 幻灯片
pandoc input.md -t slidy -o output.html
转 Slidy HTML 幻灯片
pandoc input.md -t revealjs -o output.html
转 reveal.js 幻灯片
pandoc input.md -f markdown -t plain
转纯文本(去格式)

引用文献与公式 Citations & Math 6

pandoc input.md --citeproc -o output.pdf
启用引用文献处理
pandoc input.md --bibliography=refs.bib --citeproc -o output.pdf
指定 BibTeX 文献库
pandoc input.md --csl=ieee.csl -o output.pdf
指定引用格式(CSL 样式)
pandoc input.md --mathjax -o output.html
用 MathJax 渲染数学公式
pandoc input.md --katex -o output.html
用 KaTeX 渲染数学公式
pandoc --list-extensions markdown
列出 Markdown 支持的扩展

常用参数 9

--highlight-style=tango
代码高亮主题
--number-sections
给标题加编号
--standalone / -s
生成完整文档(含头尾)
--metadata-file=meta.yaml
从 YAML 读取元数据
--filter=pandoc-filter
使用自定义过滤器
-V key=value
传递变量给模板
--wrap=auto
自动换行(auto/preserve/none)
--columns=80
设置换行列宽
--reference-doc=template.docx
用 Word 参考文档控制样式

参数矩阵

参数作用示例
-s / --standalone生成完整文档(含 head 与 body 包裹);不加时只输出文档片段pandoc -s input.md -o output.html
--reference-doc=template.docx用一份 Word 参考文档的样式控制 docx 输出,解决标题/代码字体走默认样式的问题--reference-doc=template.docx
--self-contained + --css把 CSS 内嵌进单个 HTML 文件,便于离线分发pandoc input.md --css=style.css --self-contained -o output.html
--citeproc + --bibliography / --csl启用引用处理并指定文献库与引用样式,缺一则引用原样输出pandoc input.md --csl=ieee.csl -o output.pdf

易错点与避坑指南

现象转出的 Word 里标题、代码块全是默认样式,和源文件排版完全不同。

原因docx writer 不继承外部样式,只用内置默认样式或参考文档。

处置先导出一份 docx 改好样式,命名为模板,再加 --reference-doc=template.docx。

现象生成的 HTML 打开后没有样式,甚至在浏览器里直接显示成裸片段。

原因只输出了文档片段,或 CSS 仍以外链方式引用而文件没一起拷过去。

处置加 -s 生成完整文档,需要单文件时加 --self-contained --css=style.css。

现象PDF 里的中文变成空白或方块。

原因默认 pdflatex 引擎不支持系统字体与中文。

处置改用 --pdf-engine=xelatex 并用 -V mainfont="Noto Sans CJK SC" 指定字体。

现象文档里的 [@key] 原样出现在输出中,参考文献列表是空的。

原因没启用 --citeproc,或未提供文献库文件。

处置加 --citeproc --bibliography=refs.bib,并用 --csl 指定引用样式。

排障路径

  1. 1先确认当前版本支持哪些扩展

    pandoc --list-extensions markdown

    语法行为随扩展集变化,确认列表后再判断某个写法是否被识别。

  2. 2导出默认模板作为改造起点

    pandoc -o template.html --print-default-template html5

    在默认模板上加自定义块,再用 --template=mytemplate.html 应用。

  3. 3验证某个源文件实际被解析成了什么结构

    pandoc -f markdown -t plain

    转成纯文本能立刻看出标题层级、列表与表格是否被正确识别。

命令示例

一份 Markdown 产出多种格式

pandoc input.md -o output.html pandoc input.md -o output.docx pandoc input.md -o output.epub pandoc -f markdown -t html5 input.md -o output.html

默认按扩展名推断格式,-f/-t 用于显式指定;输入侧同理可做 pandoc input.html -o output.md 这类反向转换。

中文 PDF 的引擎与字体

pandoc input.md -o output.pdf --pdf-engine=xelatex -V mainfont="Noto Sans CJK SC" pandoc input.md -o output.pdf --toc --toc-depth=3 -V geometry:margin=1in

引擎与字体要同时给;-V 传的是模板变量,页边距与目录层级都从这里控制。

单文件 HTML 与自定义模板

pandoc -s input.md -o output.html pandoc input.md --css=style.css --self-contained -o output.html pandoc input.md -H header.html -o output.html pandoc -o template.html --print-default-template html5 pandoc input.md --template=mytemplate.html -o output.html

模板改造的起点是导出的默认模板;-H 插入 head 片段,--self-contained 让 CSS 内嵌。

引用文献、公式与扩展自查

pandoc input.md --bibliography=refs.bib --citeproc -o output.pdf pandoc input.md --csl=ieee.csl --citeproc -o output.pdf pandoc input.md --katex -o output.html pandoc --list-extensions markdown

文献库、CSL 样式、citeproc 三者齐备引用才会渲染;公式也可改用 --mathjax 走 MathJax。

常见坑与注意事项

  • 不加 -s / --standalone 时输出只是文档片段,浏览器打开会没有 head 与 body 结构。
  • 生成中文 PDF 必须同时给 --pdf-engine=xelatex 和中文字体,只改引擎不改字体仍会出方块。
  • docx 样式丢失要靠 --reference-doc 提供参考文档,不要靠反复手调 Markdown 语法。
  • 引用只在 --citeproc、--bibliography、--csl 齐备时才会被渲染,缺一项就会原样留下 [@key]。
  • -V key=value 里的值必须用引号包裹,尤其是含空格的标题与作者字段,否则 shell 会把它拆成多个参数。

提示

  • 中文 PDF 必须用 xelatex 引擎并指定中文字体,否则乱码。
  • Markdown 转 Word 后样式可能丢失,建议先转 HTML 再转 DOCX 保真度更高。
  • pandoc --list-output-formats 查看所有支持的输出格式。

常见问题

为什么输出的 HTML 看起来是裸片段?

因为你没加 -s。默认 pandoc 只输出文档片段,不含 head 与 body 包裹,用 pandoc -s input.md -o output.html 生成独立 HTML 即可。需要自定义 head 内容时用 pandoc input.md -H header.html -o output.html,把自己的标签插进 head;想让样式跟着文件走则加 --css=style.css --self-contained 把 CSS 内嵌成单文件。

转出的 Word 样式全变了,怎么保住排版?

因为 docx 输出走的是 Word 的样式集,而不是 Markdown 的写法。用 --reference-doc=template.docx 提供一份参考文档,pandoc 会沿用它的标题、正文、代码块样式;这份模板可以先从已有文档另存得到。要改得动模板本身,就先 pandoc -o template.html --print-default-template html5 导出默认模板作为改造起点,再配合 --template=mytemplate.html 使用。

PDF 里的中文变成空白或方块,怎么处理?

两个变量一起确认:引擎与字体。引擎用 pandoc input.md -o output.pdf --pdf-engine=xelatex,它能处理系统字体;字体再显式指定,例如 -V mainfont="Noto Sans CJK SC"。只换引擎不指定字体在缺少对应字体的机器上仍然出方块。页边距这类排版项用 -V geometry:margin=1in,想带目录再加 --toc,层级用 --toc-depth=3 限制。

文档里的引用为什么原样输出成 [@key]?

因为引用处理没开,或者开了但缺文献库或样式文件。pandoc input.md --citeproc -o output.pdf 会启用引用处理,接着用 --bibliography=refs.bib 指定 BibTeX 文献库、--csl=ieee.csl 指定引用格式;缺一则引用不会被渲染,参考文献列表也是空的。另外可以先用 pandoc --list-extensions markdown 确认当前版本支持哪些扩展,再判断是不是扩展缺失。

同一份 Markdown 要出多种格式,元数据该放哪?

两种方式。简单场景直接用 -V key=value 逐个传,例如 -V title="标题" -V author="作者";条目一多就写成 YAML 文件用 --metadata-file=meta.yaml 统一维护,避免命令行里堆一长串变量。变量最终只对模板可见,所以样式、页边距这些也走同一条通路,例如 -V geometry:margin=1in。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们