重命名环境然后替换原始环境

重命名环境然后替换原始环境

就我而言,我只对proof环境感兴趣,但我相信它适用于任何其他环境。

我想proof以两种不同的格式呈现环境,“默认”格式和“修改”格式。

由于我更经常使用“修改后”格式,因此我希望环境proof能够产生“修改后”格式。但是,我希望保留“默认”格式以便不时使用,例如将其更改为环境proof2

换句话说:

\begin{proof}
    % "Modified" format
\end{proof}

\begin{proof2}
    % "Default" format
\end{proof2}

作为 MWE,假设我想要使用“修改版”格式来替换证明。修改的。,并将\qedsymbol改为 a \blacksquare。我的尝试是:

\documentclass[a4paper, 12pt]{article}
\usepackage{amsmath, amsthm}

\newenvironment{proof2}[1][Proof]
  {\begin{proof}[#1]}
  {\end{proof}}
\renewenvironment{proof}[1][Modified]
  {\begin{proof2}[#1]\renewcommand{\qedsymbol}{$\blacksquare$}}
  {\end{proof2}}

\begin{document}

\begin{proof}
    ``Modified'' format.
\end{proof}

\begin{proof2}
    ``Default'' format.
\end{proof2}

\end{document}

它不起作用(超出 TeX 容量),可能是由于循环定义造成的。

任何帮助都将受到赞赏。

答案1

是的,你有一个循环定义。解决方案:为命令创建别名以保存原始命令。

\documentclass[a4paper, 12pt]{article}
\usepackage{amsmath, amsthm, amssymb}

% alias the \proof and \endproof commands
\NewCommandCopy{\amsthmproof}{\proof}
\NewCommandCopy{\endamsthmproof}{\endproof}

\renewenvironment{proof}[1][Modified]
  {\renewcommand{\qedsymbol}{$\blacksquare$}\amsthmproof[#1]}
  {\endamsthmproof}
\newenvironment{proof2}
  {\amsthmproof}
  {\endamsthmproof}

\begin{document}

\begin{proof}
    ``Modified'' format.
\end{proof}

\begin{proof2}
    ``Default'' format.
\end{proof2}

\end{document}

在此处输入图片描述

即使似乎为了工作,不要使用"结束引号,而是使用''(两个撇号)。

警告

如果你在 2020-10-01 之前安装了较旧的 TeX 和 LaTeX,你可以这样做

% alias the \proof and \endproof commands
\usepackage{letltxmacro}
\LetLtxMacro{\amsthmproof}{\proof}
\LetLtxMacro{\endamsthmproof}{\endproof}

相关内容