
Das biber
/ biblatex
-Datenmodell ermöglicht dem Benutzer, Einschränkungen für das Datenmodell mit anzugeben \DeclareDatamodelConstraints
. Im von definierten Standarddatenmodell blx-dm.def
gibt es:
\DeclareDatamodelConstraints[article]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{journaltitle}
\constraintfield{title}
}
}
Soweit ich das beurteilen kann, bewirkt die Einschränkung nichts. Betrachten Sie das folgende 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}
Wenn ich es durch pdflatex
, biber
, pdflatex
, laufen lasse, erwarte ich biber
, dass es anhält oder sich zumindest lautstark beschwert, dass eine Einschränkung nicht erfüllt wird, aber ich sehe weder in den noch in den Dateien etwas, log
das blg
darauf hindeutet, dass die Einschränkung nicht erfüllt wird. Ist es möglich, Einschränkungen so zu definieren, dass biber
/ pdflatex
sich beschwert, wenn sie nicht erfüllt werden?
Antwort1
Um diese Einschränkungen zu überprüfen, müssen Sie die --validate_datamodel
Option an übergeben biber
. In Ihrem Beispiel wird
biber --validate_datamodel file
Ich bekomme
[...] 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
Wenn Sie möchten, können Sie diese Option in einer biber.conf
Datei festlegen, die aus
<?xml version="1.0" encoding="UTF-8"?>
<config>
<validate_datamodel>1</validate_datamodel>
</config>
anstatt jedes Mal die Befehlszeilenoption zu schreiben biber
.
Antwort2
Wenn Sie die Einschränkungen bestehender Felder ändern, vergessen Sie nicht,
\ResetDatamodelConstraints
bevor Sie Ihre eigenen Einschränkungen definieren.