这是一个显示该问题的最小例子。
\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}
我收到错误
LaTeX Warning: Reference `{x}' on page 0 undefined on input line 12.
! Argument of \ref has an extra }.
问题出在\ref
。注释掉以“Subsection”开头的行会使错误消失。\soulregister
是用于字体命令的。我不知道 是否\ref
是字体命令,但我无法\soulregister
修复该问题(请参阅上面的注释行)。
答案1
将 括\ref{x}
在 中是{ }
可行的。soul
然后将其作为一个元素而不是将其拆分,我猜。在我看来,它分两步读取\ref
和{x}
,然后将其重新组合在一起,同时添加另一组括号,即结果是\ref{{x}}
。这对于字体命令来说并不重要,但\ref
将内部括号作为标签名称的一部分。这会导致有关未知标签的警告。错误是由于\ref
也在组soul
内扩展而引起的{ }
,即{\ref}
。不要问我为什么。
请注意,您不能标记 a,\section*
因为它没有数字。
\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}