46

I want to produce the following with LaTeX/BibTeX:

In the running text:

... we refer the reader to the work of Van Noort (2010).

In the bibliography:

Thomas van Noort. An important paper. 2010.

I have tried many tricks, but I don't seem to able to fulfill all the requirements:

  1. "Thomas van Noort" has to appear sorted in the bibliography by the name "Noort".
  2. In the running text, the "Van" needs to have an uppercase 'V'
  3. In the bibliography, the "van" needs to have a lowercase 'v'
  4. I am using hyperref, and I want the whole "Van Noort (2010)" text to link to the reference.

Using plain \citet will generate:

... we refer the reader to the work of van Noort (2010).

Note the lowercase 'v'; this is not acceptable, as per standard treatment of Dutch names. Setting the BibTeX name to Van Noort, Thomas makes the running text citation look ok, but then in the bibliography I get

Thomas Van Noort. An important paper. 2010.

Note the uppercase 'V'; this is also not acceptable, as it should only be uppercase if it is not preceded by the first name.

(1) is easy: I set the BibTeX author field to {\noopsort{Noort}}{van Noort}, Thomas. (2) and (3) I can fake by saying something like we refer the reader to the work of Van Noort \citeyear{...}, but this is not nice, and does not fulfill (4).

Anyone has any suggestions? I was under the impression that LaTeX and BibTeX were designed with these kind of things in mind, so maybe I'm missing something...

4
  • 7
    Ah, the tussenvoegsel: the bane of poorly-thought-out name-handling software everywhere ;) Commented Jan 11, 2012 at 13:38
  • Apologies if this is not an option for you but biblatex instead of plain bibtex makes this sort of thing a lot easier.
    – PLK
    Commented Jan 11, 2012 at 14:06
  • For information, why would one not write "van Noort (2010)" in the running text, as that is the way the author's name is spelled?
    – Karlo
    Commented Dec 22, 2020 at 19:24
  • @Karlo because the official rule in Dutch is that the prefix is upper case when the first name is not mentioned, and lower case when the first name is mentioned.
    – Marijn
    Commented Jan 26 at 12:18

4 Answers 4

38

A working scheme seems to be

\documentclass{article}
\usepackage[authoryear]{natbib}
\usepackage{hyperref}

