在文本和数学运算符 sin、cos、log 等中使用相同的字体

在文本和数学运算符 sin、cos、log 等中使用相同的字体

我正在用 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字体并使用professionalfontsBeamer 来控制字体设置:

\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}

Libertinus Sans 样本

顺便说一下,还有一些替代方案

对于具有您想要的外观的单一、一致的字体,您可以尝试\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}

Biolinum/KpMath-Sans 样本

或者如果你真的喜欢 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}

欧拉数学 + URW Classico 示例

答案3

lualatex 的一个示例:

\documentclass[professionalfonts]{beamer}
\usepackage{FiraSans}
\usepackage[mathrm=sym]{firamath-otf}

\begin{document}

    \begin{frame}
        Now you get this
        \begin{equation*}
            \sin x = \log x = \lim x
        \end{equation*}
    \end{frame}
    
\end{document}

在此处输入图片描述

相关内容