更新
为了更好地说明我的问题,我将 MWE 改为更完整的 MWE,并进一步解释我的意思。
语境
考虑以下 MWE:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[%
backend=biber,refsegment=section,
% defernumbers=true,
]{biblatex}
%
\addbibresource{biblatex-examples.bib}
%
\pagestyle{empty}
\AtBeginDocument{\footnotesize}
\AtBeginBibliography{\footnotesize}
\begin{document}
\section{First section}
\autocite{westfahl:space,herrmann,gillies}.
\printbibliography[heading=subbibliography,segment=\therefsegment]
%
\section{Second section}
\autocite{glashow,aksin,gillies,matuz:doody}.
\printbibliography[heading=subbibliography,segment=\therefsegment]
%
\printbibliography
\end{document}
它的编译导致了这个重复的警告:
包 biblatex 警告:建议设置“defernumbers=true”。
未遵循建议(defernumbers=false
)
在我看来结果还不错(排序符合预期):
采纳的建议 ( defernumbers=true
)
按照建议进行设置defernumbers=true
,没有警告,但标签的顺序很深奥:按名称排序,但标签不按升序排序(参见下图,一个更完整的例子)。
更完整的例子
下面是一个更完整的例子,更好地说明了标签非升序带来的麻烦。
儿童玩耍:只需阅读生成的文档,就像它被打印出来一样,尝试找到参考的详细信息,例如第二节[84]
中引用的内容:)
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[cm]{fullpage}
\usepackage{multicol}
\usepackage[%
backend=biber,refsegment=section,
defernumbers=true,
]{biblatex}
%
\addbibresource{biblatex-examples.bib}
%
\pagestyle{empty}
\AtBeginDocument{\tiny}
\AtBeginBibliography{\tiny}
\begin{document}
\begin{multicols}{3}%
\section{First section}
\autocite{%
gaonkar,%
companion,%
nietzsche:ksa1,%
moore,%
cicero,%
augustine,%
britannica,%
maron,%
kullback:reprint,%
vizedom:related,%
markey,%
weinberg,%
wassenberg,%
augustine,%
almendro,%
knuth:ct:related,%
murray,%
sigfridsson,%
geer,%
westfahl:space,%
bertram,%
baez/article,%
kastenholz,%
shore,%
kullback:related,%
hammond,%
worman,%
knuth:ct:a,%
spiegelberg,%
knuth:ct:b,%
aksin,%
wilde,%
sorace,%
matuz:doody,%
vangennep:related,%
padhye,%
cicero,%
malinowski,%
baez/online,%
aristotle:anima,%
kullback:reprint,%
vangennep,%
nietzsche:historie,%
knuth:ct,%
kant:ku,%
piccato,%
gaonkar:in,%
piccato,%
sarfraz,%
glashow,%
massa,%
knuth:ct:e,%
itzhaki,%
jcg,%
angenendt,%
cms,%
gaonkar,%
knuth:ct:d,%
padhye,%
averroes/hercz,%
kant:kpv,%
moore,%
vazques-de-parga,%
nietzsche:ksa,%
chiu,%
geer,%
knuth:ct,%
reese,%
maron,%
knuth:ct:a,%
sigfridsson,%
knuth:ct:c,%
hyman,%
gonzalez,%
kant:kpv,%
gillies,%
aristotle:rhetoric,%
nussbaum,%
britannica,%
iliad,%
brandt,%
springer,%
knuth:ct:e,%
knuth:ct:related,%
westfahl:frontier,%
massa,%
baez/online,%
vangennep:trans,%
moore:related,%
jcg,%
nussbaum,%
}
\printbibliography[heading=subbibliography,segment=\therefsegment,title=References
of section 1]
%
\section{Second section}
\autocite{%
averroes/bland,%
almendro,%
vangennep:related,%
murray,%
averroes/hercz,%
sarfraz,%
bertram,%
angenendt,%
knuth:ct:c,%
herrmann,%
gerhardt,%
companion,%
aristotle:anima,%
aristotle:rhetoric,%
baez/article,%
ctan,%
moraux,%
cms,%
spiegelberg,%
moore:related,%
doody,%
wassenberg,%
reese,%
matuz:doody,%
coleridge,%
ctan,%
salam,%
moraux,%
loh,%
vizedom:related,%
aristotle:poetics,%
malinowski,%
laufenberg,%
cotton,%
salam,%
aristotle:poetics,%
gaonkar:in,%
gonzalez,%
knuth:ct:b,%
glashow,%
aristotle:physics,%
nietzsche:ksa,%
nietzsche:historie,%
hammond,%
vangennep:trans,%
worman,%
westfahl:space,%
pines,%
weinberg,%
knuth:ct:d,%
westfahl:frontier,%
laufenberg,%
nietzsche:ksa1,%
kullback,%
yoon,%
chiu,%
kant:ku,%
vangennep,%
aristotle:physics,%
vazques-de-parga,%
sorace,%
yoon,%
kowalik,%
brandt,%
aksin,%
loh,%
doody,%
averroes/bland,%
itzhaki,%
kastenholz,%
hyman,%
shore,%
kullback:related,%
kowalik,%
kullback,%
jaffe,%
gerhardt,%
coleridge,%
herrmann,%
iliad,%
springer,%
cotton,%
markey,%
gillies,%
pines,%
wilde,%
averroes/hannes,%
averroes/hannes,%
jaffe,%
}
\printbibliography[heading=subbibliography,segment=\therefsegment,title=References
of section 2]
%
\printbibliography
\end{multicols}
\end{document}
问题
因此,我们看到defernumbers=true
可能很难找到参考资料的详细信息。那么, 的优点是什么defernumbers=true
?
答案1
这biblatex
文档解释该defernumbers
选项如下(第 55 页)
与标准 LaTeX 不同,此包生成的数字标签通常分配给文档正文开头的完整参考文献列表。如果启用此选项,则数字标签 [...] 在任何参考书目中第一次打印条目时分配。
然后进一步(§3.13.5书目过滤器和引文标签,第 132 页)
此包生成的引文标签在被任何书目过滤器拆分之前会分配给完整的参考文献列表。
refsection
无论您使用多少个书目过滤器,它们都保证在整个文档(或环境中)中是唯一的。但是,当使用数字引文方案时,这很可能会导致拆分的书目中的编号不连续。使用defernumbers
包选项可以避免此问题。如果启用此选项,则在任何书目中第一次打印条目时都会分配数字标签。
这解释了您在示例中看到的内容。defernumbers=false
标签在文档开头分配给完整的参考集(根据全局排序方案)。由于\printbibliography
末尾的全局使用全局排序方案打印所有参考,因此那里的编号是“正确的”。然而,在本地书目中,条目现在被“跳过”,因此它们不是按时间顺序阅读的。
如果您有defernumbers=true
参考文献,则在第一次打印到任何书目中时,它将获得其(唯一)标签。因此,本地书目中的编号是按时间顺序排列的。除了[1]
出现在两个本地列表中的那个之外,还有一个值得注意的例外。它不能在第二个列表中分配[7]
,因为它已经是了[1]
。并且它不能放在第二个列表中所有其他参考文献之前,因为这样排序将不符合排序方案。全球书目当然会遭遇同样的命运:如果条目按照排序方案排序,则编号将不是连续的。
你会发现,在你遇到的情况中
- 有重叠条目的本地书目
- 以及全球书目
两种设置都给出了低于标准的结果。并且根本不清楚是否以及如何解决该问题,即在这种情况下“良好”的输出会是什么样子。
但是,如果你的文档包含不重叠的子书目(并且没有全局书目),那么这defernumbers=true
是更好的选择。因为第一个书目的编号将由第二个书目继续。
因此,您可能会争辩说,在某些情况下,defernumbers=true
这是可取的,而在其他情况下,没有defernumbers
设置会产生出色的结果。如果您有“本地”书目,但想要优先考虑“全局”书目,那么这defernumbers=false
可能是更好的选择,因为这样至少全局列表会很好,而本地列表可能看起来不那么好看(但至少每个列表的编号都是严格增加的)。
请注意,许多不包括按以下方式拆分的拆分书目的用例refsegment
可能属于“多个子书目,条目不重叠,无全局列表”的类型,这defernumbers=true
是可取的。我可以想到按条目类型(@online
与非@online
;@book
s,@article
s,...)、按唯一性keyword
(拆分“主要”和“次要”参考)、按作者(“此作者的作品”与“所有其他人的作品”)拆分的列表,...
总结
在某些情况下,两种设置都会产生低于标准的结果。但在大多数情况下,对于拆分书目,defernumbers=true
最好使用 ,以确保子书目具有正确的编号。