32

In BibTeX and biblatex, it is well known that an author's name can have up to four components -- the firstname, von, surname, and Jr components. (The von component will turn out to be irrelevant for my purposes.)

If a certain author's name has FirstName, SurName, and Jr components, one can enter it easily as

author = "SurName, Jr, FirstName",

However, some names -- e.g., "Pliny the Younger", "Cato the Elder" -- have a surname and a Jr component but but no FirstName component. Question: How does one enter such a name in a BibTeX database?

The natural attempt,

author = "SurName, Jr.Component",

is not correct because BibTeX interprets Jr.component as FirstName. This matters because some bibliography styles abbreviate first names, whereas the Jr component is -- to the best of my knowledge -- never abbreviated. Moreover, some bibliography styles place the firstname component ahead of the surname component; that's never done -- again, to the best of my knowledge -- to the Jr. component. I've also found that

author = "SurName, Jr.Component, ",

i.e., attempting to provide an "empty" FirstName Component, doesn't work either as it throws a BibTeX error.

I should add that it's important that the surname and Jr.Component parts be recognized separately by BibTeX. Thus, author = "{Pliny the Younger}", which treats the name as a single entity (a surname, actually), won't work for me.


Addendum: The use case that gave rise to this query is fairly unusual. I posted the query while trying to help the editor of an anthology of oral stories told by Amazon rainforest dwellers. Specifically, the task was to help organize and format the references and citation call-outs.

The story contributors all have only a single name each (no first names); some of the contributors are narrators, others are translators, etc. The book editor was looking to list the authors in the form

"XYZ, narrator and ABC, translator [remainder of formatted reference]" 

in the references, and have citation call-outs of the form "XYZ and ABC". Note that the "narrator" and "translator" particles should show up only in the references (and should be separated from the names with a comma), but not in the citation call-outs.

My initial idea was to use the Jr component of a four-part bibtex-formated name to hold the authors' functional information (narrator, translator, etc): The Jr component is always typeset after the name, it is never abbreviated (the editor was using a bibliography style that abbreviates first names while listing them ahead of the surnames), and it is is separated from the (sur)name with a comma. Unfortunately, this idea didn't work, because the story tellers have single names, i.e., no separate first-name and last-name components...

In the end, I came up with a different solution: The natbib package allows setting up citation aliases. Thus, the author field could be defined as

author = "{XYZ, narrator} and {ABC, translator}",

and the citation call-out could be set to come out as "XYZ and ABC". Whew!

13
  • 3
    author={{Cato the Elder}}
    – egreg
    Commented Oct 12, 2014 at 12:20
  • @egreg - I should have mentioned that I need to keep the surname and Jr components separate. For instance, the citation callout (in an authoryear citation system) should use just the surname component, i.e., say "Cato" -- not "Cato the Elder".
    – Mico
    Commented Oct 12, 2014 at 12:46
  • 1
    The usual question: do you own an original version of the “De senectute” by Cato Maior, whose name actually was “Marcus Porcius Cato”?
    – egreg
    Commented Oct 12, 2014 at 13:36
  • 1
    I don't think that the bibtex parser and the btparse library of biber has some "official" way to handle this case. Depending on system and the style you will have to add some dummy. (But \relax will not work with biber as the `` will end as initial.) But you could make a feature request for biber for an "ignore me" input. Commented Oct 13, 2014 at 8:04
  • 2
    With biblatex and its extended name format (only supported by Biber) you can give name parts explicitly. But then you could also not abuse the junior part, but define a dedicated part for your needs here (see the second part of my answer to CJK Bibliography Problem, Biblatex-Chicago).
    – moewe
    Commented Aug 16, 2016 at 11:34

2 Answers 2

12

This is my solution:

@book{Surname:2015,
  author={Name {Surname Jr.}},
  title={Book Title},
  publisher={Publisher},
  year={2015}
}
2
  • 1
    Many thanks for taking the time to post an answer. Unfortunately, the use case that gave rise to the query is quite unusual and isn't addressed by your proposed method. I've posted an addendum to my posting, in which I explain the use case in more detail as well as how I ended up solving the problem.
    – Mico
    Commented Mar 1, 2015 at 21:07
  • 1
    I'm reading now. Yours it is a good idea. Commented Mar 1, 2015 at 21:11
12
+100

With the upcoming biblatex 3.5/Biber 2.6 Biber supports an extended format to give names. You can specify the nameparts separately and don't have to rely on BibTeX's name parsing. There you could just use

author = {family=XYZ, suffix=translator},

This format can be combined with the standard input form

author = {family=XYZ, suffix=translator and James Miller},

But you could make use of the extended name format to an even higher degree. (See also Bibliography according to icelandic system, Use only the last name as namepartfamily instead of everything after prefix and Bibtex/Biber: how to cite an author using Ethiopian conventions?)

Here I follow my approach from CJK Bibliography Problem, Biblatex-Chicago

We can introduce a new namepart role with the .dbx

\ProvidesFile{mico.dbx}[2016/08/17 extended name format for biblatex]
\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,role}

Then we just need a new macro to print the name with role, say

\newbibmacro*{name:role}[3]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \mkbibnamefamily{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}}%
  \ifdefvoid{#3}{}{\addcomma\space\mkbibnamerole{#3}}}

Then we need to make our name format choose this macro if the role is present

\DeclareNameFormat{given-family}{%
  \ifdefvoid{\namepartrole}
    {\ifgiveninits
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}
    {\usebibmacro{name:role}{\namepartfamily}{\namepartgiven}{\namepartrole}}%
  \usebibmacro{name:andothers}}

\DeclareNameAlias{sortname}{given-family}

MWE

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{filecontents}
\begin{filecontents*}{mico.dbx}
\ProvidesFile{mico.dbx}[2016/08/17 extended name format for biblatex]
\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,role}
\end{filecontents*}
\begin{filecontents*}{\jobname.bib}
@book{xyz,
  title  = {A Story},
  author = {family=XYZ, role=translator and family=ABC, role=narrator},
  year   = {2011},
}
\end{filecontents*}

\usepackage[style=authoryear, backend=biber, datamodel=mico]{biblatex}
\addbibresource{\jobname.bib}

\newbibmacro*{name:role}[3]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \mkbibnamefamily{#1}%
  \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}}%
  \ifdefvoid{#3}{}{\addcomma\space\mkbibnamerole{#3}}}

\DeclareNameFormat{given-family}{%
  \ifdefvoid{\namepartrole}
    {\ifgiveninits
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiveni}
           {\namepartprefix}
           {\namepartsuffix}}
        {\usebibmacro{name:given-family}
           {\namepartfamily}
           {\namepartgiven}
           {\namepartprefix}
           {\namepartsuffix}}}
    {\usebibmacro{name:role}{\namepartfamily}{\namepartgiven}{\namepartrole}}%
  \usebibmacro{name:andothers}}

\DeclareNameAlias{sortname}{given-family}

\begin{document}
  \cite{xyz}

  \printbibliography
\end{document}

gives in citations

XYZ and ABC 2011

and in the references

XYZ, translator and ABC, narrator (2011). A Story.

2
  • Many thanks for posting a biblatex-based answer! I find it very instructive.
    – Mico
    Commented Aug 17, 2016 at 21:40
  • 1
    Great answer! I was unaware of this new capabilities of Biber and the latest biblatex manual did not help much (or I glanced through it too quickly...). Many thanks
    – stefano
    Commented Sep 15, 2017 at 21:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .