![我如何使未来的方程式重新编号为先前方程式的延伸?](https://linux22.com/image/253659/%E6%88%91%E5%A6%82%E4%BD%95%E4%BD%BF%E6%9C%AA%E6%9D%A5%E7%9A%84%E6%96%B9%E7%A8%8B%E5%BC%8F%E9%87%8D%E6%96%B0%E7%BC%96%E5%8F%B7%E4%B8%BA%E5%85%88%E5%89%8D%E6%96%B9%E7%A8%8B%E5%BC%8F%E7%9A%84%E5%BB%B6%E4%BC%B8%EF%BC%9F.png)
我希望自动而不是手动执行以下操作
\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}