问题陈述
我有一个大.bib
文件,想将其拆分成多个较小的.bib
文件。
@book
为此,我正在寻找一个解析器,它允许我从原始文件中提取所有条目.bib
,以便我可以将它们保存到新文件中。条目本身应该基本保持不变。
以防万一有帮助:我正在使用biblatex
&biber
(在 Debian GNU/Linux 下),IIRC 提供了一些解析功能,我很乐意在这里使用。
答案1
这可以通过 Biber 的工具模式实现。不幸的是,在 2.11 之前的版本中,您需要的确切功能存在一个小问题。该问题已报告(https://github.com/plk/biber/issues/212) 并在 Biber 2.11 中得到解决。
创建一个onlybooks.conf
包含内容
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_align>true</output_align>
<output_fieldcase>lower</output_fieldcase>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map>
<per_nottype>book</per_nottype>
<map_step map_entry_null="1" />
</map>
</maps>
</sourcemap>
</config>
然后使用以下方式调用 Biber
biber --tool --configfile=onlybooks.conf <yourfile>.bib
您将看到一个名为 的文件,<yourfile>_bibertool.bib
其中仅包含@book
的条目<yourfile>.bib
。
Biber 删除其数据模型中未知的字段的警告当然也适用于此处,请参阅防止 `biber --tool` 删除 .bib 文件中的非标准字段。
或者,您可以bib2bib
使用 bibtex2html
。您可以在PDF 文档。
使用
bib2bib -c '$type = "BOOK"' -ob onlybooks.bib <yourfile.bib>
仅获取中@book
的条目。<yourfile>.bib
onlybooks.bib
类型必须全部大写,并且必须用引号括起来。在 Windows 操作系统上,外引号应为双引号,内引号应为单引号-c "$type = 'BOOK'"
,而在 Unix 上则应反过来-c '$type = "BOOK"'
您还可以使用bibtool
:
bibtool --select{@book} all.bib -o some.bib
仅@book
写入all.bib
some.bib
一些书目管理器(例如 JabRef)也提供.bib
文件过滤功能,也许可以在这里使用。