关于amsthm证明环境的一个问题

关于amsthm证明环境的一个问题

我想在amsthm包下的两个证明环境之间切换,例如区分\begin{proof1} ... \end{proof1}\begin{proof2} ... \end{proof2}。在这些中,我想使用不同的结束符号,如 QED 或$\blacksquare$

我该如何做呢?

答案1

您可以proofi根据以下内容定义环境proof,但需要对其进行所需的重新定义\qedsymbol

\documentclass{article}
\usepackage{amsthm}
\usepackage{amssymb}

\newenvironment{proof1}[1][\proofname]
  {\begin{proof}[#1]\renewcommand\qedsymbol{$\blacksquare$}}
  {\end{proof}}
\newenvironment{proof2}[1][\proofname]
  {\begin{proof}[#1]\renewcommand\qedsymbol{\textsc{qed}}}
  {\end{proof}}

\begin{document}

\begin{proof}
Test text.
\end{proof}

\begin{proof1}
Test text.
\end{proof1}

\begin{proof2}
Test text.
\end{proof2}

\end{document}

在此处输入图片描述

使用xparse,您可以轻松设置另一个可选参数,以便根据需要指定符号;类似这样的内容:

\documentclass{article}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{xparse}

\NewDocumentEnvironment{proofi}{d()O{\proofname}}
  {\begin{proof}[#2]\IfNoValueTF{#1}{}{\renewcommand\qedsymbol{#1}}}
  {\end{proof}}

\begin{document}

\begin{proofi}
Test text.
\end{proofi}

\begin{proofi}($\blacksquare$)
Test text.
\end{proofi}

\begin{proofi}(\textsc{qed})
Test text.
\end{proofi}

\end{document}

在此处输入图片描述

或者重新定义proof

\usepackage{letltxmacro}
\usepackage{xparse}

\LetLtxMacro\oldproof\proof
\let\oldendproof\endproof

\RenewDocumentEnvironment{proof}{d()O{\proofname}}
  {\oldproof[#2]\IfNoValueTF{#1}{}{\renewcommand\qedsymbol{#1}}}
  {\oldendproof}

相关内容