是否可以将新的字母添加到 unicode-math?

是否可以将新的字母添加到 unicode-math?

在普通的 LaTeX 中,可以使用 轻松添加新的数学字母\DeclareMathAlphabet。然后可以并排使用 、 和 等字母。不幸的是, 中似乎没有类似的机制cmsyeus或者至少没有实现其应有的功能。rsfsunicode-math\DeclareMathAlphabet

问题。我怎样才能设置自己的数学字母unicode-math

尝试过的解决方法

由于unicode-math有很多数学字母,一种解决方法可能是使用 将未使用的字母替换为所需的字母\setmathfont[range=...->...]。这在我的例子中不太有效:

\documentclass[12pt]{article}
\usepackage{fontspec,xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}

\usepackage{unicode-math}

\scrollmode

\setmathfont{xits-math.otf}
\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=0]{xits-math.otf}
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{xits-math.otf}
\setmathfont[range={\mathtt->\mathcal}]{latinmodern-math.otf}

\begin{document}
\[
\begin{array}{c}
\mathcal{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} \\
\mathscr{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} \\
\mathtt{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z}
\end{array}
\]

我怀疑问题在于 Unicode 中的书法字母的代码点不连续。

使用\mathversion似乎效果更好:

\documentclass[12pt]{article}
\usepackage{fontspec,xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}

\usepackage{unicode-math}

\setmathfont{xits-math.otf}

\setmathfont[version=eucal]{latinmodern-math.otf}
\newcommand{\eucal}[1]{\mathchoice %
  {\mbox{\mathversion{eucal}$\displaystyle\mathscr{#1}$}} %
  {\mbox{\mathversion{eucal}$\mathscr{#1}$}} %
  {\mbox{\mathversion{eucal}$\scriptstyle\mathscr{#1}$}} %
  {\mbox{\mathversion{eucal}$\scriptscriptstyle\mathscr{#1}$}}}

\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{xits-math.otf}

\begin{document}
\[
\begin{array}{c}
\mathcal{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} \\
\mathscr{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} \\
\eucal{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z}
\end{array}
\]
\end{document}

但这感觉非常低效。

答案1

enter image description here

实际上DeclareMathAlphabet工作正常,问题是拉丁字母已被赋予指向 Unicode 平面 1(1Dxxx 块)中的数学字母范围的数学代码,但字体需要 ASCII 范围。

unicode-math 通过切换数学代码(而不是改变数学系列)来实现数学字母表,因此最简单的做法是使用\mathup将数学代码切换回 ASCII 范围,然后使用\mathfrakeufrak或其他方式切换系列,如下所示。

\documentclass[12pt]{article}
\usepackage{amsfonts}
\usepackage{fontspec,xltxtra,xunicode}
\defaultfontfeatures{Mapping=tex-text}

\DeclareMathAlphabet{\mathrsfs}{U}{rsfso}{m}{n}
\DeclareMathAlphabet{\euler}{U}{euf}{m}{n}

\usepackage{unicode-math}

\setmathfont{xits-math.otf}


\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{xits-math.otf}


\begin{document}

\[
\begin{array}{cc}
1&\mathup{\mathrsfs{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z}} \\
2&\mathcal{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} \\
3&\mathscr{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} \\
4&\mathup{\euler{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z}}
\end{array}
\]


\end{document}

相关内容