# Underline text with background (soul and ulem nesting)

I'm using soul's \hl to set background for the paragraph parts and ulem's \uline to underline text.

The problem is what I cant underline text for text with background.

Initial doc:

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage[normalem]{ulem}
\usepackage{soul}

\newcommand{\bg}[2]{\sethlcolor{#1}\hl{#2}}

\definecolor{ColorFg}{HTML}{FFFFFF}
\definecolor{ColorBg}{HTML}{008000}

\begin{document}

{\color{ColorFg}\bg{ColorBg}{Some Text}} another text.

\end{document}


I want to underline Text:

{\color{ColorFg}\bg{ColorBg}{Some \uline{Text}}} another text.


it fails with ! Argument of \UL@on has an extra }.

I tried to use \soulregister{\uline}{1} (solution from this topic) - no errors and no underlined tex.

Is it possible to underline text with background color (maybe I have to use another packages)?

PS soul docs provides solution for nested commands, but it's not useful for me since line breaks will not work.

Thanks.

-

Simply enclose the \uline{} inside a pair of braces. You do not need any other package.

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage[normalem]{ulem}
\usepackage{soul}

\newcommand{\bg}[2]{\sethlcolor{#1}\hl{#2}}

\definecolor{ColorFg}{HTML}{FFFFFF}
\definecolor{ColorBg}{HTML}{008000}

\begin{document}

{\color{ColorFg}\bg{ColorBg}{Some {\uline{Text}}}} another text.

\end{document}


And here is the output,

{\color{ColorFg}\bg{ColorBg}{Some \protect\uline{Text}}} another text.

This doesn't work if you have for example {\uline{Text Text}}. In this case you can use \mbox{\uline{Text Text}}. It doesn't work, in any case, if the contents of \uline has to break a line... – karlkoeller Nov 5 '13 at 17:36
I had to use \underline instead of \uline as in \hl{highlighted {\underline{highlighted and underlined}} highlighted} – Pierre-Luc Gauthier Mar 3 '15 at 20:49