Biblatex and custom bibtex entries - is it possible?

At the moment, it is not possible to create your own document types. This is a limitation of BibTeX (the program), since biblatex has to define the entrytypes in the bst file. In the future, this could be possible, as soon as biblatex will drop support of the BibTeX program and will only work with biber (this is targeted for version 2.0 of biblatex). But defining your own document types might be scheduled not earlier than for version 3 (this is at least how I understand the roadmap). In the meantime, however, you can use the entrytypes custom[a–f] (meaning: customa, customb, etc.). Thus, you could just replace your undocument by customa and it should work.

For encyclopaedia, you should use reference which is intended for encyclopedias, dictionaries and the like.

Edit:

You will also have to change your customized fields like agendaitem to usera etc. There are different kinds of custom fields available, as the following quote from the biblatex manual shows:

  • name[a–c] list (name)

Custom lists for special bibliography styles. […]

  • name[a–c]type field (key)

Similar to authortype and editortype but referring to the fields name[a-c]. […]

  • list[a–f] list (literal)

Custom lists for special bibliography styles. […]

  • user[a–f] field (literal)

Custom fields for special bibliography styles. […]

  • verb[a–c] field (literal)

Similar to the custom fields above except that these are verbatim fields. […]

(I always omitted one sentence in the above quote, namely “Not used by the standard bibliography styles.”)

You can read more about the different kinds of fields in the biblatex manual, section 2.2.1 “Data Types”.


A hack: it's very easy to modify a .bst file so that it recognises new entry types: simply append lines to the .bst file such as, to make @undocument a synonym for @misc:

FUNCTION { undocument } { misc }

which just means that the function Bibtex calls to produce the .bbl entry for an @undocument just calls the function it uses to produce an @misc entry.

Biblatex does things a little differently, since it passes the type information as follows:

FUNCTION {article} { type$ output:entry }

where output:entry is the generic function used to dump all the information about the record to the .bbl for Biblatex to work with (if you didn't pass the type information, as per the first line, Biblatex would think, e.g., @undocument was an @misc entry).

You can then just clone the site definition of biblatex.bst into your local texmf tree (for Texlive), and add some lines such as:

FUNCTION { undocument } { type$ output:entry }

to your personal version of biblatex.bst. Bibtex will then treat these types just like the other types and you can use them in your bbx/cbx styles.

Postscript

As domwass notes, if you change your version of biblatex.bst in this way, you have to be aware that upgrades might break Biblatex if you use a local fork based on an older version. While most revisions don't introduce incompatible changes to biblatex.bst (there were no changes from 0.9e to 1.3 that would have caused problems, I think), the last revision, 1.4, introduced a very big change in the way biblatex.bst represented information in .bib files that certainly would have required creating a new patched file.


This question was asked a while ago but for completeness, this has been possible for some time now with biblatex and biber as the backend. The datamodel is completely customisable now so that you can fully support any custom entrytypes, fields and constraints on fields.