随机
Enter 搜索 ↑↓ 切换 Esc 清空

pandoc

命令

文档格式转换工具

pandoc

文档格式转换工具

补充说明

pandoc 是通用的文档转换工具,支持多种格式之间的相互转换,被称为文档界的"瑞士军刀"。支持 Markdown、HTML、PDF、Word 等数十种格式。

语法

pandoc [OPTIONS] [INPUT] -o OUTPUT

基本转换

# Markdown 转 HTML
pandoc input.md -o output.html
pandoc input.md -s -o output.html    # 生成完整 HTML 文档

# Markdown 转 PDF
pandoc input.md -o output.pdf
pandoc input.md --pdf-engine=xelatex -o output.pdf  # 中文 PDF

# Markdown 转 Word
pandoc input.md -o output.docx
pandoc input.md -o output.docx --reference-doc=template.docx

# Markdown 转 PowerPoint
pandoc input.md -o output.pptx

# Markdown 转 HTML 幻灯片
pandoc input.md -o output.html -t revealjs
pandoc input.md -o output.html -t slidy

# Word 转 Markdown
pandoc input.docx -o output.md
pandoc input.docx -t markdown -o output.md

# HTML 转 Markdown
pandoc input.html -o output.md
pandoc input.html -t markdown -o output.md

# PDF 转 Markdown
pandoc input.pdf -o output.md

输入格式

# 指定输入格式(可选,通常自动识别)
pandoc -f markdown input.md -o output.html
pandoc -f markdown -t html input.md -o output.html

# 支持的输入格式
markdown           # Markdown
markdown_strict    # 严格 Markdown
markdown_phpextra  # PHP Markdown Extra
markdown_github    # GitHub Markdown
commonmark         # CommonMark
gfm               # GitHub Flavored Markdown
html              # HTML
docx              # Word OOXML
odt               # OpenDocument Text
rtf               # Rich Text Format
pdf               # PDF
latex             # LaTeX
rst               # reStructuredText
org               # Emacs Org Mode
textile           # Textile
twiki             # TWiki
mediawiki         # MediaWiki
opml              # OPML
docbook           # DocBook
jats              # JATS XML
tsv               # TSV
csv               # CSV
json              # JSON

输出格式

# 指定输出格式(可选,通常通过扩展名自动识别)
pandoc input.md -t html -o output
pandoc input.md -o output.html

# 支持的输出格式(常用)
html               # HTML
html5              # HTML5
docx               # Word OOXML
odt                # OpenDocument Text
pdf                # PDF
latex              # LaTeX
beamer             # Beamer 幻灯片
pptx               # PowerPoint
revealjs           # Reveal.js 幻灯片
slidy              # Slidy 幻灯片
dzslides           # DZSlides 幻灯片
markdown           # Markdown
commonmark         # CommonMark
gfm                # GitHub Flavored Markdown
rst                # reStructuredText
org                # Emacs Org Mode
textile            # Textile
rtf                # RTF
epub               # EPUB
epub3              # EPUB 3
fb2                # FictionBook2
asciidoc           # AsciiDoc
man                # Groff man
texinfo            # GNU Texinfo
org                # Org Mode
plain              # 纯文本
json               # JSON

PDF 相关选项

# PDF 引擎
pandoc input.md -o output.pdf --pdf-engine=pdflatex
pandoc input.md -o output.pdf --pdf-engine=xelatex    # 中文支持
pandoc input.md -o output.pdf --pdf-engine=lualatex
pandoc input.md -o output.pdf --pdf-engine=wkhtmltopdf
pandoc input.md -o output.pdf --pdf-engine=weasyprint

# 中文 PDF(推荐配置)
pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V CJKmainfont="SimSun" \
  -V geometry:margin=1in

# 使用中文字体配置
pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V CJKmainfont="Microsoft YaHei" \
  -V mainfont="Microsoft YaHei" \
  -V geometry:margin=2cm

# PDF 参数
pandoc input.md -o output.pdf --pdf-engine=xelatex \
  -V geometry:margin=1in \
  -V fontsize=12pt \
  -V colorlinks=true \
  -V linkcolor=blue

