引用具有多个标签的方程式

引用具有多个标签的方程式

我想排版一个与前一个方程等价(但不完全相同)的方程,对它们分别进行编号,但承认它们的等价性。我这样做如下:

\begin{align}
y &= x
\label{eq1}
\end{align}

\begin{align}
y &= z
\addtocounter{equation}{1}\tag{{\theequation}, =  \ref{eq1}}
\label{eq2}
\end{align}

我的目标(和得到)是输出类似

y = x    (1)
text blah blah blah
y = z    (2,=1)

我的问题是我想引用第二个方程

Using eqtn~\ref{eq2} never works

要得到

Using eqtn 2 never works

但我实际得到的是

Using eqtn 2,=1 never works.

有什么建议么?

答案1

我不确定这是否会对读者有所帮助:同一个等式的两个数字可能会造成混淆。

如果该等式首次出现在一些介绍性材料中,我会不给它编号,并解释说它将以“等式 (3)”或其他形式重新出现。

不过这里有一个方法可以如你所愿,试一试然后再考虑是否可以使用它。

这个想法是在本地更改\tagform@负责排版方程数字的命令,\tag{\theequation}在执行步骤后调用

警告不要输入\eqref参数\specialtag,因为它使用\tagform@

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\let\amsmath@tagform@\tagform@
\newcommand{\specialtag}[1]{%
  \def\tagform@##1{\amsmath@tagform@{##1#1}}%
}
\makeatother

\begin{document}

\begin{equation}
1=1\label{eq1}
\end{equation}

\begin{equation}
1=1\specialtag{, = \ref{eq1}}\label{eq2}
\end{equation}

Let's see: \eqref{eq1} and \eqref{eq2}

\end{document}

在此处输入图片描述


因为fleqn它更加复杂,我找不到通用的解决方案;以下适用于equation

\documentclass[fleqn]{article}
\usepackage{amsmath}

\makeatletter
\newif\if@specialtag
\newcommand{\specialtag}[1]{%
  \global\@specialtagtrue
  \gdef\@thespecialtag{#1}%
}
\def\endmathdisplay@fleqn{%
  $\hfil\hskip\@mathmargin\egroup
  \ifnum\badness<\inf@bad \let\too@wide\@ne \else \let\too@wide\z@ \fi
  \ifx\@empty\df@tag
  \else
    \setbox4\hbox{%
      \if@specialtag\@xp\def\@xp\theequation\@xp{\theequation\@thespecialtag}\fi
      \df@tag
      \global\@specialtagfalse
      \ifx\df@label\@empty \else \@xp\ltx@label\@xp{\df@label}\fi
    }%
  \fi
  \csname emdf@%
    \ifx\df@tag\@empty U\else \iftagsleft@ L\else R\fi\fi
  \endcsname
}
\makeatother

\begin{document}

\begin{equation}
1=1\label{eq1}
\end{equation}

\begin{equation}
1=1\specialtag{, = \ref{eq1}}\label{eq2}
\end{equation}

Let's see: \eqref{eq1} and \eqref{eq2}

\end{document}

相关内容