子方程名称的引用

子方程名称的引用

我有一个由几个子方程组成的公式,我想在我的文章中将其称为公式和单独的方程。现在我有这个:

\usepackage{hyperref}  
\begin{subequations}
MySubequation
\begin{align}
    a = b \label{eq:1a}\\
    a = c \label{eq:2b}\\
\end{align}
\end{subequations}

我想在文本中将此公式称为“MySubequation”,并将其超链接到公式。但是,如果我使用\ref{MySubequation}它,只会显示公式的计数器编号。有什么方法可以将一组子方程式引用为名称吗?

答案1

以下是您可以使用的一些选项:

\documentclass{article}

\usepackage{amsmath,hyperref}
\newcommand{\fourthoffive}[5]{#4}

\newcommand{\hyperlinktoeqn}[2]{%
  \ifcsname r@#1\endcsname
    \expandafter\expandafter\expandafter
    \hyperlink\expandafter\expandafter
    \expandafter{\expandafter\expandafter\expandafter
      \fourthoffive\csname r@#1\endcsname}{#2}%
  \else
    #2%
  \fi
}

\begin{document}

\section{A section}

\begin{subequations}

\hyperlinktoeqn{eq:1a}{MySubequation1}
\hyperlink{myeqn}{MySubequation2}
\begin{align}
  a &= b \label{eq:1a}\raisebox{\HyperRaiseLinkDefault}[0pt][0pt]{\hypertarget{myeqn}} \\
  a &= c \label{eq:2b}
\end{align}
\end{subequations}

\end{document}

虽然MySubequation1和都MySubequation2指向第一个子方程,但它们的方法不同。

  1. 第一个提取插入的常规超链接hyperref作为元素的组合。具体到 中的方程式article,参考由 5 个元素组成:

    1. 引用(制作\@currentlabel过程中\label

    2. 页面(\thepage页面发货时)

    3. 标题(由nameref作为\@currentlabelname

    4. 超链接名称(\@currentHref由 构建hyperref

    5. 空白的 -{}

    我们感兴趣的是提取“4. 超链接名称”。为此,我们\fourthoffive在提取适当的参考详细信息后使用(每个标签<label>都存储在.auxas中\r@<label>;参见了解引用和标签的工作原理)。进行一些测试以确保标签存在,同时进行大量的\expandafters 以确保我们检索到正确的低级组件。

  2. 对于第二个MySubequation2链接,我们\hypertarget在第一个子方程中设置了一个,将其升高(\HyperRaiseLinkDefault\baselineskip,典型的默认值),以使整个方程仍然可见。

    在这种情况下,直接到达\hyperlink{<link>}{<text>}适当的目标就足够了。

相关内容