unicode-math,希腊字母直立,拉丁字母斜体

unicode-math,希腊字母直立,拉丁字母斜体

我用它unicode-math来选择 XeLaTeX 中的数学字体。从文档中,我看到有四个选项math-style

  • ISO包含所有字母,希腊文和拉丁文,斜体
  • TeX除大写希腊字母外,所有字母均为斜体,大写希腊字母为直立
  • french除小写拉丁字母(斜体)外,所有字母均直立
  • upright所有字母都直立

是否可以将所有拉丁字母设为斜体并将所有希腊字母设为直立?

我需要此设置的原因是我正在使用 Garamond-Math,但我不喜欢此字体的斜体希腊字母,因此另一种解决方案可能是从其他字体中获取希腊字母,但我无法做到这一点。这是我的设置:

\usepackage[math-style=ISO,bold-style=ISO]{unicode-math}
\setmathfont{Garamond-Math.otf}[StylisticSet={5,7,9}]
\setmathfont{TeX Gyre Termes Math}[range=it/{Greek,greek}]

答案1

您可以设置 David 在文档中提到的布尔值。请注意,这是 unicode-math 的内部命令,因此最好向官方界面提出功能请求:

\documentclass{article}

\usepackage{unicode-math}
\ExplSyntaxOn
\bool_gset_false:N  \g__um_upGreek_bool %or true
\bool_gset_true:N   \g__um_upgreek_bool %or false
\bool_gset_true:N   \g__um_uplatin_bool %or false
%more if needed ...
\ExplSyntaxOff

\setmathfont{Garamond-Math.otf}[StylisticSet={5,7,9}]


\begin{document}

$a\alpha\Gamma$

\end{document}

在此处输入图片描述

答案2

您提到的选项只是设置了布尔标志,因此应该很容易添加具有不同组合的另一个选项

      {ISO} {
             \bool_gset_false:N \g__um_bfliteral_bool
             \bool_gset_false:N \g__um_bfupGreek_bool
             \bool_gset_false:N \g__um_bfupgreek_bool
             \bool_gset_false:N \g__um_bfupLatin_bool
             \bool_gset_false:N \g__um_bfuplatin_bool
            }
      {TeX} {
             \bool_gset_false:N \g__um_bfliteral_bool
             \bool_gset_true:N  \g__um_bfupGreek_bool
             \bool_gset_false:N \g__um_bfupgreek_bool
             \bool_gset_true:N  \g__um_bfupLatin_bool
             \bool_gset_true:N  \g__um_bfuplatin_bool
            }
  {upright} {
             \bool_gset_false:N \g__um_bfliteral_bool
             \bool_gset_true:N  \g__um_bfupGreek_bool
             \bool_gset_true:N  \g__um_bfupgreek_bool
             \bool_gset_true:N  \g__um_bfupLatin_bool
             \bool_gset_true:N  \g__um_bfuplatin_bool
            }
  {literal} {
             \bool_gset_true:N  \g__um_bfliteral_bool
            }

答案3

根据您的评论,您可能会XY 问题。 你说你想要的是无衬线字体的标题。你遇到的问题是unicode-math支持任何一个 range=version=,但不能同时使用。(手册中对此有警告。)

如果这确实需要,请使用 加载无衬线数学字体version=,而不要使用range=

\documentclass{scrartcl}
\usepackage{unicode-math}

\setmainfont{KpRoman}
\setsansfont{KpSans}
\setmonofont{KpMono}
\setmathfont{KpMath-Regular}
\setmathfont{KpMath-Bold}[version=bold]
\setmathfont{KpMath-Sans}[version=sans]

\addtokomafont{disposition}{\mathversion{sans}}

\begin{document}
\section*{Isn’t \(\mathbb{R}^3\) Wonderful?}

Truly, \(\mathbb{R}^3\) is.
\end{document}

KP 字体样本

很遗憾,你没有太多选择当谈到无衬线数学字体时。

定义\sansversion类似于很简单,如果您需要能够在表达式中切换到无衬线数学,\boldversion您还可以将\boldsymbol代码从改编amsbsy.sty为命令。否则,将标题的格式以及您希望无衬线的其他内容设置为。\sanssymbol\sffamily\mathversion{sans}

如果您已经知道这一点,而只是想问如何在不使用的情况下更改数学字体中的希腊字母range=,那么一种方法是定义一个新的\setmathfontface或数学version=来选择您的替代希腊字体。

\documentclass{article}
\tracinglostchars=2
\usepackage[math-style=ISO]{unicode-math}

\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{EBGaramond}[Scale=1.0]
\setsansfont{KpSans}
\setmonofont{KpMono}
\setmathfont{Garamond-Math}
\setmathfont{KpMath-Sans}[version=sans]
\setmathfontface{\altgreek}{GFS Olga}

\newcommand\altGamma{\altgreek{\mupGamma}}
\newcommand\altzeta{\altgreek{\mupzeta}}

\begin{document}
Truly, \(\altGamma(\altzeta)\) is wonderful.
\end{document}

EB Garamond/GFS Olga 样品

相关内容