控制主文本和数学模式字体

控制主文本和数学模式字体

我正在使用scrartcl文档类和 LuaLatex 编写包含数学方程式的文章。我需要使用 Arial 作为我的主要文本字体,我已使用包fontspec(以“解锁” Arial 字体)和进行了设置\setmainfont{Arial}。我可以使用“任何”衬线字体来写方程式,因此我保留了默认字体。

每当我遇到多字母变量时,我都想使用它\mathit{}来避免每个字母之间有空格并且仍然保持斜体,但不幸的是,字体会变成 Arial,而不是数学模式字体:

结果1

据我所知,数学字体不应该改变字体。我尝试强制更改数学字体\setmathrm{Asana-Math}(我不必专门使用这个,Asana Math 只是我在文档下的“数学字体”),但正常数学模式仍然采用默认字体,而 Asana-Math 中的其他所有内容都没有斜体(甚至mathit),请参见结果:

结果2

\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为您提供第一个 (当且仅当排版为一个单词,而不是三个数学符号的乘积FF)。如您所见,它默认使用\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}

Arial + Fira 示例

这里。我使用 Fira Math 作为无衬线数学字体,匹配度相当高。您提到您正在使用任何衬线数学字体;Office 公式编辑器的默认字体是 Cambria Math。

如果您仍想在数学模式下使用单词,并让它们出现在主文本字体中,则可以在数学模式下使用命令\textnormal和。\textit

如果你以这种方式使用\mathit,你可能也期望\mathrm\mathbf以相同的方式工作,所以你想要的命令实际上可能是

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

准确表达你的意思

您需要的是 的行为,而不是下的\symit默认行为,这与其他包下的 的默认行为并不完全相同。如果您在源代码中写入或,而不是含糊不清的 ,则将代码复制到另一个文档时意外中断的可能性会大大降低。\mathitunicode-math\mathit\symit\textit\mathit

更改\mathit字体

命令\setmathrmfontspec允许您将\mathit\mathbf字体设置\mathbfitItalicFontBoldFontBoldItalicFont\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}

Arial + Fira 示例

使用传统数学字体

您不必使用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}

Newtxsf + Arial

答案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 的屏幕截图:

在此处输入图片描述

相关内容