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.