\documentclass{ctexbeamer}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Fira Math}
\begin{document}
$fit$\\
$\mathit{fit}$
\end{document}
以上这段代码用 XeLaTeX 编译后的结果如下,可以看到 \mathit{}
部分字体并不是 Fira Math。想要达到的效果就是 \mathit{}
的字体也变成 Fira Math。
可能会说,把 \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。
谢谢解答!
\usepackage{unicode-math}
改成
\usepackage[mathit=sym]{unicode-math}
表示一个有多个字母的数学变量,这个一般是用直立字母的,比如 max min sup inf Aut Hom 等等,按出版标准来说都是直立的,用 it 样式是不规范的
自问自答一下。
\documentclass{ctexbeamer}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Fira Math}
\setmathrm{Fira Sans}
\begin{document}
$fit$\\
$\mathit{fit}$
\end{document}
XeLaTeX 编译结果如下:
其实就是加上了 \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 里把数学字体调成协调的无衬线真是头疼)
如问题描述里所说的,该选项同样会造成混淆
@u11111 没太懂还有哪里不满,mathit本来不能用,现在能用了,一句话解决,没涉及到正文字体,也没加载其他宏包
你举得这几个都是算子吧,数学算子确实得直立,但多字母数学变量是得
\mathit{}
的,可见刘海洋《LaTeX 入门》4.3.1节。@u11111 Ok,受教了,原来是这意思,原来有这区别,之前没注意过。姑且问一下你对正文字体有什么要求,这个需求通过调用文本字体应该容易解决,FiraMath本身也是通过原版Fira制作来的。如果你不希望正文字体是FiraGO,单单通过数学字体内部解决,可能需要十分完备的设置,比如对每个字体尺寸都得指定相应命令,最后拆东墙补西墙,还不如用text{itshape{XXXX}}来的简单
@u3608 其实
$\text{\textit{..}}$
与$\mathit{..}$
还是不太一样的,比如..
为fit
的时候就能明显看到前者有 ligature,而后者没有。其实也能理解,毕竟这两者的语义也是不同的(个人理解):$\text{\textit{..}}$
其实表示的是“一段话”,所以有 ligature 自然是很正常的,而$\mathit{..}$
更多表示的是“一个变量”的意思。不过还是谢谢你的回复。我自己写了个回答,勉强凑合。