Date ranges should support abbreviated/condensed year formatting (CMOS 18 §9.63, §9.66)

When a CSL date variable contains a date range spanning two years, both years are always rendered in full — e.g., 2021–2026. However, Chicago style (CMOS 18 §9.63, §9.66) requires condensed inclusive numbers for year ranges, e.g., 2021–26.

CSL already handles this well for page numbers via the page-range-format attribute on cs:style, which supports Chicago-style abbreviation rules. But there is no equivalent mechanism for date ranges.

Example (author-date bibliography entry):

• Input: issued: 2021/2026
• Expected: 2021–26
• Current output: 2021–2026

Relevant CMOS 18 rules:

§9.63: Abbreviating, or condensing, inclusive numbers
§9.66: Inclusive years

Possible approaches:

  1. A new date-range-format attribute (analogous to page-range-format) that could be set on cs:style or on individual cs:date-part elements for the year.
  2. Extending page-range-format to also apply to year ranges (though this might be too broad).

I tested this in Zotero’s style editor using the current chicago-author-date.csl and confirmed the full four-digit range is rendered.

Happy to discuss or help with a PR if there’s interest in a particular approach.

The first option makes most sense, I think.

Just implemented in Citum:

1 Like

citeproc-js already supports year-range-format="chicago" as a CSL-M extension, so this is already possible in Zotero.

Minimal example in Tools → Developer → Style Editor, after selecting an item with issued: 2021/2026 in Extra:

<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0"
       year-range-format="chicago" default-locale="en-US">
  <info>
    <title>Year Range Test</title>
    <id>year-range-test</id>
    <updated>2026-07-27T00:00:00+00:00</updated>
  </info>
  <citation>
    <layout prefix="(" suffix=")" delimiter="; ">
      <date variable="issued">
        <date-part name="year"/>
      </date>
    </layout>
  </citation>
  <bibliography>
    <layout>
      <group delimiter=", ">
        <text variable="title"/>
        <date variable="issued">
          <date-part name="year"/>
        </date>
      </group>
    </layout>
  </bibliography>
</style>

But styles that use year-range-format aren’t valid CSL 1.0.2 and therefore won’t validate.

I do think it’s worth thinking about how to get straightforward things like this into the CSL spec so that the official repo can accept styles that use them, but I’ll start a new thread for that.

1 Like

One suggestion on dates, and date formatting config, if there is an effort to evolve CSL going forward: adopt EDTF as the standard date format. It’s a very well-designed, and standardized, extension of ISO 8601, with features useful for bibliographic rendering: ranges, uncertain and approximate dates, seasons.

It also has solid library support (though it’s not hard to parse). Here’s a JS one, and is the standard format for biblatex.

On styling, in my EDTF-based implementation (linked above) I decided to cover a wider range of date ranges than just years; it handles also examples like “May-June, 2013” (localized; so Spanish gets “mayo a junio, 2013”), etc.