在证明环境中抑制证明标题

在证明环境中抑制证明标题

我正在使用proof定义的环境\usepackage{amssymb,amsthm},主要是为了将 qed 框自动插入到正确的位置。

但我不想在数学之前有一个标题(或空白行)。所以我使用

\begin{proof}[]

中没有任何内容[]。但生成的文本中仍然会出现句号。有没有更好的方法可以完全隐藏该行?

答案1

一种选择是定义一个新的proofw环境(这样你仍然可以访问标准proof),其方式类似于amsmthm的证明,但隐藏名称和标点符号:

\documentclass{article}
\usepackage{amsthm}

\makeatletter
\newenvironment{proofw}{\par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \trivlist
  \item[]\ignorespaces
}{%
  \popQED\endtrivlist\@endpefalse
}
\makeatother

\begin{document}

\begin{proof}
A standard test proof.
\end{proof}

\begin{proofw}
A modified test proof.
\end{proofw}

\end{document}

在此处输入图片描述

如果你想要更多的定制自由,另一个选择是使用thmtools作为定义环境的前端,amsthm and随意控制所有属性(前后间距、添加结束标记、无头):

\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
  spaceabove=0pt, 
  spacebelow=0pt,
  bodyfont=\normalfont,
  postheadspace=0em,
  qed=\qedsymbol,
  headpunct={},
  headformat={}
]{withouthead}
\declaretheorem[style=withouthead]{proofw}

\begin{document}

\begin{proof}
A standard test proof.
\end{proof}

\begin{proofw}
A modified test proof.
\end{proofw}

\end{document}

答案2

您可以在股票proof环境中通过添加适当的定义来完成此操作\proofname

由于proof

\item[\hskip\labelsep\itshape#1\@addpunct{.}]

其中,是具有默认值的#1可选参数,我们需要做的就是消除间距,并设置足够高的空间因子,以使标点符号已经存在。\begin{proof}\proofname\@addpunct

\documentclass{article}
\usepackage{amsthm}

\usepackage{lipsum} % just for mock text

\newtheorem{thm}{Theorem}
\renewcommand{\proofname}{\hskip-\labelsep\spacefactor3000 }

\begin{document}

\begin{thm}
\lipsum*[2]
\end{thm}

\begin{proof}
\lipsum*[3]
\end{proof}

\begin{proof}[Proof of the main theorem]
This one is obvious.
\end{proof}

\end{document}

如果您确实想要标题,您仍然可以明确地给出它。

在此处输入图片描述

相关内容