我正在使用此代码来改变所有数学字符的颜色,有时我想改变几个字符的颜色,我注意到有些数学字符不会像“ \overrightarrow
”那样改变颜色。
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath}
\definecolor{navy}{rgb}{0.0,0.0,0.5}
% Auto-color inline math material:
\everymath=\expandafter{\the\everymath\color{navy}}
% Auto-color display math material:
\usepackage{etoolbox} %
\apptocmd{\[}{\color{navy}}{}{}
\AtBeginEnvironment{equation}{\color{navy}}
\AtBeginEnvironment{equation*}{\color{navy}}
\begin{document}
$ \color{red} C^2 $
${ \color{orange} \overrightarrow{AB} A \quad \vec{B}} = \textcolor{blue}{B} \mathbin{\textcolor{red}{-}\overrightarrow{AB}} \textcolor{green}{C} \overrightarrow{AB} \vec{a}$
${ \color{red} {AB}} $
\end{document}
为什么除了使用 overrightarrow 之外,我可以改回所有字符的颜色?
答案1
许多数学结构在水平模式中使用数学模式,因此您希望它\color{navy}
不应用于嵌套数学。
并非万无一失(例如,请注意脚注):
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath}
\definecolor{navy}{rgb}{0.0,0.0,0.5}
% Auto-color inline math material:
\newif\ifinmath
\everymath=\expandafter{\the\everymath\ifinmath\else\color{navy}\inmathtrue\fi}
% Auto-color display math material:
\usepackage{etoolbox} %
\apptocmd{\[}{\color{navy}}{}{}
\AtBeginEnvironment{equation}{\color{navy}}
\AtBeginEnvironment{equation*}{\color{navy}}
\begin{document}
$ \color{red} C^2 $
${\color{orange} \overrightarrow{AB} A \quad \vec{B}} =
\mathcolor{blue}{B} \mathcolor{red}{-}\overrightarrow{AB}
\mathcolor{green}{C} \overrightarrow{AB} \vec{a}$
$\mathcolor{red}{AB}$
\end{document}
使用\mathcolor
而不是\textcolor
(需要相当新的 LaTeX)。
条件\ifinmath
最初为假,但是,在启动数学模式时,\everymath
将其设置为真;然而嵌套启动数学模式不会设置颜色。