我使用ntheorem
并定义了两个类似定理的环境(“定理”和“引理”),它们共享同一个计数器,该计数器在每个部分重置一次。此外,我还有一个根本没有计数器的证明环境。
同时我将其包括在内,thm-restate
因为我需要重复一个特定的定理。
即使我不使用thm-restate
而只是加载包,引理环境也不会打印其计数器。如果thm-restate
没有加载,则输出符合预期。或者,如果我省略将定理样式切换到nonumberplain
证明环境,计数器也会被打印。但是,在这种情况下,证明也会被编号,这是不希望的。
下面的 MWE 得出
- 项目清单
- 定理 1.1
- 引理
- 定理 1.3
- 证明
预期输出是
- 定理 1.1
- 引理 1.2
- 定理 1.3
- 证明
这意味着,共享计数器正确递增但未打印。
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[thmmarks,thref]{ntheorem}
% Option 1: Either do no use 'thm-restate' and 'lemma' will be numbered
\usepackage{thm-restate}
\theoremstyle{plain}
\theoremheaderfont{\normalfont\bfseries}
\theoremseparator{}
\theorembodyfont{\normalfont\itshape}
\theoremsymbol{}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}
% Option 2: or do not use 'nonumberplain' and 'lemma' will be numbered
\theoremstyle{nonumberplain}
\theoremheaderfont{\normalfont\scshape}
\theoremseparator{}
\theorembodyfont{\normalfont\upshape}
\theoremsymbol{\rule{1ex}{1ex}}
\newtheorem{proof}{Proof}
\begin{document}
\section{Header}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.
Curabitur dictum gravida mauris.
\begin{theorem}[Suprising Result]
Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
Donec vehicula augue eu neque.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
\end{theorem}
\begin{lemma}[Trivial Conclusion]
Mauris ut leo.
Cras viverra metus rhoncus sem.
Nulla et lectus vestibulum urna fringilla ultrices.
\end{lemma}
\begin{theorem}[Awesome Result]
Phasellus eu tellus sit amet tortor gravida placerat.
Integer sapien est, iaculis in, pretium quis, viverra ac, nunc.
Praesent eget sem vel leo ultrices bibendum.
\end{theorem}
\begin{proof}
Aenean faucibus.
Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.
Curabitur auctor semper nulla.
\end{proof}
\end{document}
答案1
我终于找到了一个解决方法。序言中的定义需要重新排序:首先定义未编号的定理类环境,然后定义剩下的一个。但是,这种解决方法仅在只有一个计数器由所有编号的定理类环境共享时才有效。
\theoremstyle{nonumberplain}
\theoremheaderfont{\normalfont\scshape}
\theoremseparator{}
\theorembodyfont{\normalfont\upshape}
\theoremsymbol{\rule{1ex}{1ex}}
\newtheorem{proof}{Proof}
\theoremstyle{plain}
\theoremheaderfont{\normalfont\bfseries}
\theoremseparator{}
\theorembodyfont{\normalfont\itshape}
\theoremsymbol{}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}
答案2
我建议使用amsthm
而不是ntheorem
。该thmmarks
选项应用了几种技巧来实现自动标记(顺便说一句,这并不总是有效)。proof
在我看来,仅使用它来定义标记是一种浪费。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{thm-restate}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}
\begin{document}
\section{Header}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.
Curabitur dictum gravida mauris.
\begin{theorem}[Suprising Result]
Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
Donec vehicula augue eu neque.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
\end{theorem}
\begin{lemma}[Trivial Conclusion]
Mauris ut leo.
Cras viverra metus rhoncus sem.
Nulla et lectus vestibulum urna fringilla ultrices.
\end{lemma}
\begin{restatable}[Awesome Result]{theorem}{awesome}
Phasellus eu tellus sit amet tortor gravida placerat.
Integer sapien est, iaculis in, pretium quis, viverra ac, nunc.
Praesent eget sem vel leo ultrices bibendum.
\end{restatable}
\begin{proof}
Aenean faucibus.
Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.
Curabitur auctor semper nulla.
\end{proof}
\awesome*
\end{document}