----
title: Beastie: an experimental BibTeX processor
SPDX-FileCopyrightText: 2024 Norman Gray <https://nxg.me.uk>
SPDX-License-Identifier: BSD-2-Clause


Beastie is an experiment in parsing and processing BibTeX files.

Beastie is:

  * A parser for `.bib` files, amongst others.
  * A implementation of the `.bst` BibTeX Style Language.
  * That `.bst` implementation is hosted in a dialect of Scheme,
    extended with suitable parsing and processing primitives.

The goals of this project are:

  * to explore ways of processing `.bib` files which
    _aren't_ exclusively based on `.bst`;
  * to provide a second implementation of the BST language; and
  * to initiate some sort of conversation about BibTeX standards,
    broadly construed.

The `.bst` language counts as rather _niche_.  It has substantial
amusement value, but expertise could hardly be said to be widespread
(of course, one could complain that [Scheme][] has some niche aspects,
but it also has its _numerous_ compensating virtues).

The implementation of the `.bst` language is intended to be fairly
complete, in the sense that it is nearly a drop-in replacement for the
`bibtex` program, and deviations from that program are bugs, where
they are not noted as deliberate exceptions.

Beastie also provides a framework for writing alternative
bibliography tools.  The ‘experimental’ status means that it is not
yet fully-featured in that respect.  The fact that it implements the
`.bst` language confirms its scope, and acts as some
indicator of ‘correctness’, and the [`examples/`](examples/index.xhtml) directory
in the distribution illustrates how one would go about writing a
from-scratch style file, but there isn't (yet) a drop-in Scheme-based
alternative to, for example, `plain.bst`.

It is a goal of Beastie to go slightly beyond BibTeX, and to make
it a little easier to use `.bib` files to generate HTML or
other formats, or for the output of beastie to be ingested into other
processing pipelines. This has informed some of the choices made.


Features
========

  * Programmatic manipulation of BibTeX bibliographies in a high-level language.
    And using that...
  * An implementation of the `.bst` BibTeX style language.
  * `.bib`, `.bst`, `.aux`. and Markdown parser/converters.
  * A few minor extensions to the `.bst` language.
  * Slightly more informative error handling.
  * Parsing of `.bib` files promptly expands a selection of
    `{\"u}`-style escapes into the corresponding characters (this makes
    it easier to use this tool for generating HTML and other non-LaTeX
    bibliographies).
  * Unicode-aware throughout, in terms of case-folding and
    word-boundary recognition (with some qualifications).

The project has a few deliberate limitations, discussed, along with
tentative future plans,
in the [main documentation](beastie.xhtml).

Most of this is implemented in an embedded copy of s7,
from [ccrma.stanford.edu][s7].


Resources
=========

  * The Beastie home page is <https://purl.org/nxg/dist/beastie>
    – please use this in any long-term references to the software.

  * Repository and issues list (currently): <https://codeberg.org/nxg/beastie>
    (note that this has changed several times in the past, most
    recently mid-2026, and it's not impossible it will change again in
    future, so use the above URL as a long-term reference to the
    program).

  * The distribution should soon be available on [CTAN][].

  * The [main documentation](beastie.xhtml) contains a more detailed
    description of the program, including the functions exposed to the
    Scheme programs, and release notes.
    There is also a collection of [examples](examples/index.xhtml).

  * The [manpage](beastie.1.txt).

  * There was an article about Beastie v0.12 in TUGBoat,
    46:2, pp.220–227 (2025),
    doi:[10.47397/tb/46-2/tb143gray-beastie](https://doi.org/10.47397/tb/46-2/tb143gray-beastie).

The program is distributed under the terms of the 2-clause BSD
licence, and includes some material with different licences.
See the file `LICENCE.txt` for details.

[scheme]: https://en.wikipedia.org/wiki/Scheme_(programming_language)
[s7]: https://cm-gitlab.stanford.edu/bil/s7
[s7-docs]: https://ccrma.stanford.edu/software/snd/snd/s7.html
[markdown]: https://daringfireball.net/projects/markdown/syntax
[csl]: https://citationstyles.org
[ctan]: https://www.ctan.org/tex-archive/biblio
