Biblatex 名称消歧义仅适用于单个作者吗?

Biblatex 名称消歧义仅适用于单个作者吗?

我使用的是biblatex3.13 和biblatex-chicago1.0rc5,并且希望只有当作者是单一作者时才消除歧义。在芝加哥,仅根据作者的判断才需要消除歧义,而对于我的资料来源来说,通常只要名字在列表中就足够了。

这篇文章也存在类似的 APA 格式问题,不过是针对列表中的第一作者而言的:

biblatex:仅针对第一作者进行姓名消歧义

平均能量损失

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}

文本引用示例 脚注示例

期望输出

  1. 在实际的文档类中,我使用的名字在第一次出现时会使用此代码完整给出这里。目前这运行良好,但对于任何潜在的解决方案可能会产生一些冲突。
  2. 根据此 MWE 中的设置,这是我想要看到的输出:

几十年前,霍斯菲尔德和迈耶合著了一本关于旧约假先知的书。R. 迈耶在百科全书中也写了一篇文章,其中只有一位作者。霍斯菲尔德和迈耶合著的双作者作品不需要姓名消歧义。R. 迈耶的单作者作品需要首字母缩写,以便我们记住他不是另一部作品的合著者。

对于包含完整名字的实际文档类,它应该是这样的:

几十年前,Frank Lothar Hossfeld 和 Ivo Meyer 合著了一本关于旧约假先知的书。Rudolf Meyer 的百科全书中也有一篇文章,只有一位作者。Hossfeld 和 Meyer 合著的双作者作品不需要姓名消歧义。R. Meyer 的单作者作品需要首字母缩写,以便我们记住他不是另一部作品的合著者。

问题

  1. uniquename是否存在uniquelist可以实现此目的的现有选项?

  2. 有没有办法在 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}

几十年前,霍斯菲尔德和迈耶写了一本关于旧约假先知的书。R. Meyer 的百科全书中也有一篇文章,只有一位作者。霍斯菲尔德和迈耶的双作者作品不需要姓名消歧义。R. Meyer 的单作者作品需要首字母缩写,这样我们才能记住他不是另一部作品的合著者。另一部作品。

但从根本上来说,这并不能摆脱 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 都满足此标准。)

相关内容