\documentclass{article}
\usepackage{soul}
\usepackage{color}
\begin{document}
Some \hl{te\discretionary{-}{-}{-}xt}.
\end{document}
上記はコンパイルできない。欠落している{挿入、不適切な裁量リスト、互換性のないリストはアンボックスできませんそして不適切な\prevdepthエラー。削除\hl
または\discretionary
すべてのエラーを削除します。
\discretionary
soul のネストを許可するようにコードを修正するにはどうすればよいでしょうか\hl
?
アップデート:
元のコマンドは soul のマクロ内では機能しないため、3 番目の引数だけを返すようにローカルで再定義したいと思います\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{{…}}
を再定義することはできませんでした。 コマンドを削除せずにテキストの強調表示を可能にする代替手段はありますか? 強調表示する必要があるコマンドを含むかなり長いテキストがありますが、最終バージョンでは強調表示が削除されます。 そのため、コマンドを削除するのではなく、強調表示の使用時にエラーが発生しないようにローカルで再定義するだけです。 3 番目の引数だけを返すだけで十分です。\discretionary
\hl
\discretionary
\discretionary