BibTeX 参考文献列表中的三位作者后跟“et al”

BibTeX 参考文献列表中的三位作者后跟“et al”

我找到了一个非常相似的问题的答案:BibTeX:如何将长作者列表缩减为“Firstauthor et al.”?

但是,建议的解决方案对我来说不起作用。我有一个由出版商提供的样式,同时解释说参考作者应该在第三作者之后截断(后面跟着 et al)

我在文件中找到了{ namesleft #1 >并按照回复中的说明进行了更改,但没有效果。你能帮助我吗?

{ 'bibinfo :=
 duplicate$ empty$ 'skip$ {
 's :=
 "" 't :=
 #1 'nameptr :=
 s num.names$ 'numnames :=
 numnames 'namesleft :=
   { namesleft #0 > }
   { s nameptr
     "{vv~}{ll}{ f{}}{ jj}"
     format.name$
     remove.dots
     bibinfo bibinfo.check
     't :=
     nameptr #1 >
      % {
       %  namesleft #1 >
nameptr #1 >
        {
         nameptr #3
         #1 + =
         numnames #5
         > and
           { "others" 't :=
             #1 'namesleft := }
           'skip$
         if$
         namesleft #1 >
           { ", " * t * }
           {
             "," *
             s nameptr "{ll}" format.name$ duplicate$ "others" =
               { 't := }
               { pop$ }
             if$
             t "others" =
               {
                 " " * bbl.etal *
               }
               { " " * t * }
             if$
           }
         if$
       }
       't
     if$
     nameptr #1 + 'nameptr :=
     namesleft #1 - 'namesleft :=
   }
 while$
 } if$
} ```

答案1

OP 在评论中表示他/她使用了spbasicSpringer 提供的参考书目样式。

要实现所需的格式 - 如果条目有,则显示所有作者的姓名最多 4作者,但只显示前三位作者,后跟“et al.”如果条目有超过 4作者——我建议您按如下方式进行。

  • 复制一份spbasic.bst并将该副本命名为spbasic85.bst

  • 在文本编辑器中打开文件spbasic85.bst。你用来编辑 tex 文件的程序就可以了。

  • 找到函数format.names。(在我的 bst 文件副本中,该函数从第 455 行开始。)

  • 在此函数中,找到以下两行:

          nameptr #1 >
            {
    
  • 紧接着这两行,也就是在 行之前namesleft #1 >,插入以下 8 行代码:

              nameptr #3
              #1 + =
              numnames #4
              > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$
    
  • 将文件保存spbasic85.bst在包含主 tex 文件的文件夹中或 BibTeX 搜索的文件夹中。如果选择后者,请确保也对 TeX 发行版的文件名数据库应用适当的更新。(如果您不确定是否理解前面的句子,我强烈建议您选择选项 1...)

  • 在您的主 tex 文件中,更改\bibliographystyle{spbasic}\bibliographystyle{spbasic85}并执行完整的重新编译循环 - LaTeX、BibTeX 和 LaTeX 两次 - 以传播所有更改。


完整的 MWE:

在此处输入图片描述

\documentclass{article}
\begin{filecontents}[overwrite]{mybib.bib}
  @misc{abc,author="A and B and C",title="X",year=3000}
  @misc{abcd,author="A and B and C and D",title="Y",year=3001}
  @misc{abcde,author="A and B and C and D and E",title="Z",year=3002}
\end{filecontents}

\usepackage[authoryear]{natbib}
\bibliographystyle{spbasic85}

\begin{document}
\cite{abc}, \cite{abcd}, \cite{abcde}
\bibliography{mybib}
\end{document}

相关内容