找出自动生成的排序键

找出自动生成的排序键

如果我想手动将参考书目中的条目放在另一个位置,我可以使用sortkey。但是,为了能够做到这一点,我需要知道它的邻居或/sortkey内部使用的等效名称。特别是如果一个作者与不同的合著者一起写作,这似乎是一个相当复杂的排序算法,我还不明白。我需要了解排序算法,或者知道我可以通过某些调试开关或可能在 -file 中查看自动生成的键,这可能吗?我正在使用with style。biblatexbiberbblbiblatex-chicagoauthordate

答案1

biber排序相当复杂。它不是仅使用一个键进行排序,而是使用排序规范定义的键数组。仅使用一个字符串进行比较无法可靠地进行真正的多字段排序。如果您运行并检查文件中的字符串,则可以看到每个条目使用的biber排序--debug对象.blg

DEBUG - Sorting object for key

您将在此处看到排序数组的转储。基本上,biber比较每个键的数组的第一个元素,然后比较第二个元素,依此类推,使用排序规范中有关顺序、何时停止等的额外信息。

答案2

这实际上不是一个完整的答案,只是我处理该问题时的一些观察。我还没有找到显示这些键的地方。biblatex有一个style=debug包选项,但它没有显示我正在寻找的内容。对于biblatex-chicago包,我还没有找到显示此调试信息的方法,我猜它没有在那里实现。无论如何,最大的问题在于名称,authoreditor字段,在大多数排序方案中,它是第一个考虑的字段。如果有多个作者,它们之间用 分隔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 将不知道如何处理它们并输出警告。

相关内容