\DeclareDelimFormat 何时需要可选参数 [bib]、[biblist] 等,何时不需要?

\DeclareDelimFormat 何时需要可选参数 [bib]、[biblist] 等,何时不需要?

我一直在学习如何自定义 biblatex 样式。以下是一些示例:

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}
\DeclareDelimFormat[bib]{nametitledelim}{\addspace}

让我感到困惑的是,第一个不需要[bib],而第二个需要?你如何确定哪些需要可选参数,哪些不需要?

检查每个 delim 格式的定义是biblatex.def唯一的方法吗?或者,哪些格式需要可选参数(如 )[bib][biblist]哪些[textcite]格式不需要,这背后有什么道理或原因吗?

答案1

虽然\DeclareFieldFormat\DeclareDelimFormat都有可选参数,但它们的含义不同。的可选参数\DeclareFieldFormat是条目类型列表。对于\DeclareDelimFormat它是分隔符上下文列表。

不过,字段格式和分隔符格式相对于可选参数的行为是类似的。在这两种情况下(即使用字段格式或打印上下文敏感的分隔符时),都会建立当前条目类型/上下文。如果当前类型/上下文有类型/上下文特定的定义,则使用它。如果没有这样的类型/上下文特定的定义,则使用通用定义(通过\DeclareFieldFormat或不通过可选参数给出)。可以在中找到\DeclareDelimFormat示例\DeclareFieldFormat从样式中删除引号. 更详细的讨论\DeclareDelimFormat是在更改/清理 biber citestyle 并扩展 hyperref 框

所以是的,通常当您想要重新定义字段格式和上下文相关的分隔符时,最好查找它们的原始定义,因为这样可以更容易地弄清楚如何重新定义它们。

(在这种情况下,nametitledelim您甚至可以在文档中找到该信息biblatex。但通常您不能依赖手册来记录每个样式方面。)


从纯粹的句法技术层面来看,你例子中的两行都没有需要可选参数(如果参数是必需的,则应为强制参数)。但是,根据是否存在可选参数,这些行的行为会有所不同,并且它们会执行不同的操作。

相关内容