按时间顺序排列的内联引用 - CSL 文件修改

Chronological inline citations - CSL file modification

我知道内联引用组中的引用顺序是由 .csl 引用样式决定的。我想知道是否有人能够提供有关如何编辑不按时间顺序排列内联引用的现有样式的指导,以便它这样做。具体来说,我对修改 Nature style (guidelines) 很感兴趣,因此引用的组中的项目,例如文本中的“1-5”,在参考书目中按时间顺序排序。

编辑:我需要这样做才能违反出版商的引文格式指南。

我是 CSL 的开发人员之一,您不能在 CSL 的当前版本 1.0.1 中指定此行为。我认为您可以选择三个选项:

  1. 您可以自动按时间顺序对引文组中的文内引用进行排序,并按引用顺序保留参考书目。然而,因为项目编号总是基于参考书目顺序,这会导致看起来很奇怪的引用,例如“4,3,5”(例如,如果您先引用项目 3,然后再引用项目 3、4 和 5,第 3 项的签发日期介于第 4 项和第 5 项之间)。
  2. 如果您可以接受,按时间顺序对整个参考书目进行排序可能会获得更好的结果。 https://gist.github.com/rmzelle/bc869c900549226483123c11b0a90cb9/revisions#diff-505d66a4e3748adc6417742a07ce4f51 显示了实现此目的所需的自然风格修改(按年份排序)。
  3. 您也可以使用当前的样式实现此目的,只要您确保每次在一次引用中引用多个新项目时都按时间顺序引用它们。

我维护citeproc-js,这可能是使用最广泛的CSL处理器。虽然当前 CSL 规范或 citeproc-js 中均未涵盖该案例,但触发该行为的用例和条件是明确的。考虑如何处理它,我认为有两个层面需要考虑:在 CSL 样式表中表达它的方式;以及在处理器内部实现的方法。

首先考虑样式表,隐含地反映未排序(或 citation-number 排序)参考书目中引用的排序顺序似乎很简单。这可以在不对 CSL 语言进行任何更改的情况下完成(除了可能指定行为)。这很诱人,但 CSL 参考书目中的排序顺序 可以 是明确的,因此会有边缘情况,并且可能会让所有相关人员感到困惑。

在引擎盖下,在处理器内部,您将为此使用的是 first-reference-citation-number 之类的排序键。 [1] 您可以将其用作对参考书目中的参考文献进行排序的主键,将 issued(或其他)作为辅助键。项目按该顺序排列后,一切就都到位了:citation-number 将以通常的方式按升序分配给项目,分配的数字将映射到文本引用项目中,如果引用对 issued(或其他)进行排序,数字折叠将按预期工作。

为清楚起见,您可能希望对(仍然假设的)first-reference-citation-number 进行 显式 排序;这将需要对 CSL 规范进行(适度的)更改。

这就是我对这个主题的两点看法。 @RinzeZelle 和@adam.smith 可能对此有进一步的想法。

[1] 我们不能为此使用现有的 first-reference-note-number,因为文内引用的注释编号都是 0.