LuaTeX 中的箭頭長度與 unicode-math 套件結合

LuaTeX 中的箭頭長度與 unicode-math 套件結合

我有一個可能相當簡單的問題:是否可以unicode-math在 LuaLaTeX 中使用該包,以便在其上方或下方編寫一些較長的表達式時箭頭會拉伸?

例如,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 HORIZONTAL LINE EXTENSION) 的字形。查看相關問題\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(請參閱 e-TeX 手冊,texdoc etex針對\iffontchar)。如果該字元存在,我們\relbar將該符號重新定義為數學關係。否則,我們會在上下文中\std@minus使用的名稱下使用減號。amsmath

如果沒有代碼,會發生的情況是\std@minus“在數學系列 2 中選擇字元 0”,這對於傳統的 TeX 數學字體是正確的,但對於unicode-math.因此,在本例中,我們重新定義\std@minus為與減號具有相同代碼的數學字元(texdoc xetex有關命令的更多信息,請參閱 XeTeX 手冊\Umath...)。

相關內容