我在使用 Asana Math 与 XeLaTeX + unicode-math 时遇到了这个问题,如果你看到下载链接中的 pdfAsanaProb.zip你可以看到,\bigcap
产生的字符比它应该产生的字符大得多:
这是语法问题还是其他问题?该文档是在 Linux 机器上使用 texlive 2010 编译的,希望有帮助...
答案1
更新:新版本已经在 CTAN 上。
这是 Asana Math 的一个错误。我已经联系了作者 Apostolos Syropoulos,他可能很快就会发布新版本。
这个问题(多亏 Khaled Hosny 我发现)有两个方面。首先,与其他 TeX 字体不同,但与 Cambria Math 一样,Asana 的大型数学运算符有多个版本。通常只有一个,即\displaystyle
运算符的版本。这可以通过在 fontforge 中打开字体并查看其 MATH 表(在垂直变体部分)来查看。
第二部分是字体常量DisplayOperatorMinHeight
设置得太高,为 1850。顾名思义,此常量表示字形被视为数学运算符的显示版本所需的最小高度。但 \bigcap 运算符的“正确”显示版本的高度只有 1559,因此不符合显示条件。然后引擎查找下一个版本,其高度为 2588,并选择了它。这就是您看到的巨大字形。
第一部分很重要,因为如果没有其他变化,引擎只会满足于“小”显示操作符。
如果你等不及 Asana 的 bug 修复版本,并且正在使用 luatex,可以使用此代码即时修补字体(复制自这里):
\usepackage{unicode-math}
\usepackage{luacode}
\begin{luacode*}
local function patch_asana(fontdata)
local mc = fontdata.MathConstants
if mc then
mc.DisplayOperatorMinHeight = 1337
end
end
luatexbase.add_to_callback("luaotfload.patch_font", patch_asana, "patch_asana")
\end{luacode*}
\setmathfont{Asana Math}
答案2
我认为这只是操作符的设计外观。(有人可以验证这一点吗?)
如果你不喜欢它,你可以定义一个更小的替代方案,bigcap
如下所示:
\newcommand{\altbigcap}{\scalebox{0.8}{\bigcap}}
(0.8 可能不合适,我无法检查,因为我认为我没有相关的字体,我不认为......)
另一种解决方案是回收答案这个问题以满足您的目的:用不同字体的符号替换大写符号。
答案3
(重复我的回答在 PhilTeX 论坛上。
当我尝试将 \bigcap 与 unicode-math 和 Asana Math 结合使用时,我实际上遇到了一个反向问题:结果看起来太小了。我现在还不太明白。我们似乎使用的是同一版本的软件包。出于好奇,您使用的是 32 位还是 64 位版本的 Linux?我知道 64 位 Linux 和 unicode-math 之间似乎存在一些不好的魔力(这也许可以解释为什么我遇到了麻烦)。
我认为这很大程度上是一个品味问题。我不认为这顶帽子看起来太大了,以至于不能本来就不应该这么大。但我觉得不协调的是,它比有界产品标志还大,这看起来很糟糕,因为它不一致。
与 Seamus 的建议类似,我自己的建议是尝试加载 relsize 包
\usepackage{relsize}
并在序言中重新定义 \bigcap 如下:
\let\oldbigcap\bigcap
\renewcommand{\bigcap}{\mathop{\mathsmaller{\oldbigcap}}}
但是我现在遇到的软件包问题阻止我测试该代码。
您可以迭代 \mathsmaller 命令使其越来越小。