用户埃格尔发表了一个关于如何增加方程数量的好方法subequations
。
最小工作示例(MWE):
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\newcommand{\advanceparent}{%
\stepcounter{parentequation}%
\setcounter{equation}{0}%
\xdef\theparentequation{\arabic{parentequation}}%
}
\begin{document}
\begin{subequations}
\begin{alignat}{3}
\advanceparent
&& 1 & =1 &\quad & (\text{Example text}) \\
&& 2 & =2 & & (\text{Example text}) \\
\advanceparent
&& 3 & =3 & & (\text{Example text}) \\
&& 4 & =4 & & (\text{Example text})
\end{alignat}
\end{subequations}
\end{document}
结果截图:
问题说明:
正如您在屏幕截图中看到的,甚至第一个等式都是以 2 开头而不是 1 开头。我曾尝试修复此行为,但问题并未得到解决。
如何修复代码以便编号从 1 开始并继续按照前一个文档的编号顺序?
答案1
环境subequations
允许在启动后立即使用\label
,以便全局引用父编号。链接的答案利用了这个想法。
你不需要这个,所以你必须明确地开始业务。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{etoolbox}
\newcommand{\advanceparent}{%
\stepcounter{parentequation}%
\startparent
}
\newcommand{\startparent}{%
\setcounter{equation}{0}%
\xdef\theparentequation{\arabic{parentequation}}%
}
\begin{document}
\begin{subequations}
\begin{alignat}{2}
\startparent
1 & =1 &\quad & \text{(Example text)} \\
2 & =2 & & \text{(Example text)} \\
\advanceparent
3 & =3 & & \text{(Example text)} \\
4 & =4 & & \text{(Example text)}
\end{alignat}
\end{subequations}
\end{document}
答案2
您可以减少环境内的计数器subequation
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\newcommand{\advanceparent}{%
\stepcounter{parentequation}%
\setcounter{equation}{0}%
\xdef\theparentequation{\arabic{parentequation}}%
}
\begin{document}
\begin{subequations}
\addtocounter{parentequation}{-1}%
\begin{alignat}{3}
\advanceparent
&& 1 & =1 &\quad & (\text{Example text}) \\
&& 2 & =2 & & (\text{Example text}) \\
\advanceparent
&& 3 & =3 & & (\text{Example text}) \\
&& 4 & =4 & & (\text{Example text})
\end{alignat}
\end{subequations}
\end{document}
如果你不想在每一组方程式上手动执行此操作,那么你可以将其挂接到环境中etoolbox
。在示例中,我使用了的开始,alignat
因为的开始subequations
仍然太早(计数器在此之后设置)。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{etoolbox}
\AtBeginEnvironment{alignat}{\addtocounter{parentequation}{-1}}
\newcommand{\advanceparent}{%
\stepcounter{parentequation}%
\setcounter{equation}{0}%
\xdef\theparentequation{\arabic{parentequation}}%
}
\begin{document}
\begin{subequations}
%\addtocounter{parentequation}{-1}% no longer needed
\begin{alignat}{3}
\advanceparent
&& 1 & =1 &\quad & (\text{Example text}) \\
&& 2 & =2 & & (\text{Example text}) \\
\advanceparent
&& 3 & =3 & & (\text{Example text}) \\
&& 4 & =4 & & (\text{Example text})
\end{alignat}
\end{subequations}
\end{document}