![a,b 指定为同一年内有多名合著者的第一作者](https://linux22.com/image/264853/a%2Cb%20%E6%8C%87%E5%AE%9A%E4%B8%BA%E5%90%8C%E4%B8%80%E5%B9%B4%E5%86%85%E6%9C%89%E5%A4%9A%E5%90%8D%E5%90%88%E8%91%97%E8%80%85%E7%9A%84%E7%AC%AC%E4%B8%80%E4%BD%9C%E8%80%85.png)
Biblatex/biber 引文排序:ynt
参考书目排序:nyt
引用1 - 首次出现在 2010 年 Darwin et al (2010):
引用2 - 2010 年第二次出现 Darwin et al (2010)
引用时,第一个显示为:Darwin et al (2010b)
第二个显示为Darwin et al (2010a)
。这是因为排序也针对第二和第三作者进行吗?有没有办法交换 a、b 的指定?
答案1
这几乎肯定与标题排序有关(排序名称中的“t”)。我假设两个引文的名称列表相同,因此在名字后面会自动截断“et al”。如果您愿意,您可以随时制定自定义排序规范,例如:
\DeclareSortingScheme{ynct}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortyear}
\field{year}
\literal{9999}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort{\citeorder}
\sort{
\field{sorttitle}
\field{title}
}
}
这里我刚刚修改了默认的 ynt 方案,在标题之前添加了按引用顺序排序的功能 - 也许这就是你想要的?你可以在biblatex.def
biblatex 附带的文件中找到所有可剪切并粘贴到文档中的默认排序方案。
答案2
我通过自动填充“sortname”字段(最初来自 biblatex 文档)解决了同样的问题:
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=false]{
\step[fieldsource=author]
\step[fieldset=sortname, origfieldval, final]
\step[fieldsource=sortname, match=\regexp{\A(.+?)\s+and.*}, replace={$1}]
}
}
}
引用应首先按年份和月份排序,然后按作者排序,以便extrayear
以正确的方式分配指标(a、b、...)。可以使用包选项全局设置此排序方案sorting=ymnt
\DeclareSortingScheme{ymnt}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortyear}
\field{year}
\literal{9999}
}
\sort{
\field{month}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
}
在参考书目中,我希望按第一作者、年份和月份、最后按所有作者和标题对条目进行排序,而不是采用“正常”的nyt
作者排序方式,因为那样会导致指标混乱extrayear
。因此,我使用以下排序方案覆盖全局排序设置,sorting=symnt
该方案将 sortname 与其余作者块分开:
\DeclareSortingScheme{symnt}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
}
\sort{
\field{sortyear}
\field{year}
\literal{9999}
}
\sort{
\field{month}
}
\sort{
\field{author}
\field{extrayear}
\field{editor}
\field{translator}
}
\sort{
\field{sorttitle}
\field{title}
}
}