如何在 BibLaTeX 的自定义驱动程序中检查作者列表是否仅包含一个或多个作者?

如何在 BibLaTeX 的自定义驱动程序中检查作者列表是否仅包含一个或多个作者?

我正在尝试为电影书目类型编写一个符合 APA 7 标准的驱动程序,例如它应该如下所示:

姓氏 A,首字母 A。& 姓氏 B,首字母 B。(执行制片人)。(年份)。标题[格式].制作公司。

到目前为止,我已经编写了一个驱动程序,\DeclareBibliographyDriver{movie}{...}它能完成上述操作,但当有多个制作人时,它不能使用正确的“执行制作人”复数形式。它应该显示“执行制作人”。

如何检查 BibLaTeX 列表是否包含多个项目?我跳过了 BibLaTeX 文档,但我无法理解它庞大的篇幅,同时又能专注于手头的任务。搜索引擎也没有帮助,因为我输入的大多数搜索字符串都向我提供了有关 BibLaTeX 的“最终用户”使用而不是包开发/定制使用的问题。

此外,我尝试过字符串比较 \printnames[apaauthor][-1]{author}\printnames[apaauthor][-\value{listtotal}]{author} 这首先听起来像是一个大规模的不必要的黑客攻击,而且似乎也不起作用,即使只有一位作者时显示相等,而有更多作者时显示不同。

我正在寻找这种东西

\ifnumgreater{\listcount{author}}{1}{%
  \biblstring{execproducers}%
}{%
  \biblstring{execproducer}%
}

但我似乎无法找到如何访问之外的字段列表\printnames[][]{}

答案1

当然,我必须在发布问题后不久找到它。但无论如何,我们还是要去看看。文档如下。

对于每个列表,还有一个同名的计数器,用于保存相应列表中的项目总数。例如,作者计数器保存作者列表中的项目总数。这些计数器与类似,但listtotal它们也可以独立于列表格式指令使用。

请参阅:BibLaTeX 文档,v3.14(2019-12-01),第 181 页,http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf

这意味着通过使用\value{author}我可以得到相应作者列表的计数器(以及大小),然后我可以使用它与1。这是最终的代码,看起来与我之前所想的非常相似:

\ifnumgreater{\value{author}}{1}{%
  \ifbibstring{execproducers}{\biblstring{execproducers}}{Executive Producers}%
}{%
  \ifbibstring{execproducer}{\biblstring{execproducer}}{Executive Producer}%
}%

编辑:在我的使用案例中,事实证明一开始就不需要破解任何东西。请参阅 moewe 对这个问题的评论。

相关内容