Что делает обязательный тип ограничения в biblatex?

Что делает обязательный тип ограничения в biblatex?

Модель данных biber/ biblatexпозволяет пользователю указывать ограничения на модель данных с помощью \DeclareDatamodelConstraints. В модели данных по умолчанию, определенной с помощью , blx-dm.defесть:

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

Насколько я могу судить, ограничение ничего не делает. Рассмотрим следующий 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}

Если я прогоню его через pdflatex, biber, pdflatex, я ожидаю biberостановки или, как минимум, громкого недовольства, что ограничение не выполняется, но я не вижу ничего ни в файлах , ни в logфайлах blg, что указывало бы на то, что ограничение не выполняется. Возможно ли определить ограничения таким образом, что biber/ pdflatexбудет жаловаться, если они не выполняются?

решение1

Чтобы проверить эти ограничения, вам нужно передать --validate_datamodelпараметр biber. В вашем примере, запущенном

biber --validate_datamodel file

я получил

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

При желании вы можете задать эту опцию в biber.confфайле, состоящем из

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

вместо того, чтобы каждый раз писать параметр командной строки biber.

решение2

Если вы измените ограничения существующих полей, не забудьте вызвать

\ResetDatamodelConstraints

прежде чем определять свои собственные ограничения.

Связанный контент