4

I'd like to cite another paper (keyB) inside a note of keyC, marking keyC as "superseded" by keyB.

When I do so, biblatex fails to respect the maxcitenames parameter. How do I get "Superseded by One et al. (2015b)" instead of the full author list? Note that I would like to keep the current global setting of maxbibnames.

MWE:

\documentclass[a4paper,11pt]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage{csquotes}
\usepackage{filecontents}

\begin{filecontents}{\jobname.bib} 
@Inproceedings{keyA,
  author = {Author One and Author Two and Author Three and Author Four},
    title={titleA},
    booktitle={bookA},
    year=2015,
}
@inproceedings{keyB,
  Title = {titleB},
  author = {Author One and Author Two and Author Three and Author Four},
  booktitle={bookB},
  year=2015,
}

@Inbook{keyC,
  Title = {titleC},
  author = {Author One and Author Two and Author Three and Author Four},
  booktitle={bookC},
  year=2016,
  % The following /should/ print ``One et al.'', but prints all four authors.
  note = {Superseded by \citet{keyB}}
}
\end{filecontents} 


\usepackage[natbib,maxcitenames=2,maxbibnames=99,style=authoryear,
    mincitenames=1,backend=biber]{biblatex}
\addbibresource{\jobname.bib} 
\begin{document}
\citet{keyA}

\citet{keyB}

\citet{keyC}

\printbibliography

\end{document}
2

In the bibliography biblatex uses the value of maxbibnames. But you can restore the cite value before the cite command:

\documentclass[a4paper,11pt]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage{csquotes}
\usepackage{filecontents}
\makeatletter
\newcommand\restoremaxcitenames{\let\blx@maxbibnames\blx@maxcitenames}
\makeatother
\begin{filecontents}{\jobname.bib}
@Inproceedings{keyA,
  author = {Author One and Author Two and Author Three and Author Four},
    title={titleA},
    booktitle={bookA},
    year=2015,
}
@inproceedings{keyB,
  Title = {titleB},
  author = {Author One and Author Two and Author Three and Author Four},
  booktitle={bookB},
  year=2015,
}

@Inbook{keyC,
  Title = {titleC},
  author = {Author One and Author Two and Author Three and Author Four},
  booktitle={bookC},
  year=2016,
  % The following /should/ print ``One et al.'', but prints all four authors.
  note = {Superseded by {\restoremaxcitenames\citet{keyB}}},
  related={keyB},
  relatedstring={Superseded by}
}
\end{filecontents}


\usepackage[natbib,maxcitenames=2,maxbibnames=99,style=authoryear,
    mincitenames=1,backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\citet{keyA}

\citet{keyB}

\citet{keyC}

\printbibliography

\end{document}

enter image description here

  • Looks good! Does that permanently change the value, or just for the current citet? – hannes Sep 30 '15 at 20:23
  • Imho this should be in a group, but to be sure I added some braces. – Ulrike Fischer Sep 30 '15 at 20:36
  • @hannes If you use the \cite commands regularly inside note fields you could think about adding the \restoremaxcitenames to the field format, so you don't have to call it manually every time. – moewe Oct 1 '15 at 6:38
  • @moewe thanks! For reference, this is the format I use now: \DeclareFieldFormat{note}{\restoremaxcitenames #1\isdot} – hannes Oct 1 '15 at 8:43

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.