如何在同一文档中使用两种不同字体的数学符号?

如何在同一文档中使用两种不同字体的数学符号?

我知道 tex.stackexchange.com 上可能有几个关于此问题的答案,但它们往往非常技术性且难以理解,或者它们的代码非常长(超过 5 行),那么有没有一种简单的方法可以更改字体,包括 Latex 中的内联数学字体,即在 PDFLatex 中(而不是 LuaTex 或 XeLatex)?

现在我正在尝试使用 txfonts 包中的 $\varepsilonup$,而不是标准 Computer Modern 中的通常的 $\varepsilon$,我不喜欢它,因为它的线条太细并且与字体的其余部分不匹配,但我不想将所有文本更改为 txfonts 包,因为我正在制作 beamer 演示文稿,并且我想将全局字体保持为 \documentclass[serif]{beamer}。

但这对我来说是一个反复出现的事情,因为我喜欢以高度风格化的方式编写我的文本,而在其他情况下,当涉及到在文本的某些部分使用其他字体或使用其他字体的其他特定字形时,我总是会遇到这种障碍,无论它们是否是数学的,既然我问了这个问题,我也想问如何在 Latex 文档中输入特定的“用户制作”的字体或字形,我知道这可以做到,因为我的一个朋友使用了一个风格化的“r”字形的 pdf 文件,David Griffiths 在他的关于电动力学的书中使用了这个字形,并且他在他的网站中提供了这个字形供下载,所以有某种方法可以将这个字形的 pdf 文件变成字体元素,而不是一个简单的图像放入 Latex 中。我之所以问这个问题,是因为尽管我对 txfonts 中的 epsilon 感到有些满意,但它仍然不是我心目中的理想 epsilon,而且我已经接近完成 metapost 中的 epsilon 字形,也就是说,它将从代码生成 pdf 或 svg 文件,而我仍然不知道如何将此文件用作 Latex 中的字体字形。我还想重新制作 19 世纪末和 20 世纪初数学文本和教科书中使用的经典数学字体,这种字体是所有文本中使用的熟悉的字体,例如 GH Hardy 的“纯数学课程”、他的力学入门书 ET Whittaker 的“古典动力学论文”、Courant 的微分和积分书籍,也许还有 Fermi 的热力学书籍等。我曾经在字体 reddit 上问过这个问题,一开始有人说它是 Computer Modern,这显然是错误的,后来他说 Computer Modern 是为了模仿那种字体而制作的,后来他说它是一种字体,或者是一种字体类型或字体系列,显然叫做 Scotch Roman,但我似乎找不到一个合适的字体用于我的文本,所以我将来会尝试自己制作一个,作为一种爱好。

答案1

如果您使用 OpenType 数学字体unicode-math,则有一个标准命令可用于此。例如,

\setmathfont{Latin Modern Math}
\setmathfont{TeX Gyre Termes Math}[range=\mitvarepsilon]

unicode-math,数学斜体字母以 开头\mit,数学直立字母以 开头\mup,粗体直立字母以\mbfup,等等。 请参阅符号列表以获取完整列表。

我的建议是将unicode-math其用于 Beamer 演示文稿,除非出于某些特定原因无法用于特定文档。您不会将 Beamer 源提交给 2021 年仍未从 8 位字体升级的期刊之一。

在旧版 LaTeX 中,您需要打开文件.sty,找到定义要使用的符号和包含该符号的符号字体的代码行,然后复制它们。通常,这将是一个\DeclareSymbolFont命令,后跟\DeclareMathSymbol,但这newtxmath是使其更复杂的软件包之一。命令分为newtxmath.styuntxmia.fd,需要进行一些修改才能在独立文档中工作。不幸的是,每个软件包的代码都会有所不同。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath, amssymb}

\DeclareFontFamily{U}{ntxmia}{\skewchar \font =127}
\DeclareFontShape{U}{ntxmia}{m}{it}{
  <-> ntxmia}{}    
\DeclareFontShape{U}{ntxmia}{b}{it}{
  <-> ntxbmia}{}

\DeclareFontShape{U}{ntxmia}{m}{sl}{<->ssub * ntxmia/m/it}{}
\DeclareFontShape{U}{ntxmia}{bx}{it}{<->ssub * ntxmia/b/it}{}
\DeclareFontShape{U}{ntxmia}{b}{sl}{<->ssub * ntxmia/b/it}{}
\DeclareFontShape{U}{ntxmia}{bx}{sl}{<->ssub * ntxmia/b/sl}{}

\DeclareSymbolFont{ntxletters}{U}{ntxmia}{m}{it}
\SetSymbolFont{ntxletters}{bold}{U}{ntxmia}{b}{it}
\DeclareFontSubstitution{U}{ntxmia}{m}{it}
\DeclareMathSymbol{\varepsilon}{\mathord}{ntxletters}{34}

\begin{document}
Computer Modern \(\epsilon\), newtx \(\varepsilon\).

{\bfseries\boldmath Computer Modern  \(\epsilon\), newtx \(\varepsilon\).}
\end{document}

还请注意,旧版 TeX 限制您使用 16 个 8 位数学字母,这将使用其中一个。您可以通过声明一个符号来切换到文本模式来解决此问题。

相关内容