2

Some style manuals recommend that you, with more than two authors, only use all of the names in the first citation and afterwards just use the last name of the first author followed by “et al.”

I looked in the biblatex manual, but clusent find this setting.

Here an example of what I am looking for (code below) all names and then et al.

\begin{filecontents}{\jobname.bib}
 @article{PhysRevB.39.7347,
  title = {Eight new high-temperature superconductors with the 1:2:4 structure},
  author = {Morris, Donald E. and Nickel, Janice H. and Wei, John Y. T. and Asmar, Naggi G. and Scott, Jeffrey S. and Scheven, Ulrich M. and Hultgren, Charles T. and Markelz, Andrea G. and Post, Jeffrey E. and Heaney, Peter J. and Veblen, David R. and Hazen, Robert M.},
  journal = {Phys. Rev. B},
  volume = {39},
  issue = {10},
  pages = {7347--7350},
  numpages = {0},
  year = {1989},
  month = {Apr},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevB.39.7347},
  url = {http://link.aps.org/doi/10.1103/PhysRevB.39.7347}}
\end{filecontents}

\documentclass[11pt, a4paper]{article}

\usepackage[english]{babel}
\usepackage[autostyle]{csquotes}  % thanks http://tex.stackexchange.com/a/64383/22939

\usepackage[
  backend=bibtex,
  style=authoryear,
  natbib=true,
  maxbibnames=99,
  maxcitenames=99, % maxcitenames
]{biblatex}

\usepackage{hyperref}
\hypersetup{
  pdfborderstyle={/S/U/W 1}, % thanks, http://tex.stackexchange.com/a/26085/22939
}

\addbibresource{\jobname.bib}

\DefineBibliographyStrings{english}{%
  bibliography = {References},
}

\defbibheading{bibintocindent}[\refname]{%
  \section*{#1}%
  \addcontentsline{toc}{section}{\protect\numberline{}#1}%
  \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}

\begin{document}

\tableofcontents

\section{First section}

\citet{PhysRevB.39.7347}  demonstrates $m$. However, it is also show that $q$ \citep[p. 7349]{PhysRevB.39.7347}

\printbibliography[heading=bibintocindent]

\end{document}
  • I wouldn't follow such a style manual. It is confusing if the citation changes - it looks as if you are citing two different works - and the long list of authors in the text is simply unreadable. – Ulrike Fischer May 7 '14 at 8:40
  • @UlrikeFischer, I think I agree. But, nonetheless, I might be forced to do it, in manner described above, in this particular case (and I would like to know if the option is there). – Eric Fail May 7 '14 at 8:44
5

biblatex uses \printnames{labelname} to print out author names. Therefor it only prints maxcitenames, and at least mincitenames author names (for the bibliography maxbibnames/minbibnames).

So setting maxcitenames to 1 is the default behaviour you want: Morrs et al., while the fullcite only is wanted if the cite is not seen yet.

You can patch the existing bibmacros \textcite and \cite which are used by \citet and \citep with the xpatch-package. With it you can replace \printnames{labelname} with \printnames[][-\value{listtotal}]{labelname} which will print out ALL names, no matter what maxcitenames says.

If the cite was already seen, you can check with \ifciteseen{}{}, therefore you have to enable manually the citetracker-option from biblatex (see preamble). Maybe you have to adjust this option, so it fits your needs.


update MWE:

\begin{filecontents}{\jobname.bib}
 @article{PhysRevB.39.7347,
  title = {Eight new high-temperature superconductors with the 1:2:4 structure},
  author = {Morris, Donald E. and Nickel, Janice H. and Wei, John Y. T. and Asmar, Naggi G. and Scott, Jeffrey S. and Scheven, Ulrich M. and Hultgren, Charles T. and Markelz, Andrea G. and Post, Jeffrey E. and Heaney, Peter J. and Veblen, David R. and Hazen, Robert M.},
  journal = {Phys. Rev. B},
  volume = {39},
  issue = {10},
  pages = {7347--7350},
  numpages = {0},
  year = {1989},
  month = {Apr},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevB.39.7347},
  url = {http://link.aps.org/doi/10.1103/PhysRevB.39.7347}}
\end{filecontents}

\documentclass[11pt, a4paper]{article}

\usepackage[english]{babel}
\usepackage[autostyle]{csquotes}  % thanks http://tex.stackexchange.com/a/64383/22939

\usepackage[
  backend=bibtex,
  style=authoryear,
  natbib=true,
  maxbibnames=99,
  maxcitenames=1,%modified
  citetracker=true%added
]{biblatex}

\usepackage{hyperref}
\hypersetup{
  pdfborderstyle={/S/U/W 1}, % thanks, http://tex.stackexchange.com/a/26085/22939
}

\addbibresource{\jobname.bib}

\DefineBibliographyStrings{english}{%
  bibliography = {References},
}

\defbibheading{bibintocindent}[\refname]{%
  \section*{#1}%
  \addcontentsline{toc}{section}{\protect\numberline{}#1}%
  \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}


%patches
\usepackage{xpatch}
\xpatchbibmacro{cite}{\printnames{labelname}}%
{\ifciteseen{\printnames{labelname}}{\printnames[][-\value{listtotal}]{labelname}}}
{}{}

\xpatchbibmacro{textcite}{\printnames{labelname}}%
{\ifciteseen{\printnames{labelname}}{\printnames[][-\value{listtotal}]{labelname}}}
{}{}

\begin{document}

\tableofcontents

\section{First section}

\citet{PhysRevB.39.7347}  demonstrates $m$. However, it is also show that $q$ \citep[p. 7349]{PhysRevB.39.7347}\par\medskip
\citet{PhysRevB.39.7347}  demonstrates $m$. However, it is also show that $q$ \citep[p. 7349]{PhysRevB.39.7347}
\printbibliography[heading=bibintocindent]

\end{document}


Output: enter image description here

  • It's best to do this in the labelname format but checking \ifciteseen is the right way to do it. The APA style does this (it's more complex there however as the APA rules are rather strange). – PLK Jun 24 '14 at 6:09

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.