typst/biblatex

A Rust crate for parsing and writing BibTeX and BibLaTeX files.

177

stars

156

commits

Rust

primary language

Aug 30, 2026

updated

biblatex
bibliography
bibtex
rust-crate

README

BibLaTeX

Build status Current crates.io release Documentation

A Rust crate for parsing and writing BibTeX and BibLaTeX files.

BibLaTeX can help you to parse .bib bibliography files. As opposed to other available crates, this crate attempts to parse the data within the fields into easily usable structs and enums like Person and Date for downstream consumption.

Usage

Add this to your Cargo.toml:

[dependencies]
biblatex = "0.12"

Parsing a bibliography and getting the author of an item is as simple as:

let src = "@book{tolkien1937, author = {J. R. R. Tolkien}}";
let bibliography = Bibliography::parse(src).unwrap();
let entry = bibliography.get("tolkien1937").unwrap();
let author = entry.author().unwrap();
assert_eq!(author[0].name, "Tolkien");

This library operates on a Bibliography struct, which is a collection of entries (the items in your .bib file that start with an @ and are wrapped in curly braces). The entries may hold multiple fields. Entries have getter methods for each of the possible fields in a Bib(La)TeX file which handle possible field aliases, composition and type conversion automatically.

The generated documentation more specifically describes the selection and behavior of the getters but generally, they follow the convention of being the snake-case name of the corresponding field (such that the getter for booktitleaddon is named book_title_addon).

References

The crate follows the following specifications and implementations references:

Additionally, Wiki Books provides an excellent overview of the Bibliography Management system in LaTeX: https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management.

Limitations

This library attempts to provide fairly comprehensive coverage of the BibLaTeX spec with which most of the .bib files in circulation can be processed.

However, the crate currently has some limitations:

  • There is no explicit support for entry sets, although it is easy to account for them by manually getting the entryset field and calling parse::<Vec<String>>() on it

Contributors

reknih

86 commits

laurmaedje

19 commits

Drodt

8 commits

typst/biblatex

A Rust crate for parsing and writing BibTeX and BibLaTeX files.

177

stars

156

commits

Rust

primary language

Aug 30, 2026

updated

biblatex
bibliography
bibtex
rust-crate

README

BibLaTeX

Build status Current crates.io release Documentation

A Rust crate for parsing and writing BibTeX and BibLaTeX files.

BibLaTeX can help you to parse .bib bibliography files. As opposed to other available crates, this crate attempts to parse the data within the fields into easily usable structs and enums like Person and Date for downstream consumption.

Usage

Add this to your Cargo.toml:

[dependencies]
biblatex = "0.12"

Parsing a bibliography and getting the author of an item is as simple as:

let src = "@book{tolkien1937, author = {J. R. R. Tolkien}}";
let bibliography = Bibliography::parse(src).unwrap();
let entry = bibliography.get("tolkien1937").unwrap();
let author = entry.author().unwrap();
assert_eq!(author[0].name, "Tolkien");

This library operates on a Bibliography struct, which is a collection of entries (the items in your .bib file that start with an @ and are wrapped in curly braces). The entries may hold multiple fields. Entries have getter methods for each of the possible fields in a Bib(La)TeX file which handle possible field aliases, composition and type conversion automatically.

The generated documentation more specifically describes the selection and behavior of the getters but generally, they follow the convention of being the snake-case name of the corresponding field (such that the getter for booktitleaddon is named book_title_addon).

References

The crate follows the following specifications and implementations references:

Additionally, Wiki Books provides an excellent overview of the Bibliography Management system in LaTeX: https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management.

Limitations

This library attempts to provide fairly comprehensive coverage of the BibLaTeX spec with which most of the .bib files in circulation can be processed.

However, the crate currently has some limitations:

  • There is no explicit support for entry sets, although it is easy to account for them by manually getting the entryset field and calling parse::<Vec<String>>() on it

Contributors

reknih

86 commits

laurmaedje

19 commits

Drodt

8 commits

Languages

Rust

100.0%