5

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}
\addbibresource{\jobname.bib}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\begin{document}
  \nocite{*}
  \printbibliography
\end{document}
dbmrq
  • 1,299
  • 3
    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 09 '16 at 10:40
  • 1
    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 09 '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 09 '16 at 19:26

3 Answers3

6

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*}

\addbibresource[datatype=biblatexml]{\jobname.bltxml}

\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}

enter image description here

PLK
  • 22,776
5

You can get the output your want with this input:

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

enter image description here

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.

Ulrike Fischer
  • 327,261
  • 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 09 '16 at 19:28
  • I guess it must be done before the prefix becomes namepartprefix, but I don't know how. – dbmrq May 09 '16 at 19:51
4

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

enter image description here

moewe
  • 175,683
  • +1 And, I must ask: is {de\nopunct} news? If so, perhaps you'd like to answer https://tex.stackexchange.com/q/416625/105447. – gusbrs May 28 '18 at 19:41
  • 2
    @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