我如何只为中的矢量符号着色\vec f
?我正在使用 beamer,因此 xcolor 已加载。
答案的额外“要点”还解释了如何钓鱼......而不仅仅是给我鱼。
谢谢!
答案1
怎么样
$\color{red}{\vec{\color{black}{f}}}$
如果你希望它更加自动化
\newcommand{\colorvec}[1]{{\color{red}\vec{\color{black}{#1}}}}
用作$\colorvec{g}$
答案2
您还可以在数学模式下使用\textcolor
它:
\documentclass{article}
\usepackage{xcolor}
\newcommand{\rvec}[2][black]{%
\textcolor{red}{\vec{\textcolor{#1}{#2}}}
}
\begin{document}
$\vec{x}$
$\rvec{x}$
$\rvec[green]{x}$
\end{document}
这样,你就可以确保颜色变化仅限于该对象。我添加了一个可选参数来更改变量的颜色。
答案3
问题如何只为波浪符号着色被关闭,因为“重复”不当。有一个非常有趣的问题,在提到的帖子中和这里都没有解决。当你回到 mathaccent 原子核中的黑色时,这个颜色操作需要\special
或,\pdfliteral
并且重音位置的 skewchar 校正会丢失。请参见以下示例:
$\widetilde{E}\ \widetilde{\special{}E}\ \coloredaccent{red}\widetilde{E}$
其结果为:
请注意,第二个重音符号的位置是错误的,因为这里位于\special
核心中,而 skewchar TeX 定位丢失了。我们需要在此处返回黑色,将其扩展为\special
或\pdfliteral
。第三个重音符号是如何创建的?接下来是令人惊讶的:
\documentclass{article}
\usepackage{xcolor}
\newmuskip\tmpmudim \newdimen\tmpdim
\def\coloredaccent#1#2#3{% #1=color, #2=accent, #3=nucleus
{\ifnum\skewchar\textfont1<0 \tmpmudim=0mu
\else \calculatemukern{#3}{\char\skewchar\textfont1 }
\fi
\colorlet{outcolor}{.}
\color{#1}\mkern2\tmpmudim #2{\color{outcolor}\mkern-2\tmpmudim#3}
}
}
\def\calculatemukern #1#2{%
\setbox0=\hbox{\the\textfont1 #1#2}\setbox1=\hbox{\the\textfont1 #1\null#2}%
\tmpdim=\wd0 \advance\tmpdim by-\wd1
\tmpmudim=\expandafter\ignorept\the\tmpdim mu \tmpmudim=288\tmpmudim
\tmpdim=16em \divide\tmpmudim
by\expandafter\ignorefracpart\the\tmpdim\relax
}
\def\ignorefracpart#1.#2\relax{#1}
{\lccode`\?=`\p \lccode`\!=`\t \lowercase{\gdef\ignorept#1?!{#1}}}
\begin{document}
$\widetilde{E}\ \widetilde{\special{}E}\ \coloredaccent{red}\widetilde{E}$
\end{document}
我们需要通过宏来模拟 skewchar 字距调整(在 TeX 中实现)。首先,我们测量 nulcelus 和 skewchar 之间的字距。结果以 pt 为单位。其次,我们将此结果转换为 mu 单位,以便结果也适用于 和\scriptstyle
。\scriptscripstyle
最后,\mkern2\tmpmudim
和\mkern-2\tmpmudim
用于校正重音位置。