如何重新定义我之前在其他地方定义的自定义环境?

如何重新定义我之前在其他地方定义的自定义环境?

我为家庭作业创建了一个自定义课程,并定义了如下解决方案环境:

\def\qed{\ensuremath{\square}} % <-QED Symbol
\newenvironment{solution}{%  <-Solution
  \par\addvspace{1em}
  \itshape{Solution:}}
  {\par\normalfont\hfill\qed\par\addvspace{\medskipamount}}%

这旨在成为一个通用环境,但我正在制作一个专门用于数学排版的包,当我在该类中加载该包时,我想稍微修改我的解决方案环境......但我尝试了以下操作并收到错误:

\let\solution\relax

\newenvironment{solution}{%  <-Solution
  \par\addvspace{1em}
  \itshape{Solution:}\par\addvspace{\medskipamount}}
  {\par\normalfont\hfill\qed\par\addvspace{\medskipamount}}%

我在尝试编译文档时遇到的错误是

命令 \solution 已定义。

答案1

该宏\renewenvironment用于覆盖先前定义的环境(类似于\renewcommand\newcommand)。

否则您还需要\let\endsolution\relax

代码

\documentclass{article}

% \newenvironment{<name>} defines \<name> and \end<name>
% and it checks if both are undefined (= \relax)
\newenvironment{solution}{stuff}{end stuff}

% Solution 1
% \renewenvironment{<name>} checks if both are defined (!= \relax)
\renewenvironment{solution}{other stuff}{end other stuff}

% Solution 2 (just for completeness)
%\let\solution\relax
%\let\endsolution\relax
%\newenvironment{solution}{other stuff}{end other stuff}

\begin{document}
    \begin{solution}
        content
    \end{solution}
\end{document}

相关内容