Problems with \ref when using soul for highlighting
报错
I’ve run across a `}’ that doesn’t seem to match anything.
解决方法解决方法
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 by soul 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.
\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}
我尝试的是在 \ref{x}外面增加个大括号就行变成{\ref(x)}