APA6:\citeauthor 首次引用来源时仅添加第一作者

APA6:\citeauthor 首次引用来源时仅添加第一作者

当在论文中首次使用文档类别引用一组 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

相关内容