\middle|
考虑以下代码中的渲染:
\documentclass[12pt,a4paper]{article}
\usepackage{unicode-math}
\setmathfont{xits-math.otf}
\begin{document}
\[ \left\lbrace p_{i,j} \, \middle| \, 1 \le i \le k_j, 0 \le j \le N \right\rbrace \]
\[ N \left[ f \right] = \left\lbrace x \in N \, \middle| \, f \cdot x = 0 \right\rbrace \]
\end{document}
XeTeX 产生以下输出:
另一方面,LuaTeX 产生这样的结果:
不难看出,XeTeX 仅正确渲染了第一行,而 LuaTeX 仅正确渲染了第二行。如果我将 Asana Math 换成 XITS,也会出现类似的问题,因此这似乎是引擎问题,而不是字体问题。如果我将 更改为 ,问题就会消失unicode-math
,mathspec
因此它似乎是 特有的unicode-math
。
显然,有一条执行路径可以使其正常工作(在与和\middle
一致的意义上:在使用时如何强制以这种方式呈现?\left
\right
\middle
unicode-math
答案1
我认为这是引擎细微差异和字体问题造成的。实际上,这并不是\left
/\right
和之间的差异\middle
,而是大括号和竖线字形之间的差异。
大多数字体中的大括号都有几种升序大小可供引擎选择,如果没有足够大的大括号,它会从较小的构建块中合成它,另一方面,大多数字体中的条形仅提供一种尺寸,如果引擎需要更大的字形,它会从较小的块中合成它,并且由于合成更灵活,它会产生比大括号更多的中间尺寸,从而产生这样的效果。
如果你尝试,\middle\lbrace
你会看到大小是一致的,如果你用类似的字体进行测试Lucida Bright OT 数学其 bar 字形与括号大小相同,您将看到结果是一致的。
(在某个时候我会为 XITS 做这件事,希望是在 TL 2012 之前)
两个引擎之间的差异可能是由于计算所需字形大小时的细微差异造成的。