¿Qué hace el tipo de restricción obligatoria en biblatex?

¿Qué hace el tipo de restricción obligatoria en biblatex?

El modelo biber/ biblatexdata permite al usuario especificar restricciones en el modelo de datos con \DeclareDatamodelConstraints. En el modelo de datos predeterminado definido por blx-dm.defhay:

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

Por lo que puedo decir, la restricción no hace nada. Considere el siguiente 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}

Si lo ejecuto a través de pdflatex, biber, pdflatexespero biberdetenerme o, como mínimo, quejarme en voz alta de que no se cumple una restricción, pero no veo nada en los archivos logo blgque sugiera que no se cumple la restricción. ¿Es posible definir restricciones tales que biberyo pdflatexme queje si no se cumplen?

Respuesta1

Para marcar estas restricciones, debe pasar la --validate_datamodelopción a biber. En tu ejemplo corriendo

biber --validate_datamodel file

yo obtengo

[...]
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

Si lo desea, puede configurar esta opción en un biber.confarchivo que consta de

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

en lugar de escribir la opción de línea de comando bibercada vez.

Respuesta2

Si cambia las restricciones de los campos existentes, no olvide llamar

\ResetDatamodelConstraints

antes de definir sus propias restricciones.

información relacionada