为什么 renewcommand 没有按我预期的方式工作?

为什么 renewcommand 没有按我预期的方式工作?

我重新定义了两个环境

\newtheorem{exmp}{Example}
\newenvironment{examp}{\begin{exmp}}{\renewcommand{\proofname}{Sol.}\end{exmp}}
\newenvironment{pf}{\begin{proof}}{\renewcommand{\proofname}{Proof}\end{proof}}

以确保当证明名称就在examp环境之后应改为解决方案,同时保持证明用于其他环境(定理,引理等等)。

但似乎它并没有像我预期的那样发挥作用。为什么?

答案1

(我认为proof是 提供的环境amsthm。)

这是行不通的,因为每个环境都形成一个群体,因此\renewcommand{\proofname}{Sol.}一旦\end{exmp}执行就会被遗忘。

可能想要使用全局重新定义:

\newtheorem{exmp}{Example}
\newenvironment{examp}
  {\begin{exmp}}
  {\gdef\proofname{Sol.}\end{exmp}}
\newenvironment{pf}[1][\proofname]
  {\begin{proof}[#1]}
  {\gdef\proofname{Proof}\end{proof}}

但是,当然,你并不安全,因为pf环境是强制性的,examp或者定理之后的下一个证明将被称为“Sol”。

我更喜欢使用

\begin{exmp}
Something
\end{exmp}
\begin{proof}[Sol.]
The solution
\end{proof}

或者定义一个sol环境

\newenvironment{sol}
  {\begin{proof}[Sol.]}
  {\end{proof}}

由于这是一个不同于证明的逻辑单元,因此它值得有自己的名称。

相关内容