问题陈述

问题陈述

问题陈述

我有一个大.bib文件,想将其拆分成多个较小的.bib文件。

@book为此,我正在寻找一个解析器,它允许我从原始文件中提取所有条目.bib,以便我可以将它们保存到新文件中。条目本身应该基本保持不变。

以防万一有帮助:我正在使用biblatexbiber(在 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>.bibonlybooks.bib

类型必须全部大写,并且必须用引号括起来。在 Windows 操作系统上,外引号应为双引号,内引号应为单引号-c "$type = 'BOOK'",而在 Unix 上则应反过来-c '$type = "BOOK"'


您还可以使用bibtool

bibtool --select{@book} all.bib -o some.bib

@book写入all.bibsome.bib

一些书目管理器(例如 JabRef)也提供.bib文件过滤功能,也许可以在这里使用。

相关内容