我不确定维护一个大型 bibtex 数据库是否是个好主意,还是应该将其拆分成多个较小的数据库。我从各种来源汇编了一个非常大的印度专用数据库(超过 100,000 条记录)。
那么,这两种方法最重要的优点和缺点是什么? bibtex 和 biblatex 处理大数据文件的方式有什么不同吗? 这两种方法都存在哪些需要考虑的威胁?
答案1
就我个人而言,我有两个不同的 bib 文件;一个用于其他人的出版物,一个用于我自己的出版物列表。但这只是为了方便,因为两者之间的条目组不同,以便更方便地使用 bib 文件本身,而不考虑任何 LaTeX 编译。
我的主要 bib 文件可以访问 1000 个条目,到目前为止,我从未遇到过任何编译器(BibTeX、BibTeX8、BibLaTeX)的问题。我也没有听说过发生此类问题的情况。确实,BibTeX 和 BibTeX8 中可能的书目条目数量(由要处理的字节数定义)是有限制的(尽管在后者中,你可以将该限制扩展到很大,以至于我的包含大量引文的毕业论文没有遇到问题)。但这与文档中的引文数量有关,而与 bib 文件的文件大小无关,因此,如果你遇到此问题,即使你拆分 bib 文件,它也会继续存在。据我所知,BibLaTeX 不再有这样的限制。
另一件需要考虑的事情是将多个 bib 文件中的条目合并到一个参考书目中有多容易。在 BibLaTeX 中,您可以轻松声明多个源文件并通过完全不同的命令创建参考书目,这很容易做到。据我所知,在 BibTeX 和 BibTeX8 中,将来自多个 bib 文件中的信息编译成一个参考列表并不容易(如果可能的话)。
所以我想说这主要是个人喜好的问题,也可能取决于你直接使用 bib 文件的程度——如果条目的主题非常不同,那么有几个 bib 文件是有意义的。至少在 BibLaTeX 中,编译将适用于任一版本,但可能需要额外的软件包或合并 BibTeX/BibTeX8 的 bib 文件。
答案2
截至 2010 年代后期,我使用过的多个支持 BibTeX 的参考文献管理软件可以接受 BibTeX 数据库作为输入,但无法加载包含超过 5000 个 BibTeX 条目的 BibTeX 数据库。
尽管 LaTeX 可以在其\bibliography{}
命令中支持多个 BibTeX 数据库/文件,但我想简化为我的 BibTeX 数据库中的每个 BibTeX 条目创建 BibTeX 密钥的过程/启发式方法。例如,要创建我的首选 BibTeX 密钥,我使用作者的姓氏或第一位合著者的姓氏,后面加上年份。Smith2000 就是一个例子。对于产生具有相同首选 BibTeX 密钥的多个 BibTeX 密钥的出版物,我会在首选 BibTeX 密钥后附加一个字母(按字母顺序分配)。这是基于引用出版物的作者-日期方法,或哈佛参考文献格式或哈佛引用格式。它是一种括号引用。
否则,会引起混淆。例如,如果给定 LaTeX 文档的多个 BibTeX 数据库对不同的参考文献使用相同的 BibTeX 键,那么在解释/处理 BibTeX 数据库/文件时就会出现问题。我的猜测是,第一个出现的 BibTeX 键实例将使用其条目,而其余的将被忽略。此外,如果我无法将错误消息追踪到有问题的 BibTeX 数据库/文件的子集,那么我将无法解决/修复该问题。
通过使用脚本创建所有 BibTeX 数据库中的所有 BibTeX 键的集合,可以避免此类问题。如果发现任何重复的 BibTeX 键实例,它可以报告错误/警告,以便我们能够收到问题通知,并通过将重复/“有问题”的 BibTeX 键更改为新的 BibTeX 键来修复它。
使用多个 BibTeX 数据库/文件的参考:
除了使用\cite{}
LaTeX 命令在 LaTeX 文档中引用超过 20,000 条参考文献外,我在排版包含 20,000 条参考文献的 LaTeX 文档时没有遇到任何问题。我通过将 BibTeX 键列表划分为多个引用命令来解决这个问题。我使用 Python 脚本获取我的 BibTeX 数据库/文件中所有 BibTeX 键的列表,并按照每个 LaTeX 命令以 10 个为一组的方式打印 BibTeX 键\cite{}
。
您可以使用\nocite{*}
LaTeX 命令列出 LaTeX 文档参考书目中的所有 BibTeX 条目来验证这一点,而无需指定 BibTeX 数据库中的所有 BibTeX 键。
https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management#No_cite
使用单个 BibTeX 数据库也让我能够更轻松地与他人共享我的 BibTeX 数据库。我不需要跟踪所有 BibTeX 数据库/文件的位置。我为所有 LaTeX 文档使用单个 BibTeX 数据库。
BibTeX 数据库足够小(少于 1,000 个 BibTeX 条目,多个开源且免费)的优点是参考管理软件会接受这些 BibTeX 数据库。因此,它们的 BibTeX 解析器将检查是否符合 BibTeX 语言。否则,您必须使用前面提到的 LaTeX 命令\nocite{*}
排版一个简单的 LaTeX 文档,以检查您的 BibTeX 数据库是否符合 BibTeX 语言规范。您还可以构建自己的解析器或脚本来检查在创建和更新 BibTeX 数据库时可能遇到的常见问题。