soul + highlight はテキストからいくつかの文字を削除します

soul + highlight はテキストからいくつかの文字を削除します

MWE は次のとおりです。

\documentclass[a4paper,11pt]{article}
\usepackage{polyglossia}
\usepackage[normalem]{ulem}
\defaultfontfeatures{Ligatures=TeX}
\setmainlanguage{magyar}
\usepackage{color}
\usepackage{soul}

\begin{document}

árvíztűrő tükörfórógép

ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP

\hl{árvíztűrő tükörfórógép}

\hl{ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP}

\end{document}

ログからの興味深いメッセージは次のとおりです。

Missing character: There is no ű in font ectt1000!
Missing character: There is no ő in font ectt1000!
Missing character: There is no ű in font ectt1000!
Missing character: There is no Ű in font ectt1000!
Missing character: There is no Ő in font ectt1000!
Missing character: There is no Ű in font ectt1000!

なぜフォント ectt1000 についてエラーが出るのかはわかりません。強調表示されたテキストと通常のテキストでまったく同じフォントが使用されていることは明らかです。ログにはエラー メッセージは表示されません。(警告もありませんが、このような誤ったレンダリングは間違いなくエラーをスローするはずです。)

出力は次のとおりです。

出力

答え1

xelatex/lualatex を使用しているため、すべてのグリフを含むオープンタイプのタイプライター フォントが必要です。また、ハイフンのデフォルトの幅もこのフォントにリセットする必要があります。例では Latin Modern Mono を使用できますが、他のスクリプトがある場合は別のものが必要になる可能性があります。

\documentclass[a4paper,11pt]{article}
\usepackage{fontspec}
\usepackage{color}
\usepackage{soul}
\makeatletter
\font\SOUL@tt="LMMono10-Regular"
\setbox\z@\hbox{\SOUL@tt-}
\SOUL@ttwidth\wd\z@ %reset default width of -
\makeatother
\begin{document}

árvíztűrő tükörfórógép

ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP

\hl{árvíztűrő tükörfórógép}

\hl{ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP}

\end{document}

ここに画像の説明を入力してください

関連情報