btOOL Links    
Greg's Home
    Created: late 1997    
    Updated: 9 July 2007    

btOOL: A Programmer's Interface to BibTeX Files

btOOL is a pair of libraries, one in C and one in Perl, that give programmers unhindered access to BibTeX files. The C library, btparse, is based on a lexical scanner and parser written with PCCTS, and also provides various string-processing functions necessary to emulate BibTeX. It would be a pain in the neck to write serious BibTeX tools in C, so I have also written Text::BibTeX, a Perl library that provides an object-oriented interface to BibTeX files and entries. In addition, Text::BibTeX includes a framework for writing Perl classes that do the job of BibTeX style files; the initial version of the Bib database structure---eventually meant to emulate the standard style files of BibTeX 0.99---is included as an example of using this framework.

Note: btOOL is now maintained by Alberto Simões <albie at alfarrabio dot di dot uminho dot pt>. Please contact Alberto for support. The rest of this page is maintained for historical interest.

Here are some things you might want to download or browse:

Note that you will need a matching version of btparse in order to build Text::BibTeX.

Known Problems

The first place to look for known problems is the "BUGS AND LIMITATIONS" sections of the documentation for both btparse and Text::BibTeX. There are a couple of fundamental limitations in btparse that I am aware of, but would not be easy to fix.

Mailing List

There is now a mailing list for support and discussion of the btOOL, hosted by SourceForge. To join, visit the general list info page. The list is quite low-traffic, so don't be shy to join up or post.

You can post to the list by sending email to, but please subscribe first. (I have to approve posts by non-subscribers, and you might not see all replies to your query.)


If you're curious, btOOL came to be after a summer of manic hacking on BibTeX files in an attempt to produce a definitive bibliography of the Brain Imaging Centre's output from 1991--96. My frustration with the arbitrary limits imposed by existing BibTeX tools convinced me that the only solution is a programmer's interface, rather than an attempt at a "one size fits all" solution.