项目作者: typst

项目描述 :
A Rust crate for parsing and writing BibTeX and BibLaTeX files.
高级语言: Rust
项目地址: git://github.com/typst/biblatex.git
创建时间: 2020-09-04T17:52:11Z
项目社区:https://github.com/typst/biblatex

开源协议:Other

下载


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:

  1. [dependencies]
  2. biblatex = "0.10"

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

  1. let src = "@book{tolkien1937, author = {J. R. R. Tolkien}}";
  2. let bibliography = Bibliography::parse(src).unwrap();
  3. let entry = bibliography.get("tolkien1937").unwrap();
  4. let author = entry.author().unwrap();
  5. 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.

Refer to the WikiBook section on LaTeX bibliography management
and the BibLaTeX package manual
to learn more about the intended meaning of each of the fields.

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).

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