ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

arXiv引用参考文献全攻略:格式、BibTeX与.bbl文件处理

arXiv引用参考文献全攻略:格式、BibTeX与.bbl文件处理 上个月组里新来的师弟终于把论文改到可以投稿的状态准备往 arXiv 上挂。他打包了一份压缩包发我检查我看了一眼主文件、图片都在唯独缺了 .bbl——就是参考文献排版文件。他一脸茫然“模板不是自动生成参考文献的吗”这个问题我在不少新人那里见过答案也很典型arXiv 的编译流程和你自己电脑上、Overleaf 里顺手点出来的 PDF 不完全一样你在本地编译能跑通不代表传到 arXiv 服务器上也能跑通。这其实是“在 arXiv 如何引用参考文献”这件事里最基础、也最容易被忽略的一环。所以这篇东西我想把两件事一次讲透一是你写的论文里要引用 arXiv 上的预印本到底该按什么格式写二是你把论文作为预印本挂到 arXiv 上时参考文献部分要怎么准备才不会翻车。前者适合所有需要读预印本、跟前沿工作的同学后者适合即将动笔写 LaTeX、准备首次投稿的新手。1. arXiv 这套引用体系和期刊正式出版差在哪1.1 论文的“地址”不再依赖卷、期、页码在传统期刊体系里一篇论文的引用信息包含作者、标题、期刊名、卷号、期号、页码、年份这些信息共同构成了一篇论文的“坐标”。读者顺着这个坐标到数据库里一定能找到那篇论文。但 arXiv 是个预印本服务器它没有期刊卷期也没有页码取而代之的是一个叫arXiv ID的东西。现在的 arXiv ID 长这样arXiv:2401.00001结构是“年份.月份.四位编号”。在 2007 年 3 月之前提交的论文用的是旧式 ID比如hep-th/9901001前面是学科分类后面是序号。如果你要引一篇老论文一定不要按新格式去猜编号因为两者不是一回事。这个 ID 是论文在 arXiv 上的唯一身份证引用时只要给出 ID读者去 arxiv.org 上输入编号就能定位到页面效果等同于期刊的卷期页码。顺带提醒一句arXiv ID 属于“数字对象”的一种但它不是 DOI。有些出版社允许你在参考文献里直接写 arXiv ID有些则要求你把它放在 DOI 或者 URL 的位置附近。格式上的差异我们后面展开说。1.2 版本号是引用时必须考虑的特殊维度arXiv 允许作者对同一篇论文反复提交更新版本。同一篇论文第一版叫v1改过之后叫v2、v3…… 这一点是 arXiv 区别于正式期刊的重要特征期刊审稿通过后出版内容就固定了最多来个勘误但 arXiv 上的预印本可以一直变。那引用时到底写不写版本号我的建议是分情况如果你引用的是当前最新版本写不写v2、v3问题不大因为 arXiv 页面上默认展示的就是最新版但如果你研究的是某个特定时期的状态比如复现某篇论文的初版实验那就必须写清楚是v1否则后人看到的内容可能已经完全不同了。实际踩坑案例我在第 4 章会讲。1.3 预印本和正式发表不是一回事做科研的人都知道一篇论文经常是先挂 arXiv再投期刊最后正式出版。引用 arXiv 上的预印本在数学、物理、计算机领域太常见了因为这些领域的节奏快等不起半年的审稿周期。但审稿人有时会问你“这篇论文已经正式发表了为什么要引预印本版本”这种时候正确的做法是优先引用正式发表版本并把 arXiv ID 作为补充信息附上。比较稳妥的写法是正式期刊信息 DOI 在前arXiv ID 在后。例如在 BibTeX 里期刊条目加一个eprint字段纯文本里则在期刊引文后面加上 “arXiv:XXXX.XXXXX”。这样既照顾了正式出版的可靠性也方便那些只订阅 arXiv、没有期刊数据库访问权限的读者去找原文。2. 在 arXiv 正文中写参考文献从 .bib 到 .bbl 的正确路径2.1 LaTeX 和 BibTeX 是绝对主流绝大多数 arXiv 论文都通过 LaTeX 编译生成参考文献部分则由 BibTeX 配合.bib数据库文件来管理。整个流程大概是正文.tex文件里用\cite{smith2024}这样的命令引用文献.bib文件里存放文献条目编译时先跑latex再跑bibtex最后再跑一到两次latex生成带编号、带格式的参考文献列表。我在 Overleaf 里见过很多学生全程只用自动编译按钮点一下整个 PDF 就出来了根本没意识到背后其实执行了latex bibtex latex latex这么一串过程。这也解释了为什么后续上市 arXiv 时会出问题本地工具链自动处理了这些步骤但上传到 arXiv 的源码包里若缺少关键文件服务器端的编译结果就会不一样。2.2 上传 arXiv 之前先把 .bbl 处理好刚开始投 arXiv 的人最容易犯的错就是压缩包里只有.tex、图片、.bib没有.bbl。arXiv 官方其实也提供了完整的 LaTeX 编译服务一般情况下它会尝试帮你执行 bibtex但问题是它用的 TeX 发行版版本、宏包版本、bst 样式文件版本都和你本地可能不同。一旦某个宏包路径问题导致参考文献部分没编译出来你的 PDF 里就会出现[?]这样的问号引用严重的话甚至编译失败。所以我的习惯是投稿前把 BibTeX 运行完后的 .bbl 文件放进压缩包这一步能规避绝大多数参考文献相关的问题。具体做法如下本地编译完成后找到当前工作目录下生成的.bbl文件Overleaf 里可以在编译日志输出中下载在.tex正文中把原本的\bibliography{refs}注释掉或删掉改成直接读取.bbl或者干脆把.bbl文件里的内容原样粘贴到正文靠后位置再编译一次确认引用编号没有变化把.bbl文件一起放进上传 arXiv 的压缩包。这样做有个额外好处你把.bbl内容直接给出来了arXiv 的编译器就不需要再单独调 BibTeX参考文献部分一定能显示出来。2.3 手动 \bibitem 方案什么时候用更省事如果你只是写一篇短文文献量不大比如十几篇也可以完全绕开 BibTeX直接在.tex末尾手写参考文献列表\begin{thebibliography}{99} \bibitem{smith2024} John Smith. A study of something important. arXiv:2401.12345 [cs.LG], 2024. \end{thebibliography}这种方式的好处是简单直接而且公式、特殊符号怎么排版完全由你自己控制。坏处是没法自动管理编号新增一篇文献就要手动改编号维护起来烦。适合小论文、短报告大论文还是老老实实走 BibTeX。2.4 怎么自查参考文献是否正常我把这个自查方法教给师弟之后他自己试了一遍发现一个重要信号编译日志里出现Warning: Citation xxx undefined同时 PDF 正文对应位置出现[?]。遇到这种情况别急着怪模板九成是 bibtex 没有成功运行或者是.bib文件里压根没有这个条目。另一个自查点在参考文献列表本身。检查每一条文献是不是都包含了该有的字段作者、标题、年份、arXiv ID如果引的是预印本。如果某条文献只有作者和年份没有标题大概率是 bst 样式文件太旧把某些字段过滤掉了。3. 引用别人 arXiv 论文的标准写法从纯文本到 BibTeX3.1 最通用的纯文本引用格式假设你要在 Word 文档、邮件或者博客里引用一篇 arXiv 论文最保险的格式是作者姓 作者名. 论文标题. arXiv:XXXX.XXXXX [学科分类], 年份.举例Vaswani, A., et al. Attention Is All You Need. arXiv:1706.03762 [cs.CL], 2017.这里的[cs.CL]是 arXiv 的学科分类代码可以在论文页面上看到。它的作用是告诉读者这篇预印本属于哪个领域方便快速判断。年份指的是提交年份或者你引用的具体版本提交年份。如果你在写期刊论文而且期刊给了官方文献样式比如 IEEE、ACM、APA那就按期刊模板里的“electronic preprint”条目类型来处理。IEEE 的常见写法是A. Vaswani, N. Shazeer, N. Parmar, et al., “Attention is all you need,” arXiv:1706.03762, 2017.这里是否保留“et al.”取决于期刊对作者人数的要求有些要求列出全部作者有些允许省略。3.2 BibTeX 条目怎么写才对LaTeX 用户更关心的是 BibTeX 写法。引用 arXiv 预印本的常见做法有两种一种是用misc类型配合eprint字段另一种是用article类型配合eprint和archivePrefix字段。用misc的示例misc{vaswani2017attention, title {Attention Is All You Need}, author {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and others}, year {2017}, eprint {1706.03762}, archivePrefix {arXiv}, primaryClass {cs.CL} }用article且论文已经正式发表过的话可以写成article{vaswani2017attention, title {Attention Is All You Need}, author {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and others}, journal {Advances in Neural Information Processing Systems}, volume {30}, year {2017}, eprint {1706.03762}, archivePrefix {arXiv}, primaryClass {cs.CL} }区别在于misc告诉 BibTeX 这不是正式出版物article则允许你同时填写期刊信息和预印本信息。现在很多大牛论文在正式发表后会在.bib里把两个信息都写上这样生成的参考文献列表会同时出现期刊名和 arXiv ID对读者最友好。字段名的细节值得注意archivePrefix的值是arXivprimaryClass是学科分类。如果只填eprint不填archivePrefix某些参考文献样式会把eprint当成一个普通 URL 字段来处理显示效果会很难看。3.3 从 arXiv 页面一键导出引用的坑arXiv 论文详情页面的右侧通常有一个Export Citation按钮点开能看到 BibTeX、EndNote、RIS 等格式。这个功能很贴心但直接复制粘贴进你的.bib文件时要注意它导出的条目通常是一个misc条目里面还会带上\href这类宏包命令。如果你的模板没有引入hyperref或者模板的 bst 样式对month、note这类字段支持不佳复制进去可能导致编译报错。我的经验是用它可以快速拿到基础信息但最终条目要自己清理一遍。比如删掉多余的空字段确认标题大小写是否被正确包进了花括号{Attention Is All You Need}这样保护大小写确认作者列表的分隔符是and而不是逗号。BibTeX 只认and作为作者分隔符这一点特别容易在粘贴后出错。3.4 期刊正式发表后的迁移引用当你发现论文已在期刊上正式出版而你的文章引用列表里还是仅写了 arXiv 预印本最好更新一下。期刊版本经过同行评审页码和 DOI 都相对固定引用它更能经受住审稿人的追问。被你引用的作者通常也更希望读者访问正式版。更新时不必删掉 arXiv ID可以在一句话里同时给期刊卷期页码、DOI、arXiv ID。例句Attention Is All You Need. Advances in Neural Information Processing Systems 30 (NeurIPS 2017). DOI: 10.48550/arXiv.1706.03762.这里用的是 arXiv 自己提供的 DOI 前缀10.48550/arXiv.xxxx它指向 arXiv 页面适合作为预印本 DOI。如果你的目标期刊对 DOI 格式要求严格最好按它的样式指南核对。4. 版本错位、字段被吞、ID 抄错我踩过和见过别人踩的坑4.1 版本号导致的“引用内容对不上”这是最隐蔽的坑。当年我在写文献综述时引用了一篇 2022 年挂出来的论文当时它只有v1。等我的综述写完、投出去、审稿意见回来后那篇论文已经更新到v5了实验结论都变了。读者拿着我引用的 arXiv ID 去搜看到的却是新版本会觉得我的概述和原文完全对不上。处理办法分两步如果必须引用某个特定版本就在 arXiv ID 后明确写v1如果只是泛泛提到相关工作则不写版本号因为默认引用最新版本。另外在引用之前养成去 arXiv 页面看一眼当前版本号和提交历史的习惯比啥都强。页面底部实际会列出所有历史版本点进去能逐个查看。4.2 eprint 字段被旧模板吞掉我之前用过某个学校学位论文模板它的参考文献样式文件是很老的.bst里面压根没有定义eprint字段。结果 BibTeX 编译完参考文献列表里只出现了作者、标题、年份arXiv ID 整个消失了等于读者没法定位到论文。这个问题不报错也不弹警告如果不是逐条去核对 PDF你根本发现不了。解决思路有三种第一换一个较新的 bst 样式比如ieeetr、plainnat、unsrtnat它们对eprint字段普遍支持良好第二把 arXiv ID 写进note字段note {arXiv:1706.03762}很多老模板对note是透传显示的第三极端情况下手动\bibitem。4.3 抄错 arXiv ID听起来像是低级错误但我真见过论文里把1706.03762抄成1706.03772编进去一个完全不存在或者是另一篇论文的编号。原因也很简单arXiv ID 的数字是无意义序号不像期刊卷期有语义提示人不容易记住。所以每次从别人论文里复制引用时我都会顺手在 arxiv.org 里搜一下 ID确认标题、作者对得上。这也解释了为什么最好的做法是先打开论文的 arXiv 页面再用上面的 Export Citation 功能下载而不是把别人文末的参考文献条目手动敲一遍。4.4 标题大小写和特殊符号处理BibTeX 的一个重要特性默认情况下它会把标题里的单词首字母改成小写除非你用花括号把它们保护起来。例如一篇论文原标题是 “A New Method for Neural Network Training”BibTeX 可能把它渲染成 “A new method for neural network training”。这在学术格式里是可以接受的但如果你引用的论文标题里有专有名词、缩写比如 “BERT”、 “ResNet”、 “GPU”就必须写成{BERT}、{ResNet}否则全会变成小写。另外标题里若有公式符号、特殊字符比如希腊字母、数学符号也要成套地放进花括号。建议直接从 arXiv 页面复制标题原文然后仔细处理大小写保护。别小看这步论文发出去以后被读者指出参考文献标题带格式瑕疵总是很尴尬的事。5. 提交前五步自检外加两个能长期省事的习惯5.1 五步检查清单每次投稿前过一遍我给自己定了个固定的自检流程每次往 arXiv 上传预印本前都会走一遍分享给你。第一PDF 正文所有引用编号都是数字没有任何位置显示[?]或者红色问号。第二参考文献列表逐条看一遍每一条都能在 Google Scholar 或 arXiv 上搜到对应论文。第三所有预印本参考文献里都出现了 arXiv ID且 ID 在 arXiv 网站能够正确打开。第四压缩包里至少包含.tex、.bbl、图片文件最好连.bib也带上方便他人 fork。第五用 arXiv 系统的预览功能打开编译生成的 PDF重点翻到 References 页确认排版正常。上面第三步建议大家复制 ID 去 arXiv 搜索页面验证别只在 PDF 里看个位数。因为 PDF 显示时如果字段被吞你看到的可能只是作者和年份完全看不出 ID 缺失。5.2 用好 Zotero 和文献导入工具如果你平时会积累大量 arXiv 预印本强烈建议用 Zotero 这类文献管理工具来管。arXiv 页面导出 BibTeX 时可以直接把条目导入 ZoteroZotero 也能根据 arXiv ID 自动抓取元数据包括作者、标题、分类、版本信息。等到写论文时Zotero 插件会为你生成格式规范的 BibTeX 键和字段。有个小技巧在 Zotero 里把 arXiv 条目类型设置为“预印本”Preprint并手动填入archive ID。这样当你将来切换引用格式时比如从 IEEE 换成 APAZotero 能自动调整预印本条目的输出方式不至于把 arXiv ID 丢掉。5.3 维护一个属于自己的 arXiv 引用模板最后建议你做一个自己的“万能 BibTeX 模板”把常用的条目结构固定下来下次写论文直接抄misc{lastnameYearKeyword, title {The Full Paper Title with {Proper} {Case}}, author {Lastname, Firstname and Lastname2, Firstname2}, year {2024}, month {jan}, eprint {2401.00001}, archivePrefix {arXiv}, primaryClass {cs.LG}, note {If you cite a specific version, add v2 here} }把这段模板放在个人 BibTeX 库的顶部每次新建文献条目时复制一份再改信息能省下大量记忆字段的时间也能避免漏掉archivePrefix这种容易忽略的字段。回到我师弟的问题。他跑了 bibtex 生成了.bbl署名的类别也核对过了最后上传前打开 arXiv 的预览 PDF参考文献整整齐齐排在文末。他松了口气说“原来参考文献不是它能自动搞定的。”我回他“它能搞定但你得知道它怎么才能搞定。”这话其实也适合所有准备往 arXiv 投稿的人。引用参考文献这件事看起来只是论文里小小的一部分可恰恰是这些小细节决定了你的预印本是不是够专业、是不是能让同行一眼找到你引用的每一篇工作。
返回列表