通用选项

# 生成完整文档
pandoc input.md -s -o output.html    # 添加 HTML 头尾
pandoc input.md --standalone -o output.html

# 设置文档标题
pandoc input.md -o output.html -M title="My Document"
pandoc input.md --metadata title="My Document" -o output.html

# 设置作者
pandoc input.md -o output.html -M author="张三"
pandoc input.md --metadata author="张三" -o output.html

# 设置日期
pandoc input.md -o output.html -M date="2024-01-01"

# 目录
pandoc input.md -o output.html --toc
pandoc input.md -o output.html --toc --toc-depth=3

# 章节
pandoc input.md -o output.html --number-sections
pandoc input.md -o output.html --number-offset=1

# 模板
pandoc input.md -o output.html --template=template.html

# 变量
pandoc input.md -o output.html -V title="Hello"
pandoc input.md -o output.pdf -V geometry:margin=1in

# CSS(HTML 输出)
pandoc input.md -o output.html --css=styles.css
pandoc input.md -o output.html -c styles.css

# 数学公式
pandoc input.md -o output.html --mathjax
pandoc input.md -o output.html --katex
pandoc input.md -o output.html --webtex

# 代码语法高亮
pandoc input.md -o output.html --highlight-style=pygments
pandoc input.md -o output.html --highlight-style=tango
pandoc input.md -o output.html --highlight-style=espresso
pandoc input.md -o output.html --highlight-style=zenburn
pandoc input.md -o output.html --highlight-style=kate
pandoc input.md -o output.html --highlight-style=monochrome

过滤器

# 使用 Lua 过滤器
pandoc input.md -o output.html --lua-filter=filter.lua

# 使用 Python 过滤器
pandoc input.md -o output.html --filter=filter.py

# 使用 pandoc-crossref(交叉引用)
pandoc input.md -o output.html --filter=pandoc-crossref

# 使用 pandoc-citeproc(文献引用)
pandoc input.md -o output.html --citeproc

# 参考文献文件
pandoc input.md -o output.html --bibliography=refs.bib

合并文档

# 合并多个 Markdown 文件
pandoc chapter1.md chapter2.md chapter3.md -o book.pdf

# 从多个文件创建 EPUB
pandoc chapter1.md chapter2.md chapter3.md -o book.epub

# 使用 YAML 头设置书籍信息
#---
#title: My Book
#author: 张三
#date: 2024-01-01
#---

模板变量

# 常用模板变量
-V title="标题"                   # 标题
-V author="作者"                  # 作者
-V date="2024-01-01"             # 日期
-V geometry:margin=1in          # 边距
-V fontsize=12pt                 # 字号
-V documentclass=article         # 文档类
-V papersize=a4                  # 纸张大小
-V colorlinks=true               # 彩色链接
-V linkcolor=blue                # 链接颜色
-V urlcolor=blue                 # URL 颜色
-V mainfont="SimSun"             # 主字体
-V sansfont="Arial"              # 无衬线字体
-V monofont="Courier"            # 等宽字体
-V CJKmainfont="SimSun"          # 中文主字体
-V header-includes="..."         # 头部包含

常用组合

# Markdown 转 PDF(中文)
pandoc input.md -o output.pdf --pdf-engine=xelatex -V CJKmainfont="SimSun"

# Markdown 转 Word(带样式)
pandoc input.md -o output.docx --reference-doc=template.docx

# 生成带目录的 PDF
pandoc input.md -o output.pdf --pdf-engine=xelatex --toc -V CJKmainfont="SimSun"

# 创建幻灯片
pandoc slides.md -o slides.html -t revealjs -V theme=moon

# 批量转换
for f in *.md; do pandoc "$f" -o "${f%.md}.docx"; done

# 创建完整 HTML 文档
pandoc input.md -s -o output.html -c style.css --toc --toc-depth=3

# Markdown 转 LaTeX
pandoc input.md -o output.tex

# Word 转 PDF(需要安装 wkhtmltopdf)
pandoc input.docx -o output.pdf --pdf-engine=wkhtmltopdf