bjnano.bst は @Inproceedings で「エントリ XXX の空のリテラル スタックをポップすることはできません」というエラーを引き起こします

bjnano.bst は @Inproceedings で「エントリ XXX の空のリテラル スタックをポップすることはできません」というエラーを引き起こします

私はベイルシュタインクラスからバイルシュタインパッケージを使用して文書をフォーマットします。これらの文書内の参照は、bjnano.bstスタイルファイルはバイルシュタインCTANのパッケージ(https://ctan.org/pkg/beilstein)。私の文書では InProceedings タイプの参照を参照していますが、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)

エラーにもかかわらず、適切な参考文献が作成され、エントリは完全に存在しているようです。スタイル ファイルの 1463 行目を確認しましたが、書式設定の仕組みがわかりません。

対応する 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}

エラーはスタイル ファイル内に存在しますか、それとも .bib ファイルにエラーが含まれていますか?

編集: 以下の回答でパッケージメンテナーが指摘しているように、このバグはバージョン 2.0 (2020-02-26 日付) に存在し、新しいバージョンのアップデートで修正される予定です。

答え1

inproceedingsの関数に小さなバグがありますbjnano.bst

ブックタイトルを印刷した後、関数はadd.semicolon write$(行 1121) を呼び出します。この時点ではスタックが空であるため、エラーが発生します。行をnew.block(これもセミコロンを印刷します) に置き換えると、エラーは消えますが、出力は同じままです。

エラーのない完全な機能:

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
}

答え2

ご報告ありがとうございます。更新されたバージョン 2.1 が CTAN に送信されました。

関連情報