[Tex/LaTex] Proper casing in citation/bibliography titles using biblatex/Biber

biblatexcapitalization

My understanding is that bibtex lets the citation style handle capitalization of titles, which is what I would expect from an automated citation tool. Do biblatex and Biber also do this? The document I am working on with these tools seems to be preserving the capitalization in the bib database, which is NOT what I want, and I haven't found any clear references that explain what the expected behavior is.

Best Answer

It might depend on the style and language(s) you are using, but generally titles are printed in the field format titlecase. By default, titlecase has no effect on casing; from biblatex.def:

\DeclareFieldFormat{titlecase}{#1}

If you want all titles in sentence case (i.e. first letter capitalized, the rest in lowercase) you can redefine this format:

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}

The \MakeSentenceCase* command converts its argument to sentence case, except for text enclosed in braces ({}). It also generally has no effect on control sequences. However Latin characters in math ($...$ or \(...\)) are affected and control sequences in $...$ generate parsing errors. To avoid these issues all math can be wrapped in braces. Wrapping a single character in braces affects its kerning, so the biblatex manual recommends wrapping braces around entire words. For example:

title = {An Introduction to {LaTeX}}

instead of:

title = {An Introduction to {L}a{T}e{X}}

You can make casing depend on the entry type(s) by adding an optional argument - for example:

\DeclareFieldFormat[article]{titlecase}{\MakeSentenceCase*{#1}}

One catch here is that the titlecase format is rolled out to all titles within an entry type. So in the above example both the title and journaltitle fields would be printed in sentence case. This question addresses how to make title case depend on both the entry and field types.

\DeclareCaseLangs specifies all the languages that the starred version \MakeSentenceCase* converts to sentence case. By default we have:

\DeclareCaseLangs{%     
  american,british,canadian,english,australian,newzealand,USenglish,UKenglish}

For further details, see biblatex documentation on the above commands and release notes under the heading "Sentence case vs. title case".

edit by @moewe: The biblatex documentation recommends the starred version \MakeSentenceCase* over the unstarred \MakeSentenceCase.

The starred version \MakeSentenceCase* only applies sentence casing of the language of the entry (as given in the langid field or if it is empty, the surrounding language) is in the list of languages where sentence casing makes sense (as defined by \DeclareCaseLangs).

\MakeSentenceCase applies sentence casing regardless of the language settings and may result in unwanted capitalisation changes in non-English contexts (German for example has no notion of Title Case vs sentence case and English sentence casing as implemented in \MakeSentenceCase would lead violate the rules of orthography).

Related Question