#tex #latex #biblatex #biber

bibparser

.bib 文件解析器

4 个版本

0.4.0 2022年7月16日
0.3.2 2022年1月30日
0.3.1 2022年1月30日
0.3.0 2022年1月30日

#1542 in 解析器实现

MIT 许可证

50KB
973

bibparser

一个用于解析 BibTeX 和 BibLaTeX 文件的 Rust 包。

biblatex 包不同,这个包不尝试解析字段的内容。这个包源于这样的用例:当文本被截断之前,biblatex 包在没有结束行内数学模式的情况下抛出错误。

谁应该使用它?

任何希望从 ..bib 文件中检索数据的人。

如何使用它?

将以下内容添加到您的 Cargo.toml

[dependencies]
bibparser = "0.4.0"

实例化解析器并遍历项目

use bibparser::Parser;

//let mut p = Parser::from_file("source.bib")?;
let mut p = Parser::from_str(r#"@book{tolkien1937, author = {J. R. R. Tolkien}}"#)?;
for result in p.iter() {
  let entry = result?;
  println!("type = {}", entry.kind);
  println!("id = {}", entry.id);
  for (name, data) in entry.fields.iter() {
      println!("\t{}\t= {}", name, data);
  }
}

如何运行它?

此库附带一个示例

$ cargo run --example cli -- --input refs.bib

您还可以启用 serde-json 支持,以便将数据打印为 JSON

$ cargo run --features serde,serde_json --example cli -- --input refs.bib --json

在此示例中,库将读取文件 refs.bib,然后仅将具有 ID tolkien1937 的条目打印到 stdout。

源代码在哪里?

github 上。

内容的许可证是什么?

MIT 许可证

变更日志

  • 2022-07-16 版本 0.4.0:跳过 @preamble,处理转义字符,更多测试,修复错误传播的解析错误
  • 2022-01-30 版本 0.3.2:修复 CLI 示例并添加 JSON 支持
  • 2022-01-30 版本 0.3.1:修复文档和 README
  • 2022-01-30 版本 0.3.0:初始发布

我在哪里可以要求您修复一个错误?

github 上。

已知的错误/限制是什么?

  • ..bib 与 TeX 密切相关,TeX 是一种编程语言,而不是标记语言。因此,只有纯 TeX 引擎才能理解内容(特别是字段的数据内容)。此库明确地采取将内容假设为标记语言的方法,希望这适用于 99% 的所有用例。
  • 此库解析的标记语言没有正式化。
  • 与 BibTeX 或 biblatex 的兼容性没有进行全面测试。

依赖关系

~3MB
~64K SLoC