
El modelo biber
/ biblatex
data permite al usuario especificar restricciones en el modelo de datos con \DeclareDatamodelConstraints
. En el modelo de datos predeterminado definido por blx-dm.def
hay:
\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
, pdflatex
espero biber
detenerme o, como mínimo, quejarme en voz alta de que no se cumple una restricción, pero no veo nada en los archivos log
o blg
que sugiera que no se cumple la restricción. ¿Es posible definir restricciones tales que biber
yo pdflatex
me queje si no se cumplen?
Respuesta1
Para marcar estas restricciones, debe pasar la --validate_datamodel
opció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.conf
archivo 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 biber
cada vez.
Respuesta2
Si cambia las restricciones de los campos existentes, no olvide llamar
\ResetDatamodelConstraints
antes de definir sus propias restricciones.