我一直在考虑让章节决定定理等的编号样式,含义如下。如果有子章节,枚举应该是section.subsection.number
,例如“1.1.1 定理”。如果没有子章节,则应该是section.number
,例如“2.1 定理”。我猜只需要一个小的 if 子句,但我从未在 latex 中做过任何真正的编程,非常感谢任何帮助。提前致谢。
答案1
您可以通过查看计数器的值来确定您是否处于\section
或级别。如果它是 0(发出时完成)- 您在 内,否则假定您处于 内。\subsection
subsection
\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}