引用“et al.”仅适用于 natbib 和 jf.bst 中的四位或更多作者

引用“et al.”仅适用于 natbib 和 jf.bst 中的四位或更多作者

我正在使用该包natbib和以下 jf.bst 文件作为我论文的引用http://faculty.haas.berkeley.edu/stanton/texintro/。根据引文要求,当作者人数少于四人时,引文必须打印出作者的所有姓氏。现在的问题是,只要我有两位以上的作者,我就会得到例如“Doyle et al. (2006)”,而输出应该是“Doyle, Lundholm and Soliman (2006)”。根据 natbib 参考表http://merkel.zoneo.net/Latex/natbib.php我可以使用 获得我想要的输出\citet*。这实际上很繁琐,因为我每次都必须检查作者数量,然后才能决定使用哪个 cite 命令。有没有办法让 Late 自动理解使用正常命令\cite我可以得到上面 mentionend 的输出?

答案1

要更改引文标注中使用“et al.”的截断标准,从具有三位或更多作者的文章更改为具有四位或更多作者的文章,需要修改format.lab.names参考书目样式文件中的函数。

我建议您执行以下操作:

  • jf.bst复制您目前使用的版本。将副本命名为jf3.bst--“3”,表示如果某篇文章恰好有三位作者,则不会进行截断。(不要jf.bst直接修改。)

  • 在文本编辑器中打开文件jf3.bst并找到函数format.lab.names。它应该从第 1160 行开始,跨越 18 行。

  • 删除整个函数(即全部 18 行)并在其位置插入以下代码块(共 46 行):

    FUNCTION {format.lab.names}
    {'s :=
     "" 't :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr
          "{vv~}{ll}" format.name$
          't :=
          nameptr #1 >
            {
              nameptr #2 =
              numnames #3 > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$
              namesleft #1 >
                { ", " * t * }
                {
                  s nameptr "{ll}" format.name$ duplicate$ "others" =
                    { 't := }
                    { pop$ }
                  if$
                  t "others" =
                    { " et~al." * }
                    {
                      numnames #2 >
                        { "," * }
                        'skip$
                      if$
                      bbl.and
                      space.word * t *
                    }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
  • 将文件保存jf3.bst在主 tex 文件所在的目录中或 BibTeX 搜索的目录中。如果选择第二个选项,请务必更新 TeX 发行版的文件名数据库。

  • 使用指令\bibliographystyle{jf3}而不是 来开始使用新的参考书目样式\bibliographystyle{jf}。首次切换参考书目样式后,请务必再运行 LaTeX、BibTeX 和 LaTeX 两次,以完全传播所有更改。

祝您 BibTeX 愉快!


附录\citet:以下是运行 MWE生成的引文标注,首先是jf,然后是jf3。(一个条目有三位作者,另一个有四位。)

使用jf,两个引用标注都会截断为Andersen et al.

在此处输入图片描述

使用jf3,只有一个引用标注 - 针对有四位作者的作品 - 被截断:

在此处输入图片描述

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{abd:2007,
  author      = "Torben G. Andersen and Tim Bollerslev and Francis X. Diebold",
  title       = "Roughing it up: {Including} jump components in the
                measurement, modeling and forecasting of return volatility",
  journal     = "Review of Economics and Statistics",
  year        = 2007,
  volume      = 89,
  number      = 4,
  month       = "November",
  pages       = "701--720",
}

@article{abde:2001,
  author      = "Torben G. Andersen and Tim Bollerslev and Francis X. Diebold
                and Heiko Ebens",
  title       = "The distribution of realized stock return volatility",
  journal     = "Journal of Financial Economics",
  year        = 2001,
  volume      = 61,
  number      = 1,
  month       = "July",
  pages       = "43--76",
}
\end{filecontents*}
\usepackage[round,authoryear,comma]{natbib}
\bibliographystyle{jf}  % or: jf3
\begin{document}
\citet{abd:2007}; \citet{abde:2001}
\bibliography{\jobname}
\end{document}

相关内容