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}

在此处输入图片描述

相关内容