biblatex の必須制約タイプは何を行いますか?

biblatex の必須制約タイプは何を行いますか?

biber/データbiblatexモデルを使用すると、ユーザーは を使用してデータ モデルに制約を指定できます\DeclareDatamodelConstraints。 によって定義されるデフォルトのデータ モデルには次のblx-dm.defものがあります。

\DeclareDatamodelConstraints[article]{
  \constraint[type=mandatory]{
    \constraintfield{author}
    \constraintfield{journaltitle}
    \constraintfield{title}
  }
}

私の知る限り、制約は何もしません。次の MWE を考えてみましょう。

\documentclass{article}
\usepackage{biblatex}

\begin{filecontents*}{\jobname.bib}
@article{myarticle,
  title = {Some Title}
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
  \cite{myarticle}
\printbibliography
\end{document}

pdflatexこれを、biber、で実行すると、制約が満たされていないために停止するか、少なくとも大きな警告が出るとpdflatex予想しますが、 または のどちらのファイルにも制約が満たされていないことを示すものは何も見当たりません。制約が満たされていない場合に/が警告を出すように制約を定義することは可能ですか?biberlogblgbiberpdflatex

答え1

--validate_datamodelこれらの制約をチェックするには、オプションを に渡す必要がありますbiber

biber --validate_datamodel file

私は

[...]
WARN - Datamodel: Entry 'myarticle' (file.bib): Missing mandatory field - one of 'date, year' must be defined
WARN - Datamodel: Entry 'myarticle' (file.bib): Missing mandatory field 'author'
WARN - Datamodel: Entry 'myarticle' (file.bib): Missing mandatory field 'journaltitle'
[...]
INFO - WARNINGS: 3

必要に応じて、このオプションをbiber.conf以下のファイルで設定することができます。

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <validate_datamodel>1</validate_datamodel>
</config>

biber毎回コマンドラインオプションを書き込む代わりに。

答え2

既存のフィールドの制約を変更する場合は、忘れずに呼び出してください。

\ResetDatamodelConstraints

独自の制約を定義する前に。

関連情報