
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 inproceedings
funçã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.