我使用的amsbook
类和amsthm
包如下:
\theoremstyle{plain} %% This is the default, anyway
\newtheorem{thm}[equation]{Theorem}
\newtheorem{cor}[equation]{Corollary}
\newtheorem{lem}[equation]{Lemma}
\newtheorem{prop}[equation]{Proposition}
\theoremstyle{definition}
\newtheorem{defn}[equation]{Definition}
\theoremstyle{remark}
\newtheorem{rem}[equation]{Remark}
\newtheorem{ex}[equation]{Example}
\newtheorem{exer}[equation]{Exercise}
\newtheorem{notation}[equation]{Notation}
\newtheorem{terminology}[equation]{Terminology}
%etc
我希望所有定理、推论等都编号为
- partnumber.chapternumber 当它们位于章节内,而不是任何章节、小节或“较低级别”的子小节...小节中时
- partnumber.chapternumber.sectionnumber 当它们位于某一节内,而不在任何小节、子节或“较低级别”的子小节...小节中时
- ETC
我希望方程式也能如此,但我不知道该怎么做。
答案1
请不要用部分内容重新设置章节编号;在使用这种复杂的编号方案打扰读者之前,您应该三思而后行。
\documentclass[openany]{amsbook}
\usepackage{xparse}
\newtheorem{thm}[equation]{Theorem} % one suffices for the example
\counterwithin*{equation}{subsubsection}
\renewcommand{\theequation}{%
\printuptozero{chapter,section,subsection,subsubsection}{equation}%
}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\printuptozero}{mm}
{
\clist_map_function:nN { #1 } \ujs_printuptozero:n
\arabic{#2}
}
\cs_new:Nn \ujs_printuptozero:n
{
\int_compare:nTF { \value{#1}>0 } { \arabic{#1}. } { \clist_map_break: }
}
\ExplSyntaxOff
\begin{document}
\chapter{Test}
\begin{thm}
test
\end{thm}
\begin{equation}
0=0
\end{equation}
\section{Test}
\begin{thm}
test
\end{thm}
\begin{equation}
0=0
\end{equation}
\subsection{Test}
\begin{thm}
test
\end{thm}
\begin{equation}
0=0
\end{equation}
\subsection{Test}
\begin{thm}
test
\end{thm}
\begin{equation}
0=0
\end{equation}
\chapter{Test}
\begin{thm}
test
\end{thm}
\begin{equation}
0=0
\end{equation}
\section{Test}
\begin{thm}
test
\end{thm}
\begin{equation}
0=0
\end{equation}
\end{document}
与\counterwithin*{equation}{subsubsection}
我们隶属equation
各部门及以上级别subsubsection
。
接下来我重新定义\theequation
依次扫描分段计数器的值;如果值为正,则打印数字和句点;否则停止循环。最后equation
打印值。
该openany
选项仅用于使示例适合两页并具有一张输出图片。