上一篇日志中讲到了在LaTeX中使用BibTex管理参考文献,这篇日志具体总结下如何制作BibTex文件。
- 手工制作;
- 直接从期刊数据库中下载;
- 借助Google Scholar;
- 从文献管理工具中导出(本文涉及NoteExpress、EndNote、Mendeley)。
1) 打开scholar.google.com
2) 定制 Scholar Preferences(学术搜索设置)->Bibliography Manager(文献管理软件) ->Show links to import citations into BibTeX (选中这个)
(显示导入BibTex的链接)3) search something like “multicast” in the scholar.google.com,
in the result list, kick “Import into BibTeX” copy the text to bibtex database directly,
4) 直接去编译,不用任何修改
4.从文献管理软件中导出BibTex文件(这是本文的关键)
也许你以为这很简单,但是在实际操作中却容易出现问题。
我仅仅尝试了NoteExpress、EndNote、Mendeley这三款文献管理软件,对于三款软件,各有优劣,我个人目前为止也没有确定哪款最合适,但其实两款以上结合使用也许是一种方法哦。
对于三款软件的导出细节就不多说(导出嘛,无非就是选中需要导出的若干文献题录,然后在“File”菜单中找到“Export”,然后选择相应的导出格式为BibTex格式,至于谈到对导出的BibTex格式进行相应的格式微调,这个自己也很容摸索)。
前面提过,BibTex是一种特殊的数据库,是数据库就会涉及到唯一关键字(unique key),BibTex文件也不例外,他称为label或者bibkey,LaTeX中引用参考文献就是cite它的。但问题的关键是:
NoteExpress导出的BibTex时不能自动添加label(选择待导出的题录后,右键选择“复制BibTex引用”,然后再导出,这样会自动添加label),
EndNote更是不能自动添加label;
Mendeley导出BibTex文件时可以自动添加label(从这一点上,Mendeley领先了)
对于Mendeley导出的BibTex可以很容易的在LaTeX使用,如果使用的是NoteExpress、EndNote怎么办?
如果BibTex文件里的参考文献多的话,手动挨个添加label,显然是不明智的。其实手工添加了也不行,不信你试试。这是由于LaTeX引用的BibTex文件必须是ANSI编码的文本文档,而NoteExpress和EndNote导出的文件是Unicode编码格式的文档,所以除了添加label外,还要转换编码。
对于添加label,网上有别人已经写好的工具,如BibTeXConverter081.exe、Noah Hoffman的endnlib.py。BibTexConverter081还是很好用的,有点遗憾的是它也只支持ANSI编码的.bib文件。运行BibTexConverter081,直接将待添加label的A.bib 格式的文档拖拽到界面上,如果A.bib是直接从NoteExpress、EndNote导出的,那么软件会弹出诸如“……,bibtex the first character read from this file was '?”的错误提示,这就是编码问题;所以在用BibTexConverter081添加label前,必须先修改A.bib的编码格式(用文本文件打开,然后另存为,选择相应的“文本文档”即可了。用空的话,可以修改BibTexConverter081代码,将判断编码、修改编码这一过程加进去)。
附录:
1.Noah Hoffman,2004,Using Endnote with BibTeX
2.Noah Hoffman,endnlib.py
3.Peter Pakulski,2006,BibTeXConverter081.exe