\documentclass{article}
\usepackage{soul}
\usepackage{color}
\begin{document}
Some \hl{te\discretionary{-}{-}{-}xt}.
\end{document}
以上内容无法编译,原因是缺失{插入,不当酌情名单,不兼容列表无法取消装箱和\prevdepth 不正确错误。删除\hl
或\discretionary
删除所有错误。
我如何修复代码以允许\discretionary
灵魂嵌套\hl
?
更新:
我想在本地重新定义\discretionary
以仅返回其第三个参数,因为原始命令在 soul 的宏中不起作用。我设法做到了这一点:
\documentclass{article}
\usepackage{soul}
\usepackage[usenames,dvipsnames]{xcolor}%\usepackage{color}
%https://tex.stackexchange.com/a/139500:
\soulregister\cite7
\soulregister\ref7
\soulregister\pageref7
\def\highlightcolor{yellow}
\DeclareRobustCommand{\hlc}[2][\highlightcolor]{{\sethlcolor{#1}\hl{{\renewcommand*\discretionary[3]{\mbox{####3}}#2}}}}
\begin{document}
\hlc{Some,te\discretionary{-}{-}{-}xt}.
\end{document}
但是,如果突出显示的文本包含空格,这仍然会引发错误。我认为这是由中的双括号引起的\hl{{…}}
,但我无法以其他方式在的范围\discretionary
内重新定义。是否有其他方法可以在不删除命令的情况下允许文本突出显示 - 我有相当长的文本包含需要突出显示的命令,但在最终版本中将删除突出显示。所以我不想删除命令,而只是在本地将它们重新定义为在使用突出显示时不会导致错误的内容。仅返回它的第三个参数对我来说就足够了。\hl
\discretionary
\discretionary