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}

введите описание изображения здесь

Связанный контент