Pasing the uniquename=init
option to biblatex
produces:
with the authors distinguished by their initials. uniquename
accepts a number of other options to disambiguate references. See the biblatex
documentation.
If you wish to get
with trailing initials instead then just add
\DeclareNameAlias{labelname}{family-given}
to your preamble. However, as you note this adds initials to all citations. To print initials only for those citations that need disambiguation, use
\DeclareNameFormat{labelname}{%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi
\usebibmacro{name:andothers}}
instead. This code is a simple modification of of the format declaration for labelname
provided by the standard file biblatex.def
with each instance of name:given-family
replaced by name:family-given
.
Here is a complete file with its output:
\documentclass{article}
\usepackage[style=authoryear-comp,maxcitenames=2,maxbibnames=10,
url=false,doi=false,isbn=false,dashed=false,
giveninits=true,uniquename=init]{biblatex}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameFormat{labelname}{%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi
\usebibmacro{name:andothers}}
\begin{filecontents}{biblio.bib}
@article{smithaa,
title = {Some title},
year = {2000},
author = {Smith, Aaron A and Meyer, M and Fitzgerald, F},
journal = {Some journal}
}
@article{smithaz,
title = {Another title},
year = {2000},
author = {Smith, Anton Z and Smith, A A and Doe, John},
journal = {Another journal}
}
@article{differentxy,
title = {Just something else},
year = {2003},
author = {Different, Jason J and Person, Other O and Human, Another A},
journal = {Different Journal}
}
\end{filecontents}
\addbibresource{biblio.bib}
\begin{document}
\parencites{smithaa}{smithaz}.
\parencite{differentxy}.
\printbibliography
\end{document}
The above code is for biblatex 3.4
or newer, for older versions my previously posted code is
\documentclass{article}
\usepackage[style=authoryear-comp,maxcitenames=2,maxbibnames=10,
url=false,doi=false,isbn=false,dashed=false,
firstinits=true,uniquename=init]{biblatex}
\DeclareNameAlias{sortname}{last-first}
\DeclareNameFormat{labelname}{%
\ifcase\value{uniquename}%
\usebibmacro{name:last}{#1}{#3}{#5}{#7}%
\or
\ifuseprefix
{\usebibmacro{name:last-first}{#1}{#4}{#5}{#8}}
{\usebibmacro{name:last-first}{#1}{#4}{#6}{#8}}%
\or
\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}%
\fi
\usebibmacro{name:andothers}}
\begin{filecontents}{biblio.bib}
@article{smithaa,
title = {Some title},
year = {2000},
author = {Smith, Aaron A and Meyer, M and Fitzgerald, F},
journal = {Some journal}
}
@article{smithaz,
title = {Another title},
year = {2000},
author = {Smith, Anton Z and Smith, A A and Doe, John},
journal = {Another journal}
}
@article{differentxy,
title = {Just something else},
year = {2003},
author = {Different, Jason J and Person, Other O and Human, Another A},
journal = {Different Journal}
}
\end{filecontents}
\addbibresource{biblio.bib}
\begin{document}
\parencites{smithaa}{smithaz}.
\parencite{differentxy}.
\printbibliography
\end{document}
Best Answer
Just add
\DeclareNameAlias{sortname}{last-first}
to your preamble.Consider the output of the following minimal working example (MWE):