我已经完成了博士论文的 60% 左右,然后将其交给导师审阅。我使用Pdflatex
Latin Modern 字体来书写文本和数学。对于源代码列表,我没有做任何特别的更改,而是使用了标准\texttt{}
字体。我的重点是快速获取内容。
现在,我的导师比我更了解格式,但latex
他没有使用,而是使用inDesign
和其他所见即所得的工具进行最终布局,并要求我提出一个现代的外观,同时保持整个文档的庄重感。我指导过几十名学生,他们都用现代计算机或拉丁现代字体完成论文,我想他只是在寻找一种更新颖的替代方案。我希望接受挑战,因为在最终提交之前我有足够的时间。
我的导师建议我使用 Minion Math,以及 Minion/Myriad Pro。他强烈建议我使用 OpenType Unicode 字体,并警告说,在统一数学字体方面我会遇到困难。
看起来两者xelatex
都lualatex
可以满足使用任意系统字体的基本要求。但我的问题在于 Minion Math,因为它不是免费的。我的顾问说他会为它付费。我找不到一套 opentype unicode 替代一致的文本/数学/单色字体。
这让我陷入了两难境地。我非常希望在我的论文中使用免费和开源字体,原因如下。我的导师不使用 latex
,我们使用 Overleaf 来共享文档并通过其富文本界面获得导师的反馈,我们都喜欢这种工作流程。使用专有字体,维护这种工作流程可能很困难。
唯一一套完整的支持数学运算的开放式 Unicode 字体系列似乎是 STIX、XITS、STIX TWO 和 Tex Gyre Variants,它们似乎都与 Times 类似。我绝对不想在我的论文中使用 Times 字体。
我最近遇到了 Libertinus,它似乎提供了所有变体 - serif、sans、mono 和 math,这看起来很有希望。但是,该字体的 github 存储库表明它仍在开发中。选择这种字体有多大风险?还有其他选择吗?
答案1
字体的情况比你想象的要好得多!我完全同意你的顾问的意见,你应该使用 OpenType 字体(因此,unicode-math
XeLaTeX 或 LuaLaTeX 上的软件包也是如此)。任何 OpenType 数学字体的符号覆盖范围都比任何传统 LaTeX 软件包的组合更完整、更一致,但该软件包还允许你自由地混合搭配符号和字母。
有一件事我不太清楚,那就是你是否想要一个等宽字体来显示代码列表或打字机字母数学符号。任何完整的 OpenType 数学字体都包含后者。
OpenType 数学字体
您可以找到 OpenType 数学字体列表及其示例,在这个答案。查看那里的列表:
- Latin Modern Math 是 Computer Modern plus 的克隆
amssymb
,但字形更多。它是您加载时的默认设置unicode-math
。如果您使用它,您将得到与 TeX 的默认设置完全相同的东西。 - TeX Gyre Bonum、Pagella、Termes 和 Schola 分别是 Bookman Old Style、Palatino、Times 和 Century Schoolbook 字体的克隆。你说你不想要 Times,但你可以看看其他的。
- TeX Gyre DejaVu Math 为 DejaVu 字体添加了数学支持,这些字体基于 Arev,基于 Bitstream Vera。还有一种无衬线字体。DejaVu 项目将其称为 DejaVu Math TeX Gyre。
- Asana Math 基于 Palatino,其符号类似于
mathpazo
以及其后继的newpxmath
。 - Libertinus Math 基于 Linux Libertine 和 Linux Biolinum。
- GFS Neohellenic 的衬线非常小,使其具有独特的外观,非常适合演示。
- 新欧拉是 Hermann Zapf 为 DEK 的书创建的 Euler 字体的克隆版具体数学。此字体不完整,不随 TeX Live 提供。它所含的字形远不及此列表中的其他字体。因此,您需要单独下载它,仅加载它支持的字形,并使用其他字体(例如 Asana Math 或 TeX Gyre Pagella)作为后备字体。
- Stix、Stix Two 和 XITS 均基于 STIX 项目,而 STIX 项目又基于 Times。既然您说您不想要看起来像 Times 的东西,那么这些就不适用了。
- Cambria Math 不是免费的,但它包含在最新版本的 Microsoft Windows 和 Office 中,因此您可能将其作为
cambria_01.ttf
文件保存在 Windows 分区中ttc
。您也可以获取它免费如果您愿意解压一些cab
文件,可以使用 PowerPoint 2007 查看器。但是,它是 Microsoft Office 中公式的默认字体,看起来很像 Times。 - Minion Math 和 Lucida 是专有字体。
您可以找到 Asana Math 的示例这里、所有 TeX Gyre 字体这里和 Libertinus这里。
还可以混合搭配字体,以便将数学字体中的符号与文本字体中的字母一起使用。例如,一个流行的建议是将 Neo Euler 用于数学,将 Palatino 用于文本。
字体系列
这些字体大多有匹配的文本字体,但没有数学在名称中。Asana Math 和 Neo Euler 与 Palatino 非常匹配(因此也是其克隆版 Pagella)。
我上面列出的三种字体系列都有匹配的衬线字体、无衬线字体和等宽字体:Latin Modern Mono、DejaVu Sans Mono 和 Libertinus Mono。Latin Modern Mono 是 Computer Modern Monospace 的克隆,您可能会觉得它有吸引力,也可能不感兴趣,而且它看起来就像默认字体一样cmtt
。Computer Modern 的一些较不为人知的变体,例如 Upright Italic,可通过 Computer Modern Unicode 获得。TeX Gyre 系列中还有一种等宽字体,即 TeX Gyre Cursor,但它是 Courier 的克隆,因此与任何 TeX Gyre Math 字体都不匹配。
如果您不使用其中一种,除了操作系统附带的字体外,还有大量免费的等宽字体。
您还可以使用诸如 之类的命令将任何所需的 OpenType 等宽字体用于打字机字母数学符号\setmathfont[range=\mathtt]{Inconsolata}
。
您的文档中可能会或可能需要配套无衬线字体。如果您想在整个文档中使用无衬线字体,则必须将无衬线字体系列重新映射到、up
和数学字母,但作为标题和页眉的bfup
替代方案,大多数这些字体系列都带有小写字母。it
bfit
字体/书法怪癖
LaTeX 软件包过去曾为\mathscr
和分别设置命令\mathcal
,以显示不同的符号。Unicode 联盟认为,这些命令实际上只是表示形式,没有数学家会在同一文本中使用 和\mathcal{I}
来\mathscr{I}
表示不同的意思。因此,它只为这两个字母分配了一个代码点范围。
该unicode-math
包默认将\mathcal
和设置\mathscr
为彼此的同义词,但它支持将不同的字母加载到其中之一(以及\mathfrac
、\mathbb
等等)。此外,几种数学字体包含单独的\mathscr
和\mathcal
字母,旨在以这种方式使用。您可以使用命令之一\setmathfont[range={mathcal,mathbfcal},Alternate,Scale=MatchUppercase]{Asana Math}
或加载它们\setmathfont[range={mathscr,mathbfscr},StylisticSet=1,Scale=MatchUppercase]{XITS Math}
。Stix Math 或 Stix Two Math 使用与 XITS Math 相同的语法。
如果你在论文中实际上没有使用\mathcal
或,你当然可以完全忽略这一点。\mathbfcal
我的建议
我个人喜欢 Asana Math,使用 Palatino(或 TeX Gyre Pagella 等克隆字体)作为文本字体。但是,您在评论中说您不喜欢它的直立风格。(我猜您指的是积分等符号的倾斜;它包含直立和斜体字母,就像所有数学字体一样。) 因科索拉塔是一款免费的 monotype 字体,我认为作为一款人文主义无衬线字体,它与 TeX Live 非常相配。它随 TeX Live 一起提供,但仅作为 Type 1 字体,因此您需要下载新版本。(双击文件并点击安装按钮,或者在 Linux 上,您可以将其复制到~/.fonts
或/usr/local/share/fonts
。)
Palatino 的官方无衬线配套字体是商业字体 Palatino Sans,但 Optima、其免费克隆 URW Classico 或吉利乌斯2号(基于 Gill Sans)可能是一个很好的免费替代品,并且它附带 TeX Live。
既然你说这是一篇工程论文,我假设你想使用 ISO 样式,这是math-style=ISO
的选项unicode-math
。要按照它的建议获得常量的直立字母,你可以使用,例如,,\symup{e}
但unicode-math
定义\muppi
为常数π。
我推荐这个microtype
软件包,它能让右边距和字距看起来更整洁,连字符更少(我自己对它做了一些改进)。
您还提到需要同时支持英语和南亚语言。您应该能够\newfontfamily\devanagarifont[Script=Devanagari]{Shobhika}
为印度语和\newfontfamily\malayalamfont[Script=Malayalam]{Free Serif}
马拉雅拉姆语做一些类似的事情。这应该可以在 Polyglossia 中启用梵语,但对于马拉雅拉姆语,您需要\malayalamfont
手动选择。但是,如果 Polyglossia 稍后增加对马拉雅拉姆语的支持,代码仍然有效。
旧版回退
如果您确实必须使用 pdflatex,请先加载\usepackage[T1]{fontenc}
。添加 不会有什么坏处\usepackage[utf8]{inputenc}
,但现在这是默认设置。软件包tgpagella
、newpxmath
和inconsolata
会将classico
您的主字体、数学字体、等宽字体和无衬线字体设置为我喜欢的组合。(唯一真正的问题是 Palatino 可能被过度使用,但至少它会受到重视。)如果您想进一步调整数学字母表,请查看软件包选项newpxmath
并考虑使用诸如mathalfa
或 之类的软件包isomath
。
如果您需要支持 PDFLaTeX,您可以使用该\iftex
包将旧版 NFSS 前言和现代unicode-math
前言包装在条件块中。然后,如果您的 TeX 引擎支持现代功能,您将使用它们。
附言
我的论文中还有一个怪癖:数学字体使用截然不同的符号量子电动力学 我个人喜欢使用黑色的“墓碑”,这是由 Paul Halmos 提出并在 1997 年版中使用的计算机编程艺术由 DEK 提供。此命令为\setmathfont[range="220E]{XITS Math}
,若要与 一起使用amsthm
,\renewcommand{\qedsymbol}{\ensuremath{\char"220E}}
。
答案2
将评论总结为答案:
虽然不像 true-type/PS1 字体那样详尽,但也存在其他 unicode opentype 免费系列,提供完整的衬线、无衬线、单声道以及最重要的数学字体。
Tex Gyre Deja Vu、Asana Math、Libertinus 等就是这样的例子。
Libertinus 被认为在大型文档中使用起来比较稳定。
虽然 CTAN 上的摘要有点过时,但 unicode-math 包确实支持任何 unicode opentype 数学系列(带有数学表的字体)