嵌套子方程 --> 以下方程得出错误数字

嵌套子方程 --> 以下方程得出错误数字

在文档中,我在另一个子方程环境中使用子方程环境 - 例如将方程编号为 (1a)、(1b)、(1ca)、(1cb)、(1d) 等。在总体层面上,所有方程都属于一个,因此它们都具有编号 (1),此外,在嵌套级别上,两个 (1c) 方程属于一个,因此为 (1ca) 和 (1cb)。这一切都运行正常,但随后的方程 - 应该是 (2)、(3) 等 - 得到了不同的数字。在下面的例子中,所有子方程之外的最后一个方程应该是数字 (2),但是当我编译它时,它得到的是数字 (5)。

我认为存在一些冲突导致错误编号,但有人能告诉我如何获得正确的编号吗?

代码如下:

\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\begin{document}
\section{Section}
\begin{subequations}
These equations are numbered as subequations:
\begin{align}
F &= m a \\
p & = mv
\end{align}
These equations are also numbered as subequations, and they are numbered correctly:
% % %
\begin{subequations}
\begin{align}
F &= m a \\
p & = mv
\end{align}
\end{subequations}
\begin{subequations}
\begin{align}
F &= m a \\
p & = mv
\end{align}
\end{subequations}
\end{subequations}
But the next equation is then not numbered correctly; It should have number (2):
\begin{align}
F &= ma
\end{align}

\end{document}

答案1

您应该定义一个subsubequations环境:问题是每次\begin{subequations}“原始”方程计数器都会步进,并且它的值会被记住在 处恢复\end{subequations}。由于您的文档中有三个\begin{subequations},因此下一个方程的数量最终为 5。

\documentclass[10pt,a4paper]{article}

\usepackage{amsmath}

\makeatletter
\newcounter{parentsubequation}% Counter for ``parent equation''.
\newenvironment{subsubequations}{%
  \refstepcounter{equation}%
  \protected@edef\theparentsubequation{\theequation}%
  \setcounter{parentsubequation}{\value{equation}}%
  \setcounter{equation}{0}%
  \def\theequation{\theparentsubequation\alph{equation}}%
  \ignorespaces
}{%
  \setcounter{equation}{\value{parentsubequation}}%
  \ignorespacesafterend
}
\makeatother

\begin{document}
\section{Section}
\begin{subequations}
These equations are numbered as subequations:
\begin{align}
F &= m a \\
p & = mv
\end{align}
These equations are also numbered as subequations, and they are numbered correctly:
% % %
\begin{subsubequations}
\begin{align}
F &= m a \\
p & = mv
\end{align}
\end{subsubequations}
\begin{subsubequations}
\begin{align}
F &= m a \\
p & = mv
\end{align}
\end{subsubequations}
\end{subequations}
But the next equation is then not numbered correctly; It should have number (2):
\begin{align}
F &= ma
\end{align}

\end{document}

相关内容