18

In supplying an answer to this question: Preserve lowercase in bibtex I discovered that the way biblatex handles name prefixes is a bit odd, since it appears to be "all or nothing".

Update This question has been modified from the original to further clarify the problem.

From the biblatex manual:

useprefix=true, false default: false

Whether the name prefix (von, van, of, da, de, della, etc.) is considered when printing the last name in citations. This also affects the sorting and formatting of the bibliography as well as the generation of certain types of labels. If this option is enabled, biblatex always precedes the last name with the prefix. For example, Ludwig van Beethoven would be cited as “Beethoven” and alphabetized as “Beethoven, Ludwig van” by default. If this option is enabled, he is cited as “van Beethoven” and alphabetized as “Van Beethoven, Ludwig” instead. With Biber, this option is also settable on a per-type basis.

In a very similar question: How can I put a name's prefix in front in citations but *not* in the bibliography?, lockstep proposes a solution whereby the use of the prefix is turned on at the beginning of the document (and thereby used with in text citations) but turned off at the beginning of the bibliography (and thereby not used in the sorting of the bibliography.)

Here's an example:

\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
% Use useprefix=false to ignore name prefixes
\usepackage[style=authoryear,backend=biber,useprefix=false]{biblatex}
\usepackage{ifpdf}
\makeatletter
\AtBeginDocument{\toggletrue{blx@useprefix}}
\AtBeginBibliography{\togglefalse{blx@useprefix}}
\makeatother
\begin{filecontents}{\jobname.bib}
@book{Saussure1995,
    Author = {Ferdinand de Saussure},
    Origyear = {1916},
    Publisher = {Payot},
    Title = {Cours de Linguistique G{\'e}n{\'e}rale},
    Year = {1995}}

@book{Labov1972,
    Address = {Philadelphia},
    Author = {William Labov},
    Publisher = {University of Pennsylvania Press},
    Title = {Sociolinguistic Patterns},
    Year = {1972}}

\end{filecontents}
\addbibresource{\jobname}
\begin{document}
The relation between the the sign and the signified is arbitrary \autocite{Saussure1995,Labov1972}. 

Language change is driven by language variation. \autocite{Labov1972}.

\printbibliography


\end{document}

This correctly yields "de Saussure" in the in text citations and "Saussure, Ferdinand de" in the bibliography, but it still has one side effect. In a list of citations, because useprefix is set to true, the in text citation yields "(de Saussure 1995; Labov 1972)" instead of "(Labov 1972; de Saussure 1995)".

So here's the question:

How can we make biblatex use the prefix in citations, not use the prefix in the bibliography, and sort lists of in text citations correctly so that we get "de Saussure" in the citation lists to sort with S rather than D?

This is a generic problem for any authoryear or author style, so I've created a new question to reflect that, and added both the and the tags.

12

2 Answers 2

11

Now the correct one ;-)

The option sortcites should work:

\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}

\usepackage[style=authoryear,backend=biber,useprefix=false,sortcites=true]{biblatex}
\usepackage{ifpdf}
\makeatletter
\AtBeginDocument{\toggletrue{blx@useprefix}}
\AtBeginBibliography{\togglefalse{blx@useprefix}}
\makeatother
\begin{filecontents}{\jobname.bib}
@book{Saussure1995,
    Author = {Ferdinand de Saussure},
    Origyear = {1916},
    Publisher = {Payot},
    Title = {Cours de Linguistique G{\'e}n{\'e}rale},
    Year = {1995}}

@book{Labov1972,
    Address = {Philadelphia},
    Author = {William Labov},
    Publisher = {University of Pennsylvania Press},
    Title = {Sociolinguistic Patterns},
    Year = {1972}}

\end{filecontents}
\addbibresource{\jobname}
\begin{document}
The relation between the the sign and the signified is arbitrary \autocite{Saussure1995,Labov1972}. 

Language change is driven by language variation. \autocite{Labov1972}.

\printbibliography


\end{document}

enter image description here

0
3

I actually have an option for this implemented in my personal style. Taking Marco's example I add a toggle citeprefix and also define a BibliographyOption citeprefix:

\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,backend=biber]{biblatex}
\defbibheading{bibliography}{\centering Works Cited}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Saussure1995,
    Author = {Ferdinand de Saussure},
    Origyear = {1916},
    Publisher = {Payot},
    Title = {Cours de Linguistique G{\'e}n{\'e}rale},
    Year = {1995}}

@book{Labov1972,
    Address = {Philadelphia},
    Author = {William Labov},
    Publisher = {University of Pennsylvania Press},
    Title = {Sociolinguistic Patterns},
    Year = {1972}}
\end{filecontents}
\addbibresource{\jobname.bib}

\providetoggle{citeprefix}
\toggletrue{citeprefix}
\DeclareBibliographyOption{citeprefix}[true]{\settoggle{citeprefix}{#1}}
\ExecuteBibliographyOptions{citeprefix=true}
\renewbibmacro*{name:last}[4]{%
  \iftoggle{citeprefix}
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifblank{#3}
       {}
       {\ifcapital
          {\mkbibnameprefix{\MakeCapital{#3\isdot}}}
          {\mkbibnameprefix{#3\isdot}}%
        \ifpunctmark{'}{}{\bibnamedelimc}}}
    {\ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifblank{#3}
       {}
       {\ifcapital
          {\mkbibnameprefix{\MakeCapital{#3\isdot}}}
          {\mkbibnameprefix{#3\isdot}}%
        \ifpunctmark{'}{}{\bibnamedelimc}}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}}}%
  \mkbibnamelast{#1}}%
\begin{document}
The relation between the the sign and the signified is arbitrary \autocite{Saussure1995}. 

Language change is driven by language variation. \autocite{Labov1972}.

\printbibliography


\end{document}

enter image description here

4
  • Thanks for your answer Simon. I've updated the question a bit, unfortunately. With your solution, the sorting of multiple in text citations still uses the prefix. (so de Saussure sorts with D not S). (BTW, your image doesn't match the code, I don't think.)
    – Alan Munn
    Commented Oct 2, 2011 at 20:19
  • @Alan: Simifilm has updated his answer, too.
    – lockstep
    Commented Oct 2, 2011 at 20:25
  • @Marco: I've updated the code and the image, are you sure it's not what you want? The Sorting is under S.
    – Simifilm
    Commented Oct 2, 2011 at 20:26
  • 1
    As @Marco has pointed out in chat, adding sortcites=true to your solution will solve the list of in text citations problem. So your solution works well.
    – Alan Munn
    Commented Oct 2, 2011 at 20:27

You must log in to answer this question.

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