我用它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}