This was a bug in biblatex
3.11 and earlier which has been resolved in biblatex
3.12. See https://github.com/plk/biblatex/issues/806 and https://github.com/plk/biblatex/pull/808. Update your TeX distribution if you are having troubles with this issue.
You should be able to control the space between all name initials with \bibinitdelim
, but as your MWE shows this does not always work.
When compiled with BibTeX the .bbl
file contains
giveni={J\bibinitperiod\bibinitdelim R\bibinitperiod
R\bibinitperiod\bibinitdelim A\bibinitperiod},
which means that for some reason BibTeX does not add a \bibinitdelim
between the two R
s.
Internally, what happens is that BibTeX's normal name parsing and abbreviating routine adds .~
or .
(a .
and a space) and that is then transformed back into \bibinitperiod\bibinitdelim
or \bibinitperiod
, respectively. btxhak
explains that BibTeX decides itself whether to put a space or a non-breaking space (p. 9):
BibTeX puts default strings between tokens of a name part: For whole tokens
it uses either a space or a tie, depending on which one it thinks is best, and for abbreviated tokens it uses a period followed by either a space or a tie.
If I compile your example with Biber, I get
giveni={J\bibinitperiod\bibinitdelim R\bibinitperiod\bibinitdelim R\bibinitperiod\bibinitdelim A\bibinitperiod}
and consequently \bibinitdelim
works as expected.
So this seems to be an issue with the BibTeX backend when used with biblatex-bst
, I have opened an issue about this at the biblatex
bugtracker: https://github.com/plk/biblatex/issues/806
For now I can only advise to use Biber
\documentclass{article}
\usepackage[style=ieee,backend=biber]{biblatex}
\begin{filecontents*}{\jobname.bib}
@Article{Martins2003,
author = {Martins, Joaquim R. R. A. and Sturdza, Peter and Alonso, Juan J.},
title = {The complex-step derivative approximation},
journal = {ACM Transactions on Mathematical Software},
year = {2003},
volume = {29},
number = {3},
pages = {245--262}
}
\end{filecontents*}
\renewrobustcmd*{\bibinitdelim}{\addnbthinspace}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
biber
. Perhaps it's a bug. Can you switch away frombibtex
?biber
instead.