Unicode 数学和声明符号字体

Unicode 数学和声明符号字体

我想将数学字体设置为 Garamond-Math (这里),但希腊字母应来自不同的字体(例如,下面示例中的现代计算机)。但声明新字体似乎不起作用。

如何实现这一点?

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage[math-style=ISO, bold-style=ISO]{unicode-math}
\setmathfont{Garamond-Math.otf}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareSymbolFont{gs}{OML}{cmm}{m}{it}
\DeclareMathSymbol{\alpha}{\mathalpha}{gs}{11}
\DeclareMathSymbol{\beta}{\mathalpha}{gs}{12}
\DeclareMathSymbol{\gamma}{\mathalpha}{gs}{13}

\begin{document}
\[2a\alpha=\theta\]
\end{document}

答案1

unicode-math做很多事情\AtBeginDocument,你可以延迟你的声明:

\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Garamond-Math.otf}

\DeclareSymbolFont{gs}{OML}{cmm}{m}{it}
\newcommand*\RedeclareMathSymbol[4]{%
  \let#1\relax
  \DeclareMathSymbol{#1}{#2}{#3}{#4}%
}

\AtBeginDocument{%
  \RedeclareMathSymbol{\alpha}{\mathalpha}{gs}{11}%
  \RedeclareMathSymbol{\beta}{\mathalpha}{gs}{12}%
}

\begin{document}
\[2a\alpha=\beta\theta\]
\end{document}

混合字体

答案2

它不起作用,因为unicode-math在文档开始处设置了字体表。

您应该使用该range功能:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage[math-style=ISO, bold-style=ISO]{unicode-math}

\setmathfont{Garamond-Math.otf}
\setmathfont{latinmodern-math.otf}[
  Scale=MatchLowercase,
  range=it/{greek,Greek},
]
\setmathfont{Garamond-Math.otf}[range=\int]


\begin{document}

\[2a\alpha=\theta\]

\end{document}

在此处输入图片描述

相关内容