\documentclass{article}
\usepackage{soul}
\usepackage{color}
\begin{document}
Some \hl{te\discretionary{-}{-}{-}xt}.
\end{document}
Lo anterior no se compila debido aFalta { insertado,Lista discrecional inadecuada,La lista de incompatibles no se puede desempacaryInadecuada \prev Deptherrores. Eliminando \hl
o \discretionary
elimina todos los errores.
¿Cómo puedo arreglar el código para permitir el anidamiento \discretionary
en el alma \hl
?
Actualizar:
Me gustaría redefinir localmente \discretionary
para devolver solo su tercer argumento, ya que el comando original no funcionaría dentro de las macros de Soul. Logré llegar hasta este punto:
\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}
Sin embargo, esto todavía arroja un error si el texto resaltado contiene espacios. Creo que se debe a llaves dobles en \hl{{…}}
, pero no pude redefinir el alcance de \discretionary
dentro \hl
de otras maneras. ¿Existen algunas alternativas para permitir el resaltado de texto sin eliminar \discretionary
comandos? Tengo fragmentos de texto bastante largos que contienen dichos comandos que necesito resaltar, pero en la versión final el resaltado debe eliminarse. Por lo tanto, no quiero eliminar \discretionary
comandos, sino simplemente redefinirlos localmente para que no causen errores cuando se usa el resaltado. Para mí sería suficiente devolver sólo su tercer argumento.