更新环境命令?

更新环境命令?

我正在尝试更新我的环境命令,特别是(或类似的包)\example中的命令。amsthm

具体来说,我的

\example

命令总是使我的其余文本保持斜体(因为环境本身是斜体字体)。

但是当我使用

\renewcommand{\example}[1]{\begin{example} #1 \end{example}}

它总是给我编译器错误。

答案1

我不太推荐这种方法,因为这种方法并不能带来太多好处。

\example一旦example用 声明了环境,命令就已经被定义了\newtheorem,这是\endexample为了标记示例的结束,并为环境的结束做一些“清理”。

\renewcommand{\example}只要\example不在重新定义的\example环境里面再次出现就基本没问题,否则就会陷入递归定义,最终超出TeX的内存。

一种解决方案是保存和的旧定义\example\endexamples并在重新定义中使用它们\example,以及一个\begingroup...\endgroup额外的对,以防止字体等更改泄露到外面,正如\exampleOP 所报告的那样,仅使用

包含计数\foo内容只是为了表明组特征得到维护并且不会泄漏到外面。

\documentclass{article}

\usepackage{amsthm}

\newtheorem{example}{Example}
\newtheorem{exampleorig}{Example}

\let\origexample\example
\let\origendexample\endexample

\newcount\foo


\renewcommand{\example}[1]{\begingroup\origexample#1\origendexample\endgroup}


\begin{document}

The value of foo is \the\foo

\example{%
Here is an example for the Pythagorean theorem:
\foo=18%
\[ c^{2} = a^{2} + b^{2} \]
}

The new value of foo is \the\foo
\begin{exampleorig}
Here is an example for the Pythagorean theorem:

\[ c^{2} = a^{2} + b^{2} \]
\end{exampleorig}


\end{document}

在此处输入图片描述

答案2

问题在于您的重新定义是递归的,因为\example包含\begin{example}(类似于\begingroup\example)。

amsmath提供了在规则定义的类定理环境中生成直立文本的可能性。默认样式为plain,它使用 来设置定理主体\itshape。使用definition定理样式将主体设置为直立字体:

在此处输入图片描述

\documentclass{article}

\usepackage{amsthm}

%\theoremstyle{plain}% Default style
\newtheorem{exampleA}{Example}
\theoremstyle{definition}
\newtheorem{exampleB}{Example}

\begin{document}

\begin{exampleA}
This is an example.
\end{exampleA}

\begin{exampleB}
This is an example.
\end{exampleB}

\end{document}

相关内容