14

Some years ago, a question was posted about how one should enter the honorific "Sir" in the author field of a bibliographic entry. (Aside: I suppose the query is also relevant for the use of the honorific "Dame". A second aside: I don't think it's a good idea to provide the honorifics "Sir" and "Dame" in the author field. However, let us proceed.)

E.g., consider the case of Sir Isaac Newton. If one simply writes

author = "Sir Isaac Newton",

and one uses a bibliography style that truncates given names, one ends up with either S. I. Newton or Newton, S. I.. Not good! By convention, "Sir" and "Dame" must never be abbreviated. At the time, I provided an answer that applies the following "fix" to the author field:

author = "{\relax Sir I}saac Newton",

This fix works just fine with BibTeX. It also works with biblatex either if BibTeX is used as the backend or if given names are being truncated (via an option such as giveninits=true). However, as has recently been pointed out to me in a comment, there is a problem if (a) biber is used as the backend and (b) the option giveninits=false is set, i.e., if given names are not being truncated. Consider the output of a simple two-entry MWE (code posted further below; the author fields are author = "{\relax Sir I}saac Newton", and author = "Zoe Zerlina Zwicky",, respectively.):

enter image description here

Note the whitespace immediately before "Sir". The MWE was compiled with MacTeX2017, biblatex 3.7 and biber 2.7. FWIW, here are the two given fields created by biber (copied and pasted from \jobname.bbl):

given={{\relax\bibnamedelimb Sir\bibnamedelimb I}saac},
given={Zoe\bibnamedelima Zerlina},

Observe that biber has inserted \bibnamedelimb between \relax and Sir. The presence of this macro is responsible for the insertion of the unwanted bit of whitespace.

Question: Is there an option that can/must be set to eliminate either the first instance of \bibnamedelimb or the entire string \relax\bibnamedelimb from the given field? Alternatively, is this a bug in biber (which will eventually be fixed)?


\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN, author = "{\relax Sir I}saac Newton", title = "Opticks", year = 1730, note = "Fourth edition"}
@misc{ZZZ, author = "Zoe Zerlina Zwicky", title = "Thoughts", year = 3001}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}
Mico
  • 506,678

2 Answers2

12

With Biber you can use the 'extended name format'. There you can specify the abbreviated form of a name part explicitly if you don't like default.

You would use

author  = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},

And would get

Sir Isaac Newton

in full, or

Sir I. Newton

in abbreviated form.

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{IsaacNewton,
  author  = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
  title   = {Opticks},
  year    = 1730,
  edition = {4},
}
@misc{xyz,
  author = {Zoe Zwicky},
  title  = {Thoughts},
  year   = 3001,
}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=true,backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}
moewe
  • 175,683
  • 2
    +1. ;-) Many thanks for this quick and thorough answer. I take it that the \relax "trick" -- which works fine in many BibTeX cases -- simply shouldn't be used with biber. Just out of curiosity: Would you know of a way to suppress the insertion of \bibnamedelimb immediately after \relax (and before "Sir")? Or is it the case that biber detokenizes (or otherwise treats) the elements of the author field prior to processing and thus never has a chance to notice that \relax might be "special"? – Mico Jul 08 '17 at 08:10
  • 1
    @Mico I would say so, yes. Biber's parsing is subtly different in some cases (especially when it comes to braces, not only in name fields, also in title fields - where then the sentence casing macro comes in). I'm not sure how Biber exactly inserts \bibnamedelimb, so I don't know a trick to not make it insert it after \relax. But I'm quite sure that \bibnamedelimb is inserted at a stage where Biber knows few things if any about TeX commands. If you think that is worth a bug report at https://github.com/plk/biber/issues – moewe Jul 08 '17 at 08:40
  • 2
    Note that "Sir I. Newton" is very bad form. Knights are known by their given names, not their surnames so, in a situation where you'd abbreviate me to "Mr Richerby", Newton would be "Sir Isaac". – David Richerby Jul 10 '17 at 23:23
  • 1
    @DavidRicherby Absolutely. It was one of the premises of the question to ignore the unreasonableness of the request. – moewe Jul 11 '17 at 04:51
5

Prompted by comments by @moewe below his great answer -- and especially by the allusion to how biber treats material in so-called "brace groups" (any material encased in an extra pair of curly braces) -- I've come up with another working solution. It's not as thorough as the one given by @moewe, but it's quite simple, in that it requires the use of just one extra brace group to help biber figure out what's the given-name component of the full name. Specifically, all that needs to be done is to replace

author = "{\relax Sir I}saac Newton", 

with

author = "{{\relax Sir I}saac} Newton", 

With the extra brace group in place, biber does not get around to inserting a \bibnamedelimb directive either between \relax and Sir or between "Sir" and the Initial "I". As a result, ordinary interword spaces get inserted. I suppose this could cause a new issue if, for some reason, \bibnamedelimb were to be set to something that's materially different from \space; fortunately, this doesn't appear to be the case here.

A full MWE:

enter image description here

\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN0, 
  author = "{\relax Sir I}saac Newton", 
  title  = "Opticks", note = "Not correct"
}
@misc{SIN1,
  author = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
  title  = {Opticks}, note = "Correct"
}
@misc{SIN2, 
  author = "{{\relax Sir I}saac} Newton", 
  title  = "Opticks", note = "Also correct"
}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}
Mico
  • 506,678
  • 1
    +1) As far as I can tell this will not cause a problem with \bibnamedelimb at all. The only thing that might be a bit meh is that the first name now is in another group, I'm nor sure if that can have adverse effects (for line breaking or kerning). – moewe Jul 08 '17 at 11:28