The first given name of an author or editor in my bibliography should be written out, but all further first names should be abbreviated (initials with a period — and space if there are multiple first names/initials, see below). I am using style=authoryear
with BibLaTeX (v. 2.7) and Biber (v. 1.7).
My bibliography looks like this:
Doe, John Arthur Kyle (2013). The secret life of John Doe.
It should look like this:
Doe, John A. K. (2013). The secret life of John Doe.
Minimal example:
example.tex
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[backend=biber,style=authoryear]{biblatex}
\bibliography{bibliography}
\begin{document}
\cite[123]{Doe}
\printbibliography
\end{document}
bibliography.bib
@book{Doe,
title = {The secret life of John Doe},
author = {Doe, John Arthur Kyle},
year = {2013}
}
(Worked with said versions of BibLaTeX and Biber, Texmaker (v. 4.0.3) and MiKTeX (v. 2.9.4813).)
I could not find a solution in biblatex.def and firstinits=true
abbreviates all first names, including the first one.
Best Answer
As
biblatex
does not distinguish multiple first names, we need to split this list ourselves:Now calling
\first{John Arthur Kyle}
yields "John A. K.".The trick used is that the macro
\first
passes its argument to\@first
which in turn delimits its arguments by spaces, i.e.#1
is "John" and#2
is "Arthur Kyle". This gets sent to\@initials
which goes through the list of names (in case there are more or less than two) and calls\initial
with each name.\initial
in turn calls\@initial
which throws away all but the first letter and adds a dot and a space.Now we can use this in
\DeclareNameFormat
:Note that for
author = {Doe, John Arthur Kyle}
in thebib
file,#3
actually consists ofJohn\bibnamedelimb Arthur\bibnamedelima Kyle
, so we need to eliminate these for the\first
macro to work.EDIT: a "proper"
NameFormat
should include deliminators for multiple names, thus we check if we are in the middle of a list of names and if so print a slash.Additionally, the
authoryear
style useslabelname
to display the author name in citations, so that format should be changed to keep the formatting of the citation in line with that of the bibliography entry:To summarize: This code
together with this
bib
file:produces this output:
EDIT: For more details on splitting strings, see e.g. the answers to this question; for information on macros using "strange" argument delimiters, see e.g. this thread.