7

In most bibliographic styles, the suffixes Jr. and Sr. go after both names of an author in the bibliography, preceded by a comma:

Gauch, Hugh G., Jr. (2012). Scientific method in brief. Cambridge: Cambridge University Press.

It seems like most BibTeX styles have struggled to get this right. I've also found now that the default behavior of biblatex doesn't follow the standard either. In the example below, the suffix Jr. is placed according to the general guidelines.

\documentclass{article}
\usepackage[style = authoryear-comp]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{gauch2012,
    AUTHOR = "Gauch, Jr., Hugh G.",
    TITLE = "Scientific method in brief",
    YEAR = "2012",
    LOCATION = "Cambridge",
    PUBLISHER = "Cambridge University Press"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

enter image description here

I've tried other permutations of the order First name, Last name, Jr. in the .bib file, but I haven't found one that gives the desired output.

According to the comments to Have the BibTeX styles gotten the placement of a name's "junior" part wrong?, both biblatex-apa and biblatex-chicago have the desired order, so it is at least possible to implement this in biblatex. How can I do it?


EDIT

When implementing Guido's suggestion, the default layout of subsequent authors, which is first name - last name, changes to last name - comma -- first name.

\documentclass{article}
\usepackage[style = authoryear-comp]{biblatex}
\DeclareNameFormat{author}{%
  \usebibmacro{name:delim}{#5#1}%
  \ifblank{#5}{#1}{#5 #1}\addcomma\addspace
  #3\isdot
  \ifblank{#7}{}{\addcomma\addspace #7}\isdot
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{gauch2012,
    AUTHOR = "Gauch, Jr., Hugh G.",
    TITLE = "Scientific method in brief",
    YEAR = "2012",
    LOCATION = "Cambridge",
    PUBLISHER = "Cambridge University Press"}
@BOOK{chomsky1968,
    AUTHOR = "Noam Chomsky and Morris Halle",
    TITLE = "The sound pattern of English",
    YEAR = "1968",
    LOCATION = "New York, NY",
    PUBLISHER = "Harper \& Row",
    SERIES = "Studies in language"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

enter image description here

Sverre
  • 20,729
  • I disagree with the claim that "BibTeX has long struggled to get this right". First off, it's not BibTeX itself but the bibliography style that determines all aspects of the formatting of an entry, including the ordering of the components of authors' names. Second, while the ordering "Last Name, First Name(s), Junior Component" may well be more common than "Last Name, Junior Component, First Name(s)", I don't think it can be said that there's a general rule that favors the first form. Publishers have "house styles" and tastes, and there's no arguing about such styles or tastes, right? – Mico Oct 31 '14 at 21:36
  • @Mico I've reworded it. – Sverre Oct 31 '14 at 22:20
  • 1
    Thanks. I still think that there's no point in claiming that one style is better than another or that some styles "struggle to get it right". The ordering of the components of authors' names is primarily a matter of style and taste, just as is the issue of whether the names of journals should be set in italics, etc. To avoid getting sucked into a pointless debate over which style is right, you could rephrase the query and simply state that you wish to implement a certain formatting style and that you need help doing so. No need to justify your stylistic choices, is there? – Mico Oct 31 '14 at 22:32
  • @Mico I haven't claimed now that some styles are better than others. I only mention what I believe to be true, that there are more styles that put Jr. at the end than there are styles that don't. By "struggle to get it right", I'm referring to the designed BibTeX styles that fail to put Jr. at the end even though the style sheets they are designed for do so. – Sverre Nov 01 '14 at 15:46
  • Thanks. Should we continue this discussion in chat? – Mico Nov 01 '14 at 19:03

2 Answers2

5

The standard biblatex directives to format names use some auxiliary bibmacro:

name:first-last
name:last-first
name:last 

For predefined name formats. Each of these take four arguments: the first is for the family name, the second is for the given name, the third for the "von" part, and the fourth for the "junior" part.

Thus, one can use of the auxiliary format, for example

\DeclareNameFormat{author}{
  \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}
}

For the parameters, \DeclareNameFormat splits a name in 8 parts:

#1: last name
#2: last name (as initials)
#3: first name
#4: first name (as initials)
#5: name prefix (von part)
#6: name prefix (as initials)
#7: name affix (junior part)
#8: name affix (as initials)

If the auxiliary bib macros do not produce the desired format, one has to provide a new definition. For example, a simplified definition for the format in the OP can look like the following:

\DeclareNameFormat{author}{%
  \usebibmacro{name:delim}{#5#1}%
  \ifblank{#5}{#1}{#5 #1}\addcomma\addspace
  #3\isdot
  \ifblank{#7}{}{\addcomma\addspace #7}\isdot
}

author (or other names) are lists, thus \DeclareNameFormat loops over all the elements in the list (up to a limit if give, for example by maxcitenames) and for each name it executes the code it the body of the definition.

Here the first step is the predefined biblatex macro name:delim. This macro takes care of the punctuation between the names. For the first name it does nothing, for successive names it insert a comma an and a comma and and before the last one.

The second step is to see if the "von" part is empty (parameter #5): if it is it print the last name (parameter #1), otherwise it prints the von part and the last name (#5 #1).

The next step is to print first name (parameter #3) (here the definition assumes that there is a first name!), so the separator between the last and first name is printed with e first name. The scope of \isdot is to ensure that a period in an initial is not consider as full stop, and thus the following punctuation is not ignored.

The final step is to check if there is a junior part (parameter #7). If it is not black it is printed. The \isdot is to cover the same situation as before.

EDIT

To use the above definition in a last-first/first-last schema, the above definition can replace the standard name:last-first macro, namely:

\renewbibmacro{name:last-first}[4]{
  \usebibmacro{name:delim}{#3#1}%
  \ifblank{#3}{#1}{#3 #1}\addcomma\addspace
  #2\isdot
  \ifblank{#4}{}{\addcomma\addspace #4}\isdot
}

enter image description here

Guido
  • 30,740
1

The approach I use when dealing with this situation is to enclose the last name and the "Jr." in curly brackets, like so:

AUTHOR = "Hugh G. {Gauch, Jr.}",

It's possible that sorting problems ensue, but until now I've had no issues.

NVaughan
  • 8,175