我正在使用scrartcl
文档类和 LuaLatex 编写包含数学方程式的文章。我需要使用 Arial 作为我的主要文本字体,我已使用包fontspec
(以“解锁” Arial 字体)和进行了设置\setmainfont{Arial}
。我可以使用“任何”衬线字体来写方程式,因此我保留了默认字体。
每当我遇到多字母变量时,我都想使用它\mathit{}
来避免每个字母之间有空格并且仍然保持斜体,但不幸的是,字体会变成 Arial,而不是数学模式字体:
据我所知,数学字体不应该改变字体。我尝试强制更改数学字体\setmathrm{Asana-Math}
(我不必专门使用这个,Asana Math 只是我在这文档下的“数学字体”),但正常数学模式仍然采用默认字体,而 Asana-Math 中的其他所有内容都没有斜体(甚至mathit
),请参见结果:
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{fontspec} % get additional fonts
\setmainfont{Arial} % sets the main font for the document
\setmathrm{Asana-Math} % change math mode font; only used in second result
\begin{document}
Normal text.
$f = MATHMODE$
$\mathit{f = mathit}$
$\mathrm{f = mathrm}$
\end{document}
\mathit{}
我如何才能控制主文本字体和数学模式字体?我如何才能以所需的数学字体和斜体显示数学模式和结果?
答案1
Mico 的解决方案有效,但这里还有一组更全面的选项。
传统 TeX 使用诸如\mathit
、\mathrm
和\mathbf
之类的命令来处理数学模式下的单词和数学符号。该unicode-math
软件包试图将这两者分开。比较:
\documentclass{article}
\usepackage{unicode-math}
\begin{document}
\noindent\texttt{\textbackslash mathit} \(\mathit{iff}\) \\
\texttt{\textbackslash symit} \(\symit{iff}\)
\end{document}
默认情况下fontspec
,在 中\mathit
为您提供第一个 (当且仅当排版为一个单词,而不是三个数学符号的乘积我,F和F)。如您所见,它默认使用\mathrm
、\mathit
和的文本字体\mathbf
。以下是一些覆盖该设置的方法。
简单的解决方法
您正在使用\mathit
并希望它表现得像\symit
。有一个unicode-math
包选项可以实现这一点,mathit=sym
。
\documentclass{article}
\usepackage[mathit=sym]{unicode-math}
\setmainfont{Arial}
\defaultfontfeatures{Scale=MatchLowercase}
\setmonofont{Fira Mono}
\setmathfont{Fira Math} % Or your math font of choice.
\begin{document}
\noindent Arial \textit{Italic} \\
\texttt{\textbackslash mathit} \(\mathit{iff} \) \\
\texttt{\textbackslash symit} \(\symit{iff}\)
\end{document}
这里。我使用 Fira Math 作为无衬线数学字体,匹配度相当高。您提到您正在使用任何衬线数学字体;Office 公式编辑器的默认字体是 Cambria Math。
如果您仍想在数学模式下使用单词,并让它们出现在主文本字体中,则可以在数学模式下使用命令\textnormal
和。\textit
如果你以这种方式使用\mathit
,你可能也期望\mathrm
和\mathbf
以相同的方式工作,所以你想要的命令实际上可能是
\usepackage[mathbf=sym, mathit=sym, mathrm=sym]{unicode-math}
准确表达你的意思
您需要的是 的行为,而不是下的\symit
默认行为,这与其他包下的 的默认行为并不完全相同。如果您在源代码中写入或,而不是含糊不清的 ,则将代码复制到另一个文档时意外中断的可能性会大大降低。\mathit
unicode-math
\mathit
\symit
\textit
\mathit
更改\mathit
字体
命令\setmathrm
还fontspec
允许您将\mathit
和\mathbf
字体设置\mathbfit
为ItalicFont
的BoldFont
和BoldItalicFont
:\mathrm
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Arial}
\defaultfontfeatures{Scale=MatchLowercase}
\setmonofont{Fira Mono}
\setmathfont{Fira Math} % Or your math font of choice.
\setmathrm{FiraSans}[ Extension = .otf ,
UprightFont = *-Regular ,
ItalicFont = *-Italic ,
BoldFont = *-Bold,
BoldItalicFont = *-BoldItalic ]
\begin{document}
\noindent Arial \textit{Italic} \\
\texttt{\textbackslash mathit} \(\mathit{iff} \) \\
\texttt{\textbackslash symit} \(\symit{iff}\)
\end{document}
使用传统数学字体
您不必使用unicode-math
。如果您fontspec
使用该no-math
选项加载,它将保持 的现有定义\mathit
不变。以下是少数几个或多或少有效的旧式无衬线数学包组合之一:
\documentclass{article}
\usepackage{newtxsf}
\usepackage[tx]{sfmath}
\usepackage[no-math]{fontspec}
\setmainfont{Arial}
\begin{document}
\noindent Arial \textit{Italic} \\
\texttt{\textbackslash mathit} \(\mathit{iff} \) \\
\texttt{\textbackslash textit} \(\textit{iff}\)
\( \displaystyle\int \frac{\partial y}{\partial t} \sum_{S} y(t) \)
\end{document}
答案2
首先,请加载unicode-math
包(顺便说一下,它会fontspec
自动加载)。其次,我建议您将旧命令\mathit
和替换\mathrm
为\symit
和\symrm
(您猜对了,它们由包提供unicode-math
)。
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{unicode-math} % loads fontspec automatically
\setmainfont{Arial} % sets the main font for the document
\setmathfont{Latin Modern Math}[Scale=MatchLowercase]
\begin{document}
\obeylines % just for this test document
Normal text.
$f = MATHMODE$
$\symit{f = mathit}$
$\symrm{f = mathrm}$
$\mathit{f = mathit}$
$\mathrm{f = mathrm}$
\end{document}
附录:unicode-math 软件包提供了以下五个新的基本命令:(\symup
别名:\symrm
)\symit
、、、\symbf
和。还有相当多的附加新命令\symsf
,\symtt
列在软件包用户指南的表 1 中。以下是表 1 的屏幕截图: