在下面的例子中,您可以看到两种环境都获得相同的标题。
如何防止这种情况?如果您使用其他包(如amsthm
、theorem
或 ) ,您将获得相同的结果thmtools
。
\setcounter{errorcontextlines}{999}
\documentclass{scrartcl}
\usepackage{ntheorem,xcolor}
\def\tempA{Game}
\newtheorem{game}{\color{red}\bfseries\tempA}
\def\tempA{Example}
\newtheorem{example}{\color{blue}\bfseries\tempA}
\begin{document}
\begin{example}
Test
\end{example}
\vspace*{2em}
\begin{game}
Test
\end{game}
\end{document}
答案1
当然:第二个\def
覆盖了第一个的含义:仅当和时才\tempA
展开\begin{game}
\begin{example}
用过的,在定义时不是。此时,\tempA
扩展为Example
。
\def\tempA{Game}
\begingroup
\edef\x{\endgroup
\noexpand\newtheorem{game}{\noexpand\color{red}\noexpand\bfseries\tempA}}
\x
\def\tempA{Example}
\begingroup
\edef\x{\endgroup
\noexpand\newtheorem{example}{\noexpand\color{red}\noexpand\bfseries\tempA}}
\x
可以,但是比较麻烦