我想定义一个新环境,oldproof
其名称基本上是proof
环境,然后对证明环境进行更改。我仍然希望能够使用访问原始证明环境oldproof
。我该怎么做?
答案1
环境<name>
基本上会转换为两个命令:\<name>
和\end<name>
,前者将处理环境的最终参数。然后一个选项是将\let
原始命令转换为其他命令;但是,由于proof
具有可选参数,因此不能简单地使用\let
;\proof
必须采取额外的预防措施,并且可以\LetLtxMacro
从letltxmacro
包中使用。
\usepackage{amsthm}
\usepackage{letltxmacro}
\LetLtxMacro\oldproof\proof
\let\endoldproof\endproof
完整的示例(我在原始环境中引入了两种字体变化,仅用于说明目的):
\documentclass{article}
\usepackage{letltxmacro}
\usepackage{amsthm}
\LetLtxMacro\oldproof\proof
\let\endoldproof\endproof
\makeatletter
\renewenvironment{proof}[1][\proofname]{\par
\pushQED{\qed}%
\normalfont\sffamily% NEW
\topsep6\p@\@plus6\p@\relax
\trivlist
\item[\hskip\labelsep
\bfseries% NEW
#1\@addpunct{.}]\ignorespaces
}{%
\popQED\endtrivlist\@endpefalse
}
\makeatother
\begin{document}
\begin{proof}
This is a modified proof environment.
\end{proof}
\begin{oldproof}
This is the original proof environment.
\end{oldproof}
\end{document}
\LetLtxMacro
关于带有可选参数的命令和有价值的信息egreg 的回答到何时使用 \LetLtxMacro?更详细地说,他的另一个回答到 “闭”(平方)根符号。