More complex citation/bibliography formats

There are several more-complex-than-typical citation/bibliography formats that CSL doesn’t currently support. I am wondering what folks’ dispositions are toward expanding support for these, such as in CSL 1.2 or 2.0. If there is general interest in supporting these formats, I can draft some specification text for them.

  1. Compound numeric citations. (See
    In chemistry, it’s common to cite multiple related items within one citation number (e.g., 1a. XXX, 1b. YYY, 1c. ZZZ). Generally, subsequent citations would cite the set of these citations as a whole, but referring to a specific item in a subsequent citation by itself (e.g., citing just “1b”) is possible.

Support for this format would require a new option for enumerating citation-number.

  1. Nested/cross-referenced items. (e.g.,
    Some citation styles, such as Annual Reviews or the Unified Stylesheet for Linguistics, want a format where chapters and the book containing them are listed separately in the bibliography. For example:

Connors 2019: The ideal title. In: Abel & al. 2019, pp. 35-78.
Abel & al. 2019: The complete title of the book, Abel A., Connors C. & Zimmer Z. (eds.), London 2019.

Generally, such styles (all that I am aware), would require this formatting if there is more than one chapter from the same book, but would do a more typical chapter citation (all in one bibliography entry) if only one chapter from a book is cited.

Such formats could be supported by implementing a formal hierarchical item system, but a less invasive change to CSL would be a simpler matching system, such as matching items on container-title, issued, and editortranslator and merging items that match on these variables.

  1. Bibliographies with subsections. (e.g., and elsewhere)
    Many different fields require bibliographies with subsections, such as primary vs secondary sources; in-text citations vs data/artifact citations (e.g., references for the data, films, or artwork analyzed); general citations versus items considered in a systematic review; separate sections for items in different languages. The current recommended process for such styles is to use a macro to sort citations into the needed categories, then include this macro as the first sort key in the bibliography. The limitation of this approach is that subheadings describing the sections aren’t possible.

When using CSL with traditional clients integrating with word processors, this isn’t a huge limitation, as the subheadings can be added as a final step after writing, but CSL is increasingly being used to generate fully reproducible documents using pandoc-citeproc or other processors, which makes this approach much more limiting.

Supporting these forms would require adding to option to specify something like section or group_by within the bibliography, with the ability to specify heading text for each section. Jurism/CSLm has had a similar feature for some time supporting separating sections of a bibliography by language.

My views:

  1. we should definitely do 1. given its prevalence, even though the citation format is stupid. There are still parts of this I don’t fully understand (e.g. what happens when you have a group of references and one of them has been cited previously? 1b, 2?), but I hope we can figure those out. Thankfully I think since this is basically all chemistry, all such styles do follow the same logic so we don’t need to accommodate variation within this.

  2. This is a messy one. So the rule would be "if >1 item of type chapter or paper-conference from the same container-title is cited, use container-title-short and include the full book in the bibliography. Seems tricky in terms of both syntax and implementation in citeprocs, but if we find reasonable syntax and citeproc authors don’t balk, I’m OK with supporting it. I wouldn’t do it, though, if it turns out to be highly involved, since it’s fairly rare and a bad idea (bibliography entries should stand by themselves if you think e.g. of parsing them automatically)

  3. Imo this is actually the most legitimate of use cases in terms of the citation style logic, but I continue to think this is more appropriately handled by the reference managers, entirely outside CSL (though might be that citeprocs need a hook to help with it). The example of how BibTeX does this given in that thread is a good illustration why: often the headings follow custom keywords or collections/folders that will have a different logic for different tools. Users should specify the groupings and headings in their reference manager and then assign items to them using a suitable logic.

as the original poster of the request n.2 on Zotero forum I am eager to discuss any possible way of finding a solution.
In my experience as a scholar and as an editor in the humanities, when dealing with a particular topic if happens pretty often that you will be quoting book chapters, each by a different author, and this also happens with conference proceedings or exhibition catalogues. This means that I will need to repeat the full title of the “in:” book several time in the same bibliography, and it may not even be in the bibliograpy by itself.
If I go to a Union catalogue that does the “chapter extraction” they may reference to the containing book as an “ancestor” like this example:
list of chapters
example of chapter

When I do my work as an editor without any CSL or helper I create an entry for the book and replace all the references in the single chapters with the inline citation.

I cannot imagine having this in a macro unless I can find a way to “nest” all the chapters as a part of the book in my citation database, I guess, because I need to be able to give the book inline citation the proper style too.

I have started working with CSL only a few days ago, but I will be more than happy to help finding a solution.

I think all three should be done. Just a couple of additional remarks:

  1. Nothing to add here.

  2. This is indeed messy. To fully support this, I guess we’d need a hierarchical datamodel like Citavi or at least a way to specify relationships between items (something like biblatex’s crossref). I don’t particularly like these kind of rules, but given that suchs rules are really common in certain disciplines I’d really like to see this coming.

  3. Should really be implemented. The question is just how:
    Option 1 Add this via the client application. Pandoc already has rudimentary support for this via this lua filter. And Zotero might allow for multiple bibliographies where each bibliography might include only particular items.
    Advantages: CSL stays cleaner; client applications can adapt this to their particular environment.
    Disadvantages: There might be problems with disambiguation; not consistent across applications.
    Option 2 Add this in CSL style file
    Advantages: Everything in one place; possibly consistent across clients
    Disadvantages: How to avoid style proliferation? Subsections are usually not
    Option 3 Add this in dedicated CSL files, like grouping.csl or so.
    Advantages: Grouping rules may be used and reused with different styles and independently of a particular style; styles stay cleaner.
    Disadvantages: More moving parts; disambiguation problems (possible?)
    If we opt for a citeproc-based solution, citeproc must somehow be able to apply styles that client applications can use to produce correct results. But perhaps HTML heading styles should be a solution.
    @cormacrelf What do you think about this? Could citeproc-rs handle this?

Re 2. Your view of how common this is is shaped by where you work. This is mostly used in German-language humanities and pretty rare beyond that. (And again: it’s a bad idea; people shouldn’t be doing it, and while CSL doesn’t do prescription, the length to which we should go to accommodate rules should imo depend on their rationale).

Re 3. I think the fact that you’re now contemplating a completely separate set of CSL styles that interact with other CSL styles to implement a feature used by <5% of users shows why this needs to be in the client. I’m not sure disambiguation is much of an issue – if it is, clients can enable a toggle to disambiguate across all sections or only with sections and I see the “not consistent across implementation” as not much of a problem.

1 Like

No need to argue here. Again, I don’t like this rule as well. There may be some cases where this may make sense, but not as a general rule. Concerning German-language humanities: I was actually primarily thinking about (Swiss, Austrian and German) law scholarship where similar rules are used for commentaries. (By the way, the Chicago, 14.108 also kind of recommends to do this in the bibliography. Not as a strict rule, but anyway.)

Didn’t quite finish that thought but I think I know what you mean: bibliography grouping can be different for different documents, even by the same person following the same style guide.

One issue may be that the metadata you group by (e.g. review process) isn’t necessarily representable in CSL-JSON except via hackery. This could also be misaligned with the way grouping is hacked together now (via sorting), especially if those group titles are not meant to be in alphabetical order (e.g. books first because style guides like to elevate them above article-journals). So I don’t think it can be directly tied to sorting; it would need to additionally specify which should go first from a list of categories.

I can’t imagine any. But same-name collapsing (with ---) yes. That would be the single reason I can think of for putting this in the processor and not in a client which pulls apart the long list of references and separates them into groups so maintaining relative order but not necessarily keeping adjacent, collapsed entries together.

That’s some fairly significantly issues pulling in different directions. I’m not sure where I stand on this one. If you want to solve collapsing and make things consistent within the ecosystem (more valuable IMO), then the CSL additions could be quite hefty.

Re item 1 (Compound numeric citations), I took a stab at this a few years ago, but as Sebastian mentions there were unanswered questions about exactly how it is supposed to work on some edge cases, and I let it drop. Unfortunately, at this point I’d have to say that this isn’t going to be implemented in citeproc-js. Talk with chemistry students persuaded me that the style does communicate meaningful information, by clustering the elements of individual threads of research together; but I have too much on my plate as it is, and the incentives just aren’t there.

Re item 2 (Nested/cross-referenced items), citeproc-js addresses a similar (but distinct) problem of parallel case citation in CSL-M by passing a seeAlso array of item IDs in the JSON of each item object. That hint is used to check for runs of parallel references in citations, and to cluster them in the bibliography as a single entry. The approach adds complexity at the user end (b/c the relations need to be declared in the input data), but it avoids false positives by giving the user control over what is and is not to be treated as a parallel cite. The implementation is not super-simple, but much simpler than an ugly mass of heuristic-evaluation code that it replaced.

Re item 3 (Biblographies with subsections), citeproc-js recognizes a filter object on makeBibliography. It’s been in there for yonks and I’ve not heard of anyone using it, but an approach like that could be used to selectively print portions of the bibliography under particular document-side headings. That would place control in the reference manager or web framework, rather than hard-coding the layout in CSL.


What @Sebastian_Karcher said.

On 3, I agree it’s a valuable feature for users to have, but I see no reason it belongs in CSL.