10

How do I color only the vector symbol in \vec f? I'm using beamer, so xcolor is already loaded.

Extra "points" to an answer that also explains how to fish..and not only gives me the fish.

Thanks!

Yossi Farjoun
  • 13,274
  • 10
  • 74
  • 96

3 Answers3

13

How about

$\color{red}{\vec{\color{black}{f}}}$

and if you want it a bit more automated

\newcommand{\colorvec}[1]{{\color{red}\vec{\color{black}{#1}}}}

which is to be used as $\colorvec{g}$

enter image description here

cmhughes
  • 100,947
12

You can use \textcolor that works also in math mode:

\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}

In this way you're sure that the color change will be limited to this object. I've added an optional argument to change also the color of the variable.

enter image description here

egreg
  • 1,121,712
  • Great idea! love it! I'm surprised it didn't come up in other questions of this type. – Yossi Farjoun Mar 04 '12 at 00:12
  • 2
    @YossiFarjoun Probably because it's a bad idea to color the arrow. ;-) – egreg Mar 04 '12 at 00:28
  • I meant, for example here. I think that for a presentation, color is great when used sparingly...in this case, I want to have the arrow overlaid...so I want it in a different color to bring the attention to it... – Yossi Farjoun Mar 04 '12 at 14:53
1

The question How to color only a tilde accent was closed as "Duplicate" improper. There is very interesting problem which isn't solved in mentioned post nor here. When you return back to the black color in the nucleus of mathaccent atom, then this color manipulation needs \special or \pdfliteral and the skewchar correction of accent placement is lost. See the following example:

$\widetilde{E}\ \widetilde{\special{}E}\ \coloredaccent{red}\widetilde{E}$

which gives the result:

colored accent problem

Note that the second accent is positioned wrong because here is \special in the nucleus and the skewchar TeX positioning is lost. We need to return to the black color here which expands to such \special or \pdfliteral. How the third accent is created? This surprise follows:

\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}

We need to emulate the skewchar kerning (implemented in TeX) by macros. First, we do measurement of kern between nulcelus and skewchar. The result is in pt. Second, we convert this result to the mu units in order to the result is applicable in \scriptstyle and \scriptscripstyle too. Finally, the \mkern2\tmpmudim and \mkern-2\tmpmudim is used to the correction of the accent placement.

wipet
  • 74,238