\documentclass{article}
\usepackage{soul}
\usepackage{color}
\begin{document}
Some \hl{te\discretionary{-}{-}{-}xt}.
\end{document}
위의 내용은 다음과 같은 이유로 컴파일되지 않습니다.누락된 { 삽입됨,부적절한 임의 목록,호환되지 않는 목록은 unboxing할 수 없습니다.그리고부적절한 \prevlength오류. 모든 오류를 제거 \hl
하거나 제거합니다.\discretionary
\discretionary
soul의 중첩을 허용하도록 코드를 어떻게 수정합니까 \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