设置替代 mathfrak 字体的各种方法

设置替代 mathfrak 字体的各种方法

我在 Linux 上使用 TeXLive。我已经安装了esstix 包。在查看esstixfrak.sty和之后stix2.sty,我现在知道了在同一个文档中使用三种不同的 mathfrak 字体的一种方法。这是一个 MWE:

\documentclass{article}
\usepackage{newtxtext}
\usepackage{newtxmath}
% setting up mathfrak from stix2
\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{stix2}{m}{n}
\DeclareSymbolFont{STIX2symbols2}      {LS1}{stix2frak} {m} {n}
\SetSymbolFont{STIX2symbols2}    {bold}{LS1}{stix2frak} {b}{n}
\DeclareSymbolFontAlphabet{\STIXTwoMathfrak}{STIX2symbols2}
% setting up mathfrak from esstix
\DeclareMathAlphabet{\EsstixMathFrak}{U}{esstixfrak}{m}{n}
\begin{document}
$\mathfrak{E}\STIXTwoMathfrak{E}\EsstixMathFrak{E}$
\end{document}

txmiaX这将使用字体按顺序、、STIXTwoMath和生成 mathfrak“E” ESSTIX-Fifteen

\STIXTwoMathfrak请注意和\EsstixMathFrak的定义方式不同。

问题:

  1. 定义这些替代 mathfrak 命令的这两种方式有哪些优点和缺点?
  2. 是否可以\EsstixMathFrak以类似于定义的方式进行定义\STIXTwoMathfrak,特别是无需声明新的数学字母表?

答案1

classic tex 每个数学表达式只有 16 个数学系列(luatex 有更多),符号字体必须预先分配一个数字作为命令,\Rightarrow最终通过以下方式定义

\mathchardef\Rightarrow="3229

因此字体系列 2(第二个十六进制数字)必须是位置十六进制 29 用箭头编码的字体。

相反,如果命令(例如\mathbb仅用作\mathbb{Q}而从不用作符号)\mathchardefLaTeX 可以按需分配这些命令(如果它们被使用),因此您可以宣布超过 16 个数学字母,但如果不使用,就不会分配。\DeclareMathAlphabet

有时,特别是\mathrm在标准设置中,已为某些符号预先分配的字体在字母槽中也有一个数学字母,\DeclareSymbolFontAlphabet设置数学字母以重新使用现有的分配。

因此,如果添加与主数学符号设置没有密切联系的“额外”数学字母,则几乎总是应该使用 \DeclareMathAlphabet rather than\DeclareSymbolFontAlphabet`

在您的示例中,您声明了两个数学字母表,但如果您不使用 esstix 字母表,则它不会影响 16 个数学字体限制。当您通过 stix 2 分配时,\DeclareSymbolFont它始终占用 16 个插槽中的一个(或 2 个,如果您加载bm包)

相关内容