我目前正在为 ACS 期刊撰写一篇论文,因此我使用achemso
TexStudio 中的样式格式来撰写它。
我对 LaTeX 还比较陌生,所以我一直在谷歌上搜索解决我遇到的问题,但有一个问题我似乎找不到解决办法。所有的参考和参考书目工作都进展顺利,直到出现一个错误,
---the literal stack isn't empty for entry yan2016nonlinear
while executing---line 1700 of file achemso.bst
(There was 1 error message)
出现。出现此错误后,感兴趣的参考文献出现在参考书目中,但没有作者姓名,而其他所有参考文献均正常。出现错误的参考文献是下图中的 (6)。
我尝试在另一个文档中使用 .bib 文件,但那里的参考书目结果很好。目前我不知道错误可能来自哪里。
我尝试制作一个关于 moewe 的评论的 MWEB。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{yan2016nonlinear,
title={Nonlinear and robust statistical process monitoring based on variant
autoencoders},
author={Yan, Weiwu and Guo, Pengju and Li, Zukui and others},
journal={Chemometrics and Intelligent Laboratory Systems},
volume={158},
pages={31--40},
year={2016},
publisher={Elsevier}
}
\end{filecontents}
\begin{document}
\cite{yan2016nonlinear}
\bibliography{\jobname}
\end{document}
问题是 bib 文件在某些情况下可以正常工作。例如,我尝试添加去年我参与撰写的一篇会议论文的参考文献,参考书目显示正常。
参考文献的来源是,在 Google 学术上搜索论文标题后,我点击了引用标记,即星号后的第二个图标,然后点击 BibTeX 并将内容粘贴到我的 bib 文件中。
谢谢大家的指导。我知道问题的格式肯定还不完整,但我会尽力修改它。
答案1
更新错误 (https://github.com/josephwright/achemso/issues/29)已在 3.12 版中修复
achemso
发布于 2018-09-15。如果您遇到同样的问题,请考虑更新。以下答案仅供参考。实际应用的修复与此处建议的修复略有不同。
这似乎是 中的一个小错误achemso.bst
。我已经在 上打开了一个问题https://github.com/josephwright/achemso/issues/29
特别是在FUNCTION { format.names.loop }
。而不是
FUNCTION { format.names.loop } {
{ remaining.names.int #0 > }
{
names.str current.name.int "{vv~}{ll,}{~f.}{,~jj}" format.name$
duplicate$
'current.name.str :=
current.name.int #1 >
{
duplicate$
"others," =
{
bbl.etal
add.space
remaining.names.int #1 - 'remaining.names.int :=
}
{
swap$
names.separate.comma.bool
{ add.comma }
{ add.semicolon }
if$
swap$
*
}
if$
}
{ }
if$
remaining.names.int #1 - 'remaining.names.int :=
current.name.int #1 + 'current.name.int :=
}
while$
}
它应该读
FUNCTION { format.names.loop } {
{ remaining.names.int #0 > }
{
names.str current.name.int "{vv~}{ll,}{~f.}{,~jj}" format.name$
duplicate$
'current.name.str :=
current.name.int #1 >
{
duplicate$
"others," =
{
pop$
add.space
bbl.etal
*
remaining.names.int #1 - 'remaining.names.int :=
}
{
swap$
names.separate.comma.bool
{ add.comma }
{ add.semicolon }
if$
swap$
*
}
if$
}
{ }
if$
remaining.names.int #1 - 'remaining.names.int :=
current.name.int #1 + 'current.name.int :=
}
while$
}
即变化是
--- achemso.bst 2018-02-05 21:29:10.000000000 +0100
+++ achemso-etal.bst 2018-07-11 16:21:24.290381800 +0200
@@ -872,8 +872,10 @@
duplicate$
"others," =
{
- bbl.etal
+ pop$
add.space
+ bbl.etal
+ *
remaining.names.int #1 - 'remaining.names.int :=
}
{
在你的特定情况下,有人指出,作者名单可能是
author = {Yan, Weiwu and Guo, Pengju and Liang Gong and Li, Zukui},
规避这个问题。(见https://www.sciencedirect.com/science/article/abs/pii/S0169743916302088在 Mico 的提醒下,我将“Liang gong”改为“Liang Gong”,以为是打字错误,但我无法获得原始论文来证实这一点。)