odomanov / biblatex-gost

Biblatex styles for Russian GOST 7.0.5-2008 bibliography standard
68 stars 9 forks source link

Баг при попытке добавить новую datamodel #43

Open jemmybutton opened 2 months ago

jemmybutton commented 2 months ago

При попытке добавить новую datamodel, со стилями gost-* (пробовал не все, но для примера ниже -numeric), после lualatex, biber, lualatex (то же с pdflatex) выдается ошибка:

Missing number, treated as zero.
<to be read again> 
\relax

MWE выглядит так:

\RequirePackage{filecontents}

\begin{filecontents*}{test.bib}
    @book{test,
        title = {text},
        volume = 2 % без volume работает нормально
    }
\end{filecontents*}

\begin{filecontents}{test.dbx}

\end{filecontents}

\documentclass{article}

\usepackage[backend=biber,style=gost-numeric,datamodel=test]{biblatex}

\addbibresource{test.bib}

\begin{document}

    test \cite{test}

    \printbibliography

\end{document}

Если в записи в библиографии нет поля volume, то ничего такого не происходит.

В принципе, после ошибки оно компилируется, кажется, нормально, но явно что-то не то.

odomanov commented 1 month ago

Это ошибка при вычислении \rangelen. В biblatex-gost типы полей volume и др. переопределяются на range, чтобы в них можно было записывать диапазоны. Поэтому ваша модель должна содержать это переопределение; например:

\DeclareDatamodelFields[type=field, datatype=range]{
  number,
  book,
  part,
  volume,
  issue,
}

Я добавлю проверку и предупреждение.

jemmybutton commented 1 month ago

Понятно, спасибо! То есть сам факт добавления datamodel, даже пустой, возщвращает исходные определения? А можно ли каким-то образом загружать необходимые переопределения поверх требуемой модели, а не вписывать их в саму модель каждый раз?

odomanov commented 1 month ago

Они не то чтобы исходные, просто какие-то определённые в biblatex.

Насчёт расширения модели. Я читаю нужную модель с помощью \blx@inputonce: https://github.com/odomanov/biblatex-gost/blob/master/tex/latex/biblatex-gost/dbx/gost-numeric.dbx. По идее, после этого можно вписывать какие хотите изменения.

Но вообще, в документации написано, что biblatex после загрузки модели грузит ещё файл biblatex-dm.cfg. Можно так попробовать.