bibtex实用程序的一个小集合(包括一个最小的解析器)
zs.bibtex的Python项目详细描述
这个包目前只包括一个非常基本的bibtex解析器 将书目及其条目转换为类似于dict的简单数据结构 并检查交叉引用(如果使用)。
警告
解析器不(可能永远也不会)支持 先进的bibtex功能,如前言。
它也不会将重音字符转换为Unicode,但是 将它们保留在原始输入中。
用法
关于如何使用它的一个简单示例:
from zs.bibtex.parser import parse_string data = '''@article{mm09, author = {Max Mustermann}, title = {The story of my life}, year = {2009}, journal = {Life Journale} }''' bibliography = parse_string(data) article = bibliography['mm09']
书目以及其中的每个条目都提供了一个validate()方法 它检查诸如书目上的交叉引用和 条目。它还支持可选的raise_unsupported 关键字参数,该参数在可能不受支持的字段出现一次异常 在条目中使用。
关于哪些字段是必需的,哪些字段是可选的 条目基于维基百科上的BibTeX article。
如果使用的是文件,还可以使用名为 parse_file(file_or_path, encoding='utf-8', validate=False)在 给定的文件路径或类似文件的对象,并返回 文件的内容。
自定义条目类型
开箱即用zs.bibtex支持以下输入类型进行验证:
- 文章
- 书本
- 小册子
- 未收款
- 进行中
- 会议
- 笔记本
- 手动
- 硕士论文
- 其他
- phdthesis
- 程序
- 技术报告
- 未发布
有关哪些字段需要这些字段的详细信息,请查看 zs.bibtex.structures模块。
但如果您需要不同的条目类型,则可以 也很容易注册自己的。
首先必须创建^{tt5}的子类$ 课程:
from zs.bibtex import structures class MyEntryType(structures.Entry): required_fields = ('required_field_1', ('either_this', 'or_that', ), ) optional_fields = ('optional_field_1', )
然后简单地注册:
structures.TypeRegistry.register('mytype', MyEntryType')