DeclareMathDelimiter 不适用于 Unicode 字体

DeclareMathDelimiter 不适用于 Unicode 字体

我无法让 \DeclareMathDelimiter 与 Unicode 字体正确配合使用。我使用 XeLaTex 和 LuaLaTex 也得到了相同的结果。自定义字体有一个数学表,其中定义了大小变体和可拉伸部分。以下是示例代码

\documentclass[10pt,fleqn]{amsart}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}

\newfontface \logix {Logix.otf}[Scale=1.0,NFSSFamily=logix]

\DeclareSymbolFont{Logix}{TU}{logix}{m}{n}

\DeclareMathDelimiter{\OpnGrpX}{\mathopen}  {Logix}{"E301} {Logix}{"EBE0}
\DeclareMathDelimiter{\ClsGrpX}{\mathclose} {Logix}{"E341} {Logix}{"EBF0}

\begin{document}

   \[ \left\OpnGrpX \frac{1}{2} \right\ClsGrpX \]

   \end{document}

这是生成的输出

在此处输入图片描述

答案1

\DeclareMathDelimiter使用传统的 TeX 基元\delcode\delimiter。它们接受紧凑的位图,对代码点和符号系列进行编码。此格式仅接受最多 255 个代码点,其他任何代码点都会导致奇怪的行为,因为额外的数字会泄漏到位图的其他字段中。

因此,XeTeX 和 LuaTeX 都支持具有更高代码点的分隔符的单独原语:\Udelcode\Udelimiter。它们仅接受单个代码点,因此您只需传递而不是E301和。字体负责将其添加到更大变体的链接列表中。EBE0E301EBE0

然后你得到例如

\documentclass[10pt,fleqn]{amsart}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}

\newfontface \logix {Logix.otf}[Scale=1.0,NFSSFamily=logix]

\DeclareSymbolFont{Logix}{TU}{logix}{m}{n}

\makeatletter
\xdef\OpnGrpX{\Udelimiter\mathchar@type\mathopen\symLogix"E301 }
\xdef\ClsGrpX{\Udelimiter\mathchar@type\mathclose\symLogix"E341 }
\makeatother

\begin{document}

   \[ \left\OpnGrpX \frac{1}{2} \right\ClsGrpX \]

\end{document}

\Udelcode如果您不创建控制序列(如)\OpnGrpX,但想让字符直接用作分隔符(如(或 ),则可以使用[。例如,如果您希望[]使用新的字形当且仅当它们是在之后使用\left\right或类似,你可以使用

\documentclass[10pt,fleqn]{amsart}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}

\newfontface \logix {Logix.otf}[Scale=1.0,NFSSFamily=logix]

\DeclareSymbolFont{Logix}{TU}{logix}{m}{n}

\Udelcode`\[\symLogix"E301
\Udelcode`\]\symLogix"E341

\begin{document}

   \[ \left[ \frac{1}{2} \right] \] -- Now uses the Logix glyphs

\end{document}

您还可以例如使用在/后直接\Udelcode"E301\symLogix"E301输入 Unicode 字符 U+E301 。\left\right

(我想添加一个屏幕截图,但首先我需要字体......)

相关内容