在出现警告“执行 --- 时,条目 yan2016nonlinear 的文字堆栈不为空”之后,参考文献中的作者姓名消失

在出现警告“执行 --- 时,条目 yan2016nonlinear 的文字堆栈不为空”之后,参考文献中的作者姓名消失

我目前正在为 ACS 期刊撰写一篇论文,因此我使用achemsoTexStudio 中的样式格式来撰写它。

我对 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”,以为是打字错误,但我无法获得原始论文来证实这一点。)

相关内容