O que o tipo de restrição obrigatória no biblatex faz?

O que o tipo de restrição obrigatória no biblatex faz?

O modelo biber/ biblatexdata permite ao usuário especificar restrições no modelo de dados com \DeclareDatamodelConstraints. No modelo de dados padrão definido por blx-dm.defexiste:

\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 biberparar ou, no mínimo, reclamar em voz alta, que uma restrição não foi atendida, mas não vejo nada nos arquivos logou blgque sugira que a restrição não está sendo atendida. É possível definir restrições tais que bibereu pdflatexreclamarei se não forem cumpridas?

Responder1

Para verificar essas restrições você precisa passar a --validate_datamodelopçã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.confarquivo 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 bibersempre.

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.

informação relacionada