如果我想手动将参考书目中的条目放在另一个位置,我可以使用sortkey
。但是,为了能够做到这一点,我需要知道它的邻居或/sortkey
内部使用的等效名称。特别是如果一个作者与不同的合著者一起写作,这似乎是一个相当复杂的排序算法,我还不明白。我需要了解排序算法,或者知道我可以通过某些调试开关或可能在 -file 中查看自动生成的键,这可能吗?我正在使用with style。biblatex
biber
bbl
biblatex-chicago
authordate
答案1
biber
排序相当复杂。它不是仅使用一个键进行排序,而是使用排序规范定义的键数组。仅使用一个字符串进行比较无法可靠地进行真正的多字段排序。如果您运行并检查文件中的字符串,则可以看到每个条目使用的biber
排序--debug
对象.blg
:
DEBUG - Sorting object for key
您将在此处看到排序数组的转储。基本上,biber
比较每个键的数组的第一个元素,然后比较第二个元素,依此类推,使用排序规范中有关顺序、何时停止等的额外信息。
答案2
这实际上不是一个完整的答案,只是我处理该问题时的一些观察。我还没有找到显示这些键的地方。biblatex
有一个style=debug
包选项,但它没有显示我正在寻找的内容。对于biblatex-chicago
包,我还没有找到显示此调试信息的方法,我猜它没有在那里实现。无论如何,最大的问题在于名称,author
或editor
字段,在大多数排序方案中,它是第一个考虑的字段。如果有多个作者,它们之间用 分隔and
。现在,虽然我们得到像“Alastname、Afirstname 和 Bfirstname Blastname。”这样的输出,但我们必须假设内部用于排序的字符串是“AlastnameAfirstnameBlastnameBfirstname”。在nyt
排序方案中,接下来是年份,然后是标题。
编辑:在这个答案的早期版本中,我猜测以下内容:
关键的一点是要理解这
author = {lastname, firstname},
是错误的,尽管乍一看它似乎有效。如果希望自动排序通过biber
正常运行,则需要编写{firstname lastname}
。
但事实并非如此。/biber
显然biblatex
可以处理相反顺序的名称,如下例所示,特别是第二个条目,它重新建立了恢复名称的自然顺序:
\documentclass{memoir}
\usepackage{fontspec}
\usepackage[authordate,backend=biber]{biblatex-chicago}
\addbibresource{\jobname.bib}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book { reverseorder1,
author = {Alast, Afirst},
%author = {Afirst Alast},
title = {one author in reverse order},
year = {2015},
}
@book { reverseorder2,
author = {Xlast, Xfirst and Ylast, Yfirst and Zlast, Zfirst},
title = {three authors in reverse order},
year = {2015},
}
\end{filecontents*}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
然而值得注意的是,如果不将名字大写,biber 将不知道如何处理它们并输出警告。