![在文本和数学运算符 sin、cos、log 等中使用相同的字体](https://linux22.com/image/469037/%E5%9C%A8%E6%96%87%E6%9C%AC%E5%92%8C%E6%95%B0%E5%AD%A6%E8%BF%90%E7%AE%97%E7%AC%A6%20sin%E3%80%81cos%E3%80%81log%20%E7%AD%89%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E5%AD%97%E4%BD%93.png)
我正在用 Beamer 制作演示文稿,想使用 sans 字体显示文本,使用 mathpazo 字体显示数学运算。不过,我希望运算符名称默认设置为与文本相同的 sans 字体,而不是不同的字体。
我可以重新定义每一个操作符,但似乎应该有一种更清晰的方法。
这是 MWE
\documentclass{beamer}
\usepackage[scaled=1.04]{biolinum}
\usepackage{mathpazo}
\renewcommand*\familydefault{\sfdefault}
\begin{document}
\begin{frame}
I get this with for the operators by default
\begin{equation*}
\sin x = \log x = \lim x
\end{equation*}
I want something that looks like this, with text (which by default is textsf) for the operators
\begin{equation*}
\mathop{\text{sin}} x = \mathop{\text{log}} x = \mathop{\text{lim}} x
\end{equation*}
\end{frame}
\end{document}
答案1
您可以更改operators
字体并使用professionalfonts
Beamer 来控制字体设置:
\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage[scaled=1.04]{biolinum}
\usepackage{mathpazo}
\SetSymbolFont{operators} {normal}{OT1}{LinuxBiolinumT-TLF} {m}{n}
\SetSymbolFont{operators} {bold} {OT1}{LinuxBiolinumT-TLF} {b}{n}
\begin{document}
\begin{frame}
Now you get this
\begin{equation*}
\sin x = \log x = \lim x
\end{equation*}
\end{frame}
\end{document}
请注意,没有必要将 sans 设置为文本的默认值,因为 Beamer 无论如何都会这样做。
答案2
因为你使用的是 Beamer,所以你不会向那些在 2023 年仍然只接受 8 位字体的人提交,并且可以使用您的字体的现代 OpenType 分支。 具体来说,Libertinus Sans 基于 Phillip Poll 的 Linux Biolinum,而 Asana Math 基于 Young Ryu 的 Pazo Math,但两者都具有更大的功能范围并可与现代工具配合使用。
一位 MWE 表示:
\documentclass[professionalfonts]{beamer}
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
\setmainfont{Libertinus Sans}[Scale=1.04]
\setsansfont{Libertinus Sans}
\setmathfont{Asana Math}
\setmathfont{LibertinusSans-Regular}[range=up]
\setmathfont{LibertinusSans-Bold}[range=bfup]
\setmathfont{LibertinusSans-Italic}[range=it]
% Linux Biolinum and Libertinus Sans have no Bold Italic,
% but you could fake one with FakeBold if needed.
\begin{document}
\begin{frame}
I want something that looks like this, with text (which by default is textsf) for the operators.
\begin{equation*}
\sin x = \log x = \lim x
\end{equation*}
\end{frame}
\end{document}
顺便说一下,还有一些替代方案
对于具有您想要的外观的单一、一致的字体,您可以尝试\setmathfont{KpMath-Sans.otf}
使用软件包。您可以使用以下命令kpfonts-otf
更改操作员字体:unicode-math
\setoperatorfont\mathsf
\documentclass[professionalfonts]{beamer}
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
\setmainfont{Libertinus Sans}[Scale=1.0]
\setsansfont{Libertinus Sans}
\setmathfont{KpMath-Sans.otf}
\setoperatorfont\mathsf
\begin{document}
\begin{frame}
I want something that looks like this, with text (which by default is textsf) for the operators.
\begin{equation*}
\sin x = \log x = \lim x
\end{equation*}
\end{frame}
\end{document}
或者如果你真的喜欢 Pazo Math:它被设计成与 Hermann Zapf 的 Palatino 相匹配。Zapf 的字体 Optima 和 AMS Euler 与它们和彼此都很好搭配。(与该系列很相配的等宽字体是人文主义的 Inconsolata。)
以下是欧拉公式在 Euler Math(AMS Euler 的一个分支)中的样子,其中使用 URW Classico(CTAN 提供的 Optima 的克隆版)作为文本字体:
\documentclass{article}
\usepackage[math-style=upright]{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{URW Classico}[Scale=1.0]
\setsansfont{URW Classico}
\setmathfont{Asana Math}
\setmathfont{Euler Math}[range={up/{Latin,latin,Greek,greek},
bfup/{Latin,latin,Greek,greek},
cal, bfcal, frak, bffrak},
]
\setmathfont{URW Classico}[range={up/num}]
\setmathfont{URW Classico Bold}[range={bfup/num}]
\newcommand\upi{\symup{i}}
\newcommand\upe{\symup{e}}
\begin{document}
\begin{align*}
\upe^{\upi x} &= \cos{x} + \upi \sin{x} \\
\upe^{\upi \uppi} + 1 &= 0
\end{align*}
\end{document}