从 Unicode 字体中获取数学运算符,但从文本中获取字符

从 Unicode 字体中获取数学运算符,但从文本中获取字符

因为我找到了一款不错的字体(oldstandard),所以我开始使用 XeLaTeX。这款字体对我来说有足够的数学运算符,但不幸的是没有涵盖任何数学字母数字符号。

因此,使用 unicode 数学,我从字体中获取了正确的运算符,但没有希腊字母。使用 mathspec 时,我得到了希腊字母(然后源自希腊文本块),但得到的是 Computer Modern 数学运算符,而不是 Old Standard 数学运算符。如何在将数学希腊语映射到文本希腊字母时从字体中获取符号和字母?

MWE:这会打印正确的字母,但会打印错误的符号:

\documentclass[a4paper]{scrartcl}
\usepackage{mathspec}
%\usepackage{unicode-math}
\setmainfont{Old Standard TT Regular}
\setmathsfont(Latin,Greek,Symbols){Old Standard TT Regular}
%\setmathfont{Old Standard TT Regular}
\begin{document}
AV
\[
    A= \sum V\oplus\alpha^\varkappa
\]
\end{document}

将注释行与上面的行分别交换会产生正确的符号但错误的字母。

答案1

你可以这样做unicode-math

\documentclass[a4paper]{scrartcl}
\usepackage{unicode-math}

\setmainfont{Old Standard}
\setmathfont{Old Standard}
\setmathfont[range=it]{Old Standard Italic}

\begin{document}
AV
\[
A= \sum_{i=1}^n V_i\oplus\alpha^\varkappa
\]

\end{document}

在此处输入图片描述

答案2

我怀疑将文本字体用作数学字体是不是一个好主意。数学不仅需要符号,还需要相当多的其他信息。在我看来,最好使用真正的数学字体作为基础,并用文本字体中的符号替换单个符号。

\documentclass[a4paper]{scrartcl}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range=up/{greek,Greek}]{Arial Unicode MS}
\setmathfont[range=it/{greek,Greek}]{Arial Unicode MS}
%Just to make sure that all math fontdimens are from a math font:
\setmathfont[range=\int]{Latin Modern Math}
\begin{document}

\[
    V\oplus V \quad \alpha^\varkappa \Gamma
\]
\end{document}

相关内容