如何在 biblatex 中按名称、年份、出现顺序排序

如何在 biblatex 中按名称、年份、出现顺序排序

我正在使用 biblatex,其设置如下:

  • backend=biber
  • style=authoryear
  • citestyle=authoryear-comp
  • sorting=nyt

这按预期工作,但我发现sorting=nyt不是最佳选择。我宁愿按名称、年份排序,然后按文本中的出现顺序排序。

为什么?论文标题与读者关系不大,但当一年中有多个引用时,它仍然决定了消歧义标记“a”、“b”等的顺序。例如,想象一下 John Doe 的以下两篇出版物,均发表于 2017 年,标题为

  • “x 的新证据”
  • “x 的另一个证据”

现在,即使我首先引用第一篇论文(新兴证据),最后引用第二篇论文(另一项证据),第一篇论文将被引用为 Doe (2017b),第二篇论文将被引用为 Doe (2017a)。在我看来,这很愚蠢。

让 biblatex 按照名称、年份、出现顺序对引用进行排序的最佳方法是什么?

答案1

在文件中biblatex.def查找不同排序的定义。基于排序sorting=none和的组合,sorting=nyt我得出了以下内容,我称之为sorting=nyccfor \citeorder)。

\DeclareSortingScheme{nyc}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{\citeorder}
}

只需将此代码片段放在\usepackage[sorting=nyc,...]{biblatex}命令后面即可。不要忘记sorting=nyc在 biblatex 选项中指定。

编辑: presortsortkey包含在开头,如@moewe 在下面两条评论中所建议和解释的那样。

编辑2:修正了代码中的错误,以便真正给出顺序nyc。感谢@moewe 提醒我这个错误。

相关内容