在标签中声明环境的名称?

在标签中声明环境的名称?

我正在使用svmono带有选项的类。不幸的是,由于类定义其环境的方式,envcountsame这存在问题。cleveref

例如,如果我有\begin{proposition}\label{xyz}并调用\Cref{xyz},则输出将始终为定理 xyz而不是命题 xyz*,对于任何其他环境也同样如此。

一种解决方法是将环境的名称添加到标签命令中:因此,而不是\begin{proposition}\label{xyz}我使用\begin{proposition}\label[proposition]{xyz},这似乎有效。

但是,我现在发现 cleveref 以这种方式识别的环境是有限的。例如,这似乎不适用于questionexercise等,而 cleveref 实际上会显示??? XYZ,没有环境名称。

我该如何添加这些环境才能cleveref正确显示环境名称?FWIW,我做过cleveref在所有其他包之后加载。

答案1

[备注:在我发布下面的答案后不久,OP 更新了帖子,提到该类svmono已加载选项envcountsame。这是一条至关重要的信息。以下答案确实不是envcountsame若有效则适用。

并非所有可以想到的环境名称都是已知的先验cleveref。幸运的是,该cleveref软件包提供了宏\crefname,让用户可以清楚地说明应该如何标记迄今为止未知名称的环境。例如,

\crefname{exercise}{exercise}{exercises}
\crefname{question}{question}{questions}

顺便问一下,你声称“如果[使用svmono文档类时]我有\begin{proposition}\label{xyz}并调用\Cref{xyz},则输出将始终是定理 xyz而不是命题 xyz“?根据以下 MWE(最小工作示例),我认为这个说法似乎不正确。

在此处输入图片描述

\documentclass{svmono}

\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink,noabbrev]{cleveref}

\crefname{exercise}{exercise}{exercises}
\crefname{question}{question}{questions}

\begin{document}
\begin{theorem} aaa     \label{aaa}\end{theorem}
\begin{proposition} bbb \label{bbb}\end{proposition}
\begin{exercise} ccc    \label{ccc}\end{exercise}
\begin{question} ddd    \label{ddd}\end{question}

\obeylines
\cref{aaa}, \Cref{aaa} 
\cref{bbb}, \Cref{bbb}
\cref{ccc}, \Cref{ccc}
\cref{ddd}, \Cref{ddd}
\end{document}

相关内容