重新定义 amsmath 方程* 环境

重新定义 amsmath 方程* 环境

有关背景信息,请参阅我之前的问题

我一直在尝试更改我的 LaTeX 文档,以便数学显示为黑色,文本显示为红色。感谢 Stefan Kottwitz 和 Torbjørn T。我已经能够在这方面取得一些进展。目前我已经

\usepackage{amsmath}
\usepackage{color}
\usepackage{everysel}
\EverySelectfont{\color{red}}
\everymath{\color{black}}

\let\originaldisplaystyle\displaystyle
\renewcommand\displaystyle{\color{black}\originaldisplaystyle}

\let\oldeq\equation
\def\equation{\oldeq\color{black}}

align这会将文本颜色更改为红色,然后将内联数学、环境和环境的颜色更改equation为黑色。这一切都很好。但是,当我尝试对环境进行类似的更改时equation*

\let\oldeq*\equation*
\def\equation*{\oldeq*\color{black}}

我收到错误。我猜编译器正在读取\equation*文本\equation星号:如果我输入

\newenvironment{oldeq*}{\equation*}{\endequation*}
\renewenvironment{equation*}{\begin{oldeq*}}{\end{oldeq*}}

然后文档编译,但\equation*环境现在呈现为\equation环境(即带有编号),但在等式前面放置了一个星号。这是我迄今为止唯一设法编译的东西。我做错了什么?

答案1

这里是在原有amsmath定义的基础上加上颜色命令的重新定义:

\makeatletter
\renewenvironment{equation*}{%
  \mathdisplay@push
  \st@rredtrue \global\@eqnswfalse
  \color{black}
  \mathdisplay{equation*}%
}{%
  \endmathdisplay{equation*}%
  \mathdisplay@pop
  \ignorespacesafterend
}
\makeatother

使用这个包可以实现一个更简单的解决方案,并且不需要了解 amsmath 的内部结构etoolbox

\usepackage{etoolbox}
\AtBeginEnvironment{equation*}{\color{black}}

相关内容