Sorting characters with umlaut

You can specify this style of sorting by loading biblatex with the sortlocale=de_DE_phonebook option:

\usepackage[sortlocale=de_DE_phonebook]{biblatex}

I'm not sure about doing it on a per-entry basis using locales though. You could do it using a source map, but that seems like a bad idea.


It is probably better to sort all entries with the same global scheme as in David's answer. Using different sorting rules can massively confuse a reader (whom you should not expect to know the sorting quirks of all cited authors' native languages), this might not become apparent in short list where the different sorting rules only impact letters that are not word initial, but it can be quite confusing if two "Ü"s get sorted at different ends of the bibliography because one is German and one is Estonian.

But theoretically you can restrict the conversion of umlauts to German entries (as marked in the langid field). For these entries we do the 'ä'->'ae' etc. conversions ourselves and store the result in the sortname field.

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{sturm, author = {Sturm}}
@book{stutzel, author = {Stützel}, langid={ngerman}}
@book{basel, author = {Basel}}
@book{bassel, author = {Baßer}, langid={ngerman}}
@book{basta, author = {Basta}}
@book{oesel, author = {Ösel}, langid={ngerman}}
@book{pinguino, author = {Pingüino}}
@book{pingufin, author = {Pingufin}}
@book{pinguzzo, author = {Pinguzzo}}
\end{filecontents}

\usepackage{biblatex}
\addbibresource{\jobname.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[foreach={author,editor,translator}]{
      \step[fieldsource=langid, match=\regexp{\A(n)?((swiss)?german|austrian)\Z}, final]
      \step[fieldsource=\regexp{$MAPLOOP}, 
            match=\regexp{(([aouAOU]\x{0308})|\x{00df})},
            final]
      \step[fieldset=sortname, origfieldval, final]
      \step[fieldsource=sortname, match=\regexp{(a|o|u|A|O|U)\x{0308}}, replace={$1e}]
      \step[fieldsource=sortname, match=\regexp{\x{00df}}, replace={ss}]
    }
  }
}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

enter image description here

Note how Baßer's "ß" is sorted as "ss" so it ends up before Basta. Stützel's "ü" is sorted as "ue" and thus it goes before Sturm. Pingüino is Spanish and not touched, so it sorts after Pingufino (and not before as if it were converted to Pingueino).

Tags:

Biblatex