# Use non-breaking space after name initials with biblatex macros

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}

\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)?

-

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 definitions

\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}
\person{latour}{sci} says about the new object'' that emerges\ldots

I've altered both setting here, but it's d that applies in the current case.
You could use \renewcommand*\bibnamedelimd{~}: I've chosen to stick with the biblatex 'official' approach. –  Joseph Wright Aug 13 '14 at 15:12
You might consider \renewcommand*\bibnamedelimd{\addhighpenspace}, which makes it harder to break here but not impossible (depending on the real case, it can be tricky to avoid all breaks in names, especially in the bibliography). –  Joseph Wright Aug 13 '14 at 15:16