我想定制 biblatex 的 autocite 命令的行为。
一般来说,autocite 的行为应该类似于 footcite。但是,在某些情况下,我应该像 parencite 一样,例如当定义了简写字段时。(或者,更好的是,当定义了简写字段并且之前没有被引用时,它应该像 parencite 一样。)
因此,我们有以下可能的情况:
速记未定义:Autocite=footnote。
简写定义:Autocite=inline。
2a. 简写已定义,且标题之前已被引用:autocite=inline。
2b. 简写已定义,但它是相应标题的第一次引用:autocite=footcite。
所以,基本上它归结为一个问题,即我是否(以及如何)可以在引用命令的声明中使用类似\iffieldundef
和的测试。\ifciteseen
答案1
您可以使用 定义自己的 cite 命令(或者重新定义现有的命令)\DeclareCiteCommand
。
它需要 4 个强制参数:第一个参数用于设置前注的格式,第二个参数用于循环引用(并实际打印引用),第三个参数用于引用之间的分隔符,最后一个参数用于后注。在参数中,您可以使用标准 biblatex 指令,例如:
\DeclareCiteCommand{\mycite}
{}
{\iffieldundef{shorthand}{no short hand}{\printfield{shorthand}},
\ifciteseen{not the first time}{first time}}
{}
{}
可以在其他条件语句中使用条件语句。