跳转至

Pandoc 万能格式转换

一句话概述:Pandoc 是文档格式转换的瑞士军刀,能在 Markdown、LaTeX、Word、HTML、PDF 等几十种格式之间自由转换。

核心知识点

概念白话解释
Pandoc格式转换器 = 万能文档翻译官
Reader读取器 = 理解输入格式
Writer写入器 = 生成输出格式
Filter过滤器 = 中间处理(Lua/Python)
Template模板 = 控制输出的排版样式
CSL引文样式 = 控制参考文献格式

安装配置

# Linux
sudo apt install pandoc                                # Ubuntu/Debian
sudo dnf install pandoc                                # Fedora

# macOS
brew install pandoc                                    # Homebrew

# 验证
pandoc --version                                      # 查看版本(推荐 3.x)
pandoc --list-input-formats                            # 列出支持的输入格式
pandoc --list-output-formats                           # 列出支持的输出格式

常用转换

# === Markdown → 其他格式 ===
pandoc input.md -o output.docx                        # Markdown → Word
pandoc input.md -o output.pdf                         # Markdown → PDF(需要 LaTeX)
pandoc input.md -o output.html --standalone           # Markdown → 完整 HTML
pandoc input.md -o output.tex                         # Markdown → LaTeX
pandoc input.md -o output.pptx                        # Markdown → PPT

# === 其他格式 → Markdown ===
pandoc input.docx -o output.md                        # Word → Markdown
pandoc input.html -o output.md                        # HTML → Markdown
pandoc input.tex -o output.md                         # LaTeX → Markdown
pandoc input.epub -o output.md                        # EPUB → Markdown

# === 格式间互转 ===
pandoc input.docx -o output.pdf                       # Word → PDF
pandoc input.tex -o output.docx                       # LaTeX → Word
pandoc input.md -o output.epub                        # Markdown → EPUB

# === 使用 Typst 引擎生成 PDF(极快) ===
pandoc input.md -o output.pdf --pdf-engine=typst      # 用 Typst 代替 LaTeX

高级用法

# 带参考文献的学术文档
pandoc paper.md \
  --citeproc \                                        # 启用引文处理
  --bibliography=refs.bib \                           # 指定文献库
  --csl=apa.csl \                                     # 指定引文样式(APA)
  -o paper.pdf                                        # 输出 PDF

# 带目录的长文档
pandoc paper.md \
  --toc \                                             # 生成目录
  --toc-depth=3 \                                     # 目录深度
  --number-sections \                                 # 标题编号
  -o paper.pdf

# 合并多个文件
pandoc ch1.md ch2.md ch3.md \                         # 多个输入文件
  --toc \                                             # 生成目录
  -o book.pdf                                         # 合并为一本书

# 自定义模板
pandoc input.md \
  --template=my-template.tex \                        # 使用自定义 LaTeX 模板
  -o output.pdf

# YAML 元数据(在 Markdown 文件头)
# ---
# title: 我的论文
# author: 彭文强
# date: 2026-05-13
# geometry: margin=2.5cm
# fontsize: 12pt
# ---

Markdown 文件示例

---
title: 宏基因组分析报告
author: 彭文强
date: 2026-05-13
bibliography: refs.bib
csl: nature.csl
---

# 引言

肠道菌群与2型糖尿病密切相关 [@wang2022]。

# 方法

使用 MetaPhlAn4 进行物种注释。

# 结果

| 样本 | Shannon | Simpson |
|------|---------|---------|
| S1   | 3.21    | 0.89    |
| S2   | 2.98    | 0.85    |

# 参考文献

常见报错

报错原因解决
pdflatex not found没装 LaTeX安装 TeX Live 或用 --pdf-engine=typst
Could not find image图片路径错使用相对路径或绝对路径
YAML parse error文件头格式错检查 YAML 缩进和语法
Citation not foundbib 文件中没有该引用检查 cite key 是否匹配
UTF-8 encoding error编码问题确保文件是 UTF-8 编码

速查表

# 基本用法
pandoc input -o output                                 # 自动识别格式
pandoc input -f FORMAT -t FORMAT -o output             # 显式指定格式

# 常用选项
# -o / --output           输出文件
# -f / --from             输入格式
# -t / --to               输出格式
# --standalone / -s        生成完整文档(不只是片段)
# --toc                    生成目录
# --number-sections        标题编号
# --citeproc               处理引文
# --bibliography=file.bib  指定文献库
# --csl=style.csl          指定引文样式
# --pdf-engine=xelatex     PDF 引擎(中文用 xelatex)
# --template=file          自定义模板
# --highlight-style=kate   代码高亮风格

# 常见格式代号
# markdown / gfm / commonmark / html / latex / docx / pdf / epub / pptx / rst