4

I'm using

bibstyle=alphabetic,
maxnames=3,.
minnames=2,
maxalphanames=1, 

In one section, I have some citations I wish to \fullcite. For these, I'd like to have every author listed (annoyingly, they contain between 4 and 9 authors). If I set maxnames higher, \citet makes the in-text citation difficult to read in the rest of the document.

Can I set maxnames for a specific section of the document, then change it back later?


Here's a MWE, showing the \fullcite that does not list all author names. In this example, the behaviour of \citet is good, but I want to increase maxnames as indicated.

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{A+04,
  author = {Author, Aa and Buthor, Bb and Cuthor, Cc and Duthor, Dd},
  title = {Title},
  journal = {Journal title},
  year = {2001},
  volume = {1},
  number = {2},
  pages = {101--109},
  month = jan,
  note = {This is an article entry},
}
@article{A+02,
  author = {Author, Aa and Buthor, Bb},
  title = {Title},
  journal = {Journal title},
  year = {2001},
  volume = {1},
  number = {2},
  pages = {101--109},
  month = jan,
  note = {This is an article entry},
}
@article{A+03,
  author = {Author, Aa and Buthor, Bb and Cuthor, Cc},
  title = {Title},
  journal = {Journal title},
  year = {2001},
  volume = {1},
  number = {2},
  pages = {101--109},
  month = jan,
  note = {This is an article entry},
}
\end{filecontents}

\usepackage[bibstyle=alphabetic,maxnames=3,minnames=2,maxalphanames=1,natbib=true]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}

\section{Fullcite}
% I want to increase maxnames here somehow:
% maxnames=10
\fullcite{A+04}
% and then I want to drop it again for the rest of the document. 
% maxnames=3

\section{In-text}
\citet{A+04} says interesting things.

\citet{A+02} says other things. 

\citet{A+03} disagree.
\end{document}
  • Related: Typeset one citation with all authors – moewe Jun 9 '17 at 5:55
  • @moewe Thanks! I didn't spot that as I was trying to see if there was already a solution. :-\ – simont Jun 9 '17 at 6:07
  • Well, it's always easier to find the solution if you know what it looks like. – moewe Jun 9 '17 at 6:24
5

Here's a couple of ways:

  1. You could make a command to set maxcitenames

    \makeatletter
    \newcommand{\setmaxcitenames}[1]{%
      \numdef\blx@maxcitenames{#1}}
    \makeatother
    

    Then use \setmaxcitenames{10} at the start of your section and \setmaxcitenames{3} at the end of your section.

  2. You could make a new \fullauthorcite command

    \DeclareCiteCommand{\fullauthorcite}
      {\usebibmacro{prenote}}
      {\usedriver
         {\setcounter{maxnames}{10}% use up to 10 authors
          \DeclareNameAlias{sortname}{default}}
         {\thefield{entrytype}}}
      {\multicitedelim}
      {\usebibmacro{postnote}}
    

    You could also redefine \fullcite like this.

1

This is one possible idea. But I believe there is good chance that someone else will come up with something cleaner and better. Anyway, in the meantime, you could redefine fullcite in the section where you want to change maxnames and later restore it. Like this:

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{A+04,
  author = {Author, Aa and Buthor, Bb and Cuthor, Cc and Duthor, Dd},
  title = {Title},
  journal = {Journal title},
  year = {2001},
  volume = {1},
  number = {2},
  pages = {101--109},
  month = jan,
  note = {This is an article entry},
}
@article{A+02,
  author = {Author, Aa and Buthor, Bb},
  title = {Title},
  journal = {Journal title},
  year = {2001},
  volume = {1},
  number = {2},
  pages = {101--109},
  month = jan,
  note = {This is an article entry},
}
@article{A+03,
  author = {Author, Aa and Buthor, Bb and Cuthor, Cc},
  title = {Title},
  journal = {Journal title},
  year = {2001},
  volume = {1},
  number = {2},
  pages = {101--109},
  month = jan,
  note = {This is an article entry},
}
\end{filecontents}

\usepackage[bibstyle=alphabetic,maxnames=3,minnames=2,maxalphanames=1,natbib=true]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}


\let\origfullcite\fullcite
\preto\fullcite{\AtNextCite{\defcounter{maxnames}{10}}}

\section{Fullcite}
% I want to increase maxnames here somehow:
% maxnames=10
\fullcite{A+04}
% and then I want to drop it again for the rest of the document. 
% maxnames=3

\let\fullcite\origfullcite

\section{In-text}
\citet{A+04} says interesting things.

\citet{A+02} says other things. 

\citet{A+03} disagree.

\fullcite{A+04}.
\end{document}

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.