如何从单个 cref 引用中删除括号?

如何从单个 cref 引用中删除括号?

我用它cleveref来交叉引用所有内容。有时我会像 一样在行内写引用eq.(1)。这样还可以。但是当它被括在括号中时,它就会变成(eq.(2))。这样就不太好。

是否有可能以某种方式切换括号的使用cleveref

以下是 MWE:


\documentclass{article}
\usepackage{cleveref}
\begin{document}
 \begin{equation}\label{one}
 12+2=34
 \end{equation}
 \begin{equation}\label{two}
 1+2=4
 \end{equation}
 if \cref{one} is correct than (\cref{two})!
\end{document}  

答案1

声明“变量”格式:

\documentclass{article}
\usepackage{amsmath}
\usepackage{cleveref}

\crefformat{equation}{\eqA eq.~\eqB #2#1#3)}
\newcommand{\eqA}{}
\newcommand{\eqB}{(}
\DeclareRobustCommand{\pcref}[1]{%
  \begingroup
  \renewcommand{\eqA}{(}\renewcommand{\eqB}{}%
  \cref{#1}%
  \endgroup
}

\begin{document}

\begin{equation}
1+1=2 \label{true}
\end{equation}

Here's \cref{true}.

That's all \pcref{true}.

Again \cref{true}

\end{document}

在此处输入图片描述

答案2

以下是稍微修改过的版本egreg 的回答。这适用于多个引用,也适用于所有类型的引用。

\documentclass[11pt]{article}

\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink]{cleveref}

\newcommand{\eqlabelleft}{(}
\newcommand{\eqlabelright}{)}
\newcommand{\pcref}[1]{%
\begingroup%
\renewcommand{\eqlabelleft}{}%
\renewcommand{\eqlabelright}{}%
(\cref{#1})%
\endgroup%
}

\creflabelformat{equation}{\eqlabelleft#2#1#3\eqlabelright}

\begin{document}
\begin{equation}
    y = mx + c
    \label{eq:1}
\end{equation}
\begin{equation}
    x^2 + y^2 = 1
    \label{eq:2}
\end{equation}
\cref{eq:1,eq:2}\\
\pcref{eq:1,eq:2}\\
\cref{eq:1,eq:2}
\end{document}

在此处输入图片描述

相关内容