Pandoc 的命令行参数非常丰富,用于控制文档转换的各个方面。以下是 Pandoc 最常用且重要的参数分类详解,适用于最新版本(当前为 Pandoc 3.x):
一、核心输入/输出参数
参数 | 缩写 | 说明 | 示例 |
---|---|---|---|
--output=FILE |
-o FILE |
指定输出文件 | pandoc -o report.docx |
--from=FORMAT |
`-f FORMAT“ | 指定输入格式(默认自动检测) | -f markdown |
--to=FORMAT |
-t FORMAT |
指定输出格式(默认自动检测) | -t html |
--standalone |
-s |
生成完整文档(含头部/尾部) | pandoc -s -o doc.html |
二、内容处理参数
1. 元数据控制
参数 | 说明 | 示例 |
---|---|---|
--metadata=KEY:VAL |
设置元数据 | --metadata title="报告" |
--metadata-file=FILE |
从YAML文件读取元数据 | --metadata-file meta.yaml |
--template=FILE |
使用自定义模板 | --template custom.latex |
2. 目录与章节
参数 | 说明 | 示例 |
---|---|---|
--table-of-contents |
--toc |
生成目录 |
--toc-depth=NUMBER |
目录层级深度 | --toc-depth=3 |
--number-sections |
-N |
自动编号标题 |
3. 参考文献处理
参数 | 说明 | 示例 |
---|---|---|
--bibliography=FILE |
指定参考文献库 | --bibliography=refs.bib |
--csl=FILE |
指定引文样式 | --csl=ieee.csl |
--citeproc |
处理引用(替换旧版--filter pandoc-citeproc ) |
--citeproc |
三、格式转换增强
1. Markdown扩展
参数 | 说明 |
---|---|
--markdown-headings=atx |
强制使用 # 标题 语法 |
--listings |
代码块用LaTeX listings包处理 |
--mathjax |
用MathJax渲染公式(HTML输出) |
--webtex |
将公式转为在线图片(如Google Charts) |
2. 文件嵌入
参数 | 说明 | 示例 |
---|---|---|
--extract-media=DIR |
解压文档中的图片 | --extract-media=images |
--embed-resources |
将资源嵌入HTML(图片/CSS) | --embed-resources |
四、高级控制
1. 过滤器系统
参数 | 说明 | 示例 |
---|---|---|
--filter=PROGRAM |
应用自定义过滤器 | --filter pandoc-crossref |
--lua-filter=FILE |
应用Lua过滤器 | --lua-filter fix-links.lua |
2. PDF生成专用
参数 | 说明 | 示例 |
---|---|---|
--pdf-engine=ENGINE |
指定PDF引擎 | --pdf-engine=xelatex |
--pdf-engine-opt=OPT |
传递选项给PDF引擎 | --pdf-engine-opt=-shell-escape |
-V KEY=VAL |
设置LaTeX变量 | -V fontsize=12pt -V linestretch=1.5 |
3. 调试与信息
参数 | 说明 |
---|---|
--verbose |
显示详细调试信息 |
--list-input-formats |
列出支持的输入格式 |
--list-output-formats |
列出支持的输出格式 |
--list-extensions |
列出Markdown扩展支持 |
五、实用命令示例
-
Markdown → Word (带目录)
pandoc input.md -o output.docx --toc --toc-depth=3
-
Markdown → PDF (中文排版)
pandoc input.md -o output.pdf \ --pdf-engine=xelatex \ -V mainfont="Microsoft YaHei" \ -V geometry:margin=2cm
-
HTML → Markdown (清理格式)
pandoc webpage.html -t markdown_strict -o clean.md
-
处理学术论文 (引用+公式)
pandoc paper.md -o paper.pdf \ --citeproc \ --bibliography=refs.bib \ --csl=apa.csl \ --mathml
-
自定义模板生成简历
pandoc resume.md -o resume.html \ --template=resume-template.html \ --css=style.css
六、注意事项
-
路径问题:建议使用相对路径,或用 --resource-path=.:images
指定资源目录 -
编码:非UTF-8文件需用 --encoding=ENCODING
-
安全性:远程内容需显式启用 --allow-file-access-from-files
📘 完整参数手册:
查看所有参数:pandoc --help
官方手册:Pandoc User Manual
这个参数组合 --from=markdown+tex_math_single_backslash
是 Pandoc 中用于精确控制 Markdown 输入解析规则的重要语法,专门用于处理 LaTeX 数学公式的解析方式。以下是详细解释:
核心作用
启用 tex_math_single_backslash
扩展后,Pandoc 会:
-
允许使用单反斜杠 \
包裹行内数学公式\( E = mc^2 \) # 会被识别为行内公式
-
仍支持双反斜杠 \\
包裹的公式\[ \int_a^b f(x)dx \] # 会被识别为块级公式
👉 对比默认行为:
默认 Pandoc 的 Markdown 解析器 只认双反斜杠语法:
$E = mc^2$ # 默认视为普通文本(不解析为公式)
\\( E = mc^2 \\) # 必须用双反斜杠才能解析为行内公式
典型使用场景
当你的 Markdown 文档中包含以下格式的数学公式时:
这是行内公式 \( \nabla \cdot \mathbf{E} = \frac{\rho}{\epsilon_0} \)
这是块级公式:
\[ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} \]
需显式启用扩展:
pandoc input.md --from=markdown+tex_math_single_backslash -o output.html
与其他数学扩展的关系
扩展名 | 效果 |
---|---|
tex_math_single_backslash |
启用 \(...\) 和 \[...\] 作为公式分隔符 |
tex_math_double_backslash |
默认启用,仅支持 \\(...\\) 和 \\[...\\] |
latex_macros |
解析 LaTeX 宏定义(如 \newcommand ) |
⚠️ 注意:单双反斜杠扩展可同时启用
--from=markdown+tex_math_single_backslash+tex_math_double_backslash
输出格式兼容性
输出格式 | 需配合的参数 | 效果 |
---|---|---|
HTML | --mathjax 或 --katex |
通过 JS 库渲染公式 |
PDF/LaTeX | 无需额外参数 | 直接保留原始 LaTeX 公式 |
Word | --mathml |
将公式转为 Office 兼容的 MathML |
Markdown | -t markdown-smart |
保留 \(..\) 语法 |
完整工作流示例
将含单反斜杠公式的 Markdown 转为 PDF:
pandoc paper.md \
--from=markdown+tex_math_single_backslash \ # 启用单反斜杠解析
--pdf-engine=xelatex \ # 使用 XeLaTeX 引擎
-V mainfont="Times New Roman" \ # 设置字体
-o paper.pdf
⚠️ 常见问题
-
公式未被识别
检查是否遗漏+tex_math_single_backslash
或存在空格:# 错误!等号两侧不能有空格 --from = markdown+tex_math_single_backslash # 正确写法 --from=markdown+tex_math_single_backslash
-
与美元符号冲突
若需同时支持$...$
语法,添加+tex_math_dollars
扩展:--from=markdown+tex_math_single_backslash+tex_math_dollars
-
输出到 HTML 公式不渲染
忘记添加数学渲染引擎:# 必须加上 --mathjax 或 --katex pandoc input.md --from=markdown+tex_math_single_backslash --mathjax -o out.html
总结
--from=markdown+tex_math_single_backslash
是处理特定 LaTeX 公式语法的关键开关,尤其适用于:
-
迁移 LaTeX 文档到 Markdown -
兼容学术写作中的传统公式写法 -
避免修改大量现有公式分隔符
官方说明参考:
Pandoc Manual – Math in HTML
Extension: tex_math_single_backslash