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 或 latexmkkey 变化后,引用处会显示问号

先判断是哪一种问题

不同症状对应的原因不同,先对号入座,可以少走弯路。

症状常见原因怎么确认
PDF 中出现“??”或“(??)”\ref、\eqref 指向的标签不存在,或标签被删除搜索日志中的 “undefined” 警告,记下标签名,再到译文中查找
公式编号正常,但正文引用的是别的式子\label 被移到了 \caption 或 equation 环境之外,或标签重复检查 \label 是否仍在 equation 环境内部,并查看有没有同名标签
子图显示“图 3(??)”或 (a)(b) 错位\subref 的标签丢失,或 subfigure 环境结构被改动查看 .aux 文件中是否有对应子图的标签记录
编译报 “Undefined control sequence”导言区的自定义命令被翻译或改了名字根据报错行号,对照原文导言区逐条核对
日志中出现 “Label ... multiply defined”译文复制了段落,导致同一个标签出现两次在译文中搜索该标签名,找出重复位置

逐项排查和修复

建议按下面的顺序操作,先做成本低的检查,再处理复杂的结构问题。

  1. 保存原文和译文两份源码,逐个文件对照,包括主文件、各章节文件和导言区。
  2. 统计标签:在原文和译文中分别搜索 \label{,记下数量和每个标签名。标签名如 eq:loss、fig:overview 应保持英文原样,不要被翻译成中文。
  3. 统计引用:搜索 \ref、\eqref、\subref、\cref,数量应与原文一致。如果译文引用少了,通常是某段被删改。
  4. 检查标签位置:\label 应紧跟在 \caption 之内,或位于 equation、subfigure 环境之内。如果它被挪到段落末尾或环境之外,编号可能指向错误的对象。
  5. 编译两遍。第一遍生成辅助文件,第二遍把编号写入引用处。随后查看日志中是否还有 “LaTeX Warning: Reference ... undefined” 和 “multiply defined”。
  6. 核对 PDF:逐个找到正文中提到公式和子图的地方,看编号是否与式子或图题一致。
  7. 如果输出的是双语对照版本,可以把译文 PDF 与原文 PDF 的编号位置对照,编号应当一一对应。
  8. 修复后再编译一次,确认警告已经消失,并保存修复后的源码。

在 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 中的编号,才能放心提交译文。

打开 OmniDoc,整篇翻译你的文献

更新于 2026-11-04