我有一个由几个子方程组成的公式,我想在我的文章中将其称为公式和单独的方程。现在我有这个:
\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
指向第一个子方程,但它们的方法不同。
第一个提取插入的常规超链接
hyperref
作为元素的组合。具体到 中的方程式article
,参考由 5 个元素组成:引用(制作
\@currentlabel
过程中\label
)页面(
\thepage
页面发货时)标题(由
nameref
作为\@currentlabelname
)超链接名称(
\@currentHref
由 构建hyperref
)空白的 -
{}
我们感兴趣的是提取“4. 超链接名称”。为此,我们
\fourthoffive
在提取适当的参考详细信息后使用(每个标签<label>
都存储在.aux
as中\r@<label>
;参见了解引用和标签的工作原理)。进行一些测试以确保标签存在,同时进行大量的\expandafter
s 以确保我们检索到正确的低级组件。对于第二个
MySubequation2
链接,我们\hypertarget
在第一个子方程中设置了一个,将其升高(\HyperRaiseLinkDefault
或\baselineskip
,典型的默认值),以使整个方程仍然可见。在这种情况下,直接到达
\hyperlink{<link>}{<text>}
适当的目标就足够了。