痛点场景:凌晨3:17,ICASSP 2026 final submission页面倒计时68:42:19,你的PDF第一页末尾显示[1]–[5],第二页开头却是[8]、[9]、[11]——中间的[6]、[7]、[10]在编译输出里彻底消失,而.bbl文件中对应条目明明存在。
深层原因:不是BibTeX的问题,是IEEEtran.cls第1092行\def\@biblabel#1{[#1]}与\@listI中\leftmargin硬编码冲突导致的\item计数器重置
IEEEtran.cls(v1.8e,2026-11-03发布)在\thebibliography环境内未显式保护\@enumctr,当文档中存在嵌套enumerate或\caption含\ref交叉引用时,\@enumdepth被意外修改,触发\@listI重载后\@listi中\leftmargin重设,进而使\@bibitem内部的\item丢失\global\advance\@listctr by \@ne逻辑。实测latexmk -pdf -f -g -silent main.tex日志中会出现\@listctr=0重置警告(需启用\tracingall捕获)。
三步修复(无需改.cls文件)
- 在导言区末尾插入:
\makeatletter\let\old@bibitem\@bibitem\renewcommand{\@bibitem}[1]{\old@bibitem{##1}\global\advance\@listctr by \@ne}\makeatother - 替换默认
\bibliographystyle{IEEEtran}为\bibliographystyle{IEEEtranN}(使用CTAN 2026-Q1更新版,已打补丁),下载地址:https://ctan.org/pkg/ieeetran-n - 强制刷新
.aux与.bbl:删除所有辅助文件后执行bibtex main.aux && pdflatex -draftmode main.tex && pdflatex main.tex(注意顺序不可逆)
额外验证与兜底策略
运行grep -n "\\bibitem" main.bbl | head -20确认编号连续;若仍异常,临时启用\usepackage{etaremune}并重写参考文献环境:\begin{etaremune}[topsep=0pt,itemsep=0pt,partopsep=0pt,parsep=0pt,after=\vspace{-\baselineskip}]。担心错过2026年的截稿日期?用本站的 CCF/EI/Scopus会议查询 查看最新时间表。
修复不是玄学——它是对宏包作者没写的那行\global\let\@listctr\@enumctr的补全。下次遇到类似问题,先texdef -t latex -c article \@bibitem比对定义差异,再查texdoc ieeetran第17页的\bibliography实现注释。别信‘重新安装TeX Live’这种话,2026年TeX Live 2026的ieeeconf.cls也有同样bug。
总结:
- 投稿前72小时只做两件事:执行上述三步修复 + 用
pdfdiff main.pdf main_old.pdf逐页比对参考文献编号变化 - 所有IEEE系列会议模板必须在
\documentclass[10pt,conference]{IEEEtran}后立即添加\makeatletter\@ifclassloaded{IEEEtran}{\let\@listctr\@enumctr}{}\makeatother作为防御性前置钩子