如何使用 biblatex 忽略特定作者的唯一名称

如何使用 biblatex 忽略特定作者的唯一名称

我正在写关于这位作者的文章,我的大部分参考资料都是她的作品。只有一个条目是由另一个姓氏相同的人写的,我希望只有这个条目与名字消除歧义,就像

预期结果

我尝试手动编辑.bbl文件并将uniquename字段设置为0,这样就可以了。所以我尝试了这个:

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=hash,
        match={d6cfb2b8c4b3f9440ec4642438129367},
        final]
      \step[fieldset=uniquename, fieldvalue=0]
    }
  }
}

但它不起作用(我不认为hashuniquename是“领域”,但我不知道如何称呼它们)

这是一个不起作用的 mwe:

\begin{filecontents}{\jobname.bib}
@book{mainauthor,
  author = {Jane Doe},
  title = {Title},
  year = {2016},
  option = {uniquename=false},
}
@book{another,
  author = {Hans Doe},
  title = {Title},
  year = {2016},
}
\end{filecontents}
\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=hash,
        match={d6cfb2b8c4b3f9440ec4642438129367},
        final]
      \step[fieldset=uniquename, fieldvalue=0]
    }
  }
}
\begin{document}
\autocites{mainauthor,another}
\printbibliography
\end{document}

答案1

在我看来这应该可以工作:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\addbibresource{test.bib}
\usepackage{xpatch}
\xpretonameformat{labelname}{%
 \iffieldequalstr{entrykey}{mainauthor}{\setcounter{uniquename}{0}}{}}{}{}

\begin{document}

\autocites{mainauthor,another}
\printbibliography
\end{document}

由于您可能有多个包含 Jane Doe 的条目,因此正如 moewe 所说,最好再次测试哈希,可能名称 Jane Doe 的哈希字段最适合:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\addbibresource{test.bib}
\usepackage{xpatch}
\xpretonameformat{labelname}{%
 \iffieldequalstr{hash}{d6cfb2b8c4b3f9440ec4642438129367}{\setcounter{uniquename}{0}}{}}{}{}

\begin{document}

\autocites{mainauthor,another}
\printbibliography
\end{document}

在此处输入图片描述

相关内容