以下是 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}