bjnano.bst 导致 @Inproceedings 出现“您无法弹出用于条目 XXX 的空文字堆栈”错误

bjnano.bst 导致 @Inproceedings 出现“您无法弹出用于条目 XXX 的空文字堆栈”错误

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

相关内容