定理-引理-证明环境

定理-引理-证明环境

以下是代码:

\documentclass{article}


\usepackage{amssymb,latexsym,amsmath} 

\usepackage{ntheorem}
\theorembodyfont{\upshape}
\newtheorem*{theorem}{Theorem:}

\newtheorem*{lemma}{Lemma:}

\newenvironment{proof}{\paragraph{\ Proof:}}{\hfill$\square$}

\RequirePackage{hyperref}
\usepackage[nameinlink]{cleveref}

\begin{document}

\begin{lemma} Here is the statement of the lemma.\label{lemma}
\end{lemma}
\begin{theorem}Here is the statement of the theorem.
\end{theorem}

\begin{proof}This is the proof of the theorem using \Cref{lemma}
\end{proof}
\end{document}

虽然我没有对引理进行编号,\newtheorem*但在定理证明中引用引理时,Lemma 1出现了。我想看看Lemma,之后没有编号。

我非常感谢您提供的任何帮助。

答案1

我承认我不确定你为什么要使用cleveref这个。如果你只使用无数字样式,那么你可能只使用一次环境。所以真的没有必要自动“检测”引用类型!但既然你要求了,那就在这里。

\documentclass{article}

\usepackage{amssymb,latexsym,amsmath} 

\usepackage{ntheorem}
\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}

\theoremstyle{nonumberplain}   % note 1
\theorembodyfont{\normalfont}
\theoremseparator{:}           % note 2
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}

\theoremsymbol{\ensuremath{\color{lightgray}\blacksquare}}
\newtheorem{proof}{Proof}

\Crefformat{lemma}{#2Lemma#3}   % note 3
\crefformat{lemma}{#2lemma#3}

\begin{document}

\begin{lemma} Here is the statement of the lemma.\label{lemma}
\end{lemma}
\begin{theorem}Here is the statement of the theorem.
\end{theorem}

\begin{proof}This is the proof of the theorem using \Cref{lemma}
\end{proof}
\end{document}
  1. 由于\newtheorem*无论如何您都需要定义证明环境,并且看起来您对所有证明环境都使用或多或少相同的风格,因此我指定了风格nonumberplain
  2. 不要在定理名称中编码冒号,而最好使用来\theoremseparator指定它。
  3. ntheorem这是和之间的区别amsthm。在后者中,使用创建的定理\newtheorem*没有引用计数器,因此无法交叉引用。ntheorem计数器仍然存在,只是不显示。cleveref然而根本不检测定理样式(事实上,它并不关心样式是什么)。所以你必须自己定义一个相应的\Crefformat\crefformat。有关其工作原理的详细信息,请参阅手册的第 8.2.1 节cleveref

相关内容