bjnano.bst вызывает ошибку «Вы не можете извлечь пустой литеральный стек для записи XXX» для @Inproceedings

bjnano.bst вызывает ошибку «Вы не можете извлечь пустой литеральный стек для записи XXX» для @Inproceedings

Я используюbeilstein.clsкласс избайльштейнПакет для форматирования документа. Ссылки в этих документах форматируются с использованиемbjnano.bstфайл стиля, который идет сбайльштейнпакет от CTAN (https://ctan.org/pkg/beilstein). В моем документе я ссылаюсь на ссылку типа InProceedings, что приводит к следующей ошибке в bibtext:

This is BibTeX, Version 0.99d (MiKTeX 20.7)
The top-level auxiliary file: co-paper-MWE.aux
The style file: bjnano.bst
Database file #1: MWE.bib
You can't pop an empty literal stack for entry 5420955
while executing---line 1463 of file bjnano.bst
(There was 1 error message)

Несмотря на ошибку, создается правильная библиография, и запись, кажется, полностью там. Я посмотрел на строку 1463 файла стиля, однако я не понимаю, как работает форматирование.

Вот соответствующий MWE:

\documentclass{beilstein}
\usepackage{filecontents}
\begin{filecontents*}{MWE.bib}
@INPROCEEDINGS{5420955,
    author={J. J. {Martin} and V. {Neburchilov} and H. {Wang} and W. {Qu}},
    booktitle={2009 IEEE Electrical Power Energy Conference (EPEC)}, 
    title={Air cathodes for metal-air batteries and fuel cells}, 
    year={2009},
    volume={},
    number={},
    pages={1-6},
    publisher={{IEEE}},
    doi = {10.1109/epec.2009.5420955},}
\end{filecontents*}

\begin{document}
    Text\cite{5420955} 
    \bibliography{MWE}
\end{document}

Существует ли ошибка в файле стиля или мой файл .bib содержит ошибку?

РЕДАКТИРОВАТЬ: Как указал сопровождающий пакет в ответе ниже, эта ошибка существует в версии 2.0 (от 26.02.2020) и будет исправлена ​​в новом обновлении версии.

решение1

inproceedingsВ функции есть небольшая ошибка bjnano.bst.

После печати названия книги функция вызывает add.semicolon write$(строка 1121). В этот момент стек, по-видимому, пуст, поэтому и возникает ошибка. Заменив строку на new.block(которая также печатает точку с запятой), ошибка исчезает, а вывод остается прежним.

Полная функция без ошибок:

FUNCTION {inproceedings}
{ output.bibitem
  format.authors "author" output.check
  after.item 'output.state :=
  title empty$
    'skip$
    { title format.title.noemph output
      after.sentence 'output.state :=
    }
  if$
  booktitle format.proc.title.in "booktitle" output.check
  new.block
  format.pub.address "publisher" output.check
  format.bdate "year" output.check
  pages empty$
    'skip$
    { new.block
      format.pages output }
  if$
  format.doi output
  fin.entry
}

решение2

Спасибо за отчет. Обновленная версия 2.1 только что отправлена ​​в CTAN.

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