这个问题涉及文档末尾的参考书目/参考文献列表,而不是文内引用。
我想使用 apa-good.bst 作为我的参考书目样式。我的一些参考文献的作者远不止 7 位。按照 APA 样式引用的指导方针,应列出前 6 位作者,然后是“...”,然后是最后一位作者。经过大量的谷歌搜索,我没有找到一个有效的解决方案。我的计划是修改函数 {格式名称}但我的 LaTeX 编码知识相当差。我只设法输入了将总作者列表缩减为 7 位作者的部分。现在显示为:
FUNCTION {format.names}
{ 'bibinfo :=
duplicate$ empty$ 'skip$ {
's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}{, f.}{, jj}"
format.name$
bibinfo bibinfo.check
't :=
nameptr #1 >
{
nameptr #7
#1 + =
numnames #7
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{
"," *
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{
" " * bbl.etal *
}
{
"\&"
space.word * t *
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
} while$
} if$
}
这会将作者列表缩减为最多 7 位作者,但不是“作者 6,...,作者 70”,而是“作者 6,等”。
您是否知道如何、分别在何处更改函数以符合指南?[APA 样式第 6 版,7 位或更多作者1
感谢您的时间和想法,
露西
答案1
我不会通过修改apa-good
书目样式来做相当于重新发明轮子的事情。相反,我会使用apacite
LaTeX 包和apacite
书目样式。它们共同实现了您在排版书目条目方面所寻找的与八个或更多作者/编辑相关的内容。
如果您希望能够使用 natbib 样式的引用命令,例如citet
和\citep
,只需apacite
使用选项 加载包natbibapa
。
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@misc{abc...xyz:3001,
author = "A and B and C and D and E and F and G and X and Y and Z",
title = "Thoughts",
year = 3001,
}
\end{filecontents}
\documentclass{article}
\usepackage{apacite}
\bibliographystyle{apacite}
\begin{document}
\nocite{*}
\bibliography{mybib}
\end{document}
答案2
如果仍然有用,我修改了原来的内容format.names
以apa-good.bst
插入新标准。它应该是这样的
FUNCTION {format.names}
{ 'bibinfo :=
duplicate$ empty$ 'skip$ {
's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}{, f.}{, jj}"
format.name$
bibinfo bibinfo.check
't :=
nameptr #1 >
{ namesleft #1 >
nameptr #7 <
and
{ ", " * t * }
{ numnames #2 >
nameptr #7 <
and
{ "," * }
'skip$
if$
t "others" =
{ " ..." * }
{ nameptr #7 <
nameptr numnames =
or
numnames #7 >
and
{", ..., and " * t * }
{ nameptr #7 <
nameptr numnames =
or
{" and " * t * }
'skip$
if$
}
if$
}
if$
}
if$
}
numnames #7 >
nameptr #7 >
nameptr numnames <
and and
{"" 't :=}
'skip$
if$
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
} if$
}