如果这是重复的,请原谅,但我找不到它。
我有一份文档,使用 amsmath 对章节、章节和小节进行编号,并且所有内容(定理、引理等)都使用相同的编号系统。
我有一章没有章节或小节(这确实有道理,老实说,这是一个 5-6 页的定理,与其他任何东西都格格不入)。问题是这里的编号从 4.0.13 开始(大概是因为我没有重置小节计数器)。
我有两个选择 - 要么将其设置为 4.1.1,要么更好,在本章中只有两个部分编号,以便定理/引理可以编号为 4.1、4.2 等等。我已经阅读了不少关于 \numberwithin 和 \counterwithin 的帖子,但我很困惑。
下面的例子 - 这里第 2 章中的 thm 是 2.0.3,但我希望它是 2.1.1 或者最好是 2.1。
\documentclass{scrreprt}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\theoremstyle{plain}% default
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\newtheorem{prop}[thm]{Proposition}
\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\newtheorem{conj}{Conjecture}[section]
\newtheorem{exmp}{Example}[section]
\theoremstyle{remark}
\newtheorem*{rem}{Remark}
\newtheorem*{note}{Note}
\newtheorem{case}{Case}
\makeatletter\@addtoreset{case}{thm}\makeatother
\makeatletter
\def\thm@space@setup{%
\thm@preskip=\parskip \thm@postskip=0pt}
\makeatother
\makeatletter\@addtoreset{case}{lem}\makeatother
\makeatletter
\def\thm@space@setup{%
\thm@preskip=\parskip \thm@postskip=0pt}
\makeatother
\begin{document}
\begin{chapter}{chap title}
\begin{section}{title blah}
\begin{thm}
hello
\end{thm}
\begin{subsection}{title blahh}
\begin{lem}
hi
\end{lem}
\end{subsection}
\end{section}
\end{chapter}
\begin{chapter}{chap title 2}
\begin{thm}
hello again
\end{thm}
\end{chapter}
\end{document}
答案1
没有chapter
、section
或subsection
环境。不要使用\begin{chapter}
和 类似的结构,即使它们看起来可以工作。
您可以自动决定编号:如果章节计数器为零(如之后),则\chapter
定理将编号为“章节.定理”,否则编号为“章节.节.定理”。对于定理位于章节内的章节,无需手动重置。
我删除了该设置,\thm@space@setup
因为我真的不明白它们应该做什么。
\documentclass{scrreprt}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\theoremstyle{plain}% default
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\newtheorem{prop}[thm]{Proposition}
\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\newtheorem{conj}{Conjecture}[section]
\newtheorem{exmp}{Example}[section]
\theoremstyle{remark}
\newtheorem*{rem}{Remark}
\newtheorem*{note}{Note}
\newtheorem{case}{Case}[thm]
\makeatletter
\@addtoreset{thm}{chapter}
\makeatother
\renewcommand{\thethm}{%
\ifnum\value{section}=0
\thechapter.%
\else
\thesection.%
\fi
\arabic{thm}%
}
\renewcommand{\thecase}{\arabic{case}}
\begin{document}
\chapter{chap title}
\section{title blah}
\begin{thm}
hello
\end{thm}
\subsection{title blahh}
\begin{lem}
hi
\end{lem}
\chapter{chap title 2}
\begin{thm}
hello again
\end{thm}
\end{document}
case
请注意,使用每个定理重置数字会更容易。
答案2
在第 2 章之前使用该chngcntr
包并手动重置,通过\setcounter{thm}{0}
。
之后可能需要进行一些重新设置!
\documentclass{scrreprt}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{chngcntr}%
\theoremstyle{plain}% default
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\newtheorem{prop}[thm]{Proposition}
\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\newtheorem{conj}{Conjecture}[section]
\newtheorem{exmp}{Example}[section]
\theoremstyle{remark}
\newtheorem*{rem}{Remark}
\newtheorem*{note}{Note}
\newtheorem{case}{Case}
\makeatletter
\@addtoreset{case}{thm}
\makeatother
\makeatletter
\def\thm@space@setup{%
\thm@preskip=\parskip \thm@postskip=0pt}
\makeatother
\makeatletter\@addtoreset{case}{lem}\makeatother
\makeatletter
\def\thm@space@setup{%
\thm@preskip=\parskip \thm@postskip=0pt}
\makeatother
\begin{document}
\begin{chapter}{chap title}
\begin{section}{title blah}
\begin{thm}
hello
\end{thm}
\begin{subsection}{title blahh}
\begin{lem}
hi
\end{lem}
\end{subsection}
\end{section}
\end{chapter}
%%%% My addition:
\setcounter{thm}{0}
\begin{chapter}{chap title 2}
%%%% My addition:
\counterwithin{thm}{chapter}
\begin{thm}
hello again
\end{thm}
\end{chapter}
\end{document}