我想知道是否可以在cleveref
包中同时使用这两个选项(完整参考名称和参考名称的缩写)。
手头的案例是一份包含文本模式中的参考文献和数学模式中的符号上方参考文献的文档(例如下面的示例)。理想情况下,我希望在文本模式下使用完整的参考文献名称(定理 0.1),而在出于打印符号上方参考文献所需空间的原因=
等情况下使用缩写版本(Thm. 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 给出的提示:cleveref——同时使用缩写和完整形式的引用?
该修改后的解决方案适用于缩写\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}}}
我希望这会有所帮助。