最近在梳理手头几个开源文档项目的自动化发布链路(目标是单套 Markdown 源文件,同时交付 Web、PDF 和 ePub),顺便把目前的几种主流选型做了一点简单归纳:
- Pandoc 体系(老牌标准):生态最完整,配合 Lua Filter 处理 AST 极其灵活,转 ePub 很稳。但若走 LaTeX 生成 PDF,中文字体配置与样式微调的成本相对较高。
- Typst(新晋利器):编译速度与现代 CLI 体验极佳,语法直观,排版质量几乎能对标甚至超越传统 TeX(参考其 GitHub 仓库的 RFC 讨论,社区活跃度非常高)。痛点在于目前主打 PDF,对 ePub / HTML 的多端生态还在演进中。
- 无头浏览器方案(Paged.js / Puppeteer / WeasyPrint):遵循 W3C 的 CSS Paged Media 规范。优势是用写前端网页的直觉去定义印刷样式,复用 Web 现成组件非常爽;劣势是大型文档渲染时的内存占用和性能开销较明显。
我自己目前的折中做法是:文档站用 VitePress / mdBook,单独打包 PDF 时尝试引入 Typst。
想请教一下常做长文档和电子书整理的朋友们:大家在实际项目中更偏向哪一套构建方案?在处理「代码块跨页断行」或「复杂图表交叉引用」时,哪套方案给你们带来的心智负担最小?