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