如何避免某个条目在多个 bibtex 文件中出现 bibtex 错误消息“重复条目”?

如何避免某个条目在多个 bibtex 文件中出现 bibtex 错误消息“重复条目”?

我正在使用多个 bibtex 文件,这些文件专用于多个主题。但有些参考文献对多个主题是通用的,因此出现在我的多个 bibtex 文件中。目前,我正在编写一份涉及其中几个主题的文档,需要同时使用其中几个 bibtex 文件。显然,在使用 bibtex 进行编译时,我收到了错误消息:“重复条目”。我想避免出现此错误消息,但不想从 bibtex 文件中删除我的条目,因为在仅使用其中一个文件进行编译时(仅撰写一个主题的文章时)我需要它们,也不想合并我的 bibtex 文件。

答案1

最简单的解决办法是仅限 BiBTeX 文件。

我真正想说的是系统上的 BiBTeX 文件适用于您的整个参考书目。

据我所知,这实际上是预期用途,并且有几种很好的软件可以轻松管理参考书目。事实上,这比管理单独的参考书目要容易得多。这也是为什么 BiBTeX 只包含实际使用的参考文献,而不仅仅是整个文件。

答案2

如果你不介意使用一些命令行,为什么不使用你需要的参考文献为本文创建一个 bib 文件呢?比布工具

bibtool -s -d -x paper.aux A.bib B.bib C.bib > paper.bib

答案3

回答

我建议使用 Norman Ramsey 的恩比布特为此。基本思想是运行命令nbibtex而不是 Bibtex,它使用参数作为\cite搜索查询,并寻找该查询的最佳匹配并将其放入.bbl它创建的文件中。

另一种可能性

我为客户做的一件事是\bibliography用文件内容替换命令*.bbl。然后,神奇的是,您再也不需要在该 Latex 文档上运行 Bibtex 了。这样做的缺点是,如果您在参考列表中发现错误,或者您添加了项目,那么这种魔法不会将更改传播回您的*.bib文件。

在我看来,将参考书目文件分成多个单独的*.bib文件是一件好事,因为它允许您与其他人合作整理好的参考书目文件:除了您之外,没有人愿意处理AllMyReferences.bib文件的内容。

旧的、丢失的代码

我在读博士期间写了一些代码,其功能如下:

  1. 查看了*.auxBibtex 键的文件,我通常遵循惯例 author:key in citations;
  2. 搜索BIBPATH可能*.bib与这些键匹配的文件,使用约定来缩小搜索范围;
  3. 在这些文件中查找这些键的精确匹配,以及alternate-keyBibtex 条目中的特殊字段,以允许使用一个键
  4. 报告以下问题:(i) 键与来源不匹配;(ii) 某个键有多个来源(您需要检查错误,理想情况下,此代码应该能够判断两个引用是否相同,但它没有这样做);(iii) 一个来源被多个键引用(每个文档在引用来源的方式上应该保持一致)
  5. 根据找到的内容创建一个.bib文件,确保每个引用都与一个 reflist 条目完全匹配,这可能意味着如果一个来源被多个键引用,则该来源会出现多次,而一个.aux键则为每个来源引用一个键。
  6. 在文件上运行 Bibtex.aux/.bib以创建.bbl程序要使用的文件\thebibliography

我认为,考虑到现在nbibtex更实用、更强大的功能,这种方法没有多大意义,但代码确实在 Bibtex 数据库的健全性检查方面做了更多工作,这nbibtex与选项无关--permissive,并且nbibtex对于没有它的多个参考书目来说并没有真正用处。

答案4

我认为您正在寻找包裹 书目主题。但据我所知它不是最新的(2006 年)。我还建议创建一个 BiBTeX 文件。如果您希望按主题对参考书目进行排序,则可以使用 multibib 包。

相关内容