3

I use biblatex with style=authoryear-icomp, maxbibnames=50 and maxcitenames=2. Therefore, usually, two authors are named for each reference via \cite. For most cases this is a perfect setting. However, for some calls of \cite I'd like to explicitly increase the number of displayed authors. And I'd like to let bibtex compact (group) the authors.

At the moment I get for "\cite{paper2001,paper2002,paper2003}":

"Author1, Author2, et. al 2001; Author5, Author6, et. al 2002, 2003"

But I'd like to have:

"Author1, Author2, Author3, and Author4 2001; Author5, Author6, Author7, and Author8 2002, 2003"

For single citations (just one paper), \AtNextCite can be used to modify the behaviour (see https://tex.stackexchange.com/a/142202).

Using the same trick with \AtNextMultiCite does not compress the output. Therefore, in the previous example, I would get two times the list of Authors 5-8 for the two referenced papers.

How can I temporarily (for one call of \cite) increase the number of displayed authors while maintaining the compression

MWEB:

\documentclass{article}
\usepackage{bbding}
\usepackage[
    sortcites=true,
    style=authoryear-icomp,    
    firstinits=true,
    uniquename=init,      
    maxbibnames=50,            
    maxcitenames=2,            
    autocite=inline,           
    block=space,                   
    date=short,                
    backend=biber,
    sorting=nyt,
    ]{biblatex} % For the bibliography
\addbibresource{\jobname.bib}
\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{paper2001,
  author = {Author1 and Author2 and Author3 and Author4},
  year = {2001},
  title = {paper1},
  publisher = {Publisher},
}

@article{paper2002,
  author = {Author5 and Author6 and Author7 and Author8},
  year = {2002},
  title = {paper2},
  publisher = {Publisher},
}

@article{paper2003,
  author = {Author5 and Author6 and Author7 and Author8},
  year = {2003},
  title = {paper3},
  publisher = {Publisher},
}
\end{filecontents}

\begin{document}
\noindent Usually I want to have the abbreviated version: \cite{paper2002,paper2003}.\Checkmark \\\\
\noindent But sometimes, I'd like to list all authors like in the References. Instead I get:\\
\cite{paper2001,paper2002,paper2003}

\printbibliography

\end{document}
  • It would be easier to have a look into this if you could provide an MWE (or MWEB) so we have something to start from. Is there some kind of pattern to where you want to show all authors? (Is it in first cite, for certain authors only, for certain entry types only, for certain entries only, or completely at random?) – moewe Jan 25 '17 at 14:18
  • I added an MWEB. There is no pattern. At some points it's simply necessary to list all authors but in general I prefer the abbreviated version. – Jan Jan 25 '17 at 15:05
3

You can use

\AtNextCite{\AtEachCitekey{\defcounter{maxnames}{999}}}

to make sure that all citations in the next \cite use the full name lists.

This is the method used in blx-natbib.def, see also https://github.com/plk/biblatex/issues/354

  • Works perfect. Just as information for those who experience problems: \AtEachCitekey was added to biblatex 3.2 on 2015-12-28. Check your version! – Jan Jan 25 '17 at 16:19
  • @Jan Exactly, pretty much as a consequence of issue #354 that is linked in the answer. – moewe Jan 25 '17 at 16:29

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.