\documentclass{article}
\usepackage{soul}
\usepackage{color}
\begin{document}
Some \hl{te\discretionary{-}{-}{-}xt}.
\end{document}
Das obige wird nicht kompiliert, daFehlende { eingefügt,Unsachgemäße Ermessensliste,Die Liste der inkompatiblen Elemente kann nicht ausgepackt werden.UndUnsachgemäßes \prevdepthFehler. Durch Entfernen \hl
oder \discretionary
werden alle Fehler entfernt.
Wie kann ich den Code korrigieren, um die Verschachtelung \discretionary
in Seelen zu ermöglichen \hl
?
Aktualisieren:
Ich möchte es lokal neu definieren, \discretionary
um nur das dritte Argument zurückzugeben, da der ursprüngliche Befehl innerhalb der Makros von Soul nicht funktionieren würde. Ich habe es bis zu diesem Punkt geschafft:
\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}
Dies wirft jedoch immer noch einen Fehler aus, wenn der hervorgehobene Text Leerzeichen enthält. Ich denke, es wird durch doppelte Klammern in verursacht \hl{{…}}
, aber ich konnte es \discretionary
innerhalb \hl
des Gültigkeitsbereichs nicht auf andere Weise neu definieren. Gibt es Alternativen, um Texthervorhebungen zu ermöglichen, ohne \discretionary
Befehle zu entfernen? Ich habe ziemlich lange Textabschnitte mit solchen Befehlen, die ich hervorheben muss, aber in der endgültigen Version soll die Hervorhebung entfernt werden. Ich möchte also keine \discretionary
Befehle entfernen, sondern sie nur lokal so neu definieren, dass keine Fehler auftreten, wenn die Hervorhebung verwendet wird. Die Rückgabe nur des dritten Arguments würde mir genügen.