Was macht der obligatorische Einschränkungstyp in Biblatex?

Was macht der obligatorische Einschränkungstyp in Biblatex?

Das biber/ biblatex-Datenmodell ermöglicht dem Benutzer, Einschränkungen für das Datenmodell mit anzugeben \DeclareDatamodelConstraints. Im von definierten Standarddatenmodell blx-dm.defgibt 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, logdas blgdarauf hindeutet, dass die Einschränkung nicht erfüllt wird. Ist es möglich, Einschränkungen so zu definieren, dass biber/ pdflatexsich beschwert, wenn sie nicht erfüllt werden?

Antwort1

Um diese Einschränkungen zu überprüfen, müssen Sie die --validate_datamodelOption 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.confDatei 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.

verwandte Informationen