将 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 是大多数后续转换的基石。按以下步骤操作:

  1. 编译两次以解决交叉引用和目录。
  2. 运行 biber(若使用传统样式则运行 bibtex)置于两次编译之间。
  3. 使用 pdfx 宏包
\usepackage[x-1a]{pdfx}

这会注入 PDF/A 所需的元数据并强制嵌入字体。

  1. 检查日志中是否出现 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 文件。为确保一致性:

  1. 使用 PDF 嵌入图形(pdfLaTeX),保持矢量质量。
  2. 将图形转换为 SVG 用于 HTML/EPUB。可以使用 Inkscape:
inkscape -l fig.svg fig.pdf
  1. 在 LaTeX 中提供 alt 文本\caption[Alt text]{Full caption}。Pandoc 会提取可选参数用于可访问性。

除非图形本身就是像素图(如显微镜照片),否则避免使用大尺寸光栅图像。对于像素图,可在加入前使用 optipngjpegoptim 压缩。


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. 将流程集成到机构仓库

许多高校运行的机构仓库接受多种格式的稿件。为简化入库:

  1. 以 PDF/A‑1b 作为存档母本,直接从 LaTeX 按第 4 节生成。
  2. 使用相同的 LaTeX 源生成 HTML 摘要,作为检索引擎的索引字段。
  3. 提供 EPUB 作为辅助下载,并将文件大小控制在 5 MB 以下(通过压缩图像实现)。
  4. 记录转换过程信息(引擎版本、宏包列表、验证结果)到仓库的元数据 schema 中,满足审计需求并便于将来复现。

13. 小结

将 LaTeX 手稿转换为多种发布格式并非“一键搞定”的任务。它要求对目标标准有清晰认知、对源文件做有计划的准备,并对每个输出进行严格验证。通过选择合适的引擎、嵌入字体、使用可靠的 PDF/A 工作流,并借助 pandoc、LaTeXML 以及专门的验证工具,作者可以仅维护一份源文件,就安全地面向传统期刊、网络门户以及电子阅读器发布。自动化脚本保证过程可重复,而像 convertise.app 这样的注重隐私的在线服务则能在偶发需求时填补空白。采用这些最佳实践,你的学术成果将在整个数字生命周期中保持完整性和可访问性。