IEEEeqnarray 与 hyperref -> 引用跳转到节的开头

IEEEeqnarray 与 hyperref -> 引用跳转到节的开头

IEEEtrantools我在文档类环境中使用该包scrreprt。我的问题是,当IEEEeqnarray与一起使用时hyperref,链接会跳转到节的开头而不是引用的方程式。我怎样才能使链接跳转到方程式?

例子:

\documentclass{scrreprt}
\usepackage[retainorgcmds]{IEEEtrantools}
\usepackage{hyperref}

\begin{document}
\section{The equation}
\newpage
\begin{IEEEeqnarray}{c}
    \frac{1}{v(E)}\frac{\partial}{\partial t}\Psi(\mathbf{r},\mathbf{\Omega},E,t)
  + \mathbf{\Omega} \cdot \nabla \Psi(\mathbf{r},\mathbf{\Omega},E,t)
  + \Sigma_t(\mathbf{r},E,t) \Psi(\mathbf{r},\mathbf{\Omega},E,t)
  = S(\mathbf{r},\mathbf{\Omega},E,t)
  \IEEEeqnarraynumspace
  \label{eq:Boltzmann}
\end{IEEEeqnarray}
\newpage
Referencing (\ref{eq:Boltzmann})...
\end{document}

答案1

\phantomsection只需在 之前添加一个\begin{IEEEeqnarray}{c}。虽然打印/pdf 中的外观将保持不变,但hyperref会链接/跳转到那里,而不是\section上面的(真实)。

已经看到你的下一个问题“对于每个IEEEeqnarray?!”,你也可以使用

\usepackage{etoolbox}
\AtBeginEnvironment{IEEEeqnarray}{\phantomsection}

之后\usepackage{hyperref}。在这种情况下,您不需要手动设置 s \phantomsection。(并且您可能希望向维护者hyperrefHeiko Oberdiek 发送错误报告,他通常会非常乐于助人。)

最后要说的是:原则上,\phantomsection应该直接位于 之前\label{eq:Boltzmann}。如果你有一个IEEEeqnarray包含多个 的\label,那么超链接将始终指向环境的开头(而不是带有标记方程的行)。因此,你也可以声明(在 之后\usepackage{hyperref}

\newcommand{\plabel}[1]{\phantomsection \label{#1}}

\plabel并在环境\label内部使用IEEEeqnarray

答案2

IEEEtran.cls 1.8 版(以及 IEEEtrantools.sty 1.3 版)现已修复 IEEEeqnarray 下的 hyperref 问题。尽情享用吧!

相关内容