根据每个参考书目或每个关键字抑制 biblatex 作者年份样式中的年份标签字母

根据每个参考书目或每个关键字抑制 biblatex 作者年份样式中的年份标签字母

我有一份包含多个参考书目的文档(使用 biblatex 和 biber 生成)。我想知道是否可以抑制仅在一个参考书目后面生成年份后的字母(extrayear)。

上一个问题,我了解到可以通过序言中的各种调整来抑制该标签,但这当然会影响所有书目。

从 biblatex 手册(2.0 版第 188 页)中,我了解到我可以针对每个条目类型停用标签,但这对我来说不行。手册还指出,labelyear 的自定义是不是可以按每个项目/每个条目进行(附录 D)。

所以我的问题是,是否有一种解决方法可以抑制标签,例如基于每个参考书目或每个关键字。

例如,我正在考虑\AtEveryBibitem还有一些 if/then 循环,用于过滤关键字。但不幸的是,我无法编写这样的程序……

答案1

我认为必须使用 来完成此操作,\defbibenvironment因为要跳过 labeldate 消歧义的条目不一定只在一个书目中,正如您所说。您不能使用,\AtEveryBibItem因为这是全局的,适用于所有书目。这样怎么样 - 您只需定义一个新的书目环境,并在需要没有 extradate 消歧义的书目时使用它。我在这里使用了 authoryear 定义的副本。如果您使用不同的样式,只需复制其“书目”bibliography 环境定义并在 itemcode 参数的开头\defbibenvironment添加:\clearfield{extradate}

\begin{filecontents}{test.bib}
@BOOK{test1,
  AUTHOR    = {Alan Ambiguous},
  TITLE     = {The Annals of Ambiguity},
  DATE      = {1934}
}
@BOOK{test2,
  AUTHOR    = {Alan Ambiguous},
  TITLE     = {Unambiguous Unknowns},
  DATE      = {1934}
}
\end{filecontents}
\documentclass{article}
\usepackage[style=authoryear]{biblatex}

\defbibenvironment{nodis}
  {\list
     {}
     {\setlength{\leftmargin}{\bibhang}%
      \setlength{\itemindent}{-\leftmargin}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}}
  {\endlist}
  {\clearfield{extradate}\item}

\addbibresource{test.bib}

\begin{document}
\cite{test1} \cite{test2}
\printbibliography
\printbibliography[env=nodis]
\end{document}

在此处输入图片描述

相关内容