Here is a minimal example showing the problem.
\documentclass[10pt]{article}
\usepackage[usenames,dvipsnames]{color}
\usepackage{soul}
%\soulregister{\ref}{1}
\begin{document}
\section*{x}\label{x}
\section*{y}
\hl{ Some text.
Section~\ref{x}.
}
\end{document}
I'm getting the error
LaTeX Warning: Reference `{x}' on page 0 undefined on input line 12.
! Argument of \ref has an extra }.
The problem is with \ref
. Commenting out the line beginning with "Subsection" makes the error disappear. \soulregister
is intended for font commands. I don't know if \ref
is a font command, but I could not get \soulregister
to fix the problem (see the commented line above).
Best Answer
Enclosing the
\ref{x}
in{ }
works.soul
then takes it as one element instead of breaking it up, I guess. It seems to me that it reads both\ref
and{x}
in two steps and sets it together again while adding another set of braces, i.e. the result is\ref{{x}}
. This doesn't matter much for font commands but\ref
takes the inner braces as part of the label name. This causes the warning about the unknown label. The error is caused because\ref
is then also expanded bysoul
inside a{ }
group, i.e.{\ref}
. Don't ask me why.Note that you can't label a
\section*
because it doesn't has a number.