biblatex:确定唯一的标题

biblatex:确定唯一的标题

我目前正在开发一种biblatex支持电影、电视剧和电视节目的风格。电视节目的典型条目看起来如下:

@movie{Newton:2012a,
Date = {2012-05-12},
Entrysubtype = {tv},
Organization = {ORF eins},
Title = {Newton}}

entrysubtype = tv用于标记该条目为电视节目。没有作者或任何类型的创作者,因为电视节目在传统意义上没有导演,organization用于表示电视台,date表示播出日期。文内引用如下所示:牛顿(ORF eins,2012 年 5 月 12 日)。重复引用不会显示站点和日期,只是牛顿

我已经完成了所有这些工作,但有一个问题:当我必须引用同一节目的不同部分时,我希望打印重复引用的日期以消除不同引用的歧义。因此,上述条目的第二次引用将看起来像是另一集牛顿被引用:牛顿(2012 年 5 月 12 日)。

为此,我需要确定标题是否唯一,而 AFAICSbiblatex没有提供任何工具。我考虑过与某种虚拟作者合作,但我真的不知道如何明智地做到这一点。

所以问题是:我如何判断标题是否唯一。

(如果需要,我会提供更多代码,但我认为总体思路应该很清楚)。

答案1

请尝试刚刚更新的 biblatex 2.0 和 biber 1.0 测试版。现在有一个选项labeltitle可以启用该extratitle字段。它的工作原理类似于extrayear,但会跟踪重复的标签名称/标签标题。对于您的情况,您可以执行以下操作:

\DeclareFieldFormat{citetitle}{%
  \iffieldundef{extratitle}{#1}{#1\space\mkbibparens{\printdate}}}

请参阅更新的 biblatex 文档。此外,labeltitle现在可以自定义,例如labelyear

答案2

我想到了一个只能被描述为丑陋的黑客的东西,但它实际上似乎有效。

首先,我检查是否author未定义;如果未定义,我将复制titleauthor,然后进行\ifsingletitle测试,检查是否有来自某个作者的多个标题。由于节目的标题充当作者,因此\ifsingletitle似乎可以完成这项工作。

原则上代码如下:

\ifciteseen % check whether it's a repeated citation
{\ifnameundef{author} % make sure that there is no author
{\savefield*{title}{\titlecheck}% copy the title to a new macro
\restorename{author}{\titlecheck}% copy the macro to author
\ifsingletitle % check whether author/title is unique
{<code for normal repeated citiations>}
{<code for citations which need to disambiguate>}
}
{…}
}
{…}

这并不好,但我没有发现任何本质问题。

更新:实际上,这不起作用。似乎我无法将字段的内容复制到姓名列表中。

更新2:请参阅 plk 的答案,它确实有效。

相关内容