在数学环境中,我希望将\cref
缩写改为eq. 1
仅一次。我希望将文档中的所有其他\cref
s 拼写为完整的“公式 123”。这可能吗?
由于有数百个参考文献,我还想保留noabbrev
文档其余部分的选项,而不是手动更改所有选项。
\documentclass{article}
\usepackage{amsmath}
\usepackage[noabbrev]{cleveref} % noabbrev!
\creflabelformat{equation}{#2\textup{#1}#3} % no (1), but 1
\begin{document}
\begin{equation} \label{eq:1}
\pi=3
\end{equation}
...
\begin{equation}
2\pi
\stackrel{
\text{ \cref{eq:1} } % no noabbrev here?
}{
=
}
6
\end{equation}
\end{document}
答案1
如果您想使用\cref
(例如因为您想使用nameinlink
),您可以执行以下操作(如与@ChristianHupfer 一起在评论中讨论的那样):
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage[noabbrev]{cleveref} % noabbrev!
\creflabelformat{equation}{#2\textup{#1}#3} % no (1), but 1
\begin{document}
\begin{equation} \label{eq:1}
\pi=3
\end{equation}
...
\begin{equation}
2\pi
\stackrel{
\bgroup\crefname{equation}{eq.}
\text{ \cref{eq:1} }\egroup % no noabbrev here?
}{
=
}
6
\end{equation}
\end{document}
答案2
另一种解决方案是不使用nameinlink
提供完整参考的超链接。我使用了一个新命令\abcref
,通过提取锚点并\cref*
在内部使用来放置超链接。
无论如何,这里都是\crefname{equation}{eq.}{Eq.}
必要的。
(注:Skillmon 和我在同一秒内发布了几乎相同的解决方案,因此我更改了我的解决方案)
\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage[noabbrev]{cleveref} % noabbrev!
\creflabelformat{equation}{#2\textup{#1}#3} % no (1), but 1
\newcommand{\abcref}[1]{%
\hyperlink{\getrefbykeydefault{#1}{anchor}{}}{\cref*{#1}}%
}
\begin{document}
\begin{equation} \label{eq:1}
\pi=3
\end{equation}
...
\begin{equation}
2\pi
\stackrel{%
\begingroup
\crefname{equation}{eq.}{Eq.}%
\text{ \abcref{eq:1} } % no noabbrev here?
\endgroup
}{
=
}
6
\end{equation}
See \cref{foo} also
\begin{equation}
E=mc^{2} \label{foo}
\end{equation}
\end{document}
答案3
我看不出有什么理由在这里使用 cleveref 的重型机器。基本\ref
指令就足够了。
\documentclass{article}
\usepackage{amsmath}
\usepackage[colorlinks]{hyperref}
\usepackage[noabbrev]{cleveref}
\creflabelformat{equation}{#2\textup{#1}#3} % no surrounding parens
\newcommand\refequal[1]{\stackrel{\text{\tiny eq.\,\ref*{#1}}}{=}}
\begin{document}
\begin{gather}
\pi = 3 \label{eq:1}\\
\cdots \notag \\
22\pi \refequal{eq:1} 66
\end{gather}
\end{document}