我已经\eqref
像这样修改了宏
\let\originaleqref\eqref
\renewcommand{\eqref}{equation~\originaleqref}
按照这个答案。我希望参考文献的排版方式像equation x
或equation (x)
并且完全可点击。这个 MWE 说明了我想要的。
\documentclass[preview]{standalone}
\usepackage{amsmath}
\usepackage[linkcolor=blue,colorlinks=true]{hyperref}
\let\originaleqref\eqref
\renewcommand{\eqref}{equation~\originaleqref}
\begin{document}
\begin{equation}\label{eq:some_eq}
a^2 + b^2 = c^2
\end{equation}
I want to refer to \eqref{eq:some_eq}.
Using \verb+\eqref+ should produce \hyperref[eq:some_eq]{equation 1}.
\end{document}
是否有一种直接的方法来定制此类参考的排版,或者我是否需要完全重新定义宏\eqref
?
答案1
正如 Egreg 提到的,您可以使用cleverref
,如果您不想,您可以使用类似的东西。我们使用的事实\ref*
(又名非链接引用)hyperref
是宏\@refstar
。因此,在新的内部,\eqref
我们通过创建链接\hyperref[target]{text}
并确保text
它本身不包含任何超链接(因为嵌套超链接实际上没有任何意义)
\documentclass[preview]{standalone}
\usepackage{amsmath}
\usepackage[linkcolor=blue,colorlinks=true]{hyperref}
\let\originaleqref\eqref % or \let\originaleqref\ref to drop parens
\makeatletter
\renewcommand{\eqref}[1]{%
\begingroup%
\let\ref\@refstar%
\hyperref[#1]{%
equation%
~\originaleqref{#1}%
}%
\endgroup
}
\makeatother
\begin{document}
\begin{equation}\label{eq:some_eq}
a^2 + b^2 = c^2
\end{equation}
I want to refer to \eqref{eq:some_eq}.
Using \verb+\eqref+ should produce \hyperref[eq:some_eq]{equation 1}.
\end{document}
答案2
正如 egreg 所提到的,它很容易使用cleveref
(必须在之后加载hyperref
)。
简单定义
\crefformat{equation}{#2equation~#1#3}
\Crefformat{equation}{#2Equation~#1#3}
hyperref
参数#2 和#3 用于标记使用该包时形成超链接的交叉引用部分的开始和结束。
然后只需使用\cref{eq:some_eq}
。
梅威瑟:
\documentclass[preview]{standalone}
\usepackage{amsmath}
\usepackage[linkcolor=blue,colorlinks=true]{hyperref}
\usepackage{cleveref}
\crefformat{equation}{#2equation~#1#3}
\Crefformat{equation}{#2Equation~#1#3}
\begin{document}
\begin{equation}\label{eq:some_eq}
a^2 + b^2 = c^2
\end{equation}
I want to refer to \eqref{eq:some_eq}.
Using \verb+\eqref+ should produce \cref{eq:some_eq}.
\end{document}
如果你想\eqref
产生这样的输出,只需添加
\let\eqref\cref
并且有了这个 MWE
\documentclass[preview]{standalone}
\usepackage{amsmath}
\usepackage[linkcolor=blue,colorlinks=true]{hyperref}
\usepackage{cleveref}
\crefformat{equation}{#2equation~#1#3}
\Crefformat{equation}{#2Equation~#1#3}
\let\eqref\cref
\begin{document}
\begin{equation}\label{eq:some_eq}
a^2 + b^2 = c^2
\end{equation}
I want to refer to \eqref{eq:some_eq}.
Using \verb+\eqref+ should produce \eqref{eq:some_eq}.
\end{document}
你将获得:
equation (1)
如果你想要使用链接
\crefformat{equation}{#2equation~(#1)#3}
\Crefformat{equation}{#2Equation~(#1)#3}
\crefrangeformat
您还可以使用和修改方程范围的行为\Crefrangeformat
。请参阅cleveref
手册了解更多信息。