\documentclass{article}
\usepackage{soul}
\usepackage{color}
\begin{document}
Some \hl{te\discretionary{-}{-}{-}xt}.
\end{document}
O acima não compila devido aFaltando { inserido,Lista discricionária inadequada,Lista incompatível não pode ser desembaladae\prevprofundidade imprópriaerros. Removendo \hl
ou \discretionary
remove todos os erros.
Como posso corrigir o código para permitir o aninhamento do \discretionary
soul \hl
?
Atualizar:
Gostaria de redefinir localmente \discretionary
para retornar apenas o terceiro argumento, pois o comando original não funcionaria nas macros do soul. Consegui chegar até aqui:
\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}
No entanto, isso ainda gera erro se o texto destacado contiver espaços. Acho que é causado por colchetes duplos em \hl{{…}}
, mas não consegui redefinir o escopo de \discretionary
within \hl
de outras maneiras. Existem algumas alternativas para permitir o realce de texto sem remover \discretionary
comandos? Tenho trechos de texto bastante longos contendo esses comandos que preciso destacar, mas na versão final o realce deve ser removido. Portanto, não quero remover \discretionary
comandos, mas apenas redefini-los localmente para algo que não cause erros quando o realce estiver em uso. Retornar apenas o terceiro argumento seria suficiente para mim.