LaTeX 中的定理/示例编号

LaTeX 中的定理/示例编号

我想要具有以下数字的定理/例子:

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}

相关内容