
O modelo biber
/ biblatex
data permite ao usuário especificar restrições no modelo de dados com \DeclareDatamodelConstraints
. No modelo de dados padrão definido por blx-dm.def
existe:
\DeclareDatamodelConstraints[article]{
\constraint[type=mandatory]{
\constraintfield{author}
\constraintfield{journaltitle}
\constraintfield{title}
}
}
Pelo que sei, a restrição não faz nada. Considere o seguinte 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}
Se eu passar por pdflatex
, biber
, pdflatex
, espero biber
parar ou, no mínimo, reclamar em voz alta, que uma restrição não foi atendida, mas não vejo nada nos arquivos log
ou blg
que sugira que a restrição não está sendo atendida. É possível definir restrições tais que biber
eu pdflatex
reclamarei se não forem cumpridas?
Responder1
Para verificar essas restrições você precisa passar a --validate_datamodel
opção para biber
. No seu exemplo executando
biber --validate_datamodel file
eu recebo
[...] 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
Se desejar, você pode definir esta opção em um biber.conf
arquivo composto por
<?xml version="1.0" encoding="UTF-8"?>
<config>
<validate_datamodel>1</validate_datamodel>
</config>
em vez de escrever a opção de linha de comando biber
sempre.
Responder2
Se você alterar as restrições dos campos existentes, não esqueça de ligar
\ResetDatamodelConstraints
antes de definir suas próprias restrições.