我正在使用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}
如果您确实想要标题,您仍然可以明确地给出它。