我引用了两篇由不同作者组成的论文。第一作者的姓氏相同,而且他们的名字的首字母也相同(但不是同一个名字)。他们的中间名不同。其中一篇论文的第一作者也是另一篇论文的第二作者。而且这些出版物都是同一年出版的。
\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=init
给biblatex
生成:
作者以姓名首字母缩写来区分。 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}