
Мне нужно изменить размер шрифта в середине документа. Проблема в том, что символы в встроенной математике растягиваются (становятся шире) по сравнению с текстовым режимом, независимо от того, какой метод я пробовал, и это выглядит плохо (и тратит место на странице). Как это исправить?
Вот MWE:
\documentclass{scrbook}
\usepackage{unicode-math}
\begin{document}
Same character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 $\par
\KOMAoptions{fontsize=10}
% or other change in size like \footnotesize \LARGE etc
Different character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 $\par
\end{document}
решение1
Вы можете заставить unicode-math использовать обычный латинский современный текстовый шрифт для чисел:
\documentclass{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={"0030-"0039}]{Latin Modern Roman}
\setmathfont[range=\int]{Latin Modern Math} %last font should be a math font
\begin{document}
Same character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 $\par
\KOMAoptions{fontsize=10}
Different character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 x^3$\par
\end{document}
Редактировать
На самом деле команда range не нужна. Простая установка шрифта math, как это делает egreg в своем ответе, решает для меня проблему в современной системе tex:
\documentclass{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\begin{document}
Same character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 $\par
\KOMAoptions{fontsize=10}
Different character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 x^3$\par
\end{document}
Редактировать 2
Присмотревшись повнимательнее (и протестировав другие размеры шрифтов), я нашел источник проблемы: unicode-math настраивает математику с разными "математически стилями". Меньшие размеры шрифта используют eg, +ssty=0;
и это приводит к более широким числам (это особенность, а не ошибка. Более широкие символы более читабельны в маленьких размерах).
Поэтому, если изменить общий размер шрифта, придется заново настраивать математические шрифты:
\documentclass[fontsize=11pt]{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\begin{document}
Same character width:\\
123456789012345678901234567890 abc\\
$ 123456789012345678901234567890 abc$
\KOMAoptions{fontsize=9}
\setmathfont{Latin Modern Math}
Different character width:\\
123456789012345678901234567890 abc\\
$ 123456789012345678901234567890 abc$
\end{document}
В случае латинских современных шрифтов, где текстовые шрифты имеют оптические размеры, разница все равно есть.
решение2
Вам просто нужно указать шрифт математики. Причина этого может быть в ошибке unicode-math
(или последствии того, как fontsize=10
работает).
\documentclass{scrbook}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\begin{document}
Same character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 $\par
\KOMAoptions{fontsize=10}
% or other change in size like \footnotesize \LARGE etc
Different character width:\\
123456789012345678901234567890\\
$ 123456789012345678901234567890 $\par
\end{document}
Небольшое смещение в отображении вызвано, по-видимому, ошибкой в шрифте Latin Modern Math. Если я это сделаю,
\sbox0{78}\showbox0
\sbox0{$78$}\showbox0
при нормальной scrbook
настройке (11pt) я получаю
\hbox(7.40219+0.24089)x10.95
.\EU1/lmr/m/n/10.95 78
для первой коробки, пока я получаю
\hbox(7.40219+0.2409)x11.09236
.\mathon
.\EU1/LatinModernMath(0)/m/n/10.95 glyph#24
.\kern0.14235
.\EU1/LatinModernMath(0)/m/n/10.95 glyph#25
.\mathoff
Разница в размере 11.09236 - 10.95 = 0.14236
(разница составляет 1sp из-за двоичной арифметики, не имеет значения). Керн добавляется между 7 илюбойцифра. Никакого другого кернинга между цифрами не предусмотрено.