Pandoc
Pandoc 被看作一种“文档界的 ffmpeg”:它是一个命令行工具,能够在极其广泛的格式之间互相转换——Markdown、LaTeX、Word、HTML、PDF、EPUB 等等——从学术论文和书籍到静态网站、发票和幻灯片都能派上用场。评论者称赞它的可靠性、灵活性以及生态系统(模板、Lua 过滤器、Quarto 和 RMarkdown 等工具),常常用它来保持单一的纯文本源文件,同时导出到多种发布格式。主要缺点包括二进制体积较大、学习曲线偏陡,以及在微调版式时偶尔遇到边缘情况或复杂性,但大多数人认为这些都是为了它所提供的控制力和自动化而值得接受的代价。
整体情绪
- 热情非常强烈;很多人称 Pandoc 是他们最有用的工具之一。
- 经常被比作文档界的
ffmpeg,并被描述为标记语言的“瑞士军刀”。 - 因其扎实的 CLI 设计、代码质量和响应迅速的维护而受到称赞。
常见用途
- 将 Markdown 转换为 HTML、PDF(通过 LaTeX)、EPUB、DOCX、幻灯片和 ODT。
- 学术和技术写作:论文、文章、课程笔记、科学报告、小说、教材。
- 使用简单的 shell/Make 包装进行静态网站/博客生成,有时可替代完整的 SSG。
- 电子邮件工作流:展开/重排文本、改进格式,或绕过 GUI 客户端。
- 一次性转换:Word → Markdown/LaTeX、PDF → RTF、HTML → 文本等。
- 通过 Markdown/HTML → PDF 生成发票和报告(有时配合 WeasyPrint 或 puppeteer 等其他工具)。
工作流与工具链
- Markdown + 内联 LaTeX 是非常流行的输入格式;也有人更喜欢 Org-mode、AsciiDoc 或 DOCX。
- 常见管线:
- Markdown → Pandoc → LaTeX → PDF
- Markdown → Pandoc → DOCX → Google Docs
- Org/asciidoc → HTML/Markdown → Pandoc → 其他格式
- RMarkdown / Quarto / Codebraid / RStudio 前端在底层调用 Pandoc。
- 被用作静态站点、电子书生成、幻灯片和文学编程的后端。
编辑与写作方式的争论
- 关于 Word、Markdown/LaTeX 和纯文本的大型子讨论:
- 有些人偏好用 Word 进行长篇写作、样式、批注和协作,然后再用 Pandoc 做最终转换。
- 另一些人坚持应在纯文本/Markdown/LaTeX 中写作(通常配合 Vim/Emacs),以避免 WYSIWYG 干扰和格式混乱。
- 普遍共识是 Pandoc 有助于连接不同生态系统(纯文本 ↔ Word/Google Docs/InDesign)。
扩展与生态
- Lua 过滤器和脚本用于自定义 AST 转换、实现幻灯片系统、定制表格、章节断点等。
- 已集成到 Quarto、RMarkdown 以及各种静态站点模板和浏览器/编辑器扩展中。
- Docker 镜像被广泛用于隔离依赖(尤其是 LaTeX)并避免系统冲突。
痛点与限制
- 有人抱怨二进制体积和 Haskell 依赖“臃肿”;一些人希望有一个“lite”版本。
- 学习曲线、众多选项和模板系统可能让人觉得风格怪异;用户常常每个项目都要重新学习。
- 某些格式(例如复杂的 Org-mode、发票中棘手的表格、冷门的 PDF 排版需求)无法完美转换,需要手动调整或额外工具。
- 许可证(GPLv3)会给闭源桌面应用的集成带来疑问。