有没有办法让 有短版和长版,\cref
就像 有大写和小写版本一样?我想在大多数文档中使用长版(如图 1)。但在某些 tikz 图中,我想以短格式添加参考资料(如图 1)以节省空间。
强制性 MWE
\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}{Lemma}
\Crefname{lemma}{Lemma}{Lemmas}
\Crefname{theorem}{Theorem}{Theorem}
\Crefname{figure}{Figure}{Figures}
% Short refs
% \crefname{lemma}{Lem.}{Lems.}
% \crefname{theorem}{Thm.}{Thms.}
% \crefname{figure}{Fig.}{Figs.}
\def\shortcref#1{\cref{#1}}
\begin{document}
\begin{figure}
\centering
\caption{Test}
\label{fig:myfig}
\end{figure}
\begin{theorem}\label{thm:my}
My result
\end{theorem}
\begin{lemma}\label{lem:my}
My Lemma
\end{lemma}
This is my long format \Cref{fig:myfig}, \Cref{thm:my} and \Cref{lem:my}.
This is my short format \shortcref{fig:myfig}, \shortcref{thm:my} and \shortcref{lem:my}.
\end{document}
答案1
管理缩写的方式cleveref
是在初始加载时设置它们,因此没有内置的方法来管理它。但是,\crefname
在本地定义其效果,因此
{\crefname{figure}{fig.}{figs.}\cref{foo}} \cref{foo}
将输出
图 3 图 3
所以我们可以做这样的事情来获得你想要的结果:
\NewDocumentCommand{\CrefAbbrevNames}{}
{%
\crefname{figure}{fig.}{figs.}%
\crefname{theorem}{thm.}{thms.}%
etc.
}
\NewDocumentCommand{\shortcref}{ s m }
{{% ❶
\CrefAbbrevNames
\cref
\IfBooleanT{#1}{*}% ❷
{#2}%
}}
请注意使用了一组额外的括号 ❶,以便重新定义可以成组出现。此外,由于\cref
可能采用*
-form(用于hyperref
抑制超链接),我添加了对 a 的检查*
,以\shortcref
将其添加到对 的调用中\cref
。❷
对于多语言文档来说, 的定义\CrefAbbrevNames
会更加复杂。
我原本计划制作\cref*
相当于的,\shortcref
直到我记起*
已经存在的潜在形式。