在学术论文排版中,使用 BibTeX 管理参考文献本应是 LaTeX 最省心、最高效的特性之一。只需从 Google Scholar、IEEE Xplore 或 DBLP 上将 .bib 代码复制粘贴到文件里,系统就能自动生成格式统一的引文列表。
然而,在实际编译(Compile)过程中,终端控制台却常常弹出一连串令人费解的红色报错:

-
! Missing $ inserted.(直接中断编译并卡在某行) -
正文中引用的文献全部变成了令人抓狂的连排问号
[?]; -
标题里的专有名词大写(如“CNN”、“LSTM”、“Transformer”)见刊后全被强行抹成小写;
-
机构作者(如 IEEE、World Health Organization)在引文列表中被强行拆解成奇怪的人名缩写。
这些问题几乎都源于 BibTeX 底层解析机制与 LaTeX 语法保留字的冲突。掌握以下核心排错规则,能让您在数分钟内精准定位并修复所有文献报错。
1. 高频致命报错:“Missing $ inserted” 深度剖析与修复
这是 BibTeX 最普遍也最致命的报错。它的本质是:LaTeX 编译器在处理 .bib 文件中的某些保留字符时,误认为进入了数学公式环境,从而强制寻找闭合的美元符号 $。
常见诱因与修复方案:
① 标题或 URL 中包含未转义的下划线 _
从网络直接导出的文献条目中,title、journal 或 url 字段经常出现下划线(如数据集名称 ImageNet_2026 或模型名称 ResNet_50)。 在 LaTeX 中,下划线 _ 是数学公式下标保留字,直接暴露在文本模式下会瞬间触发 Missing $ inserted。
-
错误写法:
代码段title = {Evaluation on ImageNet_V2 and BERT_base Models} -
正确修复(添加反斜杠转义):
代码段title = {Evaluation on ImageNet\_V2 and BERT\_base Models}
② 含有未转义的连字符号 & 或百分号 %
期刊名或出版商名称中常含有“与”符号(如 Robotics & Automation),或正文中出现了百分比数据。 在 LaTeX 中,& 是表格对齐保留字,% 是行内注释起始符。一旦出现在非公式环境下且未加转义,整行后面的元数据会被系统直接当成注释吞噬,破坏大括号闭合。
-
错误写法:
代码段journal = {IEEE Transactions on Control & Systems}, note = {Improved by 15% on benchmark} -
正确修复:
代码段journal = {IEEE Transactions on Control \& Systems}, note = {Improved by 15\% on benchmark}
③ 标题自带真正的数学公式却未用 $ 包裹
如果论文标题本身就包含数学符号或上标(如 $O(n \log n)$ 复杂度或化学式),必须显式用美元符号声明数学环境。
-
错误写法:
代码段title = {An O(n^2) Algorithm for Graph Matching} -
正确修复:
代码段title = {An $O(n^2)$ Algorithm for Graph Matching}
2. 常见视觉 Bug:专有名词大小写丢失(Title Casing)
很多学者在导出 PDF 后发现,自己在 .bib 中明明写的是 YOLO: Real-Time Object Detection,但在生成的 References 列表里却变成了丑陋的 Yolo: real-time object detection。
-
产生原因: 绝大多数标准学术期刊与会议样式文件(如
IEEEtran.bst、ACM-Reference-Format.bst)遵循西方出版界的 Sentence case(仅句首单词大写) 语法规则。BibTeX 引擎会自动将除了第一个单词外的所有字母强行强制降级为小写。 -
终极解决方案:使用大括号
{}建立“防篡改保护罩” BibTeX 引擎对被花括号完全包裹的单词或字符序列具有豁免规则,包裹在其中的字符将绝对保持原有大小写。-
错误写法:
代码段title = {Deep Learning with GAN, BERT and GPT-4 Models} -
正确修复:
代码段title = {Deep Learning with {GAN}, {BERT} and {GPT-4} Models} -
进阶提示:也可以直接用双层大括号包裹整个标题(
title = {{Deep Learning with GAN, BERT and GPT-4 Models}}),但部分极少数出版排版引擎会对全包式大括号发出警告,最规范的做法是“只包裹需要锁定的专有名词”。
-
3. 逻辑紊乱:作者姓名格式化异常
① 机构作者被强行拆解成“名 + 姓”
当作者不是具体的人,而是某个官方委员会、工作组或机构时(如 IEEE 委员会、世界卫生组织):
-
错误写法:
代码段author = {IEEE Computer Society}后果:BibTeX 会默认最后一个单词是“姓(Last Name)”,前面都是“名(First Name)”,最终被排版为:
Society, I. C.(滑稽的个人缩写)。 -
正确修复(用双层大括号锁定):
代码段author = {{IEEE Computer Society}}双层大括号会通知解析器:“这是一个不可拆分的整体实体”。
② 多个作者之间的连接符用错
在 BibTeX 的底层规范中,作者与作者之间必须且只能用英文单词 and 隔开,绝对不能使用逗号 ,。
-
错误写法:
代码段author = {San Zhang, Si Li, Wu Wang} % 系统会误认为这是一个有三个名字的复合长人名 -
正确修复:
代码段author = {San Zhang and Si Li and Wu Wang}
③ 滥用 “et al.” 导致渲染畸变
很多作者在手动抄录文献时,图省事在 author 字段后面写 and others 或直接打 et al.:
-
规范做法:如果需要省略超长作者名单,BibTeX 的标准保留关键字是
and others,排版引擎会自动根据会议或期刊的.bst文件规范,将其转换为对应字体的 et al.。代码段author = {San Zhang and Si Li and others}
4. 幽灵问号:“[?]” 与四遍编译流水线
修改了 .bib 文件后,再次点击编译,发现正文里依然全都是问号 [?],或者终端报错:
-
LaTeX Warning: Citation 'xxx' on page X undefined on input line Y. -
I found no \citation commands---while reading file main.aux
核心机制:四步编译流水线(The 4-Step Cycle)
LaTeX 生成交叉引用的底层逻辑是多步骤数据文件交互。只点一次编译按钮是无法建立文献索引映射的。标准的本地终端或编辑器必须完整跑完以下四道工序:
1. pdflatex main.tex ➔ 扫描正文引用标记,生成包含引用引索的 main.aux 文件
2. bibtex main.aux ➔ 读取 main.aux 与 main.bib,生成带格式的文献列表 main.bbl
3. pdflatex main.tex ➔ 将 main.bbl 的文献数据导入正文,建立临时编号对应关系
4. pdflatex main.tex ➔ 修正所有页面标号与交叉索引对齐,最终生成完美的 PDF
Overleaf 平台特例排查:
虽然 Overleaf 平台通常会自动运行全套流程,但如果之前有严重的语法报错导致编译中途崩溃,系统后台生成的缓存文件(
.aux、.bbl)可能已经损坏。一键解法:点击 Overleaf 编译日志(Recompile 按钮旁边的小文档图标)$\rightarrow$ 滑动到最下方,点击 “Clear Cached Files(清除缓存文件 / 垃圾桶图标)”,随后重新点击 Recompile,即可清除历史锁死状态。
5. 编码冲突:非 ASCII 字符(重音符与多语言乱码)
欧洲学者姓名中经常包含特殊重音字母(如德语变音 ö、法语尖音 é、北欧字符 ø)。直接复制粘贴这些字符,在低版本 LaTeX 引擎或未指定 UTF-8 编码的模板中极易引发 Unicode character not set up for use with LaTeX 报错。
标准 LaTeX 重音转义映射表:
| 实际字符 | 规范 LaTeX 转义语法 | 示例用法 |
| é / á | \'{e} / \'{a} |
Ren\'{e} Descartes |
| è / à | \{e}/`{a}` |
H\{e}l`{e}ne` |
| ö / ü / ä | \"{o} / \"{u} / \"{a} |
M\"{u}ller |
| ñ | \~{n} |
Pe\~{n}a |
| ç | \c{c} |
Fran\c{c}ois |
| ø | \o |
S\o ren |
在向正式国际学术会议提交终稿前,使用标准的转义语法替换纯文本重音符,能够彻底规避出版商服务器因底层 Linux 镜像编码不兼容而引发的致命崩溃。
6. 提交前的 BibTeX 预检清单(Sanity Checklist)
在将论文 Camera-Ready 终稿或投稿源码打包上传前,逐项过一遍以下检查单:
-
查特殊符号:全文检索
.bib文件中的_、&、%,确认是否全部补齐了反斜杠转义; -
查专有名词:检查核心算法缩写、硬件平台、数据集等首字母缩写是否全部包裹在
{}内; -
查多作者连接:确认所有作者项均使用规范的
and语法连接; -
查缓存与连通:清除所有
.aux、.bbl、.blg衍生文件,完整重新走一遍四步编译,确认 PDF 正文中没有任何一个标红或缺失的[?],且 References 列表所有字段排列规整。
