将引用放在等号上方并引用它

将引用放在等号上方并引用它

将引用放在等号上方并在文本中引用它的最简短、最方便的方法是什么,即执行以下操作:

示例代码

可以手动完成,通过使用 \stackrel{}{} 命令和手动编号。我的问题是:可以以更智能的方式完成吗?

答案1

下面,我定义了一个宏,我相信它应该能满足您的要求。它有两个参数,第一个是您想要标记的(关系)符号,第二个是标签名称。标签会自动递增,您可以像引用方程式一样\labelrel引用它们。\eqref

\documentclass{article}

\usepackage{amsmath}

\newcounter{relctr} %% <- counter for relations
\everydisplay\expandafter{\the\everydisplay\setcounter{relctr}{0}} %% <- reset every eq
\renewcommand*\therelctr{\alph{relctr}} %% <- label format

\newcommand\labelrel[2]{%
  \begingroup
    \refstepcounter{relctr}%
    \stackrel{\textnormal{(\alph{relctr})}}{\mathstrut{#1}}%
    \originallabel{#2}%
  \endgroup
}
\AtBeginDocument{\let\originallabel\label} %% <- store original definition

\begin{document}

  Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
  eirmod invidunt, and therefore
  \begin{equation}\label{myeq}
      X \labelrel={myeq:equality} Y + Z \labelrel\leq{myeq:inequality} \ldots.
  \end{equation}
  The equality~\eqref{myeq:equality} in equation~\eqref{myeq} was proven in Theorem~123,
  and the inequality~\eqref{myeq:inequality} is self-explanatory.
  Here is another equation,
  \[
      f(A \cap B) \labelrel\subseteq{somelabelname} f(A) \cap f(B)
  \]
  which contains an inclusion~\eqref{somelabelname} unrelated to equation~\eqref{myeq}.

\end{document}

在此处输入图片描述

几点说明:

  • 我使用字母而不是数字,以避免与公式编号发生冲突。要使用数字,请将上面的(两个实例)替换\alph\arabic

  • 每个方程中的标签都以 (a) 开头。如果您不想要这样,则应删除该\everydisplay行。如果您希望编号在每个部分的开头重新开始,则应使用\newcounter{relctr}[section]

  • 也可以将方程 (1) 中的关系称为 (1a)、(1b) 等,而无需更改其标记。这可以通过将行替换\therelctr为 来 实现\renewcommand*\therelctr{\theequation\alph{relctr}}。这确实意味着每个具有标记关系的方程都必须编号。

  • 我将 的定义存储\label在 中,\originallabel因为amsmath重新定义了\label方程式中的宏。我这样做是\AtBeginDocument为了防止hyperref在此代码之后加载的任何包(如 )更改定义。

  • 我使用\mathstrut(相当于\phantom()来确保每个标签都放置在相同的高度,而与其装饰的关系的高度无关。如果您不喜欢这样,可以将其删除。

  • \begingroup\endgroup限制 的影响范围\refstepcounter。如果没有它们,就不可能再引用方程本身。


答案2

也许这就是您要找的?我假设您基本上想将方程参考编号(通常出现在方程的右侧)更改为位于等号上方。

  • 像平常一样标记方程式\label{...}
  • 用于\stackrel{(\ref{...})}{=}获取等号上方的参考数字。
  • 在等式的末尾使用自定义命令\nonumberthis,抑制参考数字出现在右侧使计数器继续运转。

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}

\newcommand\nonumberthis{\nonumber\refstepcounter{equation}}

\begin{document}

\noindent \ldots We arrive to relationship
%
\begin{equation}\label{mylabel}
   X \stackrel{(\ref{mylabel})}{=} Y + Z = \ldots, \nonumberthis
\end{equation}
%
where in (\ref{mylabel}) we used Theorem 123. 
And another example
%
\begin{equation}\label{mylabel2}
   A \stackrel{(\ref{mylabel2})}{=} B + C = \ldots, \nonumberthis
\end{equation}
%
is given by the reference (\ref{mylabel2}).

\end{document}

\nonumberthis命令基于这个答案

答案3

您还没有说明您认为什么是“最短”、“方便”、“智能”或“引用”。不过,我假设一个\numeq采用一个参数的 LaTeX 宏(在下面的示例中调用)相当接近满足您的目标。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\newcommand\numeq[1]%
  {\stackrel{\scriptscriptstyle(\mkern-1.5mu#1\mkern-1.5mu)}{=}}
\begin{document}
\begin{equation} \label{eq:xyz}
X \numeq{n} Y+Z
\end{equation}
A cross-reference to equation \eqref{eq:xyz}.
\end{document}

答案4

非常简单amsmath

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\begin{equation}
\label{eq1}
  x = y + z
\end{equation}

\dots\ We arrive to relationship
\[
  X \overset{\eqref{eq1}}{=} Y + Z = \dots\,.
\]
where in \eqref{eq1} we used Theorem 123.

\end{document}

示例代码的输出

相关内容