13

According to the 16th version of the Chicago Manual of Style, titles in the reference list are now supposed to be capitalized in title case style rather than sentence casing. Yet, as far as I understand, BibLaTeX-chicago (0.9.9b) does not seem to make any automatic changes to the capitalization of .bib-entries.

Is there any way (except for doing it manually for each entry, of course) to get BibLaTeX-chicago use title case capitalization for the entry field title in all entry-types (regardless of how the title is formatted in the .bib-field) ?

Here's a MEW:

\documentclass[12pt, a4paper]{article}
\usepackage[authordate,strict,backend=biber, cmsdate=old]{biblatex-chicago}
\begin{filecontents}{bibsample2.bib}
@BOOK{Smith2003,
 title = {This is the book title},
 publisher = {Penguin},
 year = {2003},
 author = {Smith, James},
 address = {London},
    }
@ARTICLE{Doe1970,
 author = {Doe, John J.},
 title = {this is the article title},
 journal = {Great Journal},
 year = {1970},
 volume = {40},
 pages = {207-234},
}
\end{filecontents}
\addbibresource{bibsample2.bib}
\begin{document}
\autocite{Smith2003}
\autocite{Doe1970}
\printbibliography
\end{document}

So, what I'm looking for is for these titles to be spelled as

This is the Book Title

This is the Article Title

in the output.

I'm using the latest version of BibLaTeX (2.5), Biber (1.5) and BibLaTeX-chicago (0.9.9b).

Any pointers are greatly appreciated..

7
  • 2
    I think David Fussner is referring to the fact the CMS no longer calls for sentence-style capitalization in their author-date system. This makes it consistent with their notes system. So biblatex-chicago users don't have to worry about protecting letters/words from automatic down-casing.
    – Audrey
    Commented Feb 11, 2013 at 14:47
  • So, you mean that biblatex-chicago is not automatically up-casing anything, but simply refraining from down-casing the titles?
    – Irene
    Commented Feb 11, 2013 at 15:04
  • I think so, yes. That is also the default behaviour in the standard biblatex styles.
    – Audrey
    Commented Feb 11, 2013 at 15:13
  • Thanks, that would explain things! Is there any way to add title case capitalization to the bibliography (except by changing each entry's casing by hand..)?
    – Irene
    Commented Feb 12, 2013 at 6:47
  • 1
    Although there is doubtlessly a way to force the formatting directives, long-term and for compatibility purposes across different styles and languages, it will be better to fix your .bib file: capitalization rules are different depending on the language (e.g., imagine a collection of essays written in different languages: essay titles in, say, English, French, and Italian, but the booktitle in German!). Now that there is no forced down-casing, title = {<Whatever>}, can be entered as it should without be according to that language's conventions.
    – jon
    Commented Feb 13, 2013 at 0:40

1 Answer 1

13

Any automatic solution will have a hard time beating a human well-versed in the Chicago Manual of Style's headline-style capitalization rules. So you're probably better off formatting titles in your source file manually. Whenever the document language or bibliography format calls for sentence-style capitalization, it is relatively easy to apply with biblatex's \MakeSentenceCase macro.

That said you could write a new macro, say \MakeHeadlineCase, and apply it in the title formatting directives. Another approach is to use biber's sourcemap option. It supports regular expressions and modifies fields before biblatex even sees them, which means the solution is entirely style-independent.

A rough approximation to headline-style capitalization is implemented in the following source mapping. It uses the XML syntax of the biber configuration file biber.conf. You can also specify source mappings in the document preamble with biblatex's \DeclareSourcemap command.

<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
  <maps datatype="bibtex" map_overwrite="1">
  <map>
    <map_step map_field_source="TITLE"
              map_match="(^|\s)(\w+\S*w*)" map_replace="$1\u\L$2"/>
    <map_step map_field_source="TITLE"
              map_match="\-(\w+)" map_replace="\-\u\L$1"/>
    <map_step map_field_source="TITLE"
              map_match="(\s+|\-)(A(|n|nd|s|t)|F(or|rom)|I(n|s)|O(f|n|r)|T(he|o)|With)\b"
              map_replace="$1\L$2"/>
    <map_step map_field_source="TITLE"
              map_match="([:;]\s+)([a-z])" map_replace="$1\u$2"/>
  </map>
  </maps>
</sourcemap>
</config>

The first two steps capitalize words at the beginning of the string (^), after whitespace (\s) or following a hyphen (\-). The third map down-cases selected words after whitespace or a hyphen. The last map capitalizes words following a colon or semi-colon ([:;]).

Here's a self-contained example.

\documentclass{article}
\usepackage[backend=biber]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{biber.conf}
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
  <maps datatype="bibtex" map_overwrite="1">
  <map>
    <map_step map_field_source="TITLE"
              map_match="(^|\s)(\w+\S*w*)" map_replace="$1\u\L$2"/>
    <map_step map_field_source="TITLE"
              map_match="\-(\w+)" map_replace="\-\u\L$1"/>
    <map_step map_field_source="TITLE"
              map_match="(\s+|\-)(A(|n|nd|s|t)|B(ut|y)|F(or|rom)|I(n|s)|O(f|n|r)|T(he|o)|With)\b"
              map_replace="$1\L$2"/>
    <map_step map_field_source="TITLE"
              map_match="([:;]\s+)([a-z])" map_replace="$1\u$2"/>
  </map>
  </maps>
</sourcemap>
</config>
\end{filecontents*}

\begin{filecontents*}{\jobname.bib}
@BOOK{Smith2003,
  title = {This is an off-the-hook book title, but it doesn't have a subtitle},
  publisher = {Penguin},
  year = {2003},
  author = {Smith, James},
  address = {London}}
@ARTICLE{Doe1970,
  author = {H{\"a}user, {\O}rnulf},
  title = {{\O}rnulf H{\"a}user's letter to the editor: an $\alpha$-to-$\omega$
           summary of $\epsilon$--improvement},
  journal = {Great Journal},
  year = {1970},
  volume = {40},
  pages = {207-234}}
\end{filecontents*}
\addbibresource{\jobname.bib}

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

enter image description here

1
  • 2
    @Audrey This is very useful. I have a lot of Arabic references that follow different rules of capitalization. Is it possible to excempt from your script bib entries that have langid = {arabic}?
    – Andreas
    Commented Sep 11, 2015 at 16:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .