对于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}