这两个命令\labelcrefformat
和\creflabelformat
到底起什么作用?在 cleveref 的文档中,我看到两者都被提及。虽然\creflabelformat
在第 15 页有描述(不幸的是没有任何示例),但\labelcrefformat
只提到了两次(没有任何细节):
\labelcref
如果未定义特定类型的格式,则该命令将使用默认标签格式排版交叉引用标签\creflabelformat
(参见第 8.1.1 节和第 8.1.2 节)。请注意,如果您使用低级命令自定义参考格式,您可能还希望使用等命令明确定义\labelcref
要匹配的格式\labelcrefformat
(参见第 8.2 节)。
唯一的其他参考\labelcrefformat
是在第 8.2 节中:
如果您使用低级自定义命令为特定交叉引用类型定义格式,并且仍想使用该
\labelcref
命令仅生成交叉引用的标签部分,则还必须为该类型定义适当的格式。这可以使用、和命令\labelcref
完成。\labelcrefformat
\labelcrefrangeformat
\labelcrefmultiformat
\labelcrefrangemultiformat
那么这两个命令有何不同?有没有使用这两个命令的例子,特别是\labelcrefformat
?
答案1
creflabelformat
是 cleveref 术语中的“高级”设置。
它允许您更改引用的方式本身(没有类型)将呈现为特定的引用类型。
基本上,它的作用与完全相同crefdefaultlabelformat
,但是用于渲染特定类型的引用而不是所有引用(除了方程式,因为原因)。
例子:
\creflabelformat{section}{(((#2#1#3)))}
...
See \cref{mylabel}. % mylabel points to a section 2.1
生成See sect. (((2.1)))
,但对所有其他类型(图形、表格等)的引用将保持不变。另一方面,对于所有渲染模式,节编号将看起来像 (((XX))),包括范围(如sect. (((2.2)))-(((2.4)))
)和列表(如sect. (((2.2))), (((2.4))) and (((2.6)))
)。
labelcrefformat
是 cleveref 术语中的“低级”设置。
与 一起labelcrefrangeformat
,labelcrefmultiformat
它labelcrefrangemultiformat
允许您完全重新定义 的行为\labelcref
,正如 一样crefformat
,crefrangeformat
并crefmultiformat
允许crefrangemultiformat
您完全重新定义 的行为\cref
。
例子:
\crefformat{section}{sect.~<#2#1#3>}
\labelcrefformat{section}{<#2#1#3>}
...
\labelcref{mylabel} % mylabel points to a section 2.1
生产<2.1>
。
请注意,当你调整with (和朋友)的行为时,labelcrefformat
和朋友是用来工作的拐杖,即使用低级接口。如果你\labelcref
\cref
crefformat
还使用\creflabelformat
(即高级接口),和\crefformat
从上面的例子中移除,\labelcref
将照常呈现。(显然这不是问题,因为它是一个退化的情况)。