この質問は、この答えこの副作用を避ける一つの方法は、ビバーを使わないことですがbibtool -biblatex
、この答え。
私は、、、、などのフィールドを .bib ファイルの biblatex エントリから自動的に削除するために を使用しています。このbiber --tool
副作用として、すべての非標準フィールド¹ も削除されるようですが、これは避けたいものです。以下に最小限の例を示します。abstract
review
groups
file
これは .bib ファイル内のエントリですmybib.bib
:
@Thesis{Author_18_TheThesis,
author = {Mr Author},
title = {The Thesis},
type = {Doctoral Dissertation},
institution = {Department of Documents, University of Stackexchange},
year = {2018},
abstract = {This is the abstract.},
file = {:author/Author_18_TheThesis.pdf:PDF},
review = {This is the review.},
groups = {publications},
ispreprintpublic = {true},
}
これはclean-bibfiles.conf
以下の設定ファイルですbiber --tool
:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_fieldcase>lower</output_fieldcase>
<output_indent>2</output_indent>
<output_align>true</output_align>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map map_overwrite="1">
<map_step map_field_set="abstract" map_null="1"/>
<map_step map_field_set="review" map_null="1"/>
<map_step map_field_set="groups" map_null="1"/>
<map_step map_field_set="file" map_null="1"/>
</map>
</maps>
</sourcemap>
</config>
実行すると、次の biblatex エントリを含むファイルbiber --tool --configfile=clean-bibfiles.conf mybib.bib
が生成されます。mybib_bibertool.bib
@thesis{Author_18_TheThesis,
author = {Author, Mr},
institution = {Department of Documents, University of Stackexchange},
date = {2018},
title = {The Thesis},
type = {Doctoral Dissertation},
}
非標準フィールドispreprintpublic
がエントリから削除されました。正確に言うと、groups
およびreview
フィールドも、ソースマップに存在しない場合でも削除されます。これは、 も非標準フィールドであるか、それぞれ記事タイプから「借用」されているためです。 を使用するときに、このようなフィールドが自動的に削除されないようにするにはどうすればよいですかbiber --tool
?
¹「2.1.1 通常の型」および「4.2.4.1 ジェネリックフィールド」を参照してください。biblatex ドキュメント。
答え1
実際、biber
データモデルの一部ではないフィールドは処理されないため、データ ソースに非標準のフィールドまたはエントリ タイプがある場合は、biber
それらを含むデータ モデルを提供する必要があります。
ただし、このタスクを進める前に、必要なデフォルトのデータモデルに実際に何が欠けているかを知っておくことをお勧めします。これは、次の--validate-datamodel
オプションを使用して行うことができます。
biber --tool --validate-datamodel mybib.bib
あなたのエントリを含む .bib ファイルでは、次の警告が表示されます。
WARN - Datamodel: Entry 'Author_18_TheThesis' (mybib.bib): Field 'review' invalid in data model - ignoring
WARN - Datamodel: Entry 'Author_18_TheThesis' (mybib.bib): Field 'groups' invalid in data model - ignoring
WARN - Datamodel: Entry 'Author_18_TheThesis' (mybib.bib): Field 'ispreprintpublic' invalid in data model - ignoring
これにより、フィールドreview
、groups
およびをispreprintpublic
データモデルに含める必要があることが正確にわかります。
(もちろん、データモデルにreview
と を追加してgroups
、それをソースマップにドロップするのは「通常」の方法ではありません。ここでは、一般性と手順のためにそれを行っています。)
カスタムbiber-tool.conf
ファイルを設定するには ( という名前を付けたのでclean-bibfiles.conf
、そのままにしておきます。ただし、一般にこの手順で実行できる他の操作もあります)、データモデルを調整して、グループ内に非標準フィールドの行を含める必要があります<fields>...</fields>
。この場合 (ここでは「リテラル」タイプのフィールドであると想定)、次のようになります。
<field fieldtype="field" datatype="literal">review</field>
<field fieldtype="field" datatype="literal">groups</field>
<field fieldtype="field" datatype="literal">ispreprintpublic</field>
そして、グループ内に<entryfields><entrytype>thesis</entrytype>...</entryfields>
以下を追加します:
<field>review</field>
<field>groups</field>
<field>ispreprintpublic</field>
結果はclean-bibfiles.conf
次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_fieldcase>title</output_fieldcase>
<output_indent>2</output_indent>
<output_align>true</output_align>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map map_overwrite="1">
<map_step map_field_set="abstract" map_null="1"/>
<map_step map_field_set="review" map_null="1"/>
<map_step map_field_set="groups" map_null="1"/>
<map_step map_field_set="file" map_null="1"/>
</map>
</maps>
</sourcemap>
<datamodel>
<fields>
<field fieldtype="field" datatype="literal">review</field>
<field fieldtype="field" datatype="literal">groups</field>
<field fieldtype="field" datatype="literal">ispreprintpublic</field>
</fields>
<entryfields>
<entrytype>thesis</entrytype>
<field>review</field>
<field>groups</field>
<field>ispreprintpublic</field>
</entryfields>
</datamodel>
</config>
この構成ファイルでは、コマンド:
biber --tool --validate-datamodel --configfile=clean-bibfiles.conf mybib.bib
mybib_bibertool.bib
希望どおりのエントリが出力されます:
@Thesis{Author_18_TheThesis,
Author = {Author, Mr},
Institution = {Department of Documents, University of Stackexchange},
Date = {2018},
Ispreprintpublic = {test},
Title = {The Thesis},
Type = {Doctoral Dissertation},
}
デフォルトのデータモデルと構成を確認するには、次のコマンドでデフォルトの場所を見つけることができますbiber-tool.conf
。
biber --tool-config
これは特に簡単なことではないかもしれない。しかし、PLKの言葉を引用すると、コメント上記: 「データモデルをツール モードにすることによる利点は、この種の問題を上回ります。」