让 cleveref 缩写为“eq. 1”一次

让 cleveref 缩写为“eq. 1”一次

在数学环境中,我希望将\cref缩写改为eq. 1仅一次。我希望将文档中的所有其他\crefs 拼写为完整的“公式 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}

相关内容