如何定义如图所示的证明环境?

如何定义如图所示的证明环境?

首先,MWS 如下:

\documentclass{article}
\usepackage{lipsum}
\usepackage{amsthm}

\begin{document}
\begin{proof}
\lipsum[1]
\end{proof}

\end{document}

我想要的是如图所示的效果:

在此处输入图片描述

那么如何定义这样一个新的证明环境?

答案1

使用proof的标准。用适当的标准来代替它并不困难。amsthmtrivlistlist\leftmargin

\documentclass{article}
\usepackage{amsthm}

\usepackage{lipsum}

\makeatletter
\renewenvironment{proof}[1][\proofname]
 {%
  \par
  \pushQED{\qed}%
  \normalfont \topsep6\p@\@plus6\p@\relax
  \list{}{\leftmargin=3\parindent\labelwidth=\leftmargin}
  \item[\hskip\labelsep\itshape #1\@addpunct{.}\hfill]\ignorespaces
 }
 {%
  \popQED\endlist\@endpefalse
 }
\makeatother

\begin{document}

\noindent\rule{3\parindent}{1pt}% just to show the width of the indentation

\begin{proof}
\lipsum*[1][1-5]
\end{proof}

\begin{proof}
\lipsum*[1][1]
\begin{enumerate}
\item aaa
\item bbb\qedhere
\end{enumerate}
\end{proof}

\end{document}

在此处输入图片描述

如您所见,QED 标记位于正确的位置(并且您可以\qedhere像往常一样在自动放置不起作用的情况下使用它)。

另一个优点是,当您意识到只是在浪费空间时,您可以简单地删除代码。

答案2

latexdef -p amsthm prooflatexdef -p amsthm endproof 证明amsthm其证明环境定义如下:

\proof:
\long macro:[#1]->\par \pushQED {\qed }\normalfont \topsep 6\p@ \@plus 6\p@ \relax \trivlist \item [\hskip \labelsep \itshape #1\@addpunct {.}]\ignorespaces
\endproof:
\long macro:->\popQED \endtrivlist \@endpefalse

我们可以用 来模仿“证明”部分\makebox,并使用小页面来存放证明的内容。

\NewCommandCopy\amsproof\proof
\NewCommandCopy\amsendproof\endproof
\makeatletter
\RenewDocumentEnvironment{proof}{+b}
{%
  \par\noindent\makebox[3\parindent][l]{\itshape\proofname\@addpunct{.}\ignorespaces}\hfill%
  \begin{minipage}[t]{\dimexpr\linewidth - 3\parindent\relax}
    \pushQED{\qed} #1
  \end{minipage}
}
{\popQED\@endpefalse}
\makeatother

在此处输入图片描述

两个问题:

  • 证明的内容不会跨越不同的页面,因为它们都在一个小页面中。
  • QED 符号放在不同的行上。

相关内容