子方程式:方程式编号不是从 1 开始

子方程式:方程式编号不是从 1 开始

用户埃格尔发表了一个关于如何增加方程数量的好方法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}

相关内容