使用公式计数器对小节和小节进行编号

使用公式计数器对小节和小节进行编号

我想用相同的计数器对一个部分内的所有内容进行编号:定理、定义、方程、小节等。所有编号以供参考的内容(浮点数除外,因为它们“不按顺序排列”)。我正在使用该类amsbook

我已将大多数事物放入等式计数器中,如下所示:

\documentclass{amsbook}

\numberwithin{section}{chapter}
\numberwithin{equation}{section}

\newtheorem{thm}[equation]{Theorem}
\newtheorem{crl}[equation]{Corollary}

\theoremstyle{definition}
\newtheorem{dfn}[equation]{Definition}

\begin{document}
\chapter{Introduction}
\section{Foo} % 1.1
\begin{thm} % 1.1.1
Some sets are finite.
\end{thm}
\begin{crl} % 1.1.2
Not all sets are infinite.
\end{crl}

\subsection{Bar} % 1.1.1
We find that
\begin{equation} % 1.1.3
2 = 1 + 1.
\end{equation}

\subsubsection{Baz} % 1.1.1.1
Furthermore,
\begin{equation} % 1.1.4
1 + 1 = 2.
\end{equation}

\section{Quux} % 1.2
Open questions remain.

\end{document}

在示例中,我希望子节 Bar 的编号为 1.1.3,其方程式为 1.1.4,子节 Baz 的编号为 1.1.5,其方程式为 1.1.6。然后所有内容都会随着新节重置。

答案1

您可以equation为计数器创建别名,subsection并为 创建相同的别名subsubsection,但您还需要从 的重置列表中删除该计数器subsection

\documentclass{amsbook}
\usepackage{chngcntr}

\renewcommand{\thesection}{\thechapter.\arabic{section}}
\counterwithout{subsubsection}{subsection}
\makeatletter
\let\c@equation\c@subsection
\let\theequation\thesubsection
\let\c@subsubsection\c@subsection
\let\thesubsubsection\thesubsection
\makeatother

\newtheorem{thm}[subsection]{Theorem}
\newtheorem{crl}[subsection]{Corollary}

\theoremstyle{definition}
\newtheorem{dfn}[subsection]{Definition}

\begin{document}
\chapter{Introduction}
\section{Foo} % 1.1
\begin{thm} % 1.1.1
Some sets are finite.
\end{thm}
\begin{crl} % 1.1.2
Not all sets are infinite.
\end{crl}

\subsection{Bar} % 1.1.1
We find that
\begin{equation} % 1.1.3
2 = 1 + 1.
\end{equation}

\subsubsection{Baz} % 1.1.1.1
Furthermore,
\begin{equation} % 1.1.4
1 + 1 = 2.
\end{equation}

\section{Quux} % 1.2
Open questions remain.

\end{document}

在此处输入图片描述

答案2

一种方法是使用类似以下的方式劫持部分命令:

\let\realsubsection\subsection% keep a copy
\def\subsection{\setcounter{subsection}{\arabic{equation}}% sync the counters
   \refstepcounter{equation}%
   \realsubsection% invoke the real \section
}

这样做的目的是,每当使用计数器时,使subsection计数器等于计数器的当前值(并且还会增加计数器)。equationequation

我对您想要做的事情感到困惑\subsubsection,但是,根据您的描述,它应该与相同\subsection。对我来说,创建一个具有正确标签的子部分更有意义,这就是我的代码所做的:

在此处输入图片描述

事实上,我没有使用上面的代码,而是重写了所有内容以使用计数器subsection。这样做的原因是,如果您破解了\subsection命令,那么您还需要破解命令\subsubsection才能使其正常工作。相反,我破解了\equation,这会启动equation环境。以下是完整的 mwe:

\documentclass{amsbook}

\numberwithin{section}{chapter}
\numberwithin{equation}{section}

\newtheorem{thm}[subsection]{Theorem}
\newtheorem{crl}[subsection]{Corollary}

\theoremstyle{definition}
\newtheorem{dfn}[subsection]{Definition}

\let\realequation\equation
\def\equation{\setcounter{equation}{\arabic{subsection}}%
   \refstepcounter{subsection}%
   \realequation}

\begin{document}
\chapter{Introduction}
\section{Foo} % 1.1
\begin{thm} % 1.1.1
Some sets are finite.
\end{thm}
\begin{crl} % 1.1.2
Not all sets are infinite.
\end{crl}

\subsection{Bar} % 1.1.1
We find that
\begin{equation} % 1.1.3
2 = 1 + 1.
\end{equation}

\subsubsection{Baz} % 1.1.1.1
Furthermore,
\begin{equation} % 1.1.4
1 + 1 = 2.
\end{equation}

\section{Quux} % 1.2
Open questions remain.

\end{document}

相关内容