bjnano.bst provoca el error "No se puede abrir una pila literal vacía para la entrada XXX" para @Inproceedings

bjnano.bst provoca el error "No se puede abrir una pila literal vacía para la entrada XXX" para @Inproceedings

estoy usando elbeilstein.clsclase de labeilsteinpaquete para formatear un documento. Las referencias en estos documentos están formateadas utilizando elbjnano.bstarchivo de estilo que viene con elbeilsteinpaquete de CTAN (https://ctan.org/pkg/beilstein). En mi documento estoy haciendo referencia a una referencia de tipo InProceedings, lo que provoca el siguiente error con 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)

A pesar del error, se crea una bibliografía adecuada y la entrada parece estar completamente ahí. Eché un vistazo a la línea 1463 del archivo de estilo, sin embargo, no entiendo cómo funciona el formato.

Aquí está el MWE correspondiente:

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

¿El error existe dentro del archivo de estilo o mi archivo .bib contiene un error?

EDITAR: Como señaló el responsable del paquete en una respuesta a continuación, este error existe en la versión 2.0 (con fecha del 26 de febrero de 2020) y se solucionará con una nueva actualización de versión.

Respuesta1

Hay un pequeño error en la inproceedingsfunción en bjnano.bst.

Después de imprimir el título del libro, la función llama add.semicolon write$(línea 1121). En este punto aparentemente la pila está vacía, por lo tanto se produce el error. Al reemplazar la línea con new.block(que también imprime un punto y coma), el error desaparece, mientras que el resultado sigue siendo el mismo.

Función completa sin error:

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
}

Respuesta2

Gracias por el informe. Se acaba de enviar al CTAN una versión actualizada 2.1.

información relacionada