Редактировать

Редактировать

Мне нужно изменить размер шрифта в середине документа. Проблема в том, что символы в встроенной математике растягиваются (становятся шире) по сравнению с текстовым режимом, независимо от того, какой метод я пробовал, и это выглядит плохо (и тратит место на странице). Как это исправить?

Вот 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 илюбойцифра. Никакого другого кернинга между цифрами не предусмотрено.

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