
私はベイルシュタインクラスからバイルシュタインパッケージを使用して文書をフォーマットします。これらの文書内の参照は、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 に送信されました。