我有一個可能相當簡單的問題:是否可以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@minus
amsmath
\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...
)。