我用它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}
很遗憾,你没有太多选择当谈到无衬线数学字体时。
定义\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}