我如何使未来的方程式重新编号为先前方程式的延伸?

我如何使未来的方程式重新编号为先前方程式的延伸?

我希望自动而不是手动执行以下操作

\documentclass{article}
\usepackage{amsmath}

\begin{document}
These equations are pretty important.

    \begin{align}
        \label{eqn:one}     a+b&=c\\
        \label{eqn:two}     d+e&=f\\
        \label{eqn:three}   g+h&=i
    \end{align}

But as it turns out, we can actually do better by recalling
    that $a=1$, so we have

    \begin{equation*}
        \tag{\ref{eqn:one}A}
            1+b=c\\
    \end{equation*}

Furthermore, $c=d=e=2$, so we have

    \begin{align*}
        \tag{\ref{eqn:one}B}    1+b&=2\\
        \tag{\ref{eqn:two}A}    2+2&=f
    \end{align*}

\end{document}

在此处输入图片描述

换句话说,我想提供一个开关,让方程式根据前一个方程式的迭代来显示数字。非要求:

  • 我可以手动指示它哪个方程是它的祖先;我不需要它自动“弄清楚”。
  • 我也不关心这些数字的格式是什么,因为我认为任何解决方案都会使其易于改变(例如,我对 1.1、1.2 而不是 1A、1B 感到满意)。
  • 最后,没有必要支持自动重新标记,因为我可以手动重新标记重要的未来迭代,只要标签“抓取”参考文献中标记显示的数字即可。

要求:

  • 至关重要的一件事是,我想自动化子编号过程,这样我就不会冒险通过移动/删除方程式来搞乱它。

不幸的是我不知道这是什么称为。子引用方程式?自引用方程式编号?

答案1

\documentclass{article}
\usepackage{amsmath}

\def\subeqncount#1{%
\newcounter{sub:#1}%
\expandafter\def\csname thesub:#1\endcsname{\ref{#1}\Alph{sub:#1}}}

\def\subeqntag#1{%
\refstepcounter{sub:#1}%
\tag{\csname thesub:#1\endcsname}}


\subeqncount{eqn:one}
\subeqncount{eqn:two}

\begin{document}
These equations are pretty important.

    \begin{align}
        \label{eqn:one}     a+b&=c\\
        \label{eqn:two}     d+e&=f\\
        \label{eqn:three}   g+h&=i
    \end{align}

But as it turns out, we can actually do better by recalling
    that $a=1$, so we have

    \begin{equation*}
           \subeqntag{eqn:one}
            1+b=c\\
    \end{equation*}

Furthermore, $c=d=e=2$, so we have

    \begin{align*}
        \subeqntag{eqn:one}    1+b&=2\\
        \subeqntag{eqn:two}    2+2&=f
    \end{align*}

\end{document}

相关内容