将 LaTeX 文档转换用于学术出版
LaTeX 仍然是科学稿件、会议论文和学位论文的事实标准。它的优势在于对数学、参考文献以及复杂结构的精确排版。然而,出版商、机构库以及读者常常需要同一内容的其他格式——用于存档的 PDF/A、用于网页阅读的 HTML,或用于电子阅读器的 EPUB。转换过程充满了隐藏的陷阱:缺失的字体、失效的交叉引用或改变的间距都可能损害学术记录。
本文将逐步介绍一种系统化的工作流,在保持作者意图的前提下生成可分发的文件。重点在于实际决策、工具选择以及可用于单篇稿件或批量提交的验证方法。
1. 了解目标格式及其约束
在进行任何转换之前,先明确具体的输出要求。不同的发布渠道会施加不同的技术约束:
- PDF/A‑1b – 用于长期保存的 ISO 标准。禁止加密、要求嵌入字体,并且不允许未引用的色彩空间。
- PDF/UA – 满足可访问性规范的 PDF 变种(正确的标签、阅读顺序、图像的 alt 文本)。
- HTML5 – 适合网页门户;需要语义化标记、响应式图像,以及 MathML 或方程的回退图像。
- EPUB 3 – 支持可重排文本、嵌入字体和 MathML 的电子书格式;适用于平板和电子阅读器。
每种格式都决定了特定的编译标志或后处理步骤。提前映射这些约束可以节省时间,避免代价高昂的返工。
2. 选择可靠的 LaTeX 引擎
所调用的引擎决定了源文件的渲染忠实度以及会生成哪些辅助文件。
| 引擎 | 优势 | 典型使用场景 |
|---|---|---|
| pdfLaTeX | 直接输出 PDF、生态成熟、宏包支持广泛。 | 简单文章、会议投稿(PDF/A 合规性可在后期添加)。 |
| XeLaTeX | 原生 Unicode 处理、可直接使用系统字体、对多语言文本友好。 | 包含非拉丁脚本或自定义 OpenType 字体的文档。 |
| LuaLaTeX | 可通过 Lua 脚本扩展、对字体和 PDF 的细粒度控制。 | 复杂布局、可编程的参考文献样式,或需要严格 PDF 元数据控制的情况。 |
对于归档 PDF(PDF/A),pdfLaTeX 配合 pdfx 宏包是可靠的基线。对于 HTML 或 EPUB,稍后会将 LaTeX 源传递给期待干净中间 PDF 或 DVI 的转换工具。
3. 为转换做准备
3.1 保持宏包最小且有文档说明
冗余或过时的宏包会在切换引擎时增加编译错误的概率。审查 \usepackage{} 语句,删除所有对最终外观非必需的宏包。
3.2 明确嵌入字体
当最终 PDF 必须嵌入每个字形时,使用 \setmainfont{}(XeLaTeX/LuaLaTeX)或 \pdfmapfile{} 机制(pdfLaTeX)声明字体族。确认所选字体拥有分发许可;否则,转换会悄悄使用默认字体,导致视觉不一致。
3.3 使用标准的参考文献工具
将参考文献数据统一保存在 .bib 文件中,并使用 biblatex 搭配 biber 实现现代引用样式。这样可以在不同格式之间保持引用键的一致性,便于在 HTML 和 EPUB 中生成参考文献列表。
4. 生成高质量的 PDF 基线
干净的 PDF 是大多数后续转换的基石。按以下步骤操作:
- 编译两次以解决交叉引用和目录。
- 运行
biber(若使用传统样式则运行bibtex)置于两次编译之间。 - 使用
pdfx宏包:
\usepackage[x-1a]{pdfx}
这会注入 PDF/A 所需的元数据并强制嵌入字体。
- 检查日志中是否出现
Missing font警告;若出现,向映射文件添加缺失字体或切换至 XeLaTeX。
使用 PDF 验证工具(如 veraPDF)在继续之前确认 PDF/A 合规性。
5. 将 PDF 转换为 HTML 与 EPUB
主要有两种策略:
5.1 直接 LaTeX → HTML/EPUB 工具
- pandoc – 通用转换器,能够读取 LaTeX 并输出 HTML5 或 EPUB。支持引用、图形以及通过 MathJax 渲染的简单公式。
- latex2html – 较老更轻量,但在处理现代宏包和复杂数学时会遇到困难。
Pandoc 工作流:
pandoc manuscript.tex \
--pdf-engine=xelatex \
--citeproc \
-s -o manuscript.html
pandoc manuscript.tex \
--pdf-engine=xelatex \
--citeproc \
-s -o manuscript.epub
关键选项说明:
--pdf-engine确保自定义字体得到尊重。--citeproc让 pandoc 处理.bib文件并渲染参考文献。-s生成自包含文档,内部嵌入 CSS。
5.2 先生成 PDF 再抽取
如果 PDF 已经符合 PDF/A/UA 标准,可使用 pdf2htmlEX(生成 HTML)或 Calibre(生成 EPUB)从中提取结构。此方法保持完全相同的分页和字体渲染,但可能会为公式生成大尺寸的光栅图像。
优点:视觉保真度极高。
缺点:输出体积较大,且由于文本常被转为图像,可访问性受限。
6. 在多种格式中保持数学公式
方程是转换过程中最脆弱的元素。
- MathML – 现代浏览器和 EPUB 3 的原生支持。Pandoc 可通过
--mathml标志输出 MathML。 - LaTeXML – 专用的 LaTeX → XML 流水线,生成高质量的 MathML 与 XHTML。
- 图像回退 – 对于无法渲染 MathML 的环境,可配置 pandoc 生成 SVG(
--webtex)。SVG 具备可缩放性且不会光栅化公式。
一个兼顾两者的典型 pandoc 命令:
pandoc manuscript.tex \
--webtex=https://latex.codecogs.com/svg.latex? \
--mathml \
-s -o manuscript.html
生成的 HTML 会在支持的浏览器中使用 MathML,其他浏览器则使用 SVG。
7. 管理图形与外部媒体
图形通常来源于单独的 PDF、PNG 或 EPS 文件。为确保一致性:
- 使用 PDF 嵌入图形(pdfLaTeX),保持矢量质量。
- 将图形转换为 SVG 用于 HTML/EPUB。可以使用 Inkscape:
inkscape -l fig.svg fig.pdf
- 在 LaTeX 中提供 alt 文本:
\caption[Alt text]{Full caption}。Pandoc 会提取可选参数用于可访问性。
除非图形本身就是像素图(如显微镜照片),否则避免使用大尺寸光栅图像。对于像素图,可在加入前使用 optipng 或 jpegoptim 压缩。
8. 验证输出
8.1 PDF 验证
- veraPDF – 检查 PDF/A 合规性。
- PDF/UA‑Validator – 验证可访问性标签。
对最终 PDF 运行两者,并根据报告修复缺失的 alt 文本、未标记的表格等问题。
8.2 HTML 验证
- W3C HTML validator – 确保语法正确。
- axe-core – 扫描可访问性违规(缺失 ARIA 标签、标题顺序错误等)。
8.3 EPUB 验证
- epubcheck – IDPF 官方的参考验证工具,会标记缺失的元数据、无效的导航文件或错误的 MathML。
将这些检查自动化到 CI 流水线(例如 GitHub Actions)中,可保证每次修订在发布前都通过质量门。
9. 为多个稿件自动化工作流
研究人员经常需要每年处理数十篇论文或学位论文。下面的轻量脚本可以编排前述步骤。
#!/usr/bin/env bash
set -euo pipefail
DOCS=("paper1" "paper2" "paper3")
for d in "${DOCS[@]}"; do
cd "$d"
# 1. 构建 PDF/A
latexmk -pdf -pdflatex='pdflatex -interaction=nonstopmode' -usepdfx
# 2. 验证 PDF/A
verapdf "${d}.pdf"
# 3. 用 pandoc 转换为 HTML 与 EPUB
pandoc "${d}.tex" --pdf-engine=xelatex --citeproc -s -o "${d}.html"
pandoc "${d}.tex" --pdf-engine=xelatex --citeproc -s -o "${d}.epub"
# 4. 验证 HTML 与 EPUB
html5validator "${d}.html"
epubcheck "${d}.epub"
cd ..
done
该脚本使用 latexmk 进行增量编译,并在每次转换后运行三种验证器。根据实际目录结构自行修改 DOCS 数组。
10. 何时使用在线转换服务
像 convertise.app 这样的云端工具在一次性转换时非常便利,尤其是工作站上缺少完整 TeX 环境时。该服务在沙箱中处理 LaTeX 源,返回 PDF/A、HTML 或 EPUB,并遵循其文档中列出的隐私原则。但对于涉及敏感研究数据的稿件,仍建议使用自建流水线或本地转换,以确保稿件完全受控。
11. 常见陷阱与规避办法
| 陷阱 | 症状 | 解决方案 |
|---|---|---|
| PDF/A 中缺失字体 | 文本显示为通用 Times 或验证器报错 | 明确嵌入字体;使用 XeLaTeX 的 \setmainfont{} 或 pdfLaTeX 的 pdfx 包 |
| HTML 导出后引用失效 | HTML 中出现 [?] 占位符 | 确保 .bib 文件可访问,并在 pandoc 中使用 --citeproc(或在转换前运行 biber) |
| 公式仅以图像形式呈现 | 无法选择文本,文件体积大 | 启用 MathML 输出(--mathml)并提供 SVG 回退(--webtex) |
| 图形标题缺失 alt 文本 | 屏幕阅读器读不到图形说明 | 使用可选短标题 \caption[Alt]{Long},pandoc 会提取 |
| EPUB 文件过大 | 下载慢、阅读器崩溃 | 对光栅图像使用 jpegoptim/optipng 压缩,优先使用矢量 SVG |
提前检查这些项目,可避免后期出现的连锁返工。
12. 将流程集成到机构仓库
许多高校运行的机构仓库接受多种格式的稿件。为简化入库:
- 以 PDF/A‑1b 作为存档母本,直接从 LaTeX 按第 4 节生成。
- 使用相同的 LaTeX 源生成 HTML 摘要,作为检索引擎的索引字段。
- 提供 EPUB 作为辅助下载,并将文件大小控制在 5 MB 以下(通过压缩图像实现)。
- 记录转换过程信息(引擎版本、宏包列表、验证结果)到仓库的元数据 schema 中,满足审计需求并便于将来复现。
13. 小结
将 LaTeX 手稿转换为多种发布格式并非“一键搞定”的任务。它要求对目标标准有清晰认知、对源文件做有计划的准备,并对每个输出进行严格验证。通过选择合适的引擎、嵌入字体、使用可靠的 PDF/A 工作流,并借助 pandoc、LaTeXML 以及专门的验证工具,作者可以仅维护一份源文件,就安全地面向传统期刊、网络门户以及电子阅读器发布。自动化脚本保证过程可重复,而像 convertise.app 这样的注重隐私的在线服务则能在偶发需求时填补空白。采用这些最佳实践,你的学术成果将在整个数字生命周期中保持完整性和可访问性。