![为什么 \everydisplay 与 gather 和 multline 冲突](https://linux22.com/image/235551/%E4%B8%BA%E4%BB%80%E4%B9%88%20%5Ceverydisplay%20%E4%B8%8E%20gather%20%E5%92%8C%20multline%20%E5%86%B2%E7%AA%81.png)
当gather*
与 一起使用时\everydisplay
会产生错误。 是否有可能使它们一起工作?
最小工作示例:
\documentclass{ctexart}
\usepackage{amsmath,color}
\everydisplay{\color{blue}}
\begin{document}
\begin{gather*}
1+\cos x
\end{gather*}
\end{document}
答案1
可以使用而不是\everydisplay
。这也适用于 。为了避免内联数学着色,您可以检查是否在或类似于 amsmath 自己的检查内。\everymath
gather
gather
align
完整示例:
\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
或来代替或。这可以在序言中完成,而无需更改文本中的方程式环境,例如\[ ... \]
gather
gather*
\let\equation\gather
\let\endequation\endgather
答案2
如果你只是说\everydisplay{\color{blue}}
,那么它之前的内容就会被删除,你会遇到这类问题。正确的使用方法\everydisplay
是:
\everydisplay\expandafter{\the\everydisplay \color{blue}}
那么就不会发生任何问题。