
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 inproceedings
funció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.