如何在 soul 的 \hl 中使用 \discretionary?

如何在 soul 的 \hl 中使用 \discretionary?
\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

相关内容