我正在写关于这位作者的文章,我的大部分参考资料都是她的作品。只有一个条目是由另一个姓氏相同的人写的,我希望只有这个条目与名字消除歧义,就像
我尝试手动编辑.bbl
文件并将uniquename
字段设置为0
,这样就可以了。所以我尝试了这个:
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=hash,
match={d6cfb2b8c4b3f9440ec4642438129367},
final]
\step[fieldset=uniquename, fieldvalue=0]
}
}
}
但它不起作用(我不认为hash
和uniquename
是“领域”,但我不知道如何称呼它们)
这是一个不起作用的 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}