bjnano.bst causa o erro "Você não pode abrir uma pilha literal vazia para a entrada XXX" para @Inproceedings

bjnano.bst causa o erro "Você não pode abrir uma pilha literal vazia para a entrada XXX" para @Inproceedings

estou usando obeilstein.clsaula doBeilsteinpacote para formatar um documento. As referências nesses documentos são formatadas usando objnano.bstarquivo de estilo que vem com oBeilsteinpacote do CTAN (https://ctan.org/pkg/beilstein). No meu documento estou fazendo referência a uma referência do tipo InProceedings, que causa o seguinte erro com 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)

Apesar do erro, uma bibliografia adequada é criada e o verbete parece estar ali completo. Dei uma olhada na linha 1463 do arquivo de estilo, porém não entendi como funciona a formatação.

Aqui está o MWE correspondente:

\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}

O erro existe no arquivo de estilo ou meu arquivo .bib contém um erro?

EDITAR: Conforme apontado pelo mantenedor do pacote em uma resposta abaixo, esse bug existe na versão 2.0 (datado de 26/02/2020) e será corrigido com uma nova atualização de versão.

Responder1

Há um pequeno bug na inproceedingsfunção do bjnano.bst.

Após imprimir o título do livro a função chama add.semicolon write$(linha 1121). Neste ponto aparentemente a pilha está vazia, portanto ocorre o erro. Substituindo a linha por new.block(que também imprime um ponto e vírgula) o erro desaparece, enquanto a saída permanece a mesma.

Função completa sem erro:

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
}

Responder2

Obrigado pelo relatório. Uma versão atualizada 2.1 acaba de ser enviada ao CTAN.

informação relacionada