在回答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 字段和条目类型映射(地址 -> 位置等)。它通过实现一些驱动程序级源映射来实现这一点(请参阅\DeclareSourcemap
biblatex 文档中的及其变体)。
答案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,)。.aux
biblatex
natbib
关于书目数据库:据我所知,Biber 是大多与 BibTeX 兼容。但是,它对格式正确的条目要求更高,因此很有可能某些东西“无法正常工作”。如果您不想立即修复所有这些问题,通常使用biblatex
和bibtex8 -W
是一种很好的解决方法。您不必为了使用 而立即切换到 Biber biblatex
。
更严重的问题是旧式 BibTeX 与biblatex
数据库条目不完全兼容。实际上,biblatex
清理了旧式 BibTeX 数据库格式的许多特性:
例如,在旧式 BibTeX 中,有两个字段用于指示地址:address
用于发布者的地址,该地址用于所有条目类型,但@inproceedings
。对于@inproceedings
条目,必须提供location
场地的 ;address
不得提供发布者的 (BibTeX 会对此发出警告并忽略它)。
对于biblatex
,两者都是“出版地点”的同义词,这更有意义,因为从理论上讲,您永远不会在同一条目中使用两者。但是,@inproceedings
网络上的许多条目(ACM、IEEE 等)都包含两个都,尽管这在技术上并不正确。当您将这些条目导入到您的个人.bib
文件并将其与 一起使用时biblatex
,address
(发布者的) 有时会覆盖location
场地的 ,从而导致错误的信息。
答案4
我发现的一个问题是,表单的注释
@COMMENT text
在 BibTex 的 .bib 文件中有效,但对 Biber 无效。
这里对此进行了更多讨论: biblatex 文件中的代码注释