拉丁现代数学中 unicode 平方根字形 (U+221A) 的奇怪位置

拉丁现代数学中 unicode 平方根字形 (U+221A) 的奇怪位置

为什么平方根字形(U+221A)在拉丁现代数学中的位置如此奇怪?

\documentclass{article}
\usepackage{unicode-math}
\begin{document}
\setmathfont{XITS Math}
\(2 \sqrt{2} √2\)
\qquad
\setmathfont{Latin Modern Math}
\(2 \sqrt{2} √2\)
\end{document}

在此处输入图片描述

答案1

在传统的数学字体中,部首的字符取自“标准”尺寸的字体系列 2 和更大尺寸的字体系列 3。

无论是哪种情况,字符都位于插槽中"70(十进制 112),但大符号字体(系列 3)有选择更大尺寸的指示。

为了节省内存空间,Knuth 决定将这个字符的度量纳入一些参数中:具体来说,字符的高度告诉 TeX 连线应该有多粗。符号和连线的实际定位取决于不同的规则。

事实上,如果你运行这个简单的命令行

pdftex '\showthe\fontcharht\textfont3 "70'

你会得到

> 0.39998pt.

(这是 TeX 存储 0.4pt 的方式,因为四舍五入为缩放点)。

如果你看一下纯 TeX,你会看到

\def\surd{{\mathchar"1270}}

因此\surd将根号对称地放置在公式轴周围,因为\mathchar"1270声明了一个数学运算符,并且根据 TeX 规则,这样的字符将像这样放置;括号隐藏了运算符的性质。

同样的情况也发生在 上lmex10,因为否则部首就无法正确打印。

我猜想,当 GUST 的人们将传统的 Latin Modern 字体转换为 OpenType 时,部首符号的高度仍然“非常小”。它实际上是零,我不知道为什么,但一个提示可能是,当使用 OpenType 数学字体时,连字符的粗细在 MATH 表中说明,因此字符的高度无关紧要。

STIX 字体的开发人员决定将字符置于适当的高度,而 XITS Math 本质上是在原始 STIX 字体上添加了 MATH 表。

如果你希望字符的行为像\surd在纯 TeX 或 LaTeX 中一样,你可以这样做

\documentclass{article}
\usepackage{unicode-math}
\usepackage{newunicodechar}

\setmathfont{Latin Modern Math}
\newunicodechar{√}{{\mathop{\Umathchar "1 "0 `√}}}

\begin{document}

\(2 \sqrt{2} √2\)

\end{document}

在此处输入图片描述

与传统产品相比

\documentclass{article}
\usepackage{lmodern}

\begin{document}

\(2 \sqrt{2} \surd 2\)

\end{document}

并看到输出是相同的。

答案2

您可以不采用活动字符或\surd宏,而是为字符赋予数学类 1,使其自动成为\mathop垂直居中。

在此处输入图片描述

\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}



\begin{document}
\Umathcode `√ 1 3 `√

\(2 \sqrt{2} √2\)

\end{document}

相关内容