![重命名环境然后替换原始环境](https://linux22.com/image/436610/%E9%87%8D%E5%91%BD%E5%90%8D%E7%8E%AF%E5%A2%83%E7%84%B6%E5%90%8E%E6%9B%BF%E6%8D%A2%E5%8E%9F%E5%A7%8B%E7%8E%AF%E5%A2%83.png)
就我而言,我只对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}