5

How can I both cite and sort an author with a prefix with a lowercase letter in the prefix? Everything in the MWE below is correct, except that I would like the initial Van Helten in the bibliography to appear as van Helten (note, I still want it to be sorted under Helten, as the MWE does).

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\AtBeginDocument{\toggletrue{blx@useprefix}}
\begin{filecontents}{\jobname.bib}
@ARTICLE{vanhelten1891,
    AUTHOR = "W. van Helten",
    TITLE = "Grammatisches",
    JOURNALTITLE = "Beiträge zur Geschichte der deutschen Sprache und Literatur",
    YEAR = "1891",
    PAGES = "455--488",
    VOLUME = "15"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{vanhelten1891}
\printbibliography
\end{document}

enter image description here

Sverre
  • 20,729

1 Answers1

5

You might like to add \renewbibmacro*{begentry}{\midsentence} to your preamble. This lets biblatex think it should not actually start a new sentence and therefore capitalise the name. You might notice an adverse effect with this method if the first field printed ought to be capitalised by biblatex automatically.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\renewbibmacro*{begentry}{\midsentence}
\AtBeginDocument{\toggletrue{blx@useprefix}}
\begin{filecontents}{\jobname.bib}
@ARTICLE{vanhelten1891,
    AUTHOR = "W. van Helten",
    TITLE = "Grammatisches",
    JOURNALTITLE = "Beiträge zur Geschichte der deutschen Sprache und Literatur",
    YEAR = "1891",
    PAGES = "455--488",
    VOLUME = "15"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{vanhelten1891}
\printbibliography
\end{document}

enter image description here


There is also a solution to redefine the name macros to not capitalise the name prefix. It might look more monstrous but is probably the better way to go for stability.

\renewbibmacro*{name:last-first}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifblank{#3}{}{%
       %\ifcapital% comment out
       %  {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% and get rid of this
         {\mkbibnameprefix{#3}\isdot}%
       \ifpunctmark{'}{}{\bibnamedelimc}}%
     \mkbibnamelast{#1}\isdot
     \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
     \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{#2}\isdot}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibnamelast{#1}\isdot
     \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
     \ifblank{#2#3}{}{\revsdnamepunct}%
     \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{#2}\isdot}%
     \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}

\renewbibmacro*{name:last}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifblank{#3}
       {}
       {%\ifcapital%<-- commented this out
        %  {\mkbibnameprefix{\MakeCapital{#3}}\isdot}% and this
          {\mkbibnameprefix{#3}\isdot}%
        \ifpunctmark{'}{}{\bibnamedelimc}}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}}%
  \mkbibnamelast{#1}\isdot}%
moewe
  • 175,683
  • This does indeed take care of it. I guess to avoid possible adverse effects, one could come up with something like "If the beginning of the entry is a prefix, use \midsentence (I can only state my suggestion in prose ... ). – Sverre Nov 14 '13 at 18:12
  • 1
    @Sverre I was thinking about trying to add the \midsentence to the name formatting directive instead of putting it in begentry. But I refrained from doing so because I thought this to be the cleaner solution, I will investigate though. – moewe Nov 14 '13 at 18:49
  • 1
    @Sverre You might like a more fundamental redefinition of the name macros as suggested in my macro to get rid of all adverse effects \midsentence might have in begentry. – moewe Nov 14 '13 at 18:57