我有一个可能相当简单的问题:是否可以使用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 水平线扩展) 的字形。请参阅相关问题\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
字体中是否存在 对应的字符(texdoc etex
有关,请参阅 e-TeX 手册\iffontchar
)。如果字符存在,我们将 重新定义\relbar
为 为该符号作为数学关系。否则,我们将使用减号,在此上下文中\std@minus
使用的名称下。amsmath
如果没有代码,则会\std@minus
发生“选择数学系列 2 中的字符 0”,这对于传统的 TeX 数学字体来说是正确的,但对于 来说不再正确unicode-math
。因此,在这种情况下,我们将 重新定义为具有与减号相同代码的数学字符(有关命令的更多信息,请\std@minus
参阅 XeTeX 手册)。texdoc xetex
\Umath...