当在论文中首次使用文档类别引用一组 3 到 5 位作者时apa6
,该命令\citeauthor
仅添加第一位作者,后跟“et al.” 。APA 手稿指南(第 6 版)要求在文档的第一次引用中引用所有作者。\textcite
但\parencite
效果如预期。
这是我得到的:
它看起来应该是这样的:
这是我的例子:
\documentclass[man]{apa6}
\usepackage[american]{babel}
\usepackage[utf8]{inputenc}
\usepackage[style=apa, backend=biber,doi,url]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\begin{filecontents}{literature.bib}
@article{foobar,
Author = {Foo, A. and Bar, B. and Baz, C.},
Journal = {Journal of Foo},
Pages = {1--2},
Title = {Foo is bar},
Volume = {1},
Year = {1999}
}
\end{filecontents}
\addbibresource{literature.bib}
\shorttitle{foo}
\begin{document}
\citeauthor{foobar}
% \textcite{foobar}
\end{document}
答案1
cite
您可以尝试以下定义。我使用了 bib 宏和命令的默认定义,cite
并删除了日期。
\makeatletter
\newbibmacro*{cite:author}{%
\iffieldequals{namehash}{\cbx@lasthash}
% Multiple cites in one command
{\setunit{\compcitedelim}%
\usebibmacro{cite:plabelyear+extrayear}}%
% Single cite
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
% No author/editor
{\usebibmacro{cite:noname}%
% \setunit{\nameyeardelim}%
% \usebibmacro{cite:plabelyear+extrayear}%
\savefield{namehash}{\cbx@lasthash}}
% Normal cite
{\ifnameundef{shortauthor}
{\printnames[labelname][-\value{listtotal}]{labelname}}
{\ifciteseen
{\printnames{shortauthor}}
{\printnames[labelname][-\value{listtotal}]{author}\addspace\printnames[sabrackets]{shortauthor}}}%
% \setunit{\nameyeardelim}%
% \usebibmacro{cite:plabelyear+extrayear}%
\savefield{namehash}{\cbx@lasthash}}}%
\setunit{\multicitedelim}}
\DeclareCiteCommand{\citeauthor}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite:author}}
{}
{\usebibmacro{postnote}}
\makeatother