我正在使用贝尔斯坦来自的类贝尔斯坦包来格式化文档。这些文档中的参考资料使用纳米纳米网样式文件贝尔斯坦来自 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。