有哪些 OpenType 数学字体可用于 TeX/LaTeX,例如使用该unicode-math
包?
这里有一个 MWE,您可以用它来展示字体。
\documentclass{article}
\pagestyle{empty}
\usepackage{amsmath}
\DeclareMathOperator\Res{Res}
\newcommand*\diff{\mathop{}\!\mathup{d}}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\usepackage{unicode-math}
%%%
% Set up you text and math fonts
%%%
\begin{document}
\begin{theorem}[Residue theorem]
Let $f$ be analytic in the region $G$ except for the isolated
singularities $a_1,a_2,\dots,a_m$. If $\gamma$ is a closed
rectifiable curve in $G$ which does not pass through any of the
points $a_k$ and if $\gamma\approx 0$ in $G$, then
\[
\frac{1}{2\pi i} \int\limits_\gamma f\Bigl(x^{\mathbf{N}\in\mathbb{C}^{N\times 10}}\Bigr)
= \sum_{k=1}^m n(\gamma;a_k)\Res(f;a_k)\,.
\]
\end{theorem}
\begin{theorem}[Maximum modulus]
Let $G$ be a bounded open set in $\BbbC$ and suppose that $f$ is a
continuous function on $G^-$ which is analytic in $G$. Then
\[
\max\{\, |f(z)|:z\in G^- \,\} = \max\{\, |f(z)|:z\in \partial G \,\}\,.
\]
\end{theorem}
First some large operators both in text:
$\iiint\limits_{Q}f(x,y,z) \diff x \diff y \diff z$
and
$\prod_{\gamma\in\Gamma_{\bar{C}}}\partial(\tilde{X}_\gamma)$;\
and also on display
\[
\iiiint\limits_{Q}f(w,x,y,z) \diff w \diff x \diff y \diff z
\leq
\oint_{\partial Q} f'\Biggl(\max\Biggl\{
\frac{\Vert w\Vert}{\vert w^2+x^2\vert};
\frac{\Vert z\Vert}{\vert y^2+z^2\vert};
\frac{\Vert w\oplus z\Vert}{\vert x\oplus y\vert}
\Biggr\}\Biggr)\,.
\]
\end{document}
这是 ConTeXt 的类似 MWE。答案中的图像仅针对 LaTeX 输出显示,但 ConTeXt 输出看起来非常相似。
%%%
% Set up you text and math fonts
%%%
\setupmathlabeltext[Res=Res]
\definemathcommand[Res][nolop]{\mfunctionlabeltext{Res}}
\definemathcommand[diff]{\mathop{}\!\mfunctionlabeltext{diff}}
\defineenumeration
[theorem]
[text={Theorem},
style=italic,
title=yes,
titlestyle=normal,
distance=0pt,
titleleft={(},
titleright={).~},
alternative=serried,
width=fit]
\starttext
\starttheorem[title={Residue theorem}]
Let $f$ be analytic in the region $G$ except for the isolated
singularities $a_1,a_2,\dots,a_m$. If $\gamma$ is a closed
rectifiable curve in $G$ which does not pass through any of the
points $a_k$ and if $\gamma\approx 0$ in $G$, then
\startformula
\frac{1}{2\pi i} \int\limits_\gamma f\Bigl(x^{{\mathbf N}\in\mathbb{C}^{N\times 10}}\Bigr)
= \sum_{k=1}^m n(\gamma;a_k)\Res(f;a_k)\,.
\stopformula
\stoptheorem
\starttheorem[title={Maximum modulus}]
Let $G$ be a bounded open set in $\mathbb{C}$ and suppose that $f$ is a
continuous function on $G^-$ which is analytic in $G$. Then
\startformula
\max\{\, |f(z)|:z\in G^- \,\} = \max\{\, |f(z)|:z\in \partial G \,\}\,.
\stopformula
\stoptheorem
First some large operators both in text:
$\iiint\limits_{Q}f(x,y,z) \diff x \diff y \diff z$
and
$\prod_{\gamma\in\Gamma_{\bar{C}}}\partial(\tilde{X}_\gamma)$;\
and also on display
\startformula
\iiiint\limits_{Q}f(w,x,y,z) \diff w \diff x \diff y \diff z
\leq
\oint_{\partial Q} f'\Biggl(\max\Biggl\{
\frac{\Vert w\Vert}{\vert w^2+x^2\vert};
\frac{\Vert z\Vert}{\vert y^2+z^2\vert};
\frac{\Vert w\oplus z\Vert}{\vert x\oplus y\vert}
\Biggr\}\Biggr)\,.
\stopformula
\stoptext
答案1
TeX Gyre 字体
拉丁现代
这是 加载的默认字体系列unicode-math
,但也可以明确设置。它是 Latin Modern 的 OpenType 版本,是 DEK 的 Computer Modern 的克隆版,基于 Monotype Modern,是 AMS 符号字体的克隆版。因此,默认字体与经典 LaTeX 的字体几乎相同。
此次转换是 GUST 项目的工作成果,该项目后来从基于 Adobe PostScript 字体的免费 URW 字体中创建了 TeX Gyre 字体。所有这些字体(TeX Gyre DejaVu Math 除外,它是将现有 OpenType 字体转换为数学字体)都具有相似的曲目和功能。它们支持所有欧洲语言以及其他语言的罗马化。
本页上的大多数字体都类似地克隆了现有字体,但更改了名称以避免混淆或遵守许可证。有些字体已经经历了三到四次迭代。
GUST 是波兰 TeX 用户组。许多最热衷于扩展现有字体的人来自南欧或东欧,因为已经涵盖西欧语言和数学希腊字母的字体几乎能够支持他们的母语。
% LaTeX
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}
% ConTeXt
\setupbodyfont[modern]
特克斯环流波纳姆
这是 Bookman 的克隆版。
% LaTeX
\setmainfont{TeX Gyre Bonum}
\setmathfont{TeX Gyre Bonum Math}
% ConTeXt
\setupbodyfont[bonum]
TeX 环流佩格拉
这是 Palatino 的克隆。
% LaTeX
\setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}
% ConTeXt
\setupbodyfont[pagella]
TeX 回旋学院
这是 Century Schoolbook 的克隆版。
% LaTeX
\setmainfont{TeX Gyre Schola}
\setmathfont{TeX Gyre Schola Math}
% ConTeXt
\setupbodyfont[schola]
TeX 环流
这是《时代》的克隆版。
% LaTeX
\setmainfont{TeX Gyre Termes}
\setmathfont{TeX Gyre Termes Math}
% ConTeXt
\setupbodyfont[termes]
TeX Gyre DejaVu Math
该字体是 DejaVu Serif 字体的扩展,基于 Arev,基于 Bitstream Vera,基于 Bitstream Prima。
它与其他 TeX Gyre 字体有很大不同,因为它们是将旧字体转换为 Unicode,这会将其他人现有的综合 Unicode 字体转换为数学字体。DejaVu 项目由捷克共和国的 Štěpán Roh 发起。
% LaTeX
\setmainfont{DejaVu Serif}
\setmathfont{TeX Gyre DejaVu Math}
% ConTeXt
\setupbodyfont[dejavu]
DejaVu Math TeX Gyre
同一字体的版本由DejaVu 项目而不是 TeX Gyre 项目。
% LaTeX
\setmainfont{DejaVu Serif}
\setmathfont[Scale=MatchLowercase]{DejaVu Math TeX Gyre}
其他免费字体
西安国际旅行社
这是 Khaled Hosny 对 STIX 字体的一个分支。它是首批同时提供常规和粗体两种粗细版本的免费 OpenType 数学字体之一,这意味着\boldmath
、\mathversion{bold}
和\boldsymbol
都可以使用它。
% LaTeX
\setmainfont{XITS}
\setmathfont{XITS Math}
% ConTeXt
\setupbodyfont[xits]
自由主义者
Libertinus 是 Khaled Hosny 从 Philipp Poll 的 Linux Libertine 字体系列中衍生而来。它采用粗体字号,就像他的 XITS Math 字体一样。
Hosny 博士还是使用阿拉伯文字排版数学的专家,因此如果您使用阿拉伯语、波斯语或乌尔都语等语言书写,他的字体 Libertinus Math 和 Amiri 将成为您极佳的伴侣。
% LaTeX
\setmainfont{Libertinus Serif}
\setmathfont{Libertinus Math}
% ConTeXt
\setupbodyfont[libertinus]
体位数学
Asana 与 Palatino 及其克隆字体(如 Pagella)非常相似。您应该使用其中一种字体作为文本字体。如果您尝试将 Asana 作为文本字体,您将无法获得样式或连字。
它是由 Apostolos Syropoulos 创建的,基于 Young Ryu 的 Type 1 字体,外观与包装相似pxfonts
。
% LaTeX
\setmainfont[Ligatures={Common,Rare,TeX}]{TeX Gyre Pagella}
\setmathfont[Scale=MatchUppercase]{Asana Math}
STIX二
这是 STIX 字体的后继者,XITS 是其克隆版。它于 2018 年被添加到 CTAN、TeX Live 和 MikTeX。
% LaTeX
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}
% ConTeXt
\setupbodyfont[stixtwo]
GFS 新希腊
此字体只有较小的粗衬线,非常适合用于演示。它基于公共领域字体 New Hellenic,灵感来自文艺复兴时期威尼斯的希腊字体。
数学版本是爱琴大学数学系委托希腊字体协会制作的。
% LaTeX
\setmainfont{GFS Neohellenic}
\setmathfont{GFS Neohellenic Math}
% ConTeXt (no ready-made typescript available)
\definefontfamily [mainface] [serif] [Latin Modern Roman]
\definefontfamily [mainface] [sans] [GFS Neohellenic]
\definefontfamily [mainface] [mono] [Latin Modern Mono]
\definefontfamily [mainface] [math] [GFS Neohellenic Math]
\setupbodyfont[mainface]
Garamond 数学
该字体于 2019 年添加到 CTAN。它基于 EB Garamond。
% LaTeX
\setmainfont{EBGaramond-Regular}[
BoldFont = EBGaramond-Bold,
ItalicFont = EBGaramond-Italic,
BoldItalicFont = EBGaramond-BoldItalic
]
\setmathfont{Garamond Math}[Scale=MatchUppercase]
费拉数学
该字体基于 Fira Go 无衬线字体。它于 2018 年 11 月添加到 CTAN。
% LaTeX
\setmainfont{FiraGO}
\setmathfont{FiraMath-Regular}
埃瑞璜数学
Erewhon Math 基于 Utopia,通过 Heuristica 和 Erewhon 实现。其数学符号基于该fourier
软件包。它于 2019 年 12 月添加到 CTAN。
推荐的加载方式是
\usepackage{fourier-otf}
但\setmainfont{Erewhon}
也\setmathfont{Erewhon-Math}
能正常工作。截至 2020 年 2 月,我需要以下解决方法fourier-otf
才能启用粗体文本:
% Workaround for the definition of theorem headers:
\usepackage{fontspec}
\defaultfontfeatures[Erewhon]{FontFace = {bx}{n}{Erewhon-Bold.otf}}
数学
kpfonts
这是Christophe Caignaert的 OpenType 版本。
% LaTeX
\usepackage{kpfonts-otf}
KpMath字体提供5种样式,可通过数学版本设置:
\setmathfont{KpMath-Regular.otf}[version=regular]
\setmathfont{KpMath-Bold.otf}[version=bold]
\setmathfont{KpMath-Semibold.otf}[version=semibold]
\setmathfont{KpMath-Sans.otf}[version=sans]
\setmathfont{KpMath-Light.otf}[version=light]
\boldmath
和命令\boldsymbol
切换到bold
数学版本,因此大多数作者会选择其中一个权重作为默认值,另一个作为粗体,例如
\setmathfont{KPMath-Light.otf}
\setmathfont{KPMath-Semibold.otf}[
version=bold]
可能更好地匹配文本字体的粗细。这允许您格式化标题以\bfseries\boldmath
使数学与文本匹配。
如果您确实需要在同一文档中在三种或更多种数学样式之间切换,则可以将代码改编\boldsymbol
为amsbsy.sty
其他数学样式。
新电脑现代
Latin Modern 的一个分支,增加了对更多脚本和数学符号的支持,包括希腊文、西里尔文、希伯来文、切罗基文和 STIX 字体中的所有符号。它还具有稍重的 Book 重量。截至 2020 年,它尚不支持 Latin Modern 的一些功能,例如光学尺寸和直立斜体。
书本重量:
\usepackage[default]{fontsetup}
正常体重时:
\usepackage[olddefault]{fontsetup}
具体数学
该concmath-otf
软件包提供了 Ulrik Vieth 在 MetaFont 中创建的 Concrete Math 字体的 Opentype 版本。concmath-otf.sty
是原始concmath.sty
软件包的替代品。
% LaTeX
\usepackage{concmath-otf}
宪章
XCharter-Math 是一种基于 Bitstream Charter 的 Opentype 数学字体,旨在与 XCharter 文本字体一起使用。
% LaTeX
\usepackage{xcharter-otf}
拉托数学
有一个 GitHub 存储库为 Lato 提供数学支持:https://github.com/abccsss/LatoMath。字体尚未上传到 CTAN。.otf
从 GitHub 生成的文件:LatoMath.otf
欧拉数学
Neo Euler 数学字体的扩展,具有基本完整的符号集。它以 CMU Concrete 和 TeX Gyre Pagella (Palatino) 作为文本字体显示。
% LaTeX
\usepackage{euler-math}
\setmainfont{CMU Concrete}
% LaTeX
\usepackage{euler-math}
\setmainfont{TeX Gyre Pagella}
Neo Euler(免费但不完整)
Khaled Hosny 将 Hermann Zapf 设计的 AMS Euler 字体转换为 DEK 合著的书籍,具体数学:计算机科学的基础。
@davislor 下面写的代码现在可以在包中使用,但您仍然需要euler.otf
从其存储库下载。 您现在可以写
\usepackage[neoeuler]{fontsetup}
或者
\usepackage{fspneoeulerot}
但这是他们所做事情的解释:
AMS Euler 最初与 Concrete Roman 字体搭配使用,现在该字体可从 Computer Modern Unicode 项目以 CMU Concrete 的名称获得。Euler 与 Zapf 的其他著名字体、衬线字体 Palatino(以及它的许多克隆字体,包括 Pagella 和 Asana)和无衬线字体 Optima(它有一个 OpenType 克隆字体 URW Classico)搭配得很好。Linux Libertine 及其扩展 Libertinus 也与它很匹配,同样由 Khaled Hosny 设计的 Libertinus Math 也显示出一些相似之处。
Neo Euler 于 2010 年被废弃,其字形库比其他字体要小(Zapf 于 2015 年去世,不会再绘制任何字形),因此如果它缺少您需要的任何字形,您可能需要使用该range=
选项加载它,以便将其与包含其缺少的字形的后备字体一起使用。以下加载 Neo Euler 中定义的所有字形,加载 CMU Concrete 作为文本字体,并使用 Libertinus Math 作为其余部分的后备(例如比例)。
由于 Neo Euler 有直立字形,没有斜体字形,因此需要 选项math-style=upright
。unicode-math
不幸的是,下标和上标的字体指标似乎被破坏了,因此此示例关闭了字母和数字的脚本样式。它还确保将希腊小写字母加载为直立。如果您想将其与所有数学字母一起使用,请参阅下面的演示,了解如何从其他字体中填充缺失的部分。
% LaTeX
\unimathsetup{math-style=upright}
\setmainfont{CMU Concrete}
\defaultfontfeatures{Scale=MatchLowercase}
\setmathfont{Libertinus Math}
\setmathfont[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
"0131,
"0237,"02C6-"02C7,"02D8-"02DA,"02DC,
"0300-"030C,"030F,"0311,"0323-"0325,"032E-"0332,"0338,
"0391-"0393,"0395-"03A1,"03A3-"03A8,"03B1-"03BB,
"03BD-"03C1,"03C3-"03C9,"03D1,"03D5-"03D6,"03F5,
"2016,"2018-"2019,"2021,"2026-"202C,"2032-"2037,"2044,
"2057,"20D6-"20D7,"20DB-"20DD,"20E1,"20EE-"20EF,
"210B-"210C,"210E-"2113,"2118,"211B-"211C,"2126-"2128,
"212C-"212D,"2130-"2131,"2133,"2135,"2190-"2199,
"21A4,"21A6,"21A9-"21AA,"21BC-"21CC,"21D0-"21D5,
"2200,"2202-"2209,"220B-"220C,"220F-"2213,"2215-"221E,
"2223,"2225,"2227-"222E,"2234-"2235,"2237-"223D,
"2240-"224C,"2260-"2269,"226E-"2279,"2282-"228B,"228E,
"2291-"2292,"2295-"2299,"22A2-"22A5,"22C0-"22C5,
"22DC-"22DD,"22EF,"22F0-"22F1,
"2308-"230B,"2320-"2321,"2329-"232A,"239B-"23AE,
"23DC-"23DF,
"27E8-"27E9,"27F5-"27FE,"2A0C,"2B1A,
"1D400-"1D433,"1D49C,"1D49E-"1D49F,"1D4A2,"1D4A5-"1D4A6,
"1D4A9-"1D4AC,"1D4AE-"1D4B5,"1D4D0-"1D4E9,"1D504-"1D505,
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7
}]{Neo Euler}
\setmathfont[range=up/{greek,Greek}, script-features={}, sscript-features={}
]{Neo Euler}
\setmathfont[range=up/{latin,Latin,num}, script-features={}, sscript-features={}
]{Neo Euler}
另一种流行的设置是将 Neo Euler 的直立字母与 Palatino 结合使用。
\usepackage[math-style=upright]{unicode-math}
\setmainfont{Palatino Linotype}[ % Or TeX Gyre Pagella, etc.
Scale=1.0,
Ligatures={Common,Rare,TeX}]
\setmathfont{TeX Gyre Pagella Math}[
Scale=MatchLowercase]
\setmathfont{euler.otf}[
range={up/{Latin,latin,Greek,Greek},
bfup/{Latin,latin,Greek,Greek},
cal, bfcal, frak, bffrak},
Scale=MatchLowercase,
script-features={},
sscript-features={}]
STIX 数学 常规
首次尝试创建一套全面的科学、技术和数学符号。STIX 基于 Elsevier 的 Esstix,并受到 Monotype 的 Times 4-Line Mathematics Series 569 的启发,后者是上世纪中叶的一种字体,可简化机械印刷机上的数学排版。OpenType 数学支持并不完整,因此创建了 XITS Math 项目。
% LaTeX
\setmainfont{STIX}
\setmathfont{STIX Math}
% ConTeXt
\setupbodyfont[stix]
Noto Sans Math(不完整)
自 2020 年 6 月起,此字体可从Noto 字体 GitHub 页面。 它尚未完全实现 OpenType 数学功能,因此如果您将其用作主要数学字体,您会收到警告。
\setmainfont{Noto Sans}
\setmathfont{Noto Sans Math}
Berenis ADF Pro(不完整)
这是 TeX Live 中未包含的不完整字体。免费 来自铸造厂。文本字体还包含这里未显示的罕见连字,因为它们在数学文本中看起来不合适。
这是否应该被视为“OpenType 数学字体”尚有争议。它缺少 OpenType 数学表,unicode-math
0.81 不会将其视为有效的主数学字体。此示例将 Latin Modern Math 作为默认数学字体,然后加载此字体在其上定义的每个字形,您可以对任何 TrueType 或 OpenType 字体执行此操作。它只包含直立符号,因此它只能与选项一起使用math-style=upright
(unicode-math
或者如果您将其组合以从文本字体导入符号;见下文)。
尽管它是根据 GPL2 授权的,但它并不附带任何源文件。
% LaTeX
\unimathsetup{math-style=upright}
\setmainfont[Ligatures={Common,TeX}]{Berenis ADF Pro}
\defaultfontfeatures{Scale=MatchLowercase}
\setmathfont{Latin Modern Math}
\setmathfont[range={"0020-"007E,"00A0-"021F,"0237,"0259,"02C6,"02C7,
"02D8-"02DD,"0311,"0326,"037B-"037E,"0384-"038A,"038C-"045F,"0490-"0491,
"1E10-"1E11,"1E80-"1E85,"1EF2-"1EF3,"2000-"2026,"2030,"2039-"203A,"2044,
"2070,"2074-"207A,"207D-"208A,"208D-"208E,"20AC,"20DD-"20DF,"2102-"2103,
"2109,"210E-"210F,"2113,"2116,"2122,"2126,"212A,"212C-"212E,"2133,"213D,
"2153-"215E,"2190-"219D,"21A4-"21A8,"21AE-"21CA,"21D1-"21EA,"2202-"2212,
"2216-"221E,"2223-"222D,"223C="223D,"2241,"2248-"2249,"224D,"2260,
"2264-"2265,"226A-"226B,"226D-"2275,"227A-"227B,"2280-"2281,"2290-"2294,
"22C4-"22C5,"22E2-"22E3,"22EF,"2302-"2303,"25CA,"FB00-"FB06}
]{Berenis ADF Pro Math Regular}
商业字体
Lucida(商业)
由 TeX 用户组分发。 https://tug.org/store/lucida/index.html
% LaTeX
\setmainfont[
UprightFont = *,
ItalicFont = *-Italic,
BoldFont = *-Demi,
BoldItalicFont = *-DemiItalic,
Extension = .otf
]{LucidaBrightOT}
\setmathfont{LucidaBrightMathOT}
\setmathfont[version=bold]{LucidaBrightMathOT-Demi}
% ConTeXt
\setupbodyfont[lucidaot]
Minion Math(商业)
由其设计师分发,Johannes Küster。它有四种粗细和五种光学尺寸,是所有 OpenType 数学字体中最多的(截至 2019 年)。
% LaTeX
\setmainfont{Minion Pro}
\setmathfont[
SizeFeatures = {
{Size = -6, Font = MinionMath-Tiny, Style = MathScriptScript},
{Size = 6-8.4, Font = MinionMath-Capt, Style = MathScript},
{Size = 8.4-13, Font = MinionMath-Regular},
}]{MinionMath-Regular}
\setmathfont{MinionMath-Bold}[range={bfup->up,bfit->it}]
% ConTeXt
\setupbodyfont[minion]
Cambria Math(商业)
这是 Microsoft Office 用于其公式的字体。该字体随 Microsoft Windows Vista 及更高版本和 MS Office 一起提供,早期版本与某些版本的 MS Office 查看器捆绑在一起。Monotype 出售在工作站上使用它并将其嵌入网页的许可证,但在 Linux 上获得其合法副本的最可能方式是使用 Windows 分区中的/usr/local/share/fonts/
符号链接~/.fonts
。cambria_01.ttf
% LaTeX
\setmainfont{Cambria}
\setmathfont{Cambria Math}
% ConTeXt
\setupbodyfont[cambria]
风格组合和替代
这些字体中有许多都包含样式集或样式替代,可让您在字体中的某些符号的不同版本之间进行选择。STIX Two 的数量特别多,并实际记录下来。如果字体不支持,您仍可以通过在 FontForge 中打开它来检查它当前支持什么。这是您可以使用包选项做出的选择的补充。
例如,XITS 和 STIX Two 都包含带有替代直立积分的 Stylistic Set 8。(事实上,STIX Two 支持 XITS Math 的所有 Stylistic Set。)您可以按如下方式选择它们:
% LaTeX
\setmainfont{XITS}
\setmathfont{XITS Math}
\setmathfont[range={"222B-"2233,"2A0B-"2A1C},StylisticSet=8]{XITS Math}
为了进行比较,这里再次给出原始 XITS 示例:
这些替代样式的常见用途是用于手写字母表。传统上,LaTeX 为\mathcal
和分别使用字母表\mathscr
。但是,Unicode 联盟认为,没有任何数学文本同时使用具有不同含义的这两个字母表,因此它们是分配给相同代码点的不同表示形式。
但是,unicode-math
允许您加载不同的字母表,如\mathcal
和\mathscr
,以及\mathbfcal
和\mathbfscr
。某些字体(例如 XITS)将其实现为样式集,某些字体(例如 Asana Math)将其实现为样式替代,而其他字体则要求您加载不同的字体(如果您愿意)。例如,使用 Asana Math 执行此操作:
% LaTeX
\documentclass[preview,varwidth]{standalone}
\usepackage{microtype}
\usepackage{unicode-math}
\setmainfont[Ligatures={Common,Rare,TeX}]{Palatino Linotype}
% You might have Palatino or Palatino Linotype installed.
\defaultfontfeatures{Scale=MatchLowercase}
\setmathfont[Scale=MatchLowercase]{Asana Math}
\setmathfont[range={cal,bfcal},
Alternate,
Scale=MatchUppercase]
{Asana Math}
\begin{document}
Calligraphic: \(\mathcal{ABC}\) \qquad Script: \(\mathscr{ABC}\)
\end{document}
Kitbashing 数学字体
可以将任何字体的符号加载到数学样式中,并将它们用作符号\symup
。例如,几乎所有字体都包含量子电动力学符号位于 U+220E,但其外观差异很大。要获取 XITS Math 中的版本(与 1997 年版相匹配的黑色墓碑计算机编程艺术),可以使用以下命令:
% LaTeX
\documentclass[preview,varwidth]{standalone}
\usepackage{amsmath,amsthm}
\usepackage{unicode-math}
\setmathfont[range=`∎]{XITS Math}
\DeclareRobustCommand\qedsymbol{\ensuremath{\symup{∎}}}
\begin{document}
\begin{proof}[Tautology]
True
\end{proof}
\end{document}
另一个常见的要求是将文本字体系列的字母与数学字体的符号结合起来。由于 Neo Euler 是完全没有斜体字母的数学字体,因此它是一个很好的例子。经常有人建议将 Euler 与 Hermann Zapf 的另一部作品 Palatino 结合起来。由于 Pagella 和 Asana 都是 Palatino 的克隆,我们可以使用 Pagella 作为文本字体,并从 Asana 中获取所有缺失的字形,包括斜体数学字母。
这为我们提供了将样本转换为 ISO 样式的方法(这是同时展示直立和斜体数学字母的绝佳借口)。π 和 i 等常数保持直立(写为2 \symup{\pi i}
,分母仍显示欧拉数学字母)。大写希腊字母(例如 Gamma 函数)现在是斜体而不是直立,但基于希腊字母的符号(例如求和和乘积)保持不变。
本质上,这会在序言底部添加几行,填充所有剩余的数学字母并设置数字以匹配文本字体。
% LaTeX
\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
\setmainfont{TeX Gyre Pagella}
\defaultfontfeatures{Scale=MatchLowercase}
\setmathfont{Asana Math}
\setmathfont[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
"0131,
"0237,"02C6-"02C7,"02D8-"02DA,"02DC,
"0300-"030C,"030F,"0311,"0323-"0325,"032E-"0332,"0338,
"0391-"0393,"0395-"03A1,"03A3-"03A8,"03B1-"03BB,
"03BD-"03C1,"03C3-"03C9,"03D1,"03D5-"03D6,"03F5,
"2016,"2018-"2019,"2021,"2026-"202C,"2032-"2037,"2044,
"2057,"20D6-"20D7,"20DB-"20DD,"20E1,"20EE-"20EF,
"210B-"210C,"210E-"2113,"2118,"211B-"211C,"2126-"2128,
"212C-"212D,"2130-"2131,"2133,"2135,"2190-"2199,
"21A4,"21A6,"21A9-"21AA,"21BC-"21CC,"21D0-"21D5,
"2200,"2202-"2209,"220B-"220C,"220F-"2213,"2215-"221E,
"2223,"2225,"2227-"222E,"2234-"2235,"2237-"223D,
"2240-"224C,"2260-"2269,"226E-"2279,"2282-"228B,"228E,
"2291-"2292,"2295-"2299,"22A2-"22A5,"22C0-"22C5,
"22DC-"22DD,"22EF,"22F0-"22F1,
"2308-"230B,"2320-"2321,"2329-"232A,"239B-"23AE,
"23DC-"23DF,
"27E8-"27E9,"27F5-"27FE,"2A0C,"2B1A,
"1D400-"1D433,"1D49C,"1D49E-"1D49F,"1D4A2,"1D4A5-"1D4A6,
"1D4A9-"1D4AC,"1D4AE-"1D4B5,"1D4D0-"1D4E9,"1D504-"1D505,
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7
}]{Neo Euler}
\setmathfont[range=up/{greek,Greek}, script-features={}, sscript-features={}
]{Neo Euler}
\setmathfont[range=up/{latin,Latin}, script-features={}, sscript-features={}
]{Neo Euler}
\setmathfont[range={bfup/{latin, Latin, greek, Greek}, frak, bffrak, cal},
script-features={}, sscript-features={}
]{Neo Euler}
\setmathfont[range={up/num, bfup/num, it, bfit, scr, bfscr,
sfup, sfit, bfsfup, bfsfit, tt}
]{Asana Math}
\setmathfont[range=bfcal, Scale=MatchUppercase, Alternate]{Asana Math}
\setmathfont[range=bb, Scale=MatchUppercase]{Latin Modern Math}
以下再次以 Neo Euler 作为数学字体的示例:
(眼尖的人会注意到还有一行无法解释的代码,它将partial
和nabla
包选项设置为upright
。Neo Euler 在 U+2202 中包含直立的 ∂ 符号,但不包含 U+1D715 处的草书 ∂ 符号,这会让人感到困惑unicode-math
。否则,请从另一种数学字体加载 U+1D715。)
设置下标、上标、下下标和上上标时,使用较小的光学尺寸,使其在较小尺寸下更易读。有三种方法。可能有专为较小尺寸设计的配套字体。您可以使用加载script-font=
。(商业字体 Aldus 旨在用于 Palatino。)许多字体,包括 Latin Modern 和所有 TeX Gyre 字体,都带有不同的光学尺寸,您可以选择较小的尺寸,例如 script-features={OpticalSize=8}, sscript-features={OpticalSize=6}
.最后,数学字体支持字体功能script-features={Script=Math, Style=MathScript}, sscript-features={Script=Math, Style=MathScriptScript}
。
有关详细信息,请参阅unicode-math
和fontspec
包。
答案2
最近出现了两种新字体,NagwaTK 和 Old Standard Math。
NagwaTK:
\usepackage{unicode-math}
\setmainfont{NagwaTKText}
\setmathfont{NagwaTKMath-Regular.otf}
旧标准数学:
\usepackage[oldstandard]{fontsetup}
Erewhon Math ( fourier-otf
)、XCharter Math ( xcharter-otf
) 和 Concete Math ( concmath-otf
) 提供有限的粗体数学变体,可通过调用相应的包自动加载,例如加载 Concrete 文本、数学和粗体数学字体。粗体数学字体也可以使用或\usepackage{concmath-otf}
手动加载。\setmathfont{Concrete-Math-Bold.otf}[version=bold]
\setmathfont{Concrete-Math-Regular.otf}[BoldFont=Concrete-Math-Bold.otf]
DisplayOperatorMinHeight
可以使用以下方法调整字体参数\everydisplay{\Umathoperatorsize\displaystyle=4ex}
,具体说明如下这个答案,以获得 TeX Gyre 字体的更长积分。