用标签 a、b、… 来区分,而不是用另一个作者

用标签 a、b、… 来区分,而不是用另一个作者

我想知道 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后变得模糊,此功能将消除列表的歧义。本质上,它会根据每个字段覆盖/ 。此选项也可根据每个类型进行设置。maxnamesminnamesmaxnamesminnames

实际上,使用 时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,因为我无法在我的系统上正确使用重音字母。

相关内容