使用 STIX2 数学字体进行下支撑

使用 STIX2 数学字体进行下支撑

问题不言而喻,以下是示例:

\documentclass[12pt]{article}

%% Language of the document
\usepackage{polyglossia}
\setmainlanguage{spanish}

\usepackage{unicode-math}

%% Text font of the document
\setmainfont{STIX2Text-Regular.otf}[
    BoldFont       = STIX2Text-Bold.otf , 
    ItalicFont     = STIX2Text-Italic.otf, 
    BoldItalicFont = STIX2Text-BoldItalic.otf
]

%% Math font of the document
\setmathfont{STIX2Math.otf}

\usepackage{mathtools}

\begin{document}    
    \[
    \underbrace{\text{A long equation}}_{\text{This is a long equation}}
    \]  
\end{document}

编译后,下括号就不存在了。当然,我在配置中遗漏了一些东西。

在此处输入图片描述

答案1

mathtools软件包包含对 LaTeX 内核的修复\underbrace\overbrace定义。

如果我们比较这两个定义

%%% LaTeX kernel
\DeclareRobustCommand\underbrace[1]{\mathop{\vtop{\m@th\ialign{##\crcr
   $\hfil\displaystyle{#1}\hfil$\crcr
   \noalign{\kern3\p@\nointerlineskip}%
   \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}

%%% mathtools.sty
\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
   $\hfil\displaystyle{#1}\hfil$\crcr
   \noalign{\kern.7\fontdimen5\textfont2\nointerlineskip}%
   \upbracefill\crcr\noalign{\kern.5\fontdimen5\textfont2}}}}\limits}

我们看到它们几乎相同,但是mathtools通过不使用 3pt 的固定长度并使用当前数学字体设置进行调整可以提高清晰度。

\underbrace然而,的定义unicode-math

\UnicodeMathSymbol{"023DF}{\underbrace}{\mathunder}{bottom curly bracket (mathematical use)}

这意味着更低层次的

\underbrace=\protected macro:
#1->\mathop {\Umathaccent bottom 7\symoperators "023DF\scan_stop: {{}#1}}\limits

如果你加载会发生什么mathtools unicode-math是 的“Unicode”定义\underbrace被 上面的修复所覆盖mathtools。请注意,您不会收到任何错误:确实使用了与旧版 LaTeX 数学字体中的括号部分不对应的\upbracefill数学字符。unicode-math

总结:mathtools对旧式数学字体进行了很好的修复,但unicode-math加载时不应该这样做。在mathtools更新之前,解决方案是加载它 unicode-math

答案2

应该加载mathtoolsfontspec/或unicode-math包。注意:由于polyglossia包会自动加载fontspec,因此您还应注意mathtools在之前加载polyglossia

当然,如果你将指令\usepackage{mathtools}移至\usepackage{polyglossia}均能\usepackage{unicode-math}正常\underbrace工作,无论是否polyglossia加载。

答案3

删除多语症后可工作--错误usexelatex

在此处输入图片描述

\documentclass[12pt]{article}

\usepackage{mathtools}

\begin{document}    
    \[
    \underbrace{\text{A long equation}}_{\text{This is a long equation}}
    \]  
\end{document}

相关内容