使用 unicode-math 时如何获取正常的 \mapsto 和 \colon 符号?

使用 unicode-math 时如何获取正常的 \mapsto 和 \colon 符号?

我正在使用unicode-math带有 XeLaTeX 的软件包。它运行良好,但它使我的一些字符看起来很奇怪。具体来说,代码

f \colon x \mapsto x^2

看起来与正常情况不同。正常情况下,它看起来是这样的:

没有 unicode-math

但是,当我使用时unicode-math,它看起来像这样:

使用 unicode-math

在第二张图片中, 中的点之间的间距\colon太小。此外, 上的垂直条\mapsto太大,水平条太短。我该如何修复这个问题?

我也遇到了类似的问题\mathbb{R},但当我在谷歌上搜索解决方案时,我发现这个类似的问题这个有效的解决方案。有没有什么办法可以解决我遇到的\colon和的问题\mapsto

例子:

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

\begin{document}
\[f\colon x\mapsto x^2\]
\end{document}

答案1

有几个方面需要提及:unicode-math用途

  1. U+2236 RATIO 表示数学模式下的冒号;
  2. U+21A6 从栏向右箭头表示\mapsto
  3. (不仅仅是)amsmath的定义。\colon\mathpunct

相反,传统的 8 位 LaTeX 使用

  1. 文本冒号也处于数学模式;
  2. 组合\mapstochar+\rightarrow构建\mapsto
  3. \mathpunct:for \colon(实际上是不同的定义,但是效果是一样的)。

字体设计师需要决定 U+2236 和 U+21A6 的形状。出于奇怪的原因,拉丁现代数学 (Latin Modern Math) 的设计师决定 U+2236 的宽度为 9.77pt,小于\rightarrow宽度为 10pt(字体自然大小)的 U+2192 向右箭头(用于)。NewCMMath 也做出了同样的选择。

您可以恢复旧行为。

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

\DeclareSymbolFont{legacysymbols}{OMS}{cmsy}{m}{n}
\DeclareMathSymbol{\legacymapstochar}{\mathrel}{legacysymbols}{"37}

\AtBeginDocument{%
  % use \mapstochar\rightarrow for \mapsto
  \RenewDocumentCommand{\mapsto}{}{\legacymapstochar\rightarrow}%
  % use the text colon for \colon as math punctuation
  \RenewDocumentCommand{\colon}{}{\Umathchar"6 "0 "3A\relax}
}

\begin{document}

\begin{gather*}
f\colon x\mapsto x^2 \\
f\colon x\rightarrow x^2
\end{gather*}

\end{document}

在此处输入图片描述

答案2

在 Unicode 数学字体中重新设计数学冒号(在 U+2236 位置)的原因取决于印刷规则,即所有数学运算符和符号都应在数学轴上垂直居中(例如 +、-、\to、\mapsto、\sum)。文本冒号不符合此要求,正如您在使用旧数学字体的图片中所见。如果您意识到这一点,Unicode 数学结果可能会开始对您来说更好。

优力克隆

相关内容