截稿前227分钟,bbl文件炸了
凌晨一点四十三分,Overleaf右上角红色错误图标跳出来:! Package natbib Error: Bibliography not initialized.。不是第一次见,但这次是ACM CHI 2026的final submission,PDF必须带ACM DOI watermark、author-year citation style、且bibliography需严格匹配acmart.cls v2026.03.18。我手抖点开.bbl——17个条目里,6个缺失doi字段,3个会议名称缩写成‘Proc. ACM’而非‘Proc. ACM Hum.-Comput. Interact.’,还有2个arXiv预印本被当成期刊处理。服务器日志显示:[acmart] WARNING: Missing required field 'doi' for entry chen2026tactile。
acm-cite-fix:一个Overleaf浏览器插件,不是Python脚本
它不依赖本地TeX Live,直接注入Overleaf编辑器DOM。核心逻辑是:监听.bib文件保存事件 → 提取所有@inproceedings/@article条目 → 调用Crossref REST API v2026(带[email protected]头)批量查DOI元数据 → 对比acmart官方schema校验字段完整性 → 自动生成patched.bib并覆盖原文件。关键代码段(插件content.js):
const fixEntry = (entry) => {
if (entry.type === 'inproceedings' && !entry.doi) {
const query = `${entry.author[0].last} ${entry.title.substring(0, 20)}`;
return crossref.search({query, filter: 'type:proceedings-article', rows: 1})
.then(res => {
if (res.message.items[0]) {
entry.doi = res.message.items[0].DOI;
entry.booktitle = normalizeBooktitle(res.message.items[0].container-title);
}
});
}
};
不是魔法,是踩过CHI/ICSE/ACL三届坑后的补丁链
2024年ICSE,我手动改bib导致author-year变成numbered;2026年ACL,arXiv条目因缺少eprinttype = {arXiv}被desk-reject;2026年CHI,ACM强制要求acmcopyright环境必须与DOI绑定。acm-cite-fix v2.3.1新增三项硬规则:① @misc类条目若含arxiv.org域名,自动添加eprinttype = {arXiv}和eprint = {2512.xxxxx};② 所有booktitle字段经ACM Digital Library官方缩写表映射(如‘International Conference on Software Engineering’→‘Proc. ACM/IEEE Int. Conf. Softw. Eng.’);③ 检测到acmart.cls版本低于2026.03.0,弹出warning并链接至ACM官方cls更新页。担心错过2026年的截稿日期?用本站的 CCF/EI/Scopus会议查询 查看最新时间表。
真正的救命时刻:从报错到clean PDF只用了92秒
插件启动后,它先静默运行bibtex生成原始.bbl,再逐行diff对比acmart要求的字段白名单(doi, author, title, booktitle, year, pages, publisher, address),缺失项标红高亮。我点了‘Apply & Rebuild’,Overleaf后台执行:latexmk -pdf -f -cd -jobname=main main.tex → biber main → latexmk -pdf -cd main.tex。最终PDF第一页右下角出现绿色ACM DOI水印,References节所有条目作者名缩写统一为‘A. B. Lastname’,会议全称无一处缩写错误。提交按钮变蓝的那一刻,我盯着UTC时间:2026-02-15 23:58:47。
总结:别等final submission才检查bib。现在就把你的Overleaf项目设为‘Auto-sync with GitHub’,在.gitignore里加一行*.bbl,然后每天push前跑一次acm-cite-fix --dry-run。如果团队共用bib库,把crossref-api-key配进Overleaf的project settings > Environment Variables,避免Rate Limit。