2

When formatting a citation that has a series and number (i.e., a book that is part of a numbered book series) using biblatex-chicago, I find that an extra comma is added right after the series title and before the contents of number whenever the latter is a list or a range.

There is no such problem when the number field contains a simple integer.

MWE:

\documentclass{article}

\usepackage[notes]{biblatex-chicago}
\usepackage{biblatex-source-division}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Graf:GCAL,
    Address = {Vatican City},
    Author = {Graf, Georg},
    Number = {118, 133, 146, 147, 172},
    Publisher = {Biblioteca Apostolica Vaticana},
    Series = {Studi e Testi},
    Shorttitle = {GCAL},
    Title = {Geschichte der christlichen arabischen Literatur},
    Volumes = {5},
    Year = {1944--1953}
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\cite{Graf:GCAL}
\printbibliography
\end{document}

The \cite command produces

Georg Graf, Geschichte der christlichen arabischen Literatur, 5 vols., Studi e Testi, 118, 133, 146, 147, 172 (Vatican City: Biblioteca Apostolica Vaticana, 1944–1953)

Correct output would be:

Georg Graf, Geschichte der christlichen arabischen Literatur, 5 vols., Studi e Testi 118, 133, 146, 147, 172 (Vatican City: Biblioteca Apostolica Vaticana, 1944–1953)

The only difference is the comma after "Studi e Testi."

The same happens when the number field contains a range (e.g., 3--5) but not for entries with dots (e.g., 20.1) or Roman numerals (e.g., II.1).

Is there a simple way to fix this?

1 Answer 1

3

This is because of an \ifnumeral test in the sernum field format. It's false when there are commas in the number field.

We can change the test to \ifnumerals which will be true in your case.

Also instead of year={1944--1953} you should use date={1944/1953}.

Here's a MWE:

\documentclass{article}

\usepackage[notes]{biblatex-chicago}
\usepackage{biblatex-source-division}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Graf:GCAL,
    Address = {Vatican City},
    Author = {Graf, Georg},
    Number = {118, 133, 146, 147, 172},
    Publisher = {Biblioteca Apostolica Vaticana},
    Series = {Studi e Testi},
    Shorttitle = {GCAL},
    Title = {Geschichte der christlichen arabischen Literatur},
    Volumes = {5},
    date = {1944/1953}
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\DeclareFieldFormat{sernum}{%
  \ifnumerals{#1}% change from \ifnumeral to \ifnumerals
  {\addnbspace #1}%
  {\addcomma\addspace #1}}

\begin{document}
\cite{Graf:GCAL}
\printbibliography
\end{document}

enter image description here

2
  • By the way, why is it better to use the date field than year? I have a lot of entries that use date ranges, so I thought I should ask before converting them all! Oct 11, 2017 at 9:16
  • 2
    You will see a warning from biber when you run it on your original example. year is meant to be an integer. It is not meant to take a year range. date takes a flexible format including ranges and even times that is then split by biber into its component parts. So date={1944/1953} ends up as year={1944} and endyear={1953} in the bbl file. See section 2.3.8 in the biblatex manual for details on specifying dates. Oct 11, 2017 at 10:54

You must log in to answer this question.

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