我一直在学习如何自定义 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
。但通常您不能依赖手册来记录每个样式方面。)
从纯粹的句法技术层面来看,你例子中的两行都没有需要可选参数(如果参数是必需的,则应为强制参数)。但是,根据是否存在可选参数,这些行的行为会有所不同,并且它们会执行不同的操作。