【Python + Zoreto】近乎全自动的完美 bib 文件生成

在上一篇博文中 【Zotero Yes!】最好的文献管理工具Zotero的工科生正确用法,向大家介绍了文献管理神器Zotero。 而除了平时文献调研,学习时的文档管理功能, Zotero也能服务于撰写论文时的文献引用。 .bib文件是在latex撰写论文时大家广为使用的参考文献文件,而Zotero可以很轻易地导出.bib供引用所需:

在Zotero界面左侧,
【Python + Zoreto】近乎全自动的完美 bib 文件生成
选择我的文库, 右键->导出文献库->选择Bibtex
【Python + Zoreto】近乎全自动的完美 bib 文件生成
再选择需要保存的文件夹目录和.bib文件的名字即可, 极为方便。

由于各种期刊的引用文献的格式各不相同, 因此使用.bib时, 可能还需要自己根据所投期刊的规范, 进行一些修改。 而本文的后半部分就是如果尽可能地自动化这一操作。

由于笔者引用的文献70%以上为IEEE文献, 以下以IEEE为例介绍:
IEEE模板下载
点击上述网址, 如果你还下载了Zotero浏览器插件的话, 那只需要点击链接,就能添加IEEE样式。

在Zotero界面, 编辑->首选项->导出
可以选择默认样式, 也就是导出.bib文件的样式, 这里可以选择我们刚下载的IEEE样式。
【Python + Zoreto】近乎全自动的完美 bib 文件生成
然而坑就坑在, IEEE自己的样式其实是不规范的。 这并不是Zotero的锅,因为哪怕去IEEE官网复制某篇paper的bibtex, 也同样主要存在以下两个问题:

  • 文章题目每个单词的首字母都会大写, 而事实上规范的写法应该是只有第一个单词的首字母大写(及特定缩写词)
  • 期刊或会议应该缩写, 但IEEE只会缩写部分期刊和会议
    另外, Zotero还会自动导出{note}项,也会干扰最后的引用结果。

尽管我们并不知道如何自己撰写一份Zotero规范样式, 但我们可以通过python及正则表达式, 对导出的.bib文件进行改进和完善!

这里我用正则写了非常简答的python代码来实现,参考github:Zoreto_TWC
因为代码非常简单,这里就不介绍了, 直接来看效果:
这是Zotero直接导出的.bib的引用效果。
【Python + Zoreto】近乎全自动的完美 bib 文件生成
我们打开github库中的.exe文件(或者运行python程序)
【Python + Zoreto】近乎全自动的完美 bib 文件生成
输入.bib文件所在的目录, 然后处理完成后, 新的.bib会覆盖之前不规范的。

再来看看效果:
【Python + Zoreto】近乎全自动的完美 bib 文件生成
尽管期刊的缩写还没有完成, 暂时只能手动, 但可以看到,冗余的部分都已被删除, 标题的大小写也符合了规范。

因此,Zoreto + python, 真正的自动化引用文献!