如何解决 \mathit 字体与数学字体不搭的情况?

发布于 2022-03-16 22:58:14
\documentclass{ctexbeamer}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Fira Math}
\begin{document}
$fit$\\
$\mathit{fit}$
\end{document}

以上这段代码用 XeLaTeX 编译后的结果如下,可以看到 \mathit{} 部分字体并不是 Fira Math。想要达到的效果就是 \mathit{} 的字体也变成 Fira Math。

image.png

可能会说,把 \mathit 换成 \symit 就好了,这样确实能换字体,但是带来一个问题:$\symit{fit}$ 的结果同 $fit$ 的结果不可区分了。也就是说原来想用 $\mathit{fit}$ 表示一个有多个字母的数学变量,改成 $\symit{fit}$ 后却与 $f$、$i$、$t$ 相乘混淆了,所以感觉改成 \symit 不可行(mathit=sym 选项同理)。

虽然 \mathit 的字体是跟随正文文本字体的,但是我并不想修改正文文本字体(而且我试过用 fontspec 宏包的 \setmainfont{Fira Math},不但是把正文全部换成一个数学字体不太合理,而且 \mathit{fit} 的结果也并不是 italic 的,设置 \setmathrm{Fira Math} 也不能使 \mathit{fit} 的结果是 italic 的),而是想以最小的改动代价(不知道能不能不加载其他宏包,看了 unicode-math 宏包文档的 4.4 节感觉这个宏包好像自带有一些能设置的,但我没捣鼓出来)直接指定 \mathit 的字体为 Fira Math。

谢谢解答!

查看更多

关注者
0
被浏览
2.4k
2 个回答
-XM-
-XM- 2022-03-18
这家伙很懒,什么也没写!

\usepackage{unicode-math}

改成

\usepackage[mathit=sym]{unicode-math}

表示一个有多个字母的数学变量,这个一般是用直立字母的,比如 max min sup inf Aut Hom 等等,按出版标准来说都是直立的,用 it 样式是不规范的

福来
福来 2022-03-18
这家伙很懒,什么也没写!

自问自答一下。

\documentclass{ctexbeamer}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Fira Math}
\setmathrm{Fira Sans}
\begin{document}
$fit$\\
$\mathit{fit}$
\end{document}

XeLaTeX 编译结果如下:
image.png

其实就是加上了 \setmathrm{Fira Sans},但其实是有很多侥幸因素的,比如恰好针对 Fira Math 能找到同源的 Fira Sans,从而最终结果看起来还算搭。

其实我的想法就是最好 \setmathrm{Fira Math} 也能行得通,那就不用 \setmathrm{Fira Sans} 了,但是如问题描述中所说的,并不行。我的理解是 Fira Sans 的 italic 版本能被 \mathit “抓到”,但“Fira Math 的 italic 版本”(不知道是不是有)不能被 \mathit 直接“抓到”,但我感觉应该能以其他方式,比如设置哪项参数,获取到 Fira Math 的“italic 版本”(因为看了 https://stone-zeng.github.io/2020-05-02-use-opentype-fonts-iii/ 中设置 StylisticSet 的例子,感觉可能可行,当然可能并不是从这设置的),但我不会,所以感觉这个答案也是说不上完美的。(beamer 里把数学字体调成协调的无衬线真是头疼)

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览