Beamer 公式中的 Serif \text

Beamer 公式中的 Serif \text

在我的 Beamer 演示文稿中,我将 Palatino 字体指定为数学字体。然而,在公式中,我可以看到\text宏内部使用了无衬线字体。

我用来pdflatex编译。

如何强制\text宏产生衬线文本?

最小工作示例(MWE):

\documentclass{beamer}
\usepackage{amsmath}
\usetheme{metropolis}
\usepackage[T1]{fontenc}
\usepackage{mathpazo}
\usepackage{textcomp}
\usefonttheme{professionalfonts}
\usefonttheme[onlymath]{serif}

\DeclareMathOperator*{\argmin}{arg\,min}

\begin{document}

\begin{frame}{Optimization problem}
We arrive at the optimization problem
\begin{align}
    &\argmin_{\theta} \quad \ \ 
        \sum_{i=1}^N \big[u_i - u_{\text{NN}}(x_i, t_i; \theta)\big]^2  \\
    &\text{subject to } \ \ u_{\text{NN}, t}  + N(u_\text{NN}) = 0
\end{align}
\end{frame}

\end{document}

答案1

正如 @daleif 在他的评论中解释的那样,使用\text可以在数学环境和文本中使用的字体之间切换。 在您的案例中(以及所有类似案例中),正确的方法是使用\mathrm命令(我还建议使用alignat环境而不是align,代码稍微简单一些):

\documentclass{beamer}
\usetheme{metropolis}
\usepackage[T1]{fontenc}
\usepackage{mathpazo}
\usepackage{textcomp}
\usefonttheme{professionalfonts}
\usefonttheme[onlymath]{serif}

\usepackage{amsmath}
\DeclareMathOperator*{\argmin}{arg\,min}

\begin{document}
\begin{frame}{Optimization problem}
We arrive at the optimization problem
\begin{alignat}{3}
    &\argmin_{\theta} 
    &\quad  &   \sum_{i=1}^N \big[u_i - u_{\mathrm{NN}}(x_i, t_i; \theta)\big]^2  \\
    &\text{subject to} 
    &       &   u_{\mathrm{NN}, t}  + N(u_\mathrm{NN}) = 0
\end{alignat}
\end{frame}
\end{document}

笔记:从包中重新定义基本命令amsmath是危险的。千万不要这么做!

在此处输入图片描述

答案2

2019 年 7 月 28 日更新:重新定义\text宏可能很危险,因为它是基本宏之一。因此,不建议这样做。

为了确保数学公式中的衬线文本字体,\textrm应使用该命令,因为该命令\text匹配普通文本,而在 Beamer 中默认情况下为无衬线文本。

或者,可以更新命令\text,使其成为的别名\textrm

\renewcommand{\text}[1]{\textrm{#1}}

相关内容