我正在为我的论文构建一个 BibTeX 文件。在此期间,我将该 bib 文件复制到我必须制作的另一个文档中,我必须在原始副本中添加一些新引文。
现在我有 2 个 bib 文件,它们有很多共同点,但有些引文不同。有没有办法合并它们?这样我就能得到一个包含两个文件的所有引文但没有重复项的文件?
答案1
答案2
贾布雷夫是一个书目管理器,具有合并书目文件的工具。或者更确切地说,用于将一个文件导入另一个文件:文件 --> 导入 --> 导入到当前库据我所知,它会在导入时检查重复项,但还有一个单独的工具也可以检查重复项:质量 --> 查找重复项。
答案3
我认为没有简单的方法可以做到这一点。虽然可以编写一个类似的 perl 脚本来使用正则表达式来执行此操作。但问题是
有时两个条目虽然不完全相同,但却是重复的,例如标题或附加内容中的大写字母不同
{
。}
因此,我们必须通过定义一些差异阈值来解决这个问题。有时同一作者同一年发表的两篇文章,标题稍有不同,其实就是两篇论文,这就使得(1)中的门槛难以界定。
所以我建议你只能手动完成。一个相对简单的方法是使用 BibTeX 编辑器,例如 Mac OS X 上的 BibDesk。将两个文件导入其中,当两个条目具有相同的引用键时,它会警告你。因此对于那些具有相同引用键的条目,它们几乎肯定是重复的,你可以轻松地清理它们。如果我没记错的话,BibDesk 和其他编辑器确实有这个功能。之后,按标题对所有条目进行排序,然后用你的眼睛发现更多的重复。
答案4
显然,除非您确定不再需要原始数据库文件,否则不应删除它们。在您真正确定之后,再多保留几年,以防万一。
买者自负 ...
Biber 可以做到这一点。在tool
模式下,它默认删除具有重复键的条目。
请注意,这假设不需要合并条目,但仅仅确保合并的文件中最终只出现具有唯一 bibkey 的每个条目的一份副本.bib
。
例如如果你有类似
@article{bernard-travels,
author = {Dickens, Bernard R.},
year = 2003,
pages = {3--4},
volume = 4,
journal = {Travelling}}
@book{bertha-stargazing,
author = {Smithson, Bertha},
year = 1987,
publisher = {Great Discoveries},
address = {Mars},
title = {Stargazing for Gazelles}}
在一个文件中
@article{liz-tricks,
author = {Davies, Elizabeth H.},
year = 2010,
pages = {31--43},
volume = 56,
journal = {Magicians' Monthly}}
@book{bertha-stargazing,
author = {Smithson, Bertha},
year = 1987,
publisher = {Great Discoveries},
address = {Mars},
title = {Stargazing for Gazelles}}
那么一切都会好起来。但是如果第二个文件包含,例如,
@article{bernard-travels,
author = {Dickens, Bernard R.},
year = 2007,
pages = {23--41},
volume = 12,
journal = {Travelling Again}}
@book{bertha-stargazing,
author = {Smithson, Bertha},
year = 1987,
isbn = {1234567890123},
address = {Mars},
title = {Stargazing for Gazelles}}
那么结果可能就不是你想要的了。
然而,假设每个唯一条目都有唯一的 bibkey,且不需要单独合并部分条目,首先将.bib
文件合并为一个大文件.bib
。
假设你的大.bib
号叫big.bib
。那么
biber --tool --output-format bibtex --output-file merge.bib big.bib
将生成一个合并.bib
文件,merge.bib
其中的条目已排序并删除重复项。
biber --help
提供了可用选项的更多详细信息。