根据节或小节中的嵌套切换定理类环境的编号方法

根据节或小节中的嵌套切换定理类环境的编号方法

我一直在考虑让章节决定定理等的编号样式,含义如下。如果有子章节,枚举应该是section.subsection.number,例如“1.1.1 定理”。如果没有子章节,则应该是section.number,例如“2.1 定理”。我猜只需要一个小的 if 子句,但我从未在 latex 中做过任何真正的编程,非常感谢任何帮助。提前致谢。

答案1

您可以通过查看计数器的值来确定您是否处于\section或级别。如果它是 0(发出时完成)- 您在 内,否则假定您处于 内。\subsectionsubsection\section\section\subsection

此外,您可以theorem在每次发出\section\subsection使用时重置计数器chngcntr\counterwithin*{theorem}{<sec unit>}宏。带星号的版本不会更改计数器表示;您可以手动使用条件来执行此操作,如第一段所述。

在此处输入图片描述

\documentclass{article}

\usepackage{amsthm,chngcntr}

\newtheorem{theorem}{Theorem}
\counterwithin*{theorem}{section}
\counterwithin*{theorem}{subsection}
\makeatletter
\renewcommand{\thetheorem}{%
  \ifnum\value{subsection}=0
    \thesection
  \else
    \thesubsection
  \fi
  .\arabic{theorem}%
}

\begin{document}

See Theorems~\ref{thm:first} and \ref{thm:second}.

\section{First section}

\begin{theorem}\label{thm:first}\end{theorem}

\subsection{First subsection}

\begin{theorem}\label{thm:second}\end{theorem}
\begin{theorem}\end{theorem}

\subsection{Second subsection}

\begin{theorem}\end{theorem}
\begin{theorem}\end{theorem}

\section{Second section}

\begin{theorem}\end{theorem}
\begin{theorem}\end{theorem}

\end{document}

相关内容