[Tex/LaTex] Problem with biblatex apa style and uppercase umlauts

apa-stylebiblatexbibtex

When using the apa style together with biblatex uppercase umlauts (like Ö) are always printed lowercase except at the beginning. With the default biblatex style it works fine. How can I fix this?

Example

\documentclass{scrbook}

\usepackage[utf8]{inputenc}

\usepackage{filecontents}

\begin{filecontents}{test.bib}
@incollection{Brosse.1995,
 author = {Br{\"o}sse, Ulrich},
 title = {{\"{O}}konomisches {V}erhalten als bester {W}eg zu einer nachhaltigen {U}mweltverbesserung},
 booktitle = {{\"{O}}konomie contra {\"{O}}kologie?},
 year = {1995}
}
\end{filecontents}

\usepackage[ngerman]{babel}

\usepackage[backend=biber,sorting=nyt,style=apa]{biblatex} % this does not work
\DeclareLanguageMapping{ngerman}{ngerman-apa}

%\usepackage[backend=biber,sorting=nyt]{biblatex} % this works

\bibliography{test}

\begin{document}
\cite{Brosse.1995}
\printbibliography
\end{document}

result

Best Answer

Update

A few things have changed since this answer was written.

tl;dr

With a current TeX system you only need one pair of curly braces to protect words starting with Ö from case changing. (Just like words with US-ASCII chars.)

Full answer

New versions of biblatex-apa use the language-sensitive \MakeSentenceCase* macro that tries to apply sentence casing only when it makes sense. \MakeSentenceCase* will only apply sentence casing if it detects that the current language is English (or another language declared with \DeclareCaseLangs). To detect the language, the macro takes into account the langid field of the .bib entry as well as the currently active language.

That means that in the example, where the main language is German, sentence casing is not applied.

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=apa]{biblatex}

\begin{filecontents}{\jobname.bib}
@book{elch,
  author    = {Anne Elch},
  title     = {Eine Theorie über Brontosaurusse},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem \autocite{elch}

\printbibliography
\end{document}

Elch, A. (1972). Eine Theorie über Brontosaurusse. Monthy & Co.

But even in English documents sentence casing can be 'turned off' for foreign-language sources for which it does not make sense if you specify the language in the langid field.

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

\usepackage[backend=biber, style=apa]{biblatex}

\begin{filecontents}{\jobname.bib}
@book{elch,
  author    = {Anne Elch},
  title     = {Eine Theorie über Brontosaurusse},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
  langid    = {ngerman},
}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on {Brontosauruses}},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
  langid    = {british},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem \autocite{elch,elk}

\printbibliography
\end{document}

Elch, A. (1972). Eine Theorie über Brontosaurusse. Monthy & Co.
Elk, A. (1972). A theory on Brontosauruses. Monthy & Co.

If you absolutely don't want sentence casing for English titles, then you can disable it completely with \DeclareFieldFormat{apacase}{#1}.

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

\usepackage[backend=biber, style=apa]{biblatex}
\DeclareFieldFormat{apacase}{#1}

\begin{filecontents}{\jobname.bib}
@book{elch,
  author    = {Anne Elch},
  title     = {Eine Theorie über Brontosaurusse},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
  langid    = {ngerman},
}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on {Brontosauruses}},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
  langid    = {british},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem \autocite{elch,elk}

\printbibliography
\end{document}

Elch, A. (1972). Eine Theorie über Brontosaurusse. Monthy & Co.
Elk, A. (1972). A Theory on Brontosauruses. Monthy & Co.

All of this means that the entry from the question should be input as

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=apa]{biblatex}

\begin{filecontents}{\jobname.bib}
@incollection{Brosse.1995,
  author    = {Brösse, Ulrich},
  title     = {Ökonomisches Verhalten als bester Weg zu einer nachhaltigen Umweltverbesserung},
  booktitle = {Ökonomie contra Ökologie?},
  year      = {1995},
  langid    = {german},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,Brosse.1995}

\printbibliography
\end{document}

Brösse, U. (1995). Ökonomisches Verhalten als bester Weg zu einer nachhaltigen Umweltverbesserung. Ökonomie contra Ökologie?

(though in this instance the langid = {german}, could be dropped because the main document language is already ngerman).

If you do find yourself in a situation to have to protect a word starting with Ö in an English language title, for example

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=apa]{biblatex}

\begin{filecontents}{\jobname.bib}
@book{elk,
  author    = {Änne Elk},
  title     = {The {Öresund}},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,elk}

\printbibliography
\end{document}

Elk, Ä. (1972). The Öresund. Monthy & Co.

then a single pair of braces is enough if you are using an up-to-date TeX installation and your document is encoded in UTF-8 (the LaTeX standard encoding since April 2018) so that you use the new expl3 case changing code.

The old biblatex case changing code had some peculiarities with respect to non-ASCII characters and their protection. The new expl3 code is much more predictable.


Outdated answer

Some code shown below is obsolete. The hints given here are no longer useful for a current version of biblatex. This part of the answer is kept for historic interest, but should not be relevant for new documents.

If you are writing in German - or are not too fond of sentence case (in its English meaning, that is capitalisation of the first letter of the sentence, and only that) anyway - you might want to "turn off" the conversion by \DeclareFieldFormat{apacase}{#1} in the preamble.

If you just have the occasional German entry, or prefer English sentence case, save for very few exceptions, you can go down the road of protecting certain portions of the title from being converted.

For umlauts and curly braces "the more the merrier" seems to be the name of the game. You will need a total of three pairs of curly braces to protect a single \"O or Ö. It is, however, better to enclose the whole word (not just the first letter) in curly braces to allow LaTeX to achieve proper kerning (see pp. 181 sq. of the biblatex documentation), in that case two pairs will suffice.

In the following entry, the first two "Ökologie"s in the title will render as expected whereas the latter two will not; the subtitle field will be rendered correctly.

@book{umlaut,
  author = {Ulf Martin Laut},
  title = {Alle {{Ökologie}} ist {{\"Okologie}}, aber {Ökologie} ist {\"Okologie} wird nichts},
  subtitle = {Einzelne {Buchstaben} sind noch grässlicher: {{{\"O}}}kologie {{{Ö}}}kologie!},
  year = {1995}
}

The MWE

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,sorting=nyt,style=apa]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa}

\begin{filecontents}{\jobname.bib}
@book{umlaut,
  author = {Ulf Martin Laut},
  title = {Alle {{Ökologie}} ist {{\"Okologie}}, aber {Ökologie} ist {\"Okologie} wird nichts},
  subtitle = {Einzelne {Buchstaben} sind noch grässlicher: {{{\"O}}}kologie {{{Ö}}}kologie!},
  year = {1995}
}
\end{filecontents}
\addbibresource{\jobname.bib}

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

gives enter image description here