编辑

编辑

我需要在文档中间更改字体大小。问题是,无论我尝试哪种方法,内联数学中的字符与文本模式相比都会被拉伸(变宽),这看起来很糟糕(并且浪费了页面空间)。我该如何解决这个问题?

以下是 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 命令不是必需的。只需像 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 使用不同的“数学样式”来设置数学。较小的字体大小使用例如,+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 和 之间任何数字。数字之间不插入其他字距调整。

相关内容