問題文
大きなファイルがあり、それを複数の小さなファイル.bib
に分割したいと考えています。.bib
@book
このため、私は、たとえば、元のファイルからすべてのエントリを抽出して、新しいファイルに保存できるパーサーを探しています.bib
。エントリ自体は基本的にそのまま残しておく必要があります。
役に立つかもしれないので、説明します。私はbiblatex
& を使用していますbiber
(Debian GNU/Linux 下)。これは、私がここで喜んで採用したい解析機能をいくつか提供していると思います。
答え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 --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 OSでは外側の引用符は二重引用符、内側の引用符は一重引用符にする必要があります-c "$type = 'BOOK'"
が、Unixではその逆になります。-c '$type = "BOOK"'
使用することもできますbibtool
:
bibtool --select{@book} all.bib -o some.bib
@book
のエントリのみを書き込みall.bib
ますsome.bib
JabRef のような一部の参考文献管理ツールでは、ファイルのフィルタリングも提供されており.bib
、ここでも使用できる可能性があります。