[Tex/LaTex] Biblatex handling of Dutch “van” prefix

biblatexcapitalizationsorting

This question has been posed in many different variants, but not exactly as I ask here, so please do not consider this as a duplicate.

I use biblatex with the option useprefix. I would like to have the following automatic behavior:

  1. Name prefixes are rendered before the last name in the bibliography, but always in lower case.

  2. The name prefixes are ignored for the sake of sorting of the bibliography.

  3. In running text, the name prefix is rendered with a capital letter at the beginning of a sentence, and lower case elsewhere (possible using \Textcite vs. \textcite).

To achieve this, I can have three author fields for each concerned entry, with the following scheme:

author = { {v}an Dijk, A.}
shortauthor = { van Dijk, A.}
sortname = {Dijk, A. van}

Is there a simple way to automate this? Ideally, such a way could also allow for easy changing of the system.

Best Answer

With a current biblatex version I recommend the slightly longer, but conceptually cleaner solution presented in Prefixes in author names in references and bibliography. The answer here still remains functional (if a bit hacky).

In order to get the sorting in the bibliography right, we have to set useprefix=false at loading-time. E.g.

\usepackage[style=authoryear,sorting=nyt,backend=biber,useprefix=false]{biblatex}  

Then we turn on \useprefix in the actual document - i.e. in the citations and bibliography.

\makeatletter
\AtBeginDocument{\toggletrue{blx@useprefix}}
\makeatother

With \AtBeginBibliography{\toggletrue{blx@useprefix}} you can control the bibliography separately.

Since we want the prefix to be in lower-case in the bibliography, we issue

\renewbibmacro*{begentry}{\midsentence}

MWE

\documentclass{scrartcl}            
\usepackage[style=authoryear,sorting=nyt,backend=biber,useprefix=false]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{dijk,
  author       = {van Dijk, A.},
  title        = {Some Nice Title},
  date         = 2015,
  publisher    = {P. Ublisher},
  location     = {Place},
}
\end{filecontents*}   
\bibliography{biblatex-examples.bib}  
\bibliography{\jobname.bib}  

\renewbibmacro*{begentry}{\midsentence}

\makeatletter
\AtBeginDocument{\toggletrue{blx@useprefix}}
\makeatother

\begin{document}  
\cite{cicero,wassenberg,dijk,gillies}  
\printbibliography  
\end{document}  
Related Question