买者自负 ...

买者自负 ...

我正在为我的论文构建一个 BibTeX 文件。在此期间,我将该 bib 文件复制到我必须制作的另一个文档中,我必须在原始副本中添加一些新引文。

现在我有 2 个 bib 文件,它们有很多共同点,但有些引文不同。有没有办法合并它们?这样我就能得到一个包含两个文件的所有引文但没有重复项的文件?

答案1

bibtool -s bibliography1.bib bibliography2.bib将合并两个 bib 文件,保留重复条目。bibtool -s -d bibliography1.bib bibliography2.bib将合并两个 bib 文件,注释掉其中一个重复条目(不确定是哪一个)。有关更多信息,请参阅文档

比布工具 在 CTAN 上。不要与工具它也位于 CTAN 上并且可能也有能力做这种事情......

Bibtool 也可以在 Ubuntu 存储库中找到。(我无法从 CTAN 编译该版本)

答案2

贾布雷夫是一个书目管理器,具有合并书目文件的工具。或者更确切地说,用于将一个文件导入另一个文件:文件 --> 导入 --> 导入到当前库据我所知,它会在导入时检查重复项,但还有一个单独的工具也可以检查重复项:质量 --> 查找重复项

答案3

我认为没有简单的方法可以做到这一点。虽然可以编写一个类似的 perl 脚本来使用正则表达式来执行此操作。但问题是

  1. 有时两个条目虽然不完全相同,但却是重复的,例如标题或附加内容中的大写字母不同{}因此,我们必须通过定义一些差异阈值来解决这个问题。

  2. 有时同一作者同一年发表的两篇文章,标题稍有不同,其实就是两篇论文,这就使得(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

提供了可用选项的更多详细信息。

相关内容