\labelcrefformat 与 \creflabelformat

\labelcrefformat 与 \creflabelformat

这两个命令\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 术语中的“低级”设置。

与 一起labelcrefrangeformatlabelcrefmultiformatlabelcrefrangemultiformat允许您完全重新定义 的行为\labelcref,正如 一样crefformatcrefrangeformatcrefmultiformat允许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\crefcrefformat使用\creflabelformat(即高级接口),\crefformat从上面的例子中移除,\labelcref将照常呈现。(显然这不是问题,因为它是一个退化的情况)。

相关内容