定理内外的方程计数器

定理内外的方程计数器

我正在尝试设置计数器,以便方程和定理按节递增,并且方程和定理编号之间没有重叠。我还希望能够将定理中的方程编号为定理编号的子编号。

例如在第 2 节中,我可能首先有一个方程,将其标记为 (2.1),然后有一个定理,标记为 2.2,其中定理内部有一个方程,我希望将其标记为 2.2.1。

答案1

在下面的解决方案中我使用了

\numberwithin{equation}{section}            % (1.1), (1.2), etc
\newtheorem{mytheorem}[equation]{Theorem}   % Theorems share equation numbers

获取编号(1.1)(1.2)等,然后mytheorem获取与相同的数字equations

我从中借用了一些重要的代码命令行为取决于当前环境这样我的newcounter subequations就可以增加,但是仅有的当在内mytheorem

我用过etoolbox因为它的重要\appto命令。

截屏

完成 MWE:

% arara: pdflatex
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{etoolbox}
\numberwithin{equation}{section}            % (1.1), (1.2), etc
\newtheorem{mytheorem}[equation]{Theorem}   % Theorems share equation numbers

% https://tex.stackexchange.com/questions/39738/command-behavior-depending-on-current-environment
\makeatletter
\def\Mycurrentvir{document}
\def\ifenv#1{
   \def\@tempa{#1}%
   \ifx\@tempa\Mycurrentvir
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
   \fi
}
\makeatother

\newcounter{subequation}
\appto\mytheorem{\setcounter{subequation}{0}%
                               \def\Mycurrentvir{mytheorem}%
                               \renewcommand{\theequation}{\arabic{section}.\arabic{equation}.\arabic{subequation}}}
                               \AtBeginEnvironment{equation}{\ifenv{mytheorem}{\refstepcounter{subequation}\addtocounter{equation}{-1}}{}}



\begin{document}

\section{My section}
\begin{equation}\label{eq:first}
  y=mx+b
\end{equation}
\begin{mytheorem}\label{thm:test}
  \begin{equation}\label{eq:test}
    y=ax^2+bx+c
  \end{equation}
  Another equation
  \begin{equation}
    y=ax^2+bx+c
  \end{equation}
\end{mytheorem}
  \begin{equation}
    y=x^3
  \end{equation}

  \begin{itemize}
    \item First equation: \eqref{eq:first}
    \item Equation within theorem: \eqref{eq:test}
    \item Theorem reference: \ref{thm:test}
  \end{itemize}

\section{another section}
\begin{equation}
  y=mx+b
\end{equation}
\begin{mytheorem}
  \begin{equation}
    y=ax^2+bx+c
  \end{equation}
  Another equation
  \begin{equation}
    y=ax^2+bx+c
  \end{equation}
\end{mytheorem}
  \begin{equation}
    y=x^3
  \end{equation}
\end{document}

相关内容