我正在尝试更新我的环境命令,特别是(或类似的包)\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
额外的对,以防止字体等更改泄露到外面,正如\example
OP 所报告的那样,仅使用
包含计数\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}