我使用的是biblatex
3.13 和biblatex-chicago
1.0rc5,并且希望只有当作者是单一作者时才消除歧义。在芝加哥,仅根据作者的判断才需要消除歧义,而对于我的资料来源来说,通常只要名字在列表中就足够了。
这篇文章也存在类似的 APA 格式问题,不过是针对列表中的第一作者而言的:
平均能量损失
sample.bib 文件
@book{hossfeld1973,
location = {{Fribourg, Switzerland}},
title = {Prophet gegen Prophet},
publisher = {{Verlag Schweizerisches Katholisches Bibelwerk}},
date = {1973},
author = {Hossfeld, Frank Lothar and Meyer, Ivo}
}
@book{meyer1968,
location = {{Grand Rapids, MI}},
title = {Prophecy and Prophets in the Judaism of the Hellenistic-Roman Period},
shorttitle = {Prophecy and Prophets},
publisher = {{Eerdmans}},
date = {1968},
author = {Meyer, Rudolf}
}
最小工作示例
\documentclass{article}
\usepackage[uniquename=true,backend=biber,notes,noibid]{biblatex-chicago}
\addbibresource{sample.bib}
\begin{document}
There is a book about Old Testament false prophets by \citeauthor{hossfeld1973} which they
wrote some decades ago.\autocite[]{hossfeld1973}
There is also an article in an encyclopedia by \citeauthor[]{meyer1968} which has only a
single author.\autocite[]{meyer1968} The two author work by \citeauthor{hossfeld1973} does
not need name disambiguation. The single author work by \citeauthor{meyer1968} does need
an initial so that we remember he was not the coauthor of the other
work.\autocites[]{hossfeld1973}{meyer1968}
\end{document}
期望输出
- 在实际的文档类中,我使用的名字在第一次出现时会使用此代码完整给出这里。目前这运行良好,但对于任何潜在的解决方案可能会产生一些冲突。
- 根据此 MWE 中的设置,这是我想要看到的输出:
几十年前,霍斯菲尔德和迈耶合著了一本关于旧约假先知的书。R. 迈耶在百科全书中也写了一篇文章,其中只有一位作者。霍斯菲尔德和迈耶合著的双作者作品不需要姓名消歧义。R. 迈耶的单作者作品需要首字母缩写,以便我们记住他不是另一部作品的合著者。
对于包含完整名字的实际文档类,它应该是这样的:
几十年前,Frank Lothar Hossfeld 和 Ivo Meyer 合著了一本关于旧约假先知的书。Rudolf Meyer 的百科全书中也有一篇文章,只有一位作者。Hossfeld 和 Meyer 合著的双作者作品不需要姓名消歧义。R. Meyer 的单作者作品需要首字母缩写,以便我们记住他不是另一部作品的合著者。
问题
uniquename
是否存在uniquelist
可以实现此目的的现有选项?有没有办法在 bib 条目中指定简称?
我查看biblatex
了名称歧义消除(4.11.4)但不明白。biblatex-chicago
默认情况下使用,uniquename=minfull
但在这个例子中并没有消除歧义。
答案1
有一种解决方法,即uniquename
在您不想消除歧义的情况下隐藏计数器值。这可以在labelname
名称格式中完成。
如果只有一位作者,以下将仅显示消歧义名称部分。
\documentclass{article}
\usepackage[notes, backend=biber,
uniquename=true,
noibid
]{biblatex-chicago}
\DeclareNameFormat{labelname}{%
\ifnumcomp{\value{listtotal}}{>}{1}
{\setcounter{uniquename}{0}}
{}%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi
\usebibmacro{name:andothers}}
\begin{filecontents}{\jobname.bib}
@book{hossfeld1973,
location = {Fribourg, Switzerland},
title = {Prophet gegen Prophet},
publisher = {Verlag Schweizerisches Katholisches Bibelwerk},
date = {1973},
author = {Hossfeld, Frank Lothar and Meyer, Ivo},
}
@book{meyer1968,
location = {Grand Rapids, MI},
title = {Prophecy and Prophets in the Judaism of the Hellenistic-Roman Period},
shorttitle = {Prophecy and Prophets},
publisher = {Eerdmans},
date = {1968},
author = {Meyer, Rudolf},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\null\vfill % only for the example
There is a book about Old Testament false prophets
by \citeauthor{hossfeld1973} which they
wrote some decades ago.\autocite{hossfeld1973}
There is also an article in an encyclopedia
by \citeauthor{meyer1968} which has only a
single author.\autocite{meyer1968}
The two author work by \citeauthor{hossfeld1973}
does not need name disambiguation.
The single author work by \citeauthor{meyer1968}
does need an initial so that we remember he was not
the coauthor of the other work.\autocite{hossfeld1973}
The other work.\autocite{meyer1968}
\end{document}
但从根本上来说,这并不能摆脱 Biber 已经对所有名称进行了名称消歧计算的事实。
我也非常不喜欢 Meyers 输出结果的不对称。而且我不太清楚如果引用 Hossfeld 的两部作品,而 Meyers 是不同的合著者,会发生什么。顺便问一下,如果中的作者hossfeld1973
被颠倒过来,即author = {Meyer, Ivo and Hossfeld, Frank Lothar},
,那么期望的输出是什么。
您可以使用以下方法将消歧义限制为第一作者(而不是单个作者)
\DeclareNameFormat{labelname}{%
\ifnumcomp{\value{listcount}}{>}{1}
{\setcounter{uniquename}{0}}
{}%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi
\usebibmacro{name:andothers}}
biblatex-apa
用途
\DeclareNameFormat{labelname}{%
\ifboolexpr{test {\ifnumcomp{\value{listcount}}{>}{1}}
or
test {\ifuniqueprimaryauthor}}
{\setcounter{uniquename}{0}}
{}%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi
\usebibmacro{name:andothers}}
为此您还需要选项uniqueprimaryauthor=true,
。(\ifuniqueprimaryauthor
检查第一作者的姓氏在所有第一作者中是否唯一。在此示例中,Hossfeld 和 Meyer 都满足此标准。)