我想在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}