我怎样才能让 \eqrefs 可点击?

我怎样才能让 \eqrefs 可点击?

我已经\eqref像这样修改了宏

\let\originaleqref\eqref
\renewcommand{\eqref}{equation~\originaleqref}

按照这个答案。我希望参考文献的排版方式像equation xequation (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手册了解更多信息。

相关内容