不久前,我改用 XeLaTeX 和 unicode-math。我真的很喜欢将不同字体组合在一起以显示数学符号的功能。但现在,我在将命令\underbrace
与不同字体的内容组合时遇到了麻烦。我实际上使用 Asana 作为我的主要数学字体,但不喜欢它的字体\underbrace
,因为它们太宽,并且与内容之间有太多空间。因此,我想使用其他字体中的一些字体,这样可以得到一些图形输出:
\documentclass[]{scrartcl}
\usepackage{amsmath}
\usepackage{polyglossia}
\setmainlanguage[]{english}
\setotherlanguage[spelling=new,babelshorthands=true]{german}
\usepackage{unicode-math}
\setmathfont{Asana-Math.otf}
\begin{document}
Asana math Blubb
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[]{xits-math.otf}
XITS math
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[]{Cambria Math}
Cambria Math
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[]{latinmodern-math.otf}
Latin modern
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[]{texgyrepagella-math.otf}
Neo Euler
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
Asana as math font, change font for underbrace only:
\setmathfont[]{Asana-Math.otf}
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[range=\mathunder]{xits-math.otf}
XITS math
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[range=\mathunder]{Cambria Math}
Cambria Math
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[range=\mathunder]{latinmodern-math.otf}
Latin modern
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\setmathfont[range=\mathunder]{texgyrepagella-math.otf}
Neo Euler
\[
\underbrace{1} \quad \underbrace{1+1} \quad \underbrace{1+1+1} \quad \underbrace{1+1+1+1} \quad \underbrace{1+1+1+1+1}
\]
\end{document}
有没有什么解决方法?或者说,组合不同的数学字体通常不是一个好主意?
我一般不太确定是否要继续使用 unicode-math,因为编译速度会变慢,例如 XITS 字体有时间距太窄(使用 XeTeX,版本 3.1415926-2.4-0.9998,MiKTeX 2.9)
注解
根据第一条评论,我刚刚尝试了,TeX Gyre Pagella Math
这似乎也是一种不错的字体,其下括号比 Asana-math 更好。但这让我想到了 unicode-math 与 XeLaTeX 的另一种行为,我之前已经注意到了,但忘记了。如果我运行以下代码:
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{texgyrepagella-math.otf}
\begin{document}
Test.
\begin{align*}
\frac{1}{x^2} \quad \underbrace{1+1+1+1+1}_F \underbrace{1+1}_F \underbrace{i}_F
\end{align*}
\end{document}
一些不直接影响数学环境的微小变化可以改变这种行为:
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{texgyrepagella-math.otf}
\begin{document}
\begin{align*}
\frac{1}{x^2} \quad \underbrace{1+1+1+1+1}_F \underbrace{1+1}_F \underbrace{i}_F
\end{align*}
Some text.
\end{document}
我曾经在做 beamer 演示时遇到过类似的行为(如果我没记错的话,使用的是 Asana-math),其中 TeX 代码中任何地方的更改都可能以显示的方式影响括号。我认为这可能取决于使用 beamer 的特殊情况,但显然跳跃式下括号随时都可能出现。\underbrace
以前有其他人见过该命令的这种行为吗?