STIX 2.0.0 中 \mathcal 和 \mathscr 的行为

STIX 2.0.0 中 \mathcal 和 \mathscr 的行为

我最近安装了 STIX 2.0.0,并注意到 \mathcal 和 \mathscr 给出相同的结果(书法字母)。一个最简单的例子:

\documentclass{article}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}

\begin{document}
$$
\mathcal{A} \mathscr{A}
$$
\end{document}

但如果我添加选项

\setmathfont[StylisticSet=01]{STIX Two Math}

它们再次给出了相同的结果,这次是“圆体”书法字母。

这是 STIX 2 中这些命令的正常行为吗?有没有办法将第一种命令放在 \mathcal 上,将第二种“圆手风格”命令放在 \mathscr 上?

答案1

定义范围的字体\mathscr,请参见第 5.4.2 节“书法与脚本变体”。

\documentclass{article}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}
\setmathfont{STIX Two Math}[range={scr,bfscr},StylisticSet=01]

\begin{document}

$\mathcal{A}\mathcal{B}\mathcal{C}$

$\mathscr{A}\mathscr{B}\mathscr{C}$

\end{document}

在此处输入图片描述

这是unicode-math旧方法的版本

\DeclareMathAlphabet{\mathscr}{<encoding>}{<family>}{<series>}{<shape>}

这样做\mathscr{A}只是根据数学代码选择字形,而不是通过\mathchoice设置完全不同的数学版本的文本模式框。

答案2

\mathcal\mathscr(实际上,\symcal\symscr,和前两个命令只是别名)指向相同的 Unicode 范围,从 可以看出unicode-math.sty

\usv_set:nnn {scr} {Latin}{"1D49C}
\usv_set:nnn {cal} {Latin}{"1D49C}

所以它们不应该看起来有所不同。

如果你想要他们这样做,那么你必须使用不同的数学版本。这种方法的问题在于您无法在公式中切换数学版本,但这\mathscr应该不是什么大问题。只需将字母放入这样的框中:

\documentclass{article}

\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}
\setmathfont{STIX Two Math}[version=script,StylisticSet=1]

\renewcommand{\mathscr}[1]{{\text{\mathversion{script}$\symscr{#1}$}}}

\begin{document}
\[
\mathcal{A} \mathscr{A} \mathcal{A}
\]
\end{document}

我还用 替换了$$ ... $$它,\[ ... \]因为后者在 LaTeX 代码中的表现更好(例如,它们尊重fleqndocumentclass 选项)。

相关内容