\documentclass{article}
\usepackage{soul}
\usepackage{color}
\begin{document}
Some \hl{te\discretionary{-}{-}{-}xt}.
\end{document}
上面的內容無法編譯,因為缺失 { 已插入,不適當的酌情清單,不相容清單無法拆箱和不正確的\prev深度錯誤。刪除\hl
或\discretionary
刪除所有錯誤。
如何修復程式碼以允許\discretionary
在 Soul 中嵌套\hl
?
更新:
我想在本地重新定義\discretionary
以僅返回其第三個參數,因為原始命令在靈魂的宏中不起作用。我成功做到了這一點:
\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
命令,而只是在本地將它們重新定義為在使用突出顯示時不會導致錯誤的命令。僅返回第三個參數對我來說就足夠了。