我正在使用unicode-math
带有 XeLaTeX 的软件包。它运行良好,但它使我的一些字符看起来很奇怪。具体来说,代码
f \colon x \mapsto x^2
看起来与正常情况不同。正常情况下,它看起来是这样的:
但是,当我使用时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
用途
- U+2236 RATIO 表示数学模式下的冒号;
- U+21A6 从栏向右箭头表示
\mapsto
; - (不仅仅是)
amsmath
的定义。\colon
\mathpunct
相反,传统的 8 位 LaTeX 使用
- 文本冒号也处于数学模式;
- 组合
\mapstochar
+\rightarrow
构建\mapsto
; \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}