Xbibtex is a re-implementation of BibTeX, the bibliographical companion program to LaTeX. Xbibtex uses XML for the storage of bibliographical databases, and XSL to format the output.
The program is intended as a drop-in replacement for BibTeX, but it is at an early stage and does not yet implement all of BibTeX's functionality (on the other hand it offers a few small refinements of its own).
As a potential BibTeX replacement, Xbibtex is in the same line of business as bibulus. However, following my own preferences/prejudices I have chosen to implement my variant in C (with the heavy lifting done by libxml and libxslt) along with a set of XSL stylesheets.
Quick design sketch: C program implements BibTeX functionality (run it on an auxiliary file from a LaTeX job to generate a bibliography, using a specified bibliographical database and specified biblio style). Formatting is controlled by a "master stylesheet", xbibtex.xsl, which loads a set of specific style parameters as chosen by the user. The bibliographical database DTD is close to BibTeX's "DTD" in spirit, but not all BibTeX categories are accepted (yet) and some features are added.
To be continued...
You can grab a snapshot here: xbibtex-0.1.tar.gz (August 10, 2004; 53Kbytes). The package contains:
C source for Xbibtex
Master XSL stylesheet, xbibtex.xsl
Some sample specific stylesheets: cje.bst.xml (Cambridge Journal of Economics), respolecon.bst.xml (Research in Political Economy), philpsych.bst.xml (Philosophical Psychology).
Some sample biblio databases
DTDs for both the biblio database and stylesheet
Simple test LaTeX files
You'll need libxml2 and libxslt. Theye are available from xmlsoft.org. If you don't have the pkgconfig system installed, you'll need to edit the Xbibtex Makefile. You can get pkgconfig from freedesktop.org.
As of August 2004, the following parameters are recognized in bibliographical style files for use with Xbibtex (but not all of them are correctly implemented):
<!-- show authors' first names, or just initials? -->
<xsl:param name="use-author-first-names" select="0"/>
<!-- in a list of authors, put all but the first author's
name the "right way round"? -->
<xsl:param name="invert-first-author-only" select="0"/>
<!-- use an ampersand instead of "and" for last author in list? -->
<xsl:param name="last-author-ampersand" select="0"/>
<!-- put authors' names in caps and small caps? -->
<xsl:param name="authors-in-small-caps" select="0"/>
<!-- in case of consecutive works by the same author(s),
use a rule instead of repeating the authors? -->
<xsl:param name="author-repeat-dashes" select="0"/>
<!-- how should we write "translator"? -->
<xsl:param name="translator-string" select="'tr.'"/>
<!-- how should we write "volume", for a book? -->
<xsl:param name="book-vol-string" select="'Volume'"/>
<!-- leading string for page range? (e.g. 'pp.') -->
<xsl:param name="pp-string"/>
<!-- leading string for journal volume (e.g. 'vol.') -->
<xsl:param name="vol-string"/>
<!-- leading string for journal number (e.g. 'no.') -->
<xsl:param name="number-string"/>
<!-- leading string for journal series -->
<xsl:param name="series-string" select="'series'"/>
<!-- if we have both volume and number-in-volume for a
journal, should we show the number? -->
<xsl:param name="use-number-in-volume" select="0"/>
<!-- if we have a month for a journal, should we show it? -->
<xsl:param name="use-month-in-volume" select="0"/>
<!-- if months are shown, use 3-letter abbreviation? -->
<xsl:param name="abbreviate-months" select="0"/>
<!-- given journal number and page range, put a comma
after the number? -->
<xsl:param name="comma-after-number" select="0"/>
<!-- punctuation mark to use after journal title? -->
<xsl:param name="after-journal-title-punct"/>
<!-- punctuation mark to use after journal volume?
(some styles favour ':') -->
<xsl:param name="after-volume-punct"/>
<!-- titles of articles: use single quotes, double quotes
or no quotes? -->
<xsl:param name="title-quote-style" select="1"/>
<!-- U.S. style punctuation inside quotes? -->
<xsl:param name="punctuation-inside-quotes" select="0"/>
<!-- default separator for fields in a biblio entry (some
styles favour '.') -->
<xsl:param name="default-field-separator" select="','"/>
<!-- punctuation mark after year of publication? -->
<xsl:param name="after-year-punct"/>
<!-- put year of publication in parentheses? -->
<xsl:param name="year-parens" select="0"/>
<!-- wrap place of publication and publisher in parens? -->
<xsl:param name="publisher-parens" select="0"/>
<!-- punctuation mark between place and publisher? -->
<xsl:param name="place-of-pub-punct" select="':'"/>
<!-- string between "incollection" and the collection -->
<xsl:param name="in-collection-string" select="'in'"/>
<!-- with an edited collection, put the editor(s) after
the title? -->
<xsl:param name="editors-after-collection-title" select="0"/>
<!-- how we write "editor", following an editor's name -->
<xsl:param name="trailing-editor-string" select="'(ed.)'"/>
<!-- how we write "editors", following editors' names -->
<xsl:param name="trailing-editors-string" select="'(eds)'"/>
<!-- how we write "edited by", in front of editors' names -->
<xsl:param name="leading-edited-string" select="'Edited by'"/>
<!-- font for titles of books, journals -->
<xsl:param name="title-font" select="'textit'"/>
<!-- do we lower-case titles of articles? -->
<xsl:param name="lower-case-article-titles" select="0"/>
<!-- do we lower-case titles of books? -->
<xsl:param name="lower-case-book-titles" select="0"/>
<!-- do we end each entry with a period (full stop) -->
<xsl:param name="use-final-period" select="1"/>
<!-- hmm, not really worked out yet -->
<xsl:param name="show-date-in-citation" select="1"/>
Allin Cottrell
Wake Forest University