LaTeX译文里,公式和子图引用别断掉
用 OmniDoc 翻译 LaTeX 源码包后,公式和子图的引用可能出现问号或编号错位。本文给出标签对照、编译排查和修复的具体步骤,帮你确认译文里的交叉引用仍然有效。
很多人用 OmniDoc 翻译 LaTeX 源码包后,发现 PDF 排版基本正常,但正文里的“式 (??)”或“图 3(??)”出现了问号,或者子图编号对不上。这类问题多半不是翻译把内容弄坏了,而是 \label 和 \ref 在译文里失去了对应关系。论文、学位论文和技术报告里公式多、子图多,这个问题尤其常见。
这篇文章写给需要处理 LaTeX 翻译文献的读者。读完后,你会知道怎样用标签数量对照、编译日志和 PDF 检查,快速判断公式和子图引用是否仍然有效,并能按原因修复。
OmniDoc 支持上传 LaTeX 源码包翻译,可以选择仅译文或双语对照输出,公式和版式会保留。不过译文由机器生成,即使引用全部解析,术语和句意也仍需对照原文核对。
译后公式和子图引用怎么检查?一句话结论
先用原文和译文的标签数量做对照,确认 \label 没有丢失、改名或挪位,再编译两遍看日志,最后核对 PDF 里的编号。只看 PDF 能发现明显的问号,但发现不了指向错误的引用,所以两步都需要做。
| 你的情况 | 推荐做法 | 原因 |
|---|---|---|
| 只需要读懂译文,不再编译 | 对照原文,核对公式和子图标签的数量与名字 | 不重新编译时,断掉的引用通常不会直接显示 |
| 要提交给期刊或导师的 PDF | 编译两遍,逐条处理日志中的 undefined 警告 | 交叉引用的编号要在第二遍编译时写入 |
| 文中用了子图(subfigure 或 subcaption) | 单独核对 \subref 的显示和 (a)(b) 的顺序 | 子图编号由子图环境生成,改写 caption 时容易丢失 |
| 译文里改动了导言区的自定义命令 | 检查导言区的 \newcommand 定义是否保留原名 | 命令名被改动会直接导致编译失败 |
| 参考文献来自 Zotero 连接的文献工作区 | 保持 \cite 的 key 不变,编译时重新运行 bibtex 或 latexmk | key 变化后,引用处会显示问号 |
先判断是哪一种问题
不同症状对应的原因不同,先对号入座,可以少走弯路。
| 症状 | 常见原因 | 怎么确认 |
|---|---|---|
| PDF 中出现“??”或“(??)” | \ref、\eqref 指向的标签不存在,或标签被删除 | 搜索日志中的 “undefined” 警告,记下标签名,再到译文中查找 |
| 公式编号正常,但正文引用的是别的式子 | \label 被移到了 \caption 或 equation 环境之外,或标签重复 | 检查 \label 是否仍在 equation 环境内部,并查看有没有同名标签 |
| 子图显示“图 3(??)”或 (a)(b) 错位 | \subref 的标签丢失,或 subfigure 环境结构被改动 | 查看 .aux 文件中是否有对应子图的标签记录 |
| 编译报 “Undefined control sequence” | 导言区的自定义命令被翻译或改了名字 | 根据报错行号,对照原文导言区逐条核对 |
| 日志中出现 “Label ... multiply defined” | 译文复制了段落,导致同一个标签出现两次 | 在译文中搜索该标签名,找出重复位置 |
逐项排查和修复
建议按下面的顺序操作,先做成本低的检查,再处理复杂的结构问题。
- 保存原文和译文两份源码,逐个文件对照,包括主文件、各章节文件和导言区。
- 统计标签:在原文和译文中分别搜索 \label{,记下数量和每个标签名。标签名如 eq:loss、fig:overview 应保持英文原样,不要被翻译成中文。
- 统计引用:搜索 \ref、\eqref、\subref、\cref,数量应与原文一致。如果译文引用少了,通常是某段被删改。
- 检查标签位置:\label 应紧跟在 \caption 之内,或位于 equation、subfigure 环境之内。如果它被挪到段落末尾或环境之外,编号可能指向错误的对象。
- 编译两遍。第一遍生成辅助文件,第二遍把编号写入引用处。随后查看日志中是否还有 “LaTeX Warning: Reference ... undefined” 和 “multiply defined”。
- 核对 PDF:逐个找到正文中提到公式和子图的地方,看编号是否与式子或图题一致。
- 如果输出的是双语对照版本,可以把译文 PDF 与原文 PDF 的编号位置对照,编号应当一一对应。
- 修复后再编译一次,确认警告已经消失,并保存修复后的源码。
在 omnidoc.top 上传 LaTeX 源码包并下载译文后,可以直接按上述步骤核对。如果需要在网页上继续修改 LaTeX 内容,可以使用 app.unidoc.top 的 UniDoc 网页编辑器。
公式引用断掉怎么修
公式引用断掉,通常是 \label 的位置或名字出了问题。先找到日志里报 undefined 的标签名,在译文中搜索它。如果标签不见了,就从原文中把它补回到对应的 equation 环境里。如果标签名被改成了中文,把它改回原文的英文名,并同步修改所有对应的 \ref 与 \eqref。
子图引用怎么修
子图引用的重点是 \subref 和子图环境。使用 subcaption 等宏包时,子图标签应放在对应的 subfigure 中,正文用 \subref 引用。如果译文把“(a)”“(b)”改成了全角括号或手写文字,编号格式会变化。修复时保留原文的子图结构,只翻译 caption 的说明文字,不改动环境和标签。
怎样避免下次再出现
- 翻译前先备份原始源码包,修复时可以随时对照。
- 不要把 \label、\ref、\cite 的参数翻译成中文,标签名始终保持英文和 ASCII 字符。
- 导言区的自定义命令不要改名,只翻译正文和 caption 里的文字。
- 每次修改后都编译两遍,并查看日志,不要只看 PDF 是否“看起来正常”。
- 参考文献的 key 保持不变,如果使用 Zotero 连接的文献工作区,导入后先检查 key 是否与正文一致。
- 修改图表后,在正文中检查它被引用的每一处,确认编号仍然对应。
❓ 常见问题(FAQ)
1. 编译后没有问号,引用还会出错吗?
会。有时编号被正确写入,但指向的对象已经错位,例如子图和整图的编号混在一起。PDF 没有问号,只说明标签能解析,不说明它指向了正确的内容。所以还要逐个核对正文提到的编号和图题、式子是否一致。
2. 译文里的标签能不能改成中文?
不建议。标签名保持英文,引用更稳定,也能避免编译器和宏包在不同环境下出现编码问题。中文内容只放在 caption 和正文里。
3. 整图和子图分别用哪个引用命令?
整图通常用 \ref,子图使用 subcaption 等宏包时用 \subref。两者的标签位置不同,混用会导致编号显示异常。
4. 翻译后需要重新运行 bibtex 吗?
需要。参考文献的 key 不变时,重新运行 bibtex 或 latexmk 即可更新引用列表。如果 key 发生了变化,引用处会显示问号,需要先修正 key 再编译。
📝 总结
翻译 LaTeX 文献后,公式和子图引用断掉通常可以通过标签对照、两遍编译和日志检查找到原因。只要保持标签名和导言区命令不变,修复起来并不复杂。核对完成后,再看一遍 PDF 中的编号,才能放心提交译文。


