# Use only the last name as namepartfamily instead of everything after prefix

Biblatex considers everything after the prefix as a family name. In the name "Carlos de Souza Carvalho Pinto", for instance, namepartfamily is "Souza Carvalho Pinto", and using authortitle and giveninits this is what shows up in the bibliography:

Souza Carvalho Pinto, C. de

But what I want is:

Pinto, C. de S. C.

Setting the name to "Pinto, Carlos de Souza Carvalho" is inconvenient, but I could work with that, except that then the prefix gets abbreviated too:

Pinto, C. d. S. C.

Any ideas how I can fix this?

MWE

\begin{filecontents}{\jobname.bib}
@book{blabla,
author = {Charles-Jean de La Vallée Poussin}}
\end{filecontents}

\documentclass{article}

\usepackage[backend=biber, bibstyle=authortitle, giveninits]{biblatex}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

• I don't think it is correct to refer to “de La Vallée Poussin” as “Poussin”. French rules are different from Portuguese, with respect to double surnames. If you want to abbreviate that name, you should use “de La Vallée”, not “Poussin”. If your problem is indeed with Portuguese, please modify the question to explicitly say so. – egreg May 9 '16 at 10:40
• egreg is right and biblatex actually typeset the name pretty much the correct way. The only problem I see is that “de” should be in parenthesis after “La Vallée Poussin”: “La Vallée Poussin (de), Charles-Jean”. – Zoxume May 9 '16 at 12:06
• @egreg My main problem is indeed with portuguese names, I had taken that example from the biblatex manual, now I updated my post. Even if this format is right for french, though, I think in my case it would be better to change it for every language. I'm trying to make a style that follows Brazil's awful ABNT rules and that's how they do it most of the time. – dbmrq May 9 '16 at 19:26

With biblatex's extended name format you can sort of combine PLK's and Ulrike Fischer's answer into

@book{blabla,
author = {family=Pinto, given=Carlos de Souza Carvalho, given-i=C {de\nopunct} S C},
}


to obtain

• +1 And, I must ask: is {de\nopunct} news? If so, perhaps you'd like to answer tex.stackexchange.com/q/416625/105447. – gusbrs May 28 '18 at 19:41
• @gusbrs It was certainly news to me ;-) It never really occurred to me to try it, but I realised that it used to work in Ulrike's answer below, so I took a chance to see if something similar would work here as well. And it did. – moewe May 28 '18 at 19:48

You can get the output your want with this input:

@book{blabla,
author = {Charles-Jean {\relax de La\nopunct} Vallée Poussin}}


The problem is naturally that this hard-codes a representation. Also like egreg I don't think that this name should be written this way, but perhaps you simply used it as an example.

• That's great, thank you! But do you think there's no way to do it automatically without hard coding it for every entry, then? I tried changing the given-family name format and replacing {\namepartprefix} with {\relax \namepartprefix\nopunct}, but it doesn't work. – dbmrq May 9 '16 at 19:28
• I guess it must be done before the prefix becomes namepartprefix, but I don't know how. – dbmrq May 9 '16 at 19:51

For information, here is a way to do it without formatting hacks in the data using the biblatexml data format, part of whose motivation is to overcome such limitations in the bibtex name parsing routine. With biblatexml, initials are automatically generated (the routine is Unicode aware) or you can specify the initials manually if you want to. In addition, we simply change the name format routine to use prefix initials instead of full prefix. You'll need biblatex 3.4 and biber 2.5 due to many improvements in biblatexml handling in these versions:

\documentclass{article}
\usepackage[bibstyle=authortitle, giveninits]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bltxml}
<bltx:entries xmlns:bltx="http://biblatex-biber.sourceforge.net/biblatexml">
<bltx:entry id="test" entrytype="book">
<bltx:names type="author">
<bltx:name>
<bltx:namepart type="family">Pinto</bltx:namepart>
<bltx:namepart type="given">Carlos</bltx:namepart>
<bltx:namepart type="prefix">
<bltx:namepart initial="de">de</bltx:namepart>
<bltx:namepart>Souza</bltx:namepart>
<bltx:namepart>Carvalho</bltx:namepart>
</bltx:namepart>
</bltx:name>
</bltx:names>
</bltx:entry>
</bltx:entries>
\end{filecontents*}

\DeclareNameFormat{family-given/given-family}{%
\ifnumequal{\value{listcount}}{1}
{\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefixi}
{\namepartsuffix}}%
\ifboolexpe{%
test {\ifdefvoid\namepartgiven}
and
test {\ifdefvoid\namepartprefix}}
{}
{\usebibmacro{name:revsdelim}}}
{\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefixi}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}

\begin{document}
\nocite{*}
\printbibliography
\end{document}