![使用 ntheorem 进行常见编号](https://linux22.com/image/263528/%E4%BD%BF%E7%94%A8%20ntheorem%20%E8%BF%9B%E8%A1%8C%E5%B8%B8%E8%A7%81%E7%BC%96%E5%8F%B7.png)
我有完全相同的问题,详见常见的、按节对定理、引理等进行编号。,但我正在使用ntheorem
,因此无法使用已接受的答案代码。有人知道如何将其适应这种情况ntheorem
吗?谢谢!
这是 MWE
\documentclass{article}
\usepackage{amsmath,amssymb,amscd,thmtools,amscd}
\usepackage{eucal}
\usepackage[thmmarks]{ntheorem}
\newcounter{dummy} \numberwithin{dummy}{section}
\theoremprework{\setlength
\theorempreskipamount{10 pt}\setlength\theorempostskipamount{10 pt}}
\theoremstyle{plain}
\theorembodyfont{\upshape}
\theoremsymbol{\ensuremath{\clubsuit}}
\theoremseparator{:}
\newtheorem{example}{Example}[dummy][subsection]
\theoremstyle{plain}
\theorembodyfont{\upshape}
\theoremsymbol{\ensuremath{\blacklozenge}}
\theoremseparator{:}
\newtheorem{remark}{Remark}[dummy][subsection]
\theoremprework{\setlength\theorempreskipamount{10 pt}}
\theoremstyle{plain}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{theorem}{Theorem}[dummy][subsection]
\theoremstyle{plain}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{prop}{Proposition}[dummy][subsection]
\theoremstyle{plain}
\theoremheaderfont{\upshape \bfseries}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{corollary}{Corollary}[dummy][subsection]
\theoremstyle{plain}
\theoremheaderfont{\upshape \bfseries}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{lemma}{Lemma}[dummy][subsection]
\begin{document}
\begin{theorem} Hey
\end{theorem}
\begin{lemma}I
\end{lemma}
\begin{prop}Just
\end{prop}
\begin{remark}Met
\end{remark}
\begin{example}You
\end{example}
\end{document}
最后我希望它看起来像
1 第一部分
1.1 第一小节
定理 1.1.1
命题 1.1.2
引理 1.1.3
1.2 第二小节
定理 1.2.1
命题 1.2.2
引理 1.2.3
答案1
从你的代码来看,你似乎希望每个theorem-like
环境都继承计数器subsection
。因此,我使用了
\newcounter{dummy}
\numberwithin{dummy}{subsection}
在下面。
请注意,您可以使用
\newtheorem{example}[dummy]{Example}
它告诉newtheorem
命令让example
计数器继承计数器dummy
,但不
\newtheorem{example}{Example}[dummy][subsection]
因为这是未定义的。
以下是完整的 MWE:
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage[thmmarks]{ntheorem}
\newcounter{dummy}
\numberwithin{dummy}{subsection}
\theoremprework{\setlength
\theorempreskipamount{10 pt}\setlength\theorempostskipamount{10 pt}}
\theoremstyle{plain}
\theorembodyfont{\upshape}
\theoremsymbol{\ensuremath{\clubsuit}}
\theoremseparator{:}
\newtheorem{example}[dummy]{Example}
\theoremstyle{plain}
\theorembodyfont{\upshape}
\theoremsymbol{\ensuremath{\blacklozenge}}
\theoremseparator{:}
\newtheorem{remark}[dummy]{Remark}
\theoremprework{\setlength\theorempreskipamount{10 pt}}
\theoremstyle{plain}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{theorem}[dummy]{Theorem}
\theoremstyle{plain}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{prop}[dummy]{Proposition}
\theoremstyle{plain}
\theoremheaderfont{\upshape \bfseries}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{corollary}[dummy]{Corollary}
\theoremstyle{plain}
\theoremheaderfont{\upshape \bfseries}
\theorembodyfont{\slshape}
\theoremsymbol{}
\theoremseparator{:}
\newtheorem{lemma}[dummy]{Lemma}
\begin{document}
\section{Section}
\subsection{SubSection}
\begin{theorem} Hey
\end{theorem}
\begin{lemma}I
\end{lemma}
\begin{prop}Just
\end{prop}
\begin{remark}Met
\end{remark}
\begin{example}You
\end{example}
\subsection{SubSection}
\begin{theorem} Hey
\end{theorem}
\begin{lemma}I
\end{lemma}
\begin{prop}Just
\end{prop}
\begin{remark}Met
\end{remark}
\begin{example}You
\end{example}
\end{document}
答案2
这根本不需要引入新的计数器。 \newtheorem
有两种语法
\newtheorem{myname}{Heading}[countwithin]
和
\newtheorem{myname}[usecounter]{Heading}
因此,如果您将第一个定理定义设置为在内计数subsection
,然后告诉其他环境使用第一个环境的计数器,您将获得所需的编号。以下是代码的精简版本,删除了不相关的格式等:
\documentclass{article}
\usepackage{amssymb}
\usepackage[thmmarks]{ntheorem}
\theoremstyle{plain}
\newtheorem{example}{Example}[subsection]
\newtheorem{remark}[example]{Remark}
\newtheorem{theorem}[example]{Theorem}
\newtheorem{prop}[example]{Proposition}
\newtheorem{corollary}[example]{Corollary}
\newtheorem{lemma}[example]{Lemma}
\begin{document}
\section{First section}
\subsection{First subsection}
\begin{theorem}
Theorem
\end{theorem}
\begin{prop}
Proposition
\end{prop}
\begin{lemma}
Lemma
\end{lemma}
\subsection{Second subsection}
\begin{theorem}
Theorem
\end{theorem}
\begin{prop}
Proposition
\end{prop}
\begin{lemma}
Lemma
\end{lemma}
\section{Second section}
\subsection{Next subsection}
\begin{theorem}
Theorem
\end{theorem}
\begin{prop}
Proposition
\end{prop}
\begin{lemma}
Lemma
\end{lemma}
\subsection{Last subsection}
\begin{theorem}
Theorem
\end{theorem}
\begin{prop}
Proposition
\end{prop}
\begin{lemma}
Lemma
\end{lemma}
\end{document}
答案3
我今天遇到了类似的问题,并发现了不同的解决方案,它们既有优点也有缺点。
在里面n定理.std文件中最常见的环境,如“定理”,“引理”,“定义”等已经在英语和德语中定义(参见ntheorem 文档)。
你应该发现n定理.std在您的软件包存储库中。对我来说,它是:“C:\Program Files\MiKTeX 2.9\tex\latex\ntheorem”
那里说
\newtheorem{Theorem}{Theorem}
\newtheorem{theorem}{Theorem}
...
因此只需将这些命令更改为
\newtheorem{Theorem}{Theorem}[subsection]
\newtheorem{theorem}[Theorem]{Theorem}
...
或任何你喜欢的编号。
编辑:我忘了当您想要使用那些标准环境时您必须告诉 Latex 将 ntheorem 包含在标准选项中。
\usepackage[standard]{ntheorem}