4

The APA style requires that the first citation for 3 to 6(?) authors uses the full list of authors while subsequent citations use an abbreviated list of authors. This is implemented by biblatex-apa:

\documentclass{article}

\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}

% full author list
\parencite{herrmann}

% abbreviated author list
\parencite{herrmann}

% I would like a full author list here
\parencite{herrmann}

% this should be abbreviated again
\parencite{herrmann}

\printbibliography
\end{document}

enter image description here

In some cases it would be interesting to get the full list of authors even in a subsequent citation. Is that possible? The ideal solution would be a switch that would cause all subsequent citations to be treated as first ones, so that only the second citation after the "switch" would be abbreviated.

This question is motivated by a question on SO where a user tries to do something like this in the context of csl and pandoc-citeproc. I have the hope that a biblatex based workflow is more flexible.

  • Would you want this for all citations or just for a particular .bib entry? Also, I'm not sure I understand the "so that..." part of your ideal solution. – Alan Munn Aug 9 at 12:11
  • @AlanMunn The ideal solution would affect for all citations. – Ralf Stubner Aug 9 at 12:13
4

biblatex-apa uses the test \ifciteseen to check if a citation should use the long or short form. This tracker can be reset completely with \citereset. biblatex-apa also defines an additional special tracker which can be reset with \citeresetapa (this tracker is only used in very special circumstances with shortauthor/shorteditor fields, so forgetting to reset it will do almost no harm in most use cases).

So if you issue

\citereset\citeresetapa

anywhere in your document all first citations after that line will use the long form and subsequent citations will be short again. This affects all entries alike.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}

% full author list
\parencite{herrmann}

\parencite{yoon}

% abbreviated author list
\parencite{herrmann}

\parencite{yoon}

% I would like a full author list here
\citereset\citeresetapa
\parencite{herrmann}

\parencite{yoon}

% this should be abbreviated again
\parencite{herrmann}

\parencite{yoon}

\printbibliography
\end{document}

(Herrmann, Öfele, Schneider, Herdtweck, & Hoffmann, 2006)//(Yoon, Ryu, Kim, & Ahn, 2006)//(Herrmann et al., 2006)//(Yoon et al., 2006)//(Herrmann, Öfele, Schneider, Herdtweck, & Hoffmann, 2006)//(Yoon, Ryu, Kim, & Ahn, 2006)//(Herrmann et al., 2006)//(Yoon et al., 2006)

The load-time package option citereset=<section level> lets you automatically execute \citereset at all headings of <section level>. So citereset=section would call \citereset at each \section. There is no analogous option for \citeresetapa.


If you only want to affect a particular citation, something like

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}

\addbibresource{biblatex-examples.bib}

\makeatletter
\newcommand*{\longparencite}{%
  \AtNextCite{\AtEachCitekey{%
    \let\blx@imc@ifciteseen\@secondoftwo
    \let\ifciteseen\blx@imc@ifciteseen}}%
  \parencite}
\makeatother

\begin{document}

% full author list
\parencite{herrmann}

\parencite{yoon}

% abbreviated author list
\parencite{herrmann}

\parencite{yoon}

% I would like a full author list here
\longparencite{herrmann}

\parencite{yoon}

% this should be abbreviated again
\parencite{herrmann}

\parencite{yoon}

\printbibliography
\end{document}

might work better for you.

(Herrmann, Öfele, Schneider, Herdtweck, & Hoffmann, 2006)//(Yoon, Ryu, Kim, & Ahn, 2006)//(Herrmann et al., 2006)//(Yoon et al., 2006)//(Herrmann, Öfele, Schneider, Herdtweck, & Hoffmann, 2006)//(Yoon et al., 2006)//(Herrmann et al., 2006)//(Yoon et al., 2006)

With this definition \longparencite locally pretends that the citation was not seen before, hence we get the long form. \longparencite does not affect other citations and at least with this definition \longparencite does count towards \ifciteseen in situations like \longparencite{herrmann}\parencite{herrmann} (that could be changed of course).

  • Thanks. citereset=chapter is perfect. – Ralf Stubner Aug 9 at 14:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.