LuaTeX 与 unicode-math 包结合使用时的箭头长度

LuaTeX 与 unicode-math 包结合使用时的箭头长度

我有一个可能相当简单的问题:是否可以使用unicode-mathLuaLaTeX 中的包,使得在其上方或下方写入一些较长的表达式时箭头会拉伸?

例如,unicode-math加载包后的以下代码不会产生拉伸箭头,并且箭头上的文本比箭头本身长得多:

% TeX engine: LuaLaTeX   
% TeX Live 2014   
% TeX encoding = UTF-8
\documentclass{minimal}
\usepackage{amsmath,
            unicode-math}

\begin{document}

$a \xrightarrow{b \to \infty} c$

\end{document}

答案1

我认为这是一个错误,它应该提供加载时unicode-math的良好等效项,以及拉丁现代数学,它没有提供(U+23AF 水平线扩展) 的字形。请参阅相关问题\std@minusamsmath\harrowextender为什么 fontspec 会破坏 extarrows 包

对于你的问题,你可以这样做

\documentclass{article}
\usepackage{amsmath,unicode-math}

\makeatletter
\AtBeginDocument{\Umathcharnumdef\std@minus\Umathcodenum`- }% \std@minus is minus
\makeatother

\begin{document}

$a \xrightarrow{b \to \infty} c$

\end{document}

当可用时,应使用更好的解决方法\harrowextender

\documentclass{article}
\usepackage{amsmath,unicode-math}
%\setmathfont{Asana Math} % if uncommented, \harrowextender would be used

\makeatletter
\AtBeginDocument{%
  \check@mathfonts
  \iffontchar\textfont\tw@\string"23AF
    \renewcommand{\relbar}{\mathrel\harrowextender}%
  \else
    \Umathcharnumdef\std@minus\Umathcodenum`-
  \fi}
\makeatother

\begin{document}

$a \xrightarrow{b \to \infty} c$

\end{document}

在此处输入图片描述

第二段代码用于\check@mathfonts确保字体与数学系列相关联(LaTeX 通常直到排版第一个公式时才执行此操作,以避免使用文档中不能使用的数学系列)。

对于unicode-math,由 定义的数学字体\setmathfont与数学系列 2 相关联,因此我们检查\harrowextender字体中是否存在 对应的字符(texdoc etex有关,请参阅 e-TeX 手册\iffontchar)。如果字符存在,我们将 重新定义\relbar为 为该符号作为数学关系。否则,我们将使用减号,在此上下文中\std@minus使用的名称下。amsmath

如果没有代码,则会\std@minus发生“选择数学系列 2 中的字符 0”,这对于传统的 TeX 数学字体来说是正确的,但对于 来说不再正确unicode-math。因此,在这种情况下,我们将 重新定义为具有与减号相同代码的数学字符(有关命令的更多信息,请\std@minus参阅 XeTeX 手册)。texdoc xetex\Umath...

相关内容