在我的 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}}