我想要具有以下数字的定理/例子:
Theorem 1.1.
Example 1.2.1.
Example 1.2.2.
Theorem 1.3.
但是,我只能获得:
Theorem 1.1.
Example 1.1.1.
Example 1.1.2.
Theorem 1.2.
这是我的代码:
\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}[section]
\newtheorem{exmp}{Example}[thm]
\begin{document}
\section{Section 1}
\begin{thm}
\end{thm}
\begin{exmp}
\end{exmp}
\begin{exmp}
\end{exmp}
\begin{thm}
\end{thm}
\end{document}
提前致谢。
答案1
以下解决方案使用了该etoolbox
包及其宏。具体来说,如果以下两个条件之一为真,则\BeforeBeginEnvironment
下面显示的附加前导代码用于在环境thm
开始时步进计数器:exmp
环境
thm
是最近执行的,即在环境发生之前的某个地方exmp
。相反,如果当前exmp
环境之前有另一个exmp
环境,则thm
计数器不会递增。环境
exmp
发生前环境thm
发生在当前部分内。
\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}[section]
\newtheorem{exmp}{Example}[thm]
%% start of new code block
\usepackage{etoolbox} % for '\BeforeBeginEnvironment' macro
\newif\ifThmRecent\ThmRecenttrue % initiate the conditional
\BeforeBeginEnvironment{thm}{\ThmRecenttrue} % set to 'true'
\BeforeBeginEnvironment{exmp}{%
\ifThmRecent
\ThmRecentfalse
\stepcounter{thm}
\else
\ifnum\value{thm}=0 \stepcounter{thm} \fi
\fi
}
%% end of new code block
\begin{document}
\section{Uno}
\begin{thm}\end{thm}
\begin{exmp}\end{exmp}
\begin{exmp}\end{exmp}
\begin{thm}\end{thm}
\section{Due}
\begin{thm}\end{thm}
\begin{exmp}\end{exmp}
\begin{thm}\end{thm}
\section{Tre}
\begin{exmp}\end{exmp}
\begin{exmp}\end{exmp}
\begin{thm}\end{thm}
\end{document}