如何使用 \setmathfont 更改组内的数学字体?

如何使用 \setmathfont 更改组内的数学字体?

考虑以下测试文件并使用 LuaTeX(TeXLive 2016)进行编译:

\documentclass{article}
\usepackage[math-style = TeX]{unicode-math}

\setmainfont{texgyretermes}[
  Extension = .otf,
  UprightFont = *-regular,
  BoldFont = *-bold,
  ItalicFont = *-italic,
  BoldItalicFont = *-bolditalic,
  ]

\setsansfont{texgyreadventor}[
  Extension = .otf,
  UprightFont = *-regular,
  BoldFont = *-bold,
  ItalicFont = *-italic,
  BoldItalicFont = *-bolditalic,
  ]

\setmathfont{Latin Modern Math}

\begin{document}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}

\setmathfont[range=up/{greek,Greek,latin,Latin,num}]{texgyreadventor-regular}
\setmathfont[range=it/{greek,Greek,latin,Latin,num}]{texgyreadventor-italic}
\setmathfont[range = {}]{Latin Modern Math}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}

\setmathfont{Latin Modern Math}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}

% {
%   \setmathfont[range=up/{greek,Greek,latin,Latin,num}]{texgyreadventor-regular}
%   \setmathfont[range=it/{greek,Greek,latin,Latin,num}]{texgyreadventor-italic}
%   \setmathfont[range = {}]{Latin Modern Math}

%   \begin{equation}
%     \int_{t = 0}^{x^2} t dt
%   \end{equation}
% }

\end{document}

如果我取消注释最后几行,LuaTeX 就会永远挂起。如何更改组内的数学字体?


编辑

我很清楚我不应该使用非数学字体来做数学题,但不幸的是,据我所知,无衬线数学字体还不存在。

该问题似乎与我使用非数学字体无关。

\documentclass{article}
\usepackage[math-style = TeX]{unicode-math}

\setmathfont{Latin Modern Math}

\begin{document}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}

\setmathfont{Asana-Math}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}

\setmathfont{Latin Modern Math}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}


% {
%   \setmathfont{Asana-Math}

%   \begin{equation}
%     \int_{t = 0}^{x^2} t dt
%   \end{equation}
% }


\end{document}

然而,正如@cfr所建议的,我应该用\mathversion:以下作品。

\documentclass{article}
\usepackage[math-style = TeX]{unicode-math}

\setmathfont[version=lm]{Latin Modern Math}
\setmathfont[version=asana]{Asana-Math}

\mathversion{lm}

\begin{document}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}

\mathversion{asana}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}

\mathversion{lm}

\begin{equation}
  \int_{t = 0}^{x^2} t dt
\end{equation}


{
  \mathversion{asana}

  \begin{equation}
    \int_{t = 0}^{x^2} t dt
  \end{equation}
}

\end{document}

答案1

这里实际上有两个问题。

首先unicode-math想要opentype 字体带有适当的math表格。据我所知,它只适用于完全没有这个的字体,因为配置会直接设置适用于rangeup尽管字体缺少通常可以设置范围等的东西。

设置替代数学字体集的常用方法是声明替代数学,version例如boldversus normalunicode-math支持这一点。这基本上是可行的,正如您的示例所示。

然而,第二个问题是,似乎无法将range与结合使用version。设置范围会影响全部数学版本,而不仅仅是指定的版本,正如我在这个问题

相关内容