unicode-math 范围标签是什么意思

unicode-math 范围标签是什么意思

unicode-math 的文档对范围的各种标签进行了说明:

在 unicode-math 中,这些范围用以下(希望是不言自明的)标签表示:

向上,它,bb,bbit,scr,cal,bfcal,frak,tt,sfup,sfit,bfup,bfit,bfscr,bffrak,bfsfup,bfsfit

这些不是对我来说是不言自明的。它们各自的含义是什么?

答案1

它们对应于数学\sym...字母。 所以,

\setmathfont[range=up]{Neo Euler}

将字母表更改\symup为 Neo Euler,range=it更改\symit,等等。

另一件不直观的事情是,这确实不是更改\mathrm\mathbf\mathit,这些默认为您的主字体系列。您可以使用不同的命令更改它们\setmathrm。您还可以传递unicode-math选项以使它们成为\symup\symbfup和 的别名\symit

默认情况下,\sym...字母表用于独立的数学符号,例如\symbfup{j},字母表\math...用于数学模式中的单词,例如。您会注意到和\mathrm{iff}的字距调整之间存在很大差异!\mathrm{iff}\symup{iff}

另一件不直观的事情是,\mathcal\mathscr默认设置为相同的字母,但您可以覆盖其中一个以使其不同。

最后一件不直观的事情是,截至 2021 年,的range=version=选项\setmathfont不兼容,因此您可以使用range=或拥有不同的数学版本,但不能同时使用两者。

因此,我常用的例子之一是欧拉恒等式,其中常数设置在 Neo Euler 中,其他一切都设置在 Palatino(的克隆版)中:

\documentclass[varwidth, preview]{standalone}

\usepackage{mathtools}
\usepackage[math-style=ISO]{unicode-math}

\setmainfont{TeX Gyre Pagella}
\defaultfontfeatures{Scale=MatchLowercase}

\setmathfont{Asana Math}
\setmathfont[range={up/{Latin,latin,Greek,greek}, 
                    bfup/{Latin,latin,Greek,greek}},
             script-features={}, sscript-features={}
            ]{Neo Euler}

\newcommand\upe{\symup{e}}
\newcommand\upi{\symup{i}}

\begin{document}
\begin{align*}
  \upe^{\upi x} &= \cos{x} + \upi \sin{x} \\
  \upe^{\upi \uppi} + 1 &= 0
\end{align*}
\end{document}

欧拉恒等式

在上面的例子中,\symup{i}\symup{e}\symup{\pi}(或\uppi)都改为 Neo Euler,但是运算符sincos保留在 中\mathrm,和x且数字来自主数学字体。

答案2

它们是直立斜体、黑板粗体、手写体、粗体书法等,它们对应于 Unicode 数学字母表,例如

https://w3c.github.io/xml-entities/#alphabets

答案3

您可以\sym在这些标签前面添加前缀,以获取unicode-math与其对应的数学字体切换命令。(例如,it设置可用插入的字符的字体\symit

然后,文档的第 5.4 节“所有(其余)数学风格”包含一个表格(在撰写本文时,这是表 7),列出了每个开关对应的风格/形状/系列。

答案4

视觉上,使用免费应用程序 BabelMap 中的图像:

mas1

mas2

mas3

mas4

mas5

mas6

mas7

mas8

数学字体中字母的目的在于,衬线/无衬线、粗体/斜体/直立、普通/书法/花体/黑板、拉丁语/希腊语、大写/小写、比例宽度/等宽具有语义,因此字体必须具有所有字形,无论字体的文本模式字母是什么。

但有些组合未使用或不存在:例如,不存在希腊 Fraktur。

相关内容