使用 ntheorem 进行常见编号

使用 ntheorem 进行常见编号

我有完全相同的问题,详见常见的、按节对定理、引理等进行编号。,但我正在使用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}

相关内容