我知道 tex.stackexchange 上有很多关于此问题的帖子,但我能找到的帖子都很旧了(到现在差不多有 5-10 年了),我不确定它们是否仍然适用。
那么有没有办法在数学模式下使用无衬线字体来显示普通文本字符?
\documentclass{scrartcl}
\usepackage{fontspec}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{amsmath}
\usepackage[math-style=ISO]{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{Latin Modern Math}[version=bold,FakeBold={3}]
\setoperatorfont\mathsf
\begin{document}
normal text
$(a+\rho_i)^2 = a^2 + 2a\rho_i \rho_i^2 \quad \min\text{ text in math}$
\end{document}
i
在这个例子中,这将是索引和变量的问题a
。
答案1
设置任意OpenType 数学字体使用unicode-math
。这是最简单的方法。
该unicode-math
软件包还允许您从其他字体中取出希腊字母,例如 \setmathfont[range=it/{Greek, greek}]{CMU Sans Serif Italic}
,但所有 OpenType 数学字体都支持希腊语。
还有使用mathastext
和的解决方案mathspec
,或者您可以加载fontspec
任何传统的 8 位无衬线数学包。
答案2
要获得无衬线字体,您应该设置无衬线字体;Latin Modern 不是。您需要一种支持数学的字体。请参阅:有哪些 OpenType Math 字体可用?。
例如FiraMath-Regular
:
\documentclass{scrartcl}
\usepackage{fontspec}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{amsmath}
\usepackage[math-style=ISO]{unicode-math}
\setoperatorfont\symup
\setmathfont{FiraMath-Regular}
\begin{document}
normal text
$(a+\rho_i)^2 = a^2 + 2a\rho_i \rho_i^2 \quad \min\text{ text in math}$
\end{document}
我设置\setoperatorfont\symup
为用 来处理运算符(如\min
)unicode-math
。