为什么 \everydisplay 与 gather 和 multline 冲突

为什么 \everydisplay 与 gather 和 multline 冲突

gather*与 一起使用时\everydisplay会产生错误。 是否有可能使它们一起工作?

最小工作示例:

\documentclass{ctexart}
\usepackage{amsmath,color}
\everydisplay{\color{blue}}
\begin{document}
\begin{gather*}
1+\cos x
\end{gather*}
\end{document}

答案1

可以使用而不是\everydisplay。这也适用于 。为了避免内联数学着色,您可以检查是否在或类似于 amsmath 自己的检查内。\everymathgathergatheralign

完整示例:

\documentclass{article}
\usepackage{amsmath,color}
\newcommand*{\eqcolor}{\color{blue}}
\makeatletter
\everymath{%
  \ifingather@ \eqcolor%
    \else \ifinalign@ \eqcolor
      \fi
  \fi
}
\makeatother
\begin{document}
\begin{gather*}
1+\cos x
\end{gather*}
\begin{align*}
1+\cos x
\end{align*}
\centering $1 + \cos x$
\end{document}

在此处输入图片描述

如您所见,内联数学没有颜色。关于其他显示的数学:您可以分别使用equation或来代替或。这可以在序言中完成,而无需更改文本中的方程式环境,例如\[ ... \]gathergather*

\let\equation\gather
\let\endequation\endgather

答案2

如果你只是说\everydisplay{\color{blue}},那么它之前的内容就会被删除,你会遇到这类问题。正确的使用方法\everydisplay是:

\everydisplay\expandafter{\the\everydisplay \color{blue}}

那么就不会发生任何问题。

相关内容