
Я заметил, что LuaTeX, похоже, неправильно отображает продолжающиеся символы (например, циркумфлекс, U+0302), когда они следуют за греческими буквами. Мне особенно интересно, как заставить это работать с моноширинным шрифтом (потому что это появляется в блоках кода):
\documentclass{article}
\usepackage{fontspec}
\setmonofont{DejaVu Sans Mono}
\begin{document}
\texttt{â \quad b̂ \quad ĉ \quad α̂ \quad β̂ \quad γ̂ \quad α̇ \quad β̇ \quad γ̇}
\end{document}
Я перепробовал несколько шрифтов, но не смог найти подходящий. Мне интересно, является ли это общей проблемой шрифтов или более характерной для TeX.
решение1
Я думаю, это связано со шрифтом.DejaVu Санс Мононе работает в TeX или LibreOffice.
НоНото Санс Моноотлично работает. Попробуйте:
\documentclass{article}
\usepackage{fontspec}
\setmonofont{Noto Sans Mono}
\begin{document}
\texttt{â \quad b̂ \quad ĉ \quad α̂ \quad β̂ \quad γ̂ \quad α̇ \quad β̇ \quad γ̇}
\end{document}
решение2
Это связано со шрифтом: в шрифтах Unicode акценты в основном расставляются с помощью так называемых якорей: каждый символ имеет специальную позицию, отмеченную в файле шрифта, так что отмеченная позиция акцента выровнена с этим «якорем». Дизайнеры шрифтов не добавляли эти якоря к греческим буквам.
Конечно, вы можете исправить это, добавив якоря самостоятельно, но если вам это нужно только в редких случаях и только с маленькими символами, вы можете просто разместить ударение вручную. В большинстве случаев вам просто нужно \llap
разместить ударение над следующим символом, а иногда вам приходится делать \raise
это. Например:
\documentclass{article}
\usepackage{fontspec}
\setmonofont{DejaVuSansMono.ttf}
\begin{document}
\texttt{â \quad b̂ \quad ĉ \quad \llap{̂}α \quad \raisebox{2pt}{\llap{̂}}β \quad \llap{̂}γ \quad \llap{̇}α \quad \raisebox{2pt}{\llap{̇}}β \quad \llap{̇}γ}
\end{document}