bjnano.bst verursacht den Fehler „Sie können keinen leeren Literalstapel für Eintrag XXX hervorholen“ für @Inproceedings

bjnano.bst verursacht den Fehler „Sie können keinen leeren Literalstapel für Eintrag XXX hervorholen“ für @Inproceedings

Ich verwende diebeilstein.clsKlasse aus dembeilsteinPaket zum Formatieren eines Dokuments. Die Referenzen in diesen Dokumenten werden mit dembjnano.bststyle-Datei, die mit dembeilsteinPaket von CTAN (https://ctan.org/pkg/beilstein). In meinem Dokument verweise ich auf eine Referenz vom Typ „InProceedings“, was den folgenden Fehler mit Bibtext verursacht:

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)

Trotz des Fehlers wird eine ordentliche Bibliographie erstellt und der Eintrag scheint vollständig zu sein. Ich habe mir Zeile 1463 der Style-Datei angeschaut, verstehe die Formatierung allerdings nicht.

Hier ist das entsprechende 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}

Liegt der Fehler in der Stildatei oder enthält meine BIB-Datei einen Fehler?

BEARBEITEN: Wie der Paketbetreuer in einer Antwort weiter unten anmerkt, besteht dieser Fehler in Version 2.0 (vom 26.02.2020) und wird mit einem neuen Versionsupdate behoben.

Antwort1

Es gibt einen kleinen Fehler in der inproceedingsFunktion in bjnano.bst.

Nach dem Drucken des Buchtitels wird die Funktion aufgerufen add.semicolon write$(Zeile 1121). An dieser Stelle ist der Stapel offenbar leer, daher tritt der Fehler auf. Ersetzt man die Zeile durch new.block(was ebenfalls ein Semikolon druckt), verschwindet der Fehler, während die Ausgabe gleich bleibt.

Volle Funktion ohne Fehler:

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
}

Antwort2

Danke für den Bericht. Eine aktualisierte Version 2.1 wurde gerade an CTAN gesendet.

verwandte Informationen