我正在尝试为电影书目类型编写一个符合 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 对这个问题的评论。