答案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}