問題陳述
我有一個大.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>
僅取得in@book
的條目。<yourfile>.bib
onlybooks.bib
該類型必須始終全部大寫,並且必須用引號引起來。在 Windows 作業系統上,外部引號應為雙引號,內部引號應為單引號-c "$type = 'BOOK'"
,而在 Unix 上則應相反-c '$type = "BOOK"'
您也可以使用bibtool
:
bibtool --select{@book} all.bib -o some.bib
僅寫入to@book
的條目all.bib
some.bib
一些參考書目管理器(例如 JabRef)也提供過濾.bib
文件的功能,也許也可以在這裡使用。