問題文

問題文

問題文

大きなファイルがあり、それを複数の小さなファイル.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 ファイル内の非標準フィールドを削除しないようにする


あるいはbib2bibbibtex2html詳しくは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、ここでも使用できる可能性があります。

関連情報