# The Features of Pybtex

## Bibliography formats

### BibTeX

BibTeX format is quite simple. Those who have used BibTeX should be already familiar with it. The others will probably catch the idea from the following example:

    @BOOK{strunk-and-white,
        author = "Strunk, Jr., William and E. B. White",
        title = "The Elements of Style",
        publisher = "Macmillan",
        edition = "Third",
        year = 1979
    }

For the detailed description of the BibTeX format please refer to the BibTeX documentation.

### BibTeXML

BibTeXML format attempts to combine the simplicity of BibTeX format with the power of XML. Here is what the above BibTeX bibliography entry wolud look like:

    <bibtex:entry id="strunk-and-white">
    <bibtex:book>
    <bibtex:title>The Elements of Style</bibtex:title>
    <bibtex:publisher>Macmillan<bibtex:publisher>
    <bibtex:edition>Third</bibtex:edition>
    <bibtex:year>1979</bibtex:year>
    <bibtex:author>
            <bibtex:person>
                <bibtex:first>William</bibtex:first>
                <bibtex:last>Strunk</bibtex:last>
                <bibtex:lineage>Jr.</bibtex:lineage>
            </bibtex:person>
            <bibtex:person>
                <bibtex:first>E.</bibtex:first>
                <bibtex:middle>B.</bibtex:first>
                <bibtex:last>White</bibtex:last>
            </bibtex:person>
    </bibtex:author>
    </bibtex:book>
    </bibtex:entry>

### YAML

We chose to create our own format to use with Pybtex. It is quite similar to BibTeXML but based on YAML instead of XML and therefore is much less verbose.

    strunk-and-white:
        type: book
        author:
            - first: William
              last: Strunk
              lineage: Jr.
            - first: E.
              middle: B.
              last: White
        title: The Elements of Style
        publisher: Macmillan
        edition: Third
        year: 1979

## Bibliography style formats

- BibTeX `.bst` files
- Pybtex own pythonic style API

## Output formats

Unlike BibTeX `.bst` styles, which can only output LaTeX or whatever is hardcoded in them, Pybtex pythonic styles are output format agnostic and can produce:

- LaTeX
- plain text
- HTML (work in progress)

Support for other formats can be added easily. If you really need it, please file a feature request.