XeLaTeX/beamer/fontspec/unicode-math:更改所有数学数字的字体

XeLaTeX/beamer/fontspec/unicode-math:更改所有数学数字的字体

请考虑以下 MWE:

\documentclass{beamer}
\usepackage{unicode-math}
\usepackage{fontspec}
\setsansfont{some-font.otf}
\usefonttheme[onlymath]{serif}

\begin{document}
    \begin{frame}
        Some text with the number \textit{two} in text mode (2) and math mode ($2$).
        \begin{equation*}
            \vec{s}(t) = \frac{\vec{a}}{2} t^2 + \vec{v}_0 t + \vec{s}_0
        \end{equation*}
    \end{frame}
\end{document}

如何将所有数学数字的字体更改为定义的 sans 字体fontspec\setsansfont命令(与字体无关)?

我尝试使用\UmathcodeXeTeX 原语以及\setmathfont提供的unicode-math然而,我没有成功。

我知道包裹mathspec及其\setmathfont(digits)命令,但我意识到beamer类文档和fontspec/mathspec或导致数学元素放错位置(参见图 1 和图 2 进行比较;对于图 2,\usepackage{unicode-math}包已在 MWE 中被注释掉)。

图 1:加载 <code>unicode-math</code>。 图 2:没有 <code>unicode-math</code>。

更新:
\setmainfont{Arial}在我的设置中,此 MWE 编译时没有任何错误。但是,如果注释掉 该行,则会抛出错误。如果我将字体指定为文件(*.ttf 或 *.otf)而不是系统安装的字体,情况也是如此。

\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage{unicode-math}
\usepackage{fontspec}
\setmainfont{Arial}
\setmathfont[range={\mathup}]{Lucida Sans}

\begin{document}
    \begin{frame}
        \begin{equation}
            x = \int\limits_0^\infty f(q) \,\mathrm{d} q
        \end{equation}
    \end{frame}
\end{document}

答案1

禁用字体设置beamer

\documentclass{beamer}
\usefonttheme{professionalfonts}% use own font handling
\usepackage{unicode-math}
\setmainfont{Lucida Sans}
\setmathfont{XITS Math}
\setmathfont[range={\mathit}]{Lucida Sans Italic}
\setmathfont[range={\mathup}]{Lucida Sans}

\begin{document}
    \begin{frame}
        Some text with the number \textit{two} in text mode (2) and math mode ($2$).
        \begin{equation*}
            \vec{s}(t) = \frac{\vec{a}}{2} t^2 + \vec{v}_0 t + \vec{s}_0
        \end{equation*}
    \end{frame}
\end{document}

输出

相关内容