Cleveref — используйте как сокращения, так и полные справочные наименования

Cleveref — используйте как сокращения, так и полные справочные наименования

Мне было интересно, можно ли использовать в cleverefпакете оба варианта (полное наименование ссылки и сокращения наименований ссылок).

В данном случае речь идет о документе, содержащем как ссылки в текстовом режиме, так и ссылки над =знаками в математическом режиме (например, в примере ниже). В идеале я хотел бы использовать полное имя ссылки (Теорема 0.1) в текстовом режиме, а сокращенную версию (Тем. 0.1 или что-то в этом роде) использовать в случаях, например, $\stackrel{\text{\Cref{th:theorem1}}}{=}$из-за нехватки места для печати ссылки над =знаком.

Кто-нибудь знает, как этого добиться?

Ниже приведен минимальный рабочий пример:

\documentclass[a4paper,english]{scrbook}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage[nameinlink, noabbrev]{cleveref}

\newtheorem{theorem}{Theorem}[chapter]
\newtheorem*{theorem*}{Theorem}

\begin{document}
\begin{theorem}\label{th:theorem1}
If $A$ is closed, then $A$ is closed.
\end{theorem}
\begin{proof}
Left to the reader.
\end{proof}

In \Cref{th:theorem1} we have seen that ...

\begin{equation}
a + b \stackrel{\text{\Cref{th:theorem1}}}{=} 0\,.
\end{equation}
\end{document}

решение1

Спасибо leandriis за подсказку:умнее — использовать как сокращенные, так и полные формы ссылок?

Это модифицированное решение работает как \Crefв \crefсокращенной, так и в несокращенной форме:

\usepackage[nameinlink, noabbrev]{cleveref}

\DeclareRobustCommand{\abbrevcrefs}{%
\Crefname{theorem}{Thm.}{Thms.}%
\Crefname{example}{Ex.}{Exs.}%
\crefname{equation}{eqn.}{eqns.}%
}

\DeclareRobustCommand{\Cshref}[1]{{\abbrevcrefs\Cref{#1}}}
\DeclareRobustCommand{\cshref}[1]{{\abbrevcrefs\cref{#1}}}

Надеюсь, это будет полезно.

Связанный контент