Replacing the BibTeX–LaTeX mechanism
Producing a successor to BibTeX has long been a favoured activity
among a certain class of TeX-users; the author has seen reports of
progress (on several projects), over the years, but few that claim to
be ready for “real-world” use.
Few would deny that BibTeX is ripe for renewal: as originally
conceived, it was a program for creating bibliographies for technical
documents, in English. People have contributed mechanisms for a
degree of multilingual use (whose techniques are arcane, and quite
likely inextensible); and specialist BibTeX style files are
available for use in non-technical papers.
BibTeX uses a style language whose mechanisms are unfamiliar to
most current programmers: it’s difficult to learn, but since there are
few opportunities to write the language, it’s also difficult to become
fluent (in the way that so many people fluently write the equally
arcane TeX macro language).
Oren Patashnik (the author of BibTeX) summarises the issues as he
sees them, in a
TUG conference paper from 2003
that seems to suggest that we might expect a
BibTeX 1.0…which hasn’t (yet) appeared.
In the absence of BibTeX 1.0, what do we need from the bibliography
system of the future? — simple: a superset of what BibTeX does
(or can be made to do), implemented in a simpler style language, with
coherent multilingual capabilities.
Of the direct BibTeX replacements, the only one whose authors have
sufficient confidence to submit to CTAN is CrossTeX.
CrossTeX’s language feels familiar to the existing user of
BibTeX, but it’s redesigned in an object-oriented style, and looks
(to a non-user) as if it may well be adequately flexible.
CrossTeX’s team respond to queries, and seem well aware of the
need for multilingual support. CrossTeX is probably a development
to watch.
Two interesting alternative approaches, that the author has
investigated, are amsrefs and biblatex.
Amsrefs does away with BibTeX altogether, while
biblatex (at least for now) makes rather limited use of
BibTeX. Both are heavily dependent on LaTeX’s support.
Amsrefs uses a transformed .bib
file, which is
expressed as LaTeX macros. (The package provides a BibTeX style
that performs the transformation, so that a LaTeX source containing
a \
nocite{*}
command enables BibTeX to produce a usable
amsrefs bibliography database.)
Amsrefs is maintained by the AMS as part of its author
support programme,
Biblatex uses BibTeX simply to sort the citations using
biblatex’s own style; the style of citations and of the
bibliography itself is determined by the way your biblatex
style has been set up. This structure eliminates the collections of
BibTeX styles, at a stroke; the package comes with a basic set of
styles, and details are determined by options, set at package loading
time. The author, Philipp Lehman, evaluated the whole field of
bibliography software before starting, and as a result the package
comes with answers to many of the questions asked in the bibliography
sections of these FAQs.
Biblatex is released as experimental software, but it’s
clear that many users are already using it happily; Lehman is
responsive to problem reports, at the moment, but a set of expert
users is already establishing itself. A set of contributed styles has
appeared, which cover some of the trickier bibliography styles. The
road map of the project shows one more beta release before the
“stable” biblatex 1.0.
A related project is
biber
(it’s called biblatex-biber on SourceForge simply to
distinguish it from an older, defunct, BibTeX replacement
project). Biber is a Perl-based system to
produce a BibTeX replacement that is specifically tuned to the
requirements of biblatex. While it supports the
‘traditional’ BibTeX interface, biber provides an
interface language designed for biblatex, including use of
Unicode to ease the generation of multilingual citations.
- amsrefs.sty
- macros/latex/contrib/amsrefs (or browse the directory)
- biblatex.sty
- macros/latex/exptl/biblatex (or browse the directory)
- biblatex contributions
- macros/latex/exptl/biblatex-contrib/
- CrossTeX
- biblio/crosstex/
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=biblatex