我正在使用多个 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
文件的内容。
旧的、丢失的代码
我在读博士期间写了一些代码,其功能如下:
- 查看了
*.aux
Bibtex 键的文件,我通常遵循惯例 author:key in citations; - 搜索
BIBPATH
可能*.bib
与这些键匹配的文件,使用约定来缩小搜索范围; - 在这些文件中查找这些键的精确匹配,以及
alternate-key
Bibtex 条目中的特殊字段,以允许使用一个键 - 报告以下问题:(i) 键与来源不匹配;(ii) 某个键有多个来源(您需要检查错误,理想情况下,此代码应该能够判断两个引用是否相同,但它没有这样做);(iii) 一个来源被多个键引用(每个文档在引用来源的方式上应该保持一致)
- 根据找到的内容创建一个
.bib
文件,确保每个引用都与一个 reflist 条目完全匹配,这可能意味着如果一个来源被多个键引用,则该来源会出现多次,而一个.aux
键则为每个来源引用一个键。 - 在文件上运行 Bibtex
.aux/.bib
以创建.bbl
程序要使用的文件\thebibliography
。
我认为,考虑到现在nbibtex
更实用、更强大的功能,这种方法没有多大意义,但代码确实在 Bibtex 数据库的健全性检查方面做了更多工作,这nbibtex
与选项无关--permissive
,并且nbibtex
对于没有它的多个参考书目来说并没有真正用处。
答案4
我认为您正在寻找包裹 书目主题。但据我所知它不是最新的(2006 年)。我还建议创建一个 BiBTeX 文件。如果您希望按主题对参考书目进行排序,则可以使用 multibib 包。