修改 AER 书目样式,如果文章有三位作者,则写出所有姓名

修改 AER 书目样式,如果文章有三位作者,则写出所有姓名

对于aer.bst,使用 et al. 列出具有 3 个或更多作者的引文。我需要修改参考书目,以便使用 et al. 列出具有 4 个或更多作者的引文,但具有 3 个作者的引文会写出所有名称。例如,我想要“参见 Adams, Brown, and Clark (2003)”,而不是“参见 Adams et al. (2003)”。我使用 natbib 和 LaTex:\usepackage{natbib,har2nat}

为了做到这一点,我需要修改该功能format.lab.names.abbr

有人知道该怎么做吗?

FUNCTION {format.lab.names.abbr}
{ 'name.list :=
  name.list num.names$ 'numnames :=
  numnames #1 >
    { numnames #2 >
        { name.list #1 "{vv~}{ll}" format.name$ " et al." * }
        { name.list #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
            { name.list #1 "{vv~}{ll}" format.name$ " et al." * }
            { name.list #1 "{vv~}{ll}" format.name$ " and " *
              name.list #2 "{vv~}{ll}" format.name$ *
            }
          if$
        }
      if$
      field.used editor.field = {", eds" *} {} if$
    }
    {
        name.list #1 "{vv~}{ll}" format.name$
        field.used editor.field = {", ed" *} {} if$
    }
  if$
}


FUNCTION {format.lab.names.full}
{ 'name.list :=
  #1 'nameptr :=
  name.list num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { name.list nameptr "{vv~}{ll}" format.name$ 'temp :=
      nameptr #1 >
        { namesleft #1 >
            { ", " * temp * }
            { temp "others" =
                { " et~al." * }
                { " and " * temp * }
              if$
            }
          if$
        }
        'temp
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
  numnames #1 > field.used editor.field = and {", eds" *} {} if$
  numnames #1 = field.used editor.field = and {", ed" *} {} if$
}

答案1

(这个答案解决了仅有的aer使样式插入“牛津逗号”的问题。由于您使用的是natbib引文管理包,因此请使用\citet*\citep*生成显示所有作者/编辑者姓名的引文标注。)

为了使aer参考书目样式插入“牛津逗号” - 在作者/编辑者姓名列表的最后一项之前插入一个逗号,假设列表包含三个或更多项目 - 您可以应用以下编辑:

  • 在您的 TeX 发行版中找到该文件aer.bst,复制一份,并将副本命名为 (例如) aernc.bst。不要直接编辑原始文件。

  • aernc.bst在文本编辑器中打开该文件,找到该函数format.lab.names.full(在我的文件副本中,该函数从第 605 行开始),然后在该函数中找到以下行

                    { " and " * temp * }
    
  • 将此行更改为

                    { ", and " * temp * }
    
  • 将文件保存aernc.bst到主 tex 文件所在的目录或 BibTeX 搜索的目录。如果选择第二个选项,请务必更新 TeX 发行版的文件名数据库。通过替换 开始使用新的参考书目样式\bibliographystyle{aer}\bibliographystyle{aernc}请务必再运行 latex、bibtex 和 latex 两次以完全传播所有更改。

\cite*这是一个用于具有三个作者的条目的MWE 。

在此处输入图片描述

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{bbb,
  author = "Anna Andersen and Bert Branson",
  title  = "Thoughts",
  journal= "MyJournal",
  year   = 3002,
  volume = 1,
  number = 1,
  pages  = "1-100",
}
@article{ccc,
  author = "Anna Andersen and Bert Branson and Carla Carlsson",
  title  = "Thoughts",
  journal= "MyJournal",
  year   = 3003,
  volume = 1,
  number = 1,
  pages  = "1-100",
}
@article{ddd,
  author = "Anna Andersen and Bert Branson and Carla Carlsson and David Davies",
  title  = "Thoughts",
  journal= "MyJournal",
  year   = 3004,
  volume = 1,
  number = 1,
  pages  = "1-100",
}
\end{filecontents*}
\usepackage{natbib}
\bibliographystyle{aernc}
% \setcitestyle{aysep={}} % if you want to suppress the comma between author and year
\begin{document}
\cite{bbb}

\cite*{ccc}

\cite{ddd}
\bibliography{\jobname}
\end{document}

相关内容