本文参考https://www.overleaf.com/learn/latex/Bibliography_management_with_bibtex
一、如何收集文献
正式论文
在dblp(CS专用的citation管理工具)上搜索文献(如果是比较古早的论文则在google直接搜索后转到jstor(Journal Storage,一个电子图书馆)的网址下载bibtex)后对应到其发表的的第一个正式conference(排除corr(computing research repository),这个是arxiv的数据库),然后下载bibtex后用bib管理。
建议用endnote/记事本预先整理一个搜索列表,然后最后写完了再把bibtex一个个插进去。倒也不麻烦,只是终端管理起来比较困难。主要是因为endnote自带的bibtex整理会出现数据丢失的情况,所以最好不要转格式。
有时候你只知道一个文献的文本引用格式(例如,[1] J. Smith, J. Doe and F. Bar (2001) A ground-breaking study. Journal of Amazing Research 5(11), pp. 29-34.),但是由于种种原因你找不到它的bib文件,请考虑手写一个bibtex引用或者使用一些小工具,如text2bib 和Edifix把它们转换成bibtex的格式
文献管理工具
类似endnote,常用的可视化管理.bib文件的工具有JabRef 和BibDe. 你可以考虑在本地使用它们管理bib条目后再把输出文件加入latex编译工具。特别的,如果你想创建一个“原项目”用于所有overleaf文章的写作(包括bibtex的管理),参考this help article ;如果你使用Mendeley和Zotero管理文献,还可以参考How to link your Overleaf account to Mendeley and Zotero.
非正式论文
在google scholar上随便弄一个看起来比较靠谱的cite,存储为endnote格式,用endnote直接做文献管理即可,其自带大部分常用的文献导出格式,如果没有的话用编辑器自行创建一个也很方便。
二、bibtex的常用功能
bibtex是一种无格式文献信息存储方式,目标是让大规模的文献引用管理变得方便快捷。这里我们和natbib搭配食用,让引用作者也能够一键完成。
头文件:
\usepackage{cite}\usepackage{natbib} \setcitestyle{square,numbers,sort, authoryear,citesep={;},aysep={,},yysep={;}}
显示:
在main文件中插入命令
\bibliographystyle{plain} 设置参考文献的显示格式,一共有八种,这里是plain
\bibliography{ref} 调用建立的引用文件'ref.bib',如果ref.bib文件在与main.tex文件不同的目录下,则必须使用完整地址引用ref.bib
的位置就是正文中显示参考文献的位置,一般插入在正文之后、附录之前。
引用:
主要是使用\cite, \citeauthor, \citeauthor*三个命令。citeauthor是引用作者的名字,在大于等于两个人的时候自动转为et. al.;citeauthor*则是引用全部作者的名字。
这些命令的进阶使用技巧参考Harvard发布的natbib详细指南
特性:
- bibtex文件的组织结构是:若干个entry(条目),每个entry由@{referencekey, info*}组成,其中info*是该文献的信息,以typename={xxx}的方式构成,中间用逗号隔开,例如:author={Dantzig}。typename是bibtex中内置的内容,有数十个关键字,如author, title, address等。
- 由于bibtex的目标是做文献的存储库,因此,即使ref.bib中有一百条文献,正文的引用列表里也只会显示被引用过的那些文献。利用这个特定,你可以搭建一个属于自己的文献库ref.bib,在所有latex文档中复用ref.bib,引用中只会出现那些正文引用到的文献。如果要关闭这个特性,在命令中插入
\nocite{*}
- 实际显示的引用列表是按照\bibliorgraphystyle的设置排序的,例如,plain按照第一个作者的姓名的字典序进行排序
- bibtex文件的内部格式:最常用是两种:
@article:期刊文章
@inproceedings:会议文章
@book:书籍
@phdthesis, @masterthesis:毕业论文
@inbook:作者固定的书籍中的某一章/节/部分
@incollection:各章节由不同作者分别撰写的书籍中的某一章/节/部分
@misc:其它 - bibtex没有注释功能,其注释并不是latex常用的%。在其中加入注释的思路是让代码无法被bibtex识别。例如,想要注释掉一个entry,就把最前面的"@"去掉;想要注释掉一个info,就把typename改成bibtex的关键字列表中没有的名称,如IGNOREauthor等等
常见问题:·
- 引用显示不出来:可能是ref.bib文件没有放到和main.tex同一目录下,导致
\bibliography{ref}
命令找不到目标文件 - 后面遇到新的问题继续更新