如何在 biblatex 中处理具有相同姓氏和相同名字首字母的两个不同作者?

如何在 biblatex 中处理具有相同姓氏和相同名字首字母的两个不同作者?

我引用了两篇由不同作者组成的论文。第一作者的姓氏相同,而且他们的名字的首字母也相同(但不是同一个名字)。他们的中间名不同。其中一篇论文的第一作者也是另一篇论文的第二作者。而且这些出版物都是同一年出版的。

\documentclass{article}

\usepackage[style=authoryear-comp,maxcitenames=2,maxbibnames=10,url=false,doi=false,isbn=false,dashed=false,firstinits=true]{biblatex}

\DeclareNameAlias{sortname}{last-first}

\begin{filecontents}{biblio.bib}
@article{smithaa,
title = {Some title},
year = {2000},
author = {Smith, Aaron A and Meyer, M and Fitzgerald, F},
journal = {Some journal}
}
@article{smithaz,
title = {Another title},
year = {2000},
author = {Smith, Anton Z and Smith, A A and Doe, John},
journal = {Another journal}
}
@article{differentxy,
title = {Just something else},
year = {2003},
author = {Different, Jason J and Person, Other O and Human, Another A},
journal = {Different Journal}
}
\end{filecontents}

\addbibresource{biblio.bib}

\begin{document}
\parencites{smithaa}{smithaz}.

\parencite{differentxy}.

\printbibliography
\end{document}

这样我就得到了这样的文内引用:

(Smith et al. 2000a; Smith et al. 2000b).
(Different et al. 2003).

参考书目条目如下:

Different, J., Person, O., and Human, A. (2003). “Just something else”. In: Different Journal.
Smith, A. A., Meyer, M, and Fitzgerald, F (2000a). “Some title”. In: Some journal.
Smith, A. Z., Smith, A. A., and Doe, J. (2000b). “Another title”. In: Another journal.

然而,我认为这非常令人困惑,因为这表明这两篇出版物都是由同一个史密斯撰写的。

我更希望在文本中看到类似这样的内容:

(Smith, A. A. et al. 2000; Smith, A. Z. et al. 2000).
(Different et al. 2003).

在“正常”引用(Different et al.)中,名称仍应显示为不带首字母缩写。

在参考书目中,日期后面不应该有“a”和“b”:

Different, J., Person, O., and Human, A. (2003). “Just something else”. In: Different Journal.
Smith, A. A., Meyer, M, and Fitzgerald, F (2000). “Some title”. In: Some journal.
Smith, A. Z., Smith, A. A., and Doe, J. (2000). “Another title”. In: Another journal.

答案1

将选项传递uniquename=initbiblatex生成:

示例输出

作者以姓名首字母缩写来区分。 uniquename接受许多其他选项来消除参考文献的歧义。请参阅biblatex文档

如果你想获得

第二个示例

用尾随首字母代替,然后添加

\DeclareNameAlias{labelname}{family-given}

到你的序言中。但是,正如你所说,这会为所有引文添加首字母。要仅为需要消除歧义的引文打印首字母,请使用

\DeclareNameFormat{labelname}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \or
    \ifuseprefix
      {\usebibmacro{name:family-given}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefix}
        {\namepartsuffixi}}
      {\usebibmacro{name:family-given}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefixi}
        {\namepartsuffixi}}%
  \or
    \usebibmacro{name:family-given}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \fi
  \usebibmacro{name:andothers}}

labelname而是。此代码是对标准文件提供的格式声明的简单修改,biblatex.def每个实例都name:given-family替换为name:family-given

以下是完整文件及其输出:

完整示例

\documentclass{article}

\usepackage[style=authoryear-comp,maxcitenames=2,maxbibnames=10,
  url=false,doi=false,isbn=false,dashed=false,
  giveninits=true,uniquename=init]{biblatex}

\DeclareNameAlias{sortname}{family-given}

\DeclareNameFormat{labelname}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \or
    \ifuseprefix
      {\usebibmacro{name:family-given}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefix}
        {\namepartsuffixi}}
      {\usebibmacro{name:family-given}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefixi}
        {\namepartsuffixi}}%
  \or
    \usebibmacro{name:family-given}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \fi
  \usebibmacro{name:andothers}}

\begin{filecontents}{biblio.bib}
@article{smithaa,
title = {Some title},
year = {2000},
author = {Smith, Aaron A and Meyer, M and Fitzgerald, F},
journal = {Some journal}
}
@article{smithaz,
title = {Another title},
year = {2000},
author = {Smith, Anton Z and Smith, A A and Doe, John},
journal = {Another journal}
}
@article{differentxy,
title = {Just something else},
year = {2003},
author = {Different, Jason J and Person, Other O and Human, Another A},
journal = {Different Journal}
}
\end{filecontents}

\addbibresource{biblio.bib}

\begin{document}
\parencites{smithaa}{smithaz}.

\parencite{differentxy}.

\printbibliography
\end{document}

以上代码适用于biblatex 3.4或更新版本,对于旧版本,我之前发布的代码是

\documentclass{article}

\usepackage[style=authoryear-comp,maxcitenames=2,maxbibnames=10,
  url=false,doi=false,isbn=false,dashed=false,
  firstinits=true,uniquename=init]{biblatex}

\DeclareNameAlias{sortname}{last-first}
\DeclareNameFormat{labelname}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:last}{#1}{#3}{#5}{#7}%
  \or
    \ifuseprefix
      {\usebibmacro{name:last-first}{#1}{#4}{#5}{#8}}
      {\usebibmacro{name:last-first}{#1}{#4}{#6}{#8}}%
  \or
    \usebibmacro{name:last-first}{#1}{#3}{#5}{#7}%
  \fi
  \usebibmacro{name:andothers}}

\begin{filecontents}{biblio.bib}
@article{smithaa,
title = {Some title},
year = {2000},
author = {Smith, Aaron A and Meyer, M and Fitzgerald, F},
journal = {Some journal}
}
@article{smithaz,
title = {Another title},
year = {2000},
author = {Smith, Anton Z and Smith, A A and Doe, John},
journal = {Another journal}
}
@article{differentxy,
title = {Just something else},
year = {2003},
author = {Different, Jason J and Person, Other O and Human, Another A},
journal = {Different Journal}
}
\end{filecontents}

\addbibresource{biblio.bib}

\begin{document}
\parencites{smithaa}{smithaz}.

\parencite{differentxy}.

\printbibliography
\end{document}

相关内容