LaTeX 中引用参考文献时使用 bibtex 非常方便,然而不同的期刊/会议对于 .bib 条目中的 Booktitle 的要求是不一样的,比如引用一篇 CVPR 文献,有些期刊要求 References 里面写成 In CVPR, 2017,有些又要求写成 In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,标准不一,每次频繁改来改去,让人十分头疼。
今天无意中在网上看到了纽约州立大学石溪分校计算机实验室的 LaTeX Guidelines,才发现原来可以使用标致串(Identification String)的小技巧来解决这一痛点,即把 Booktitle 后的字段统一替换为自定义的 Identification String 来提高效率,避免重复操作。举个例子,经过这么一番操作后,ref.bib 文件中的引用条目会变成这样:
@inproceedings{Buch:2017SST,
author = {Buch, Shyamal and Escorcia, Victor and Shen, Chuanqi and Ghanem, Bernard and Niebles, Juan Carlos},
title = {SST: Single-Stream Temporal Action Proposals},
booktitle = CVPR,
year = {2017},
pages = {6373--6382},
publisher = {IEEE}
}
这里的 booktitle 后的 CVPR 就是一个 Identification String,注意没有大括号包围。它实际上是一个占位符,或者说变量,需要额外定义。因此,我们可以新建一个新的 bib 文件(不妨命名为strings.bib),里面是各种 Identification String 的定义:
@string{CVPR = "Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition"}
这样在 tex 文件末尾导入 bib 引用的时候,多导入一个 strings.bib 即可:
\bibliography{strings,ref}
这样,针对不同的期刊/会议的引用格式要求,我们每次只需要修改 strings.bib 文件即可,效率一下得到极大提高。
当然,这样还有一个好处,那就是在使用文献管理软件时,文章来源一律写成期刊/会议简写即可。比如我使用的 Papers 文献管理软件,对于 Conference 那一栏直接写成对应会议的简写就好:
这样日常的查阅,筛选,管理也会更轻松。