% #1: sorting key, #2: prefix for citation, #3: prefix for bibliography
\DeclareRobustCommand{\VAN}[3]{#2} % set up for citation

\begin{document}
\citet{vannoort}
\citet{other}

\bibliographystyle{plainnat}

% here we change the meaning of \VAN to use the prefix for the bibliography
\DeclareRobustCommand{\VAN}[3]{#3}

\bibliography{vannoort}
\end{document}

where the entry in the .bib file is

@article{vannoort,
author={{\VAN{Noort}{Van}{van}} Noort, Thomas},
title={An important paper},
year=2010,
}

In the first argument to \VAN you can put anything you need to ensure correct sorting.


A couple of words, as asked by Florian Rubach.

To BibTeX, something like {\command{something}} is like an "accent"; usually one does {\"{u}} to get sorting of ü like "u" (which may not be correct in German, but it is for English). However, this feature can be used to force the sorting we want.

With \DeclareRobustCommand{\VAN}[3]{#2} in the preamble, we are saying that when LaTeX finds \VAN{Noort}{Van}{van} in the document, it should ignore the first and third argument, so printing "Van". This will come from what has been stored reading the aux file. However, before the bibliography we change the command so that it ignores the first and second argument, so printing "van", which is what's desired in the bibliography.

The first argument is never used by LaTeX, but it is by BibTeX; the string in the first argument can be anything that ensures correct sorting: It comes before the rest of the surname, so it will the most important information for sorting.

I should mention that I wouldn't change how a name appears in the two places.

7
  • 2
    Another, clean solution is to run the utility makebst.tex. (Run it by typing latex makebst at a command prompt.) It's a menu-driven program with lots of questions and even more answers that may be chosen. Some of the questions concern how to sort, and how to typeset, names containing a "von" part. The output of the program is a bibliography style file (extension .bst) that meets all of your specialized needs.
    – Mico
    Commented May 22, 2012 at 20:29
  • I do not quite get what the \VAN command does in the bibliography, could you explain? But it works like a charm! Commented Feb 25, 2013 at 14:49
  • Doesn't work for me, I'm getting cryptic "undefined control sequence" errors. Is this supposed to work out of the box with standard BibTeX, without a preamble? (Running latest MikTeX 2.9, freshly installed yesterday.)
    – Fred Foo
    Commented Apr 27, 2013 at 12:23
  • @larsmans Without a simple example, it's difficult to say. Can you ask a followup question with a minimal working example (MWE)?
    – egreg
    Commented Apr 27, 2013 at 12:37
  • 1
    @dremodaris No, it isn't, because it will not print “Von Last” in the running text.
    – egreg
    Commented Dec 16, 2019 at 12:21
12

I understand that disregarding the "von" component of an author's name for sorting purposes is common practice in Dutch typography -- quite likely because roughly half the Dutch population have either "de" or "van" in their names. (OK, "roughly half" may be a slight exaggeration.) The "Dutch" sorting style is, by the way, not unique to the Dutch; for instance, I know for a fact that it is also practiced, to some degree, in the German-speaking part of Switzerland. E.g., a person named "Peter von Matt" living in Zurich would be sorted in the phone book under "M" (as in "Matt, Peter von") rather under "V".

It's actually quite easy to modify most bibliography styles to implement the "Dutch" sorting style. Modifying the bibliography style file spares you the task of hand-editing (possibly lots and lots of) author fields in your .bib file to override the default sorting method for the names in question. For the sake of specificity, I will assume in the following example that you employ the plainnat bibliography style. Adjustments shouldn't be too difficult to figure out for many other bibliography styles.

  • Find the file plainnat.bst in your TeX distribution. Make a copy of this file and call the copy (say) plaindutch.bst. (Do not edit/modify an original file of your TeX distribution directly.)

  • Open plaindutch.bst in your favorite text editor.

  • Locate the function sort.format.names. In that function, locate the following line:

       s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
    

    Change this line to:

       s nameptr "{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
    

    Even if you're entirely unfamiliar with BibTeX's syntax, I trust you're able to tell what's going on: with the change in place, the sorting by authors' names will disregard any "von" component.

  • Save the file plaindutch.bst either in the same directory as your main .tex file or in a directory that's searched by your TeX distribution. If you use the latter method, be sure to update the TeX distribution's filename database.

  • Start using the new bibliography style by issuing the instruction \bibliographystyle{plaindutch} in your .tex files.

Happy BibTeXing!

Comment: This answer was originally posted to address the question Latex citations Bibtex. Wrong capital and alphabetical order. However, that question got closed as being a duplicate of this posting. I migrated my answer in the hope that others may come across it.

1
  • The 10th upvote on this answer, received on 27 Jan 2021, earned me my the 1000th [!] bronze badge on this site. Many thanks for this upvoter -- and to all the other upvoters on other postings of mine.
    – Mico
    Commented Jan 28, 2021 at 7:02
11

Natbib offers the \Citet command for languages where you usually use the lower case version, but not at the beginnig of a sentence. This command will make the van, von, di etc. upper case. Nothing stops you from using \Citet every where. This can be combined with your \noopsort solution:

\documentclass{article}
\usepackage[authoryear]{natbib}
\usepackage{hyperref}

\newcommand{\noopsort}[2]{#2}

\begin{document}
\citet{vannoort}
\Citet{vannoort}
\Citet{other}

\bibliographystyle{plainnat}
\bibliography{vannoort}
\end{document}

vannoort.bib:

@article{vannoort,
    author={\noopsort{Noort}{van Noort}, Thomas},
    title={An important paper},
    year=2010
}

@article{other,
    author={Other, Some},
    title={Not so important paper},
    year=2011
}

output:

enter image description here

3
  • +1 because this solution almost works for me, while I can't get the accepted answer to work at all. The only thing that goes wrong is that "Van Rossum" is sorted under R, but before "Recht" (!)
    – Fred Foo
    Commented Apr 27, 2013 at 12:13
  • @larsmans, I'm sorry but I have no better solution. Have you tried to use an custom style as explained in Mico's answer?
    – quinmars
    Commented Apr 27, 2013 at 17:03
  • I managed to fix egreg's solution in the meanwhile. Thanks anyway!
    – Fred Foo
    Commented Apr 27, 2013 at 19:05
3

Before you start hacking away or using LaTeX code to address this: perhaps bibtex can do this natively?

Bibtex can recognise 4 nameparts, but only if you feed it authornames in a format in which it can distinguish each part:

  • Firstname
  • Lastname
  • "jr" (designations like jr, sr and such)
  • "von" part (designations like von, van, van de, di, etc.)

See http://maverick.inria.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#names for a lot more info.

Short version: use author = {von Last, jr, First} with no capital letter for the "von" part, starting Last and First with capitals. jr can be either capitals or not.

I'm not sure if this addresses your problem, but if it doesn't, then you indeed might want to patch \citet to handle capitalisation correctly.

6
  • The setup author = {von Last, jr, First} will force BibTeX to interpret von Last as the surname component of the full name. (Aside: I have some doubts that the information given in the link you provided is entirely correct.) Hence, Thomas van Noort will get sorted under V instead of under N. Unfortunately, this outcome violates the first of the OP's four stated requirements.
    – Mico
    Commented Apr 24, 2018 at 8:20
  • 1
    @dremodaris This won't yield "Von Last” in the text as the OP wants. That's why I decided for a more complex solution.
    – egreg
    Commented Dec 16, 2019 at 12:21
  • @dremodaris - You are conflating and confusing two things: (a) how the citation call-out is formed (e.g., [Las08]) and (b) how the entries are sorted. Inferring from the form of the alpha-style citation call-out that the sorting is done according to the OP's object is simply not warranted. Moreover, the OP said nothing about how the citation call-outs should look like: numeric, authoryear-style, alpha-style, or whatever. Any answer is should be predicated on the form of the citation call-outs, which are not relevant for the question at hand.
    – Mico
    Commented Dec 16, 2019 at 16:35
  • @dremodaris - You should have mentioned the fact that you use biber -- and biblatex too, right? -- much sooner. The biblatex/biber way of implementing the alpha style is quite different from the bibtex way of doing things. Since the OP's question clearly indicated that he/she was using bibtex, any solution that deviates materially from that setup should be flagged prominently for taking a very different (and probably utterly non-comparable) approach.
    – Mico
    Commented Dec 17, 2019 at 3:24
  • This solution worked for me (but I'm using biber and alpha-style citations): I wrote author = {von Last, First}, and the paper got listed at the letter L and cited as [Las08]. (Note: I deleted my earlier comments, which were between confusing and incorrect. Some reactions may still be around.)
    – dremodaris
    Commented Dec 20, 2019 at 23:37

You must log in to answer this question.

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