bibtex 和 biblatex 书目文件兼容性?

bibtex 和 biblatex 书目文件兼容性?

在回答bibtex 与 biber 以及 biblatex 与 natbib 的比较解释了Biber 与 BibTeX(以及与 biblatex)的优缺点natbib。然而,有一点被忽略了:BibTeX 和 之间的参考书目兼容性问题biblatex

使用 BibTeX 一段时间后,您会得到一个 BibTeX 样式的参考书目集合。此外,许多期刊在其主页上提供 BibTeX 条目以供引用。许多参考书目管理程序要么支持 BibTeX 导出,要么甚至直接管理 BibTeX 文件。此外,像 Emacs 这样的高级编辑器对 BibTeX 参考书目有特殊支持。

简而言之,BibTeX 书目创建和管理基础设施非常庞大,现有书目数量庞大。此外,正如另一个问题中提到的,您不能将 Biber 与 一起使用natbib,后者被很多期刊使用。

因此,就会出现以下问题:Biber 的书目格式是否与 BibTeX 的书目格式兼容?如果不兼容,至少有一个自动转换工具吗?

请注意,两个方向都很有趣:如果 Biber 无法使用现有的 BibTeX 书目,这意味着您必须转换每个现有的 BibTeX 书目,并且还要对期刊中的 BibTeX 条目进行转换(除非它们也提供 Biber,但通常只是 BibTeX 和 EndNote)和从书目管理程序导出的书目。另一方面,如果 Biber 文件不能用于 BibTeX 并且不存在转换,则意味着任何 Biber 书目对于使用 的期刊都是无用的natbib,并且任何直接解释 BibTeX 书目文件的程序都不能再使用(包括编辑器支持)。

另外,如果 Biber 可以读取 BibTeX 文件,但反之则不行:如果文件仅限于与 BibTeX 兼容的文件,Biber 是否仍然比 BibTeX 具有优势?

答案1

为了解析 BibTeX 格式的文件,Biber 使用一个名为“btparse”的 C 库,该库在所有方面都与 BibTeX 兼容 99.9%。因此,使用 Biber 作为 BibTeX 的直接替代品时,您很少会遇到问题。正如其他人提到的,问题在于biblatex与 BibTeX 中的数据模型相比,数据模型略有不同。

因此,您的问题实际上与纯 BibTeX 和 BibLaTeX 之间的数据模型差异有关,无论您是否使用 Biber 作为biblatex后端。请注意,将来,在 BibLaTeX 2.x 左右,BibTeX 将不再支持作为后端,biblatex因为它有太多限制。当然,BibTeX 格式的数据文件将始终受支持。

更重要的问题是,正如您所提到的,即使您不使用任何biblatex数据模型细节,Biber 的优势可能是什么。以下是 Biber 在这方面的一些优势(您可以通过在手册中搜索字符串“Biber only”来了解biblatex),省略了需要更改数据源的功能:

  • .bib支持除RIS、Zotero RDF/XML、Endnote XML以外的数据源
  • 支持远程数据源(.bib可通过 ftp 或 http 获取文件)
  • 支持其他输出格式(在 0.9.8 中它将支持 GraphViz .dot 输出以进行数据可视化并转换为计划的 biblateXML 格式)
  • 完全支持 Unicode 6.0(包括文件名和引用键)
  • 我认为排序机制可能与任何商业产品一样好甚至更好 - 完整的 Unicode、多字段、每个字段的大小写和方向、CLDR 感知和完全用户可配置。BibTeX 在这方面无法与之相比。
  • 自动消除姓名和姓名列表的歧义。我认为这是一个非常令人印象深刻的功能。请参阅手册第 4.11.4 节,biblatex其中有关于此内容的非常好的解释和示例。
  • 完全可定制的 crossref 继承规则。BibTeX 只有一个非常基本的静态规则。
  • 自动编码和解码,包括 UTF-8 <-> LaTeX 宏
  • 非常灵活的配置文件“sourcemap”选项,可用于
    .bib在 Biber 读取数据时更改数据,而无需更改实际数据源本身。您
    可以使用它来执行各种操作,例如删除某些字段、添加字段、有条件地删除/添加字段、使用完整的 Perl 5.14 正则表达式更改字段(请参阅Biber 手册3.1.2 节)。

