[Tex/LaTex] Compatibility of bibtex and biblatex bibliography files

biberbiblatexbibliographiesbibtex

In the answer to bibtex vs. biber and biblatex vs. natbib the advantages and disadvantages of Biber vs. BibTeX (and of natbib vs. biblatex) were explained. However, one point was omitted: The question of compatibility of bibliographies between BibTeX and biblatex.

After using BibTeX for a while, you get a collection of bibliographies in BibTeX style. Furthermore, many journals give BibTeX entries for citations on their home page. A lot of bibliography management programs either support BibTeX export, or even manage BibTeX files directly. Also, advanced editors like Emacs have special support for BibTeX bibliographies.

In short, there's a massive infrastructure for creating and managing BibTeX bibliographies and a big stock of existing ones. Moreover, as was noted in the other question, you cannot use Biber together with natbib, which is used by quite a few journals.

Therefore the following question arises: Is the bibliography format of Biber compatible with the bibliography format by BibTeX? Or if not, it there at least an automatic conversion tool?

Note that both directions are interesting: If Biber cannot use existing BibTeX bibliographies, this means that you have to convert every existing BibTeX bibliography, and do so also for BibTeX entries from journals (unless they also offer Biber, but often it's just BibTeX and EndNote) and bibliographies exported from bibliography management programs. On the other hand, if Biber files cannot be used for BibTeX and no conversion exists, it means that any Biber bibliography is useless for journals using natbib, and any programs interpreting directly BibTeX bibliography files cannot be used any more (including editor support).

Also, in case that Biber can read BibTeX files, but not vice versa: Does Biber still have advantages over BibTeX if the files are restricted to BibTeX-compatible ones?

Best Answer

To parse BibTeX format files, Biber uses a C library called "btparse" which is, for all intents and purposes, 99.9% compatible with BibTeX. So, You should rarely have problem using Biber as a drop-in replacement for BibTeX. As mentioned by others, the issue is rather the slightly different data model which biblatex has compared with the data model in BibTeX.

So, your question really relates to the difference in data models between plain BibTeX and BibLaTeX, regardless of whether you are using Biber as the biblatex backend. Be aware that in the future, around BibLaTeX 2.x, BibTeX will no longer be supported as a biblatex backend as it has too many limitations. Of course BibTeX format data files will always be supported.

The more important question is, as you mention, what the advantages of Biber might be even if you are not using any of the biblatex data model specifics. Here are some advantages of Biber in this respect (you can get an idea by searching for the string "Biber only" in the biblatex manual), omitting the features which require data source changes:

  • Support of data sources other than .bib (currently RIS, Zotero RDF/XML, Endnote XML)
  • Support for remote data sources (.bib files available via ftp or http)
  • Support of other output formats (in 0.9.8 it will support GraphViz .dot output for data visualisation and conversion to the planned biblateXML format)
  • Full Unicode 6.0 support (including file names and citation keys)
  • A sorting mechanism which I think is probably as good or better than any commercial product - full Unicode, multi-field, per-field case and direction, CLDR aware and completely user configurable. BibTeX doesn't come close in this regard.
  • Automatic name and name list disambiguation. I think this is quite an impressive feature. See section 4.11.4 of the biblatex manual for a very good explanation of this with examples.
  • Completely customisable crossref inheritance rules. BibTeX has a very basic static rule only.
  • Automatic encoding and decoding, including UTF-8 <-> LaTeX macros
  • Very flexible configuration file "sourcemap" option which can be used to change the
    .bib data as it is read by Biber, without changing the actual data source itself. You
    can use this to do all sorts of things like drop certain fields, add fields, conditionally drop/add fields, change fields using full Perl 5.14 regular expressions (see Biber manual section 3.1.2).

This last feature is particularly interesting for you as you can potentially map your pure BibTeX .bib files into the biblatex model on the fly as Biber reads them but without altering the files. It's also very useful for dropping fields like abstract which often cause trouble due to LaTeX reserved characters.

There are also some other features implemented in Biber which are available in BibLaTeX 2.x:

  • Customisable labels
  • Multiple bibliographies in the same refsection with their own sorting/filtering
  • "Related" entries - a general solution to the issue of all these "reprinted as", "translated as" etc. requirements.

I forgot to mention that Biber automatically applies the BibLaTeX field and entrytype mappings (address -> location etc.) mentioned in the documentation. It does this by implementing some driver-level source mappings (see \DeclareSourcemap and its variants in the biblatex documentation).