LuaLaTeX 无衬线数学字体 unicode 希腊语

LuaLaTeX 无衬线数学字体 unicode 希腊语

我知道 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}

得出: 使用 FiraMath-Regular 字体的代码

我设置\setoperatorfont\symup为用 来处理运算符(如\minunicode-math

相关内容