最后一个功能对您来说特别有趣,因为您可以在 Biber 读取纯 BibTeX.bib文件时动态将其映射到biblatex模型中,而无需更改文件。它对于删除经常abstract因 LaTeX 保留字符而导致问题的字段也非常有用。

Biber 中还实现了一些其他功能,这些功能在 BibLaTeX 2.x 中可用:

  • 可定制标签
  • 同一参考节中的多个参考书目具有各自的排序/过滤功能
  • “相关”条目——全面解决所有这些“转载为”、“翻译为”等要求的问题。

我忘了说 Biber 会自动应用文档中提到的 BibLaTeX 字段和条目类型映射(地址 -> 位置等)。它通过实现一些驱动程序级源映射来实现这一点(请参阅\DeclareSourcemapbiblatex 文档中的及其变体)。

答案2

原则上:你越多地利用biblatex/Biber 的优势,就越难回到传统的 BibTeX 工作流程。

如果您自带 BibTeX 数据库并希望将其与biblatex/Biber 一起使用,则仅需调整几个地方:手册第 2.3 章biblatex列出了以下几点:

  • 条目类型@inbook。有关详细信息,请参阅§§ 2.1.1 和 2.3.1。
  • 字段机构、组织和出版商以及别名地址和学校。有关详细信息,请参阅§§ 2.2.2、2.2.5、2.3.4。
  • 特定类型产权的处理。详情请参阅第 2.3.5 节。
  • 场系列。详情请参阅第 2.2.2 节和第 2.3.7 节。
  • 年份和月份字段。有关详细信息,请参阅 §§ 2.2.2、2.3.8、2.3.9。
  • 现场版本。详情请参阅§ 2.2.2。
  • 字段键。详情请参阅 § 2.3.2。

并非所有更改都会引起您的担忧,也并非所有更改都会导致不兼容。

当然,你越深入研究biblatex,越多地利用其独特的类型、字段和功能,就越难回到从前。两者之间的转换问题实际上已经变得毫无意义,因为这实际上不是格式不同,而是biblatex提供了很多 BibTeX 无法替代的东西。

仅举一个对我很重要的例子:传统的 BibTeX 没有一个bookauthor字段,而这个字段在某些人文领域是一种交易破坏者。biblatex有这个字段的事实是我最初改用的主要原因之一biblatex。现在,由于 BibTeX 不知道这个字段,因此没有合理的方法在两者之间进行有用的转换。许多其他领域也是如此。所以在你越过某个点之后,去往biblatex是一种单行道。

答案3

正如你问的 Biber 与 BibTeX 的关系(也就是说,二进制驱动程序用于处理LaTeX 针对引用生成的.bcf相应文件)我假设您使用作为参考书目包,因为 Biber 不支持任何其他参考书目包(旧式 BibTeX,)。.auxbiblatexnatbib

关于书目数据库:据我所知,Biber 是大多与 BibTeX 兼容。但是,它对格式正确的条目要求更高,因此很有可能某些东西“无法正常工作”。如果您不想立即修复所有这些问题,通常使用biblatexbibtex8 -W是一种很好的解决方法。您不必为了使用 而立即切换到 Biber biblatex

更严重的问题是旧式 BibTeX 与biblatex数据库条目不完全兼容。实际上,biblatex清理了旧式 BibTeX 数据库格式的许多特性:

例如,在旧式 BibTeX 中,有两个字段用于指示地址:address用于发布者的地址,该地址用于所有条目类型,但@inproceedings。对于@inproceedings条目,必须提供location场地的 ;address不得提供发布者的 (BibTeX 会对此发出警告并忽略它)。
对于biblatex,两者都是“出版地点”的同义词,这更有意义,因为从理论上讲,您永远不会在同一条目中使用两者。但是,@inproceedings网络上的许多条目(ACM、IEEE 等)都包含两个都,尽管这在技术上并不正确。当您将这些条目导入到您的个人.bib文件并将其与 一起使用时biblatexaddress(发布者的) 有时会覆盖location场地的 ,从而导致错误的信息。

答案4

我发现的一个问题是,表单的注释 @COMMENT text 在 BibTex 的 .bib 文件中有效,但对 Biber 无效。

这里对此进行了更多讨论: biblatex 文件中的代码注释

相关内容