我需要在文档中间更改字体大小。问题是,无论我尝试哪种方法,内联数学中的字符与文本模式相比都会被拉伸(变宽),这看起来很糟糕(并且浪费了页面空间)。我该如何解决这个问题?
以下是 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 和 之间任何数字。数字之间不插入其他字距调整。