How to color just the wave produced by the ulem package

I am using \uwave{Some text here} to put a wave like emphasis under the text. Is it possible to change the color of only the wave and leave the text black?

It is highly recommended that you post a minimal example. It is possible to only color the wave part by redefining the command \uwave or by creating a new command named \redwave as you like.

\documentclass[11pt]{article}
\usepackage{xcolor}
\usepackage{ulem}
\makeatletter
\def\uwave{\bgroup \markoverwith{\lower3.5\p@\hbox{\sixly \textcolor{red}{\char58}}}\ULon}
\font\sixly=lasy6 % does not re-load if already loaded, so no memory problem.
\makeatother
\begin{document}
\uwave{This is a long test}
\end{document}


The ulem package uses the wiggle from the 6-pt lasy font and we just use textcolor to color it.

One could extend the above code to give it a more semantic name, as suggested by TH and also to give an optional color. The MWE below defines a command \colorwave for this purpose.

\documentclass[11pt]{article}
\usepackage{xcolor}
\usepackage{ulem}
\usepackage{lipsum}
\makeatletter
\newcommand\colorwave[1][blue]{\bgroup \markoverwith{\lower3.5\p@\hbox{\sixly \textcolor{#1}{\char58}}}\ULon}
\font\sixly=lasy6 % does not re-load if already loaded, so no memory problem.
\makeatother
\begin{document}
\colorwave[red]{This is a long test} \lipsum*[1].\par
\colorwave[green]{This is a long test} \lipsum*[1]
\end{document}


• Nice. One could make a \colorwave based on this where the color to use is passed in as an argument. – TH. Dec 18 '10 at 1:45
• @TH Sure and it will be better rather than redefining the original command. – Yiannis Lazarides Dec 18 '10 at 3:54
• For thicker line consult this link. Or substitute: lasy6 -> lasyb10 scaled 652 – user23191 Dec 11 '12 at 11:06