将一个环境复制到另一个环境并对原始环境进行更改

将一个环境复制到另一个环境并对原始环境进行更改

我想定义一个新环境,oldproof其名称基本上是proof环境,然后对证明环境进行更改。我仍然希望能够使用访问原始证明环境oldproof。我该怎么做?

答案1

环境<name>基本上会转换为两个命令:\<name>\end<name>,前者将处理环境的最终参数。然后一个选项是将\let原始命令转换为其他命令;但是,由于proof具有可选参数,因此不能简单地使用\let\proof必须采取额外的预防措施,并且可以\LetLtxMacroletltxmacro包中使用。

\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?更详细地说,他的另一个回答“闭”(平方)根符号

相关内容