How do I change the math italic font in XeTeX/fontspec?
If you do not wish to otherwise change your maths symbols, the best solution is to use the mathspec
package:
\documentclass{article}
\usepackage{mathspec}
\setallmainfonts(Digits,Latin){Georgia}
\begin{document}
Hello $a+\mathrm{b}=c$
\end{document}
Here, Georgia will be used for the body text and \mathrm
, and Georgia Italic will be used for the italic math glyphs.
The unicode-math
package (which I kinda wrote) can also do this, but it's somewhat overkill for your purposes and has the additional downside that you need to also load a Unicode mathematics font. Here's an example:
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Georgia}
\setmathfont{xits-math.otf}
\setmathfont[range=\mathit]{Georgia Italic}
\begin{document}
Hello $a+b=c$
\end{document}
Note that mathspec will not run (yet) on LuaTeX, so if you need a LuaLaTeX solution then you'll need to use unicode-math
for now.
Thanks to Will and Leo for pointing out the mathspec
package. So now I use:
\usepackage{mathspec} %loads fontspec as well
\setmainfont{Gotham Book}
\setmathrm{Gotham Book}
\setmathfont(Digits,Latin){Gotham Book}
This snippet may need optimization, but works.
The Literal Answer
As of 2019, fontspec
should find the bold and italic fonts, and load \mathrm
, \mathbf
and \mathit
when you \setmathrm
.
If you need additional set-up for \mathit
, the ItalicFont
and ItalicFeatures
options of \setmathrm
set up \mathit
, just as the Boldfont
and BoldFeatures
options set up \mathbf
.
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{fontspec}
\usepackage[paperwidth=10cm]{geometry}
\setmainfont{TeX Gyre Schola}
\setmathrm{TeX Gyre Schola}[
ItalicFeatures = {Color = green}]
\begin{document}
Text \textit{italic} \(\mathrm{math}\) \(\mathit{italic}\)
\end{document}
What You Also Might Have Meant
In practice, someone asking about how to set the \mathit
alphabet likely means the alphabet used for $x$
.
To set that, you want to load the unicode-math
package, set a math font that matches your main font and then, if necessary, add a line such as
\setmathfont[range=it]{Gotham Book Italic}
You can do likewise for up
, bfup
, bfit
and the other math alphabets.
In unicode-math
, you would normally use \symit
, \symup
, etc. for individual letters used as variables, and \mathit
, \mathrm
, \mathup
, etc. for complete words. However, you can give a package option to interpret \mathit
as \symit
and make migrated code compile correctly.