I want to enforce biber/biblatex to place non-breaking spaces between initials and last names of authors. Example:
\documentclass{article}
\usepackage[backend=biber,natbib=true]{biblatex}
\newcommand*{\person}[2]{\citename{#1}[#2]{author}}
\DeclareNameFormat{firstinits-last}{%
\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}%
\usebibmacro{name:andothers}}
\DeclareNameAlias{sci}{firstinits-last}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{latour,
AUTHOR = {Latour, Bruno},
OPTIONS = {dataonly=true}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar.
\person{latour}{sci} says about the ``new object'' that emerges\ldots
\end{document}
This produces a line break between B.
and Latour
:
I have looked at this question, but the suggested code doesn't have any effect here:
\renewcommand*{\mkbibnamefirst}[1]{{\let~\,#1}}
\renewcommand*{\mkbibnamefirst}[1]{{\iffirstinits{\let~\,}{}#1}}
How would I make B. Latour
in this example be rendered as B.~Latour
(normal non-breaking space)?
Best Answer
There are now a series of different flexible delimiters between the parts of a name (when using Biber). They are
\bibnamedelima
, to\bibnamedelimd
plus\bibnamedelimi
and the marker command\revsdnamepunct
. Their full use cases are described in the manual: basically,\bibnamedelima
/\bibnamedelimb
go between first names or between surnames (i.e. for gaps within the same 'part' of the name) while\bibnamedelimc
/\bibnamedelimd
between the first name(s) and surnames (between 'parts').\bibnamedelimi
goes after initials in the first name part, replacing\bibnamedelima
/\bibnamedelimb
, when conversion to initials is active. Thus depending on the settings, either\bibnamedelimc
or\bibnamedelimd
applies in the current case (see the manual): it's just a question of altering the definitionsI've altered both setting here, but it's
d
that applies in the current case.