在 user700902 的回答中此主题,建议使用以下代码将字母 AZ 染成绿色:
\makeatletter
\def\colorizemath #1#2{%
\expandafter\mathchardef\csname orig:math:#1\endcsname\mathcode`#1
\mathcode`#1="8000
\toks@\expandafter{\csname orig:math:#1\endcsname}%
\begingroup
\lccode`~=`#1
\lowercase{%
\endgroup
\edef~{{\noexpand\color{#2}\the\toks@}}}%
}
\@for\@tempa:=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z\do{%
\expandafter\colorizemath\@tempa{green}}
\makeatother
如果文档中某个字母应该是红色的,有没有办法覆盖绿色命令?常规方法$\textcolor{red}{Q}$
不起作用。
我的意思是,假设我有一段文本$PQRST$
,我只想让字母$Q$
变成红色。在这种情况下我该怎么办?
答案1
我的建议是为数学模式定义命名颜色(这样您只需更改它们而不必更改其中的颜色\colorizemath
)并在宏中手动覆盖它们\mathcolor
。
以前,我曾使用过,\colorlet
但它不适用于[<model>]{<color>}
语法,所以我只是使用了\definecolor
。
\begingroup
使用“和”\endgroup
而不是“不是”的原因{ }
来自 Heiko Oberdiek 对彩色符号。
代码
\documentclass{article}
\usepackage{xcolor}
% Defining various math colors
\colorlet{math@latin@upper} {green}
\colorlet{math@latin@lower} {green}
\colorlet{math@digit} {red}
\colorlet{math@everymath} {blue}
\colorlet{math@everydisplay}{blue}
% Setting math colors for whole content
\everymath{\color{math@everymath}}
\everydisplay{\color{math@everydisplay}}
% Setting colors for letters and digits
% Author: user700902
% Source: https://tex.stackexchange.com/a/100625/16595
\makeatletter
\def\colorizemath #1#2{%
\expandafter\mathchardef\csname orig:math:#1\endcsname\mathcode`#1
\mathcode`#1="8000
\toks@\expandafter{\csname orig:math:#1\endcsname}%
\begingroup
\lccode`~=`#1
\lowercase{%
\endgroup
\edef~{{\noexpand\color{#2}\the\toks@}}}%
}
\@for\@tempa:=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z\do{%
\expandafter\colorizemath\@tempa{math@latin@lower}}
\@for\@tempa:=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z\do{%
\expandafter\colorizemath\@tempa{math@latin@upper}}
\@for\@tempa:=0,1,2,3,4,5,6,7,8,9\do{%
\expandafter\colorizemath\@tempa{math@digit}}
\makeatother
% Using color in math-mode,
% extended to overwrite the color invoked by active letters and digits
% Author: Heiko Oberdiek
% Source: https://tex.stackexchange.com/a/85035/16595
\newcommand*{\mathcolor}[3][named]{%
\protect\leavevmode
\begingroup
\definecolor{math@latin@upper}{#1}{#2}%
\definecolor{math@latin@lower}{#1}{#2}%
\definecolor{math@digit}{#1}{#2}%
\color[#1]{#2}%
#3%
\endgroup
}
\begin{document}\thispagestyle{empty}
\[
P\begingroup\colorlet{math@latin@upper}{red}Q\endgroup RST
\mathcolor{yellow}{=}
P\mathcolor{red}{Q}RST
\mathcolor[gray]{.5}{\sim} PQRST
\]
\end{document}