我想知道 biblatex 如何努力使引用变得独一无二。
考虑一个例子:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{file.bib}
@ARTICLE{ex1,
author = {{Ď{}urech}, J. and {Vokrouhlický{}}, D. and {Kaasalainen}, M. and
{Weissman}, P. and {Lowry}, S.~C. and {Beshore}, E. and {Higgins}, D. and
{Krugly}, Y.~N. and {Shevchenko}, V.~G. and {Gaftonyuk}, N.~M. and
{Choi}, Y.-J. and {Kowalski}, R.~A. and {Larson}, S. and {Warner}, B.~D. and
{Marshalkina}, A.~L. and {Ibrahimov}, M.~A. and {Molotov}, I.~E. and
{Michalowski}, T. and {Kitazato}, K.},
title = {{New photometric observations of asteroids (1862) Apollo and (25143) Itokawa - an analysis of YORP effect}},
journal = {Astronomy and Astrophysics},
year = 2008,
month = sep,
volume = 488,
pages = {345-350},
issn = {1432-0746},
}
@ARTICLE{ex2,
author = {{Ď{}urech}, J. and {Vokrouhlický{}}, D. and {Kaasalainen}, M. and
{Higgins}, D. and {Krugly}, Y.~N. and {Gaftonyuk}, N.~M. and
{Shevchenko}, V.~G. and {Chiorny}, V.~G. and {Hamanowa}, H. and
{Hamanowa}, H. and {Reddy}, V. and {Dyvig}, R.~R.},
title = {{Detection of the YORP effect in asteroid (1620) Geographos}},
journal = {Astronomy and Astrophysics},
year = 2008,
month = oct,
volume = 489,
pages = {L25-L28},
issn = {1432-0746},
}
\end{filecontents}
\usepackage{csquotes}
\usepackage[
maxcitenames=2,
style=authoryear,
firstinits=true,
backend=biber,
dashed=false,
]{biblatex}
\addbibresource{file.bib}
\begin{document}
\cite{ex1}, \cite{ex2}
\printbibliography
\end{document}
有两篇文章的年份相同,前三位作者也相同。Biblatex 通过在引用中打印 4 个名字来解决这个问题,以使这两个条目独一无二,尽管 maxcitenames=2。
我觉得这看起来很糟糕,我想在意义上区分这两个条目:Ďurech et al. (2008a) 和 Ďurech et al. (2008b)
我知道在这种情况下应该可以使用不同的月份来区分它们,但我们假装我们不知道或者它们也是相同的。
我没有成功使用 uniquelist 和 uniquename 选项,因为 biblatex 会添加名称使其唯一,而不仅仅是首字母或类似的东西......
是否有可能让 biblatex 仅查看前 n 位作者,然后(如果它们相同)在年份之后使用 a、b 来使条目唯一,而不是添加名称?
或者其他什么可以满足我的要求?
谢谢,
编辑:
cslstr 已经解决了我原来的问题,但是我还有其他问题需要解决。
我现在有点像爱丽丝梦游仙境。我尝试过将 uniquelist/name=false 设置为这个解决方案 - 但没有成功。然后我做了一个小技巧来解决这个问题。我在两个条目之一的第一个作者的首字母周围添加了括号 - 这使得 bibblatex 认为它们是不同的作者,并得到了我想要的结果。在您回复后,我认为 biblatex 序言中的位置确实很重要,并像您一样使用它 - 成功了。但后来我尝试在 biblatex 序言的末尾使用它,因为我在论坛上写文章之前就用过它 - 它也有效。
这怎么可能?我确定我只是在 biblatex 序言中添加和删除了两个选项以及括号,并且确定我现在以完全相同的方式使用它 - 昨天不起作用,现在可以用了。
答案1
背景
这里的问题与默认设置有关authoryear
,即设置uniquelist=true
。从文档:
uniquelist=true, false, minyear
如果列表在/截断
labelname
后变得模糊,此功能将消除列表的歧义。本质上,它会根据每个字段覆盖/ 。此选项也可根据每个类型进行设置。maxnames
minnames
maxnames
minnames
实际上,使用 时uniquelist=true
,如果用作标签的名称列表在 之后“相同” maxnames
,则会添加其他名称,直到您获得明确的列表。这就是您观察到的。通过设置uniquelist=false
,您可以阻止实现此功能。
minbibnames
在更改此设置时,您会发现参考书目名称列表也会受到影响。您可以使用/独立于文内引用调整参考书目中的名称数量maxbibnames
。
解决方案
您的包选项应该被加载为:
\usepackage[
maxcitenames=2,
style=authoryear,
uniquelist=false, % <--- New
minbibnames=4, % <--- If desired
maxbibnames=4, % <--- If desired
firstinits=true,
backend=biber,
dashed=false,
]{biblatex}
这提供了:
附注:包装警告
请注意,使用这些选项时,日志文件中还会显示警告:
Package biblatex Warning: Conflicting options. (biblatex)
'firstinits' conflicts with 'uniquename=full'. (biblatex)
Setting 'uniquename=init' on input line 53.
uniquename=full
这是指由样式自动设置的选项 ( ) authoryear
,它与 相冲突firstinits
。基本上,uniquename=full
表示biblatex
应通过包含全名来使名称唯一;但firstinits
表示您永远不想使用全名。 firstinits
胜出,消息会告诉您这一事实。
注意:我没有修改整个 MWE,因为我无法在我的系统上正确使用重音字母。