编辑

编辑

我的问题与这个。区别在于,我想用 beamer 制作演示文稿,并且使用标准字体。正如您在下面的 MWE 中看到的,数学和文本模式下的逗号彼此不同。

修复此问题的最佳方法是什么?

梅威瑟:

\documentclass{beamer}

\begin{document}

\begin{frame}
    $f(x,y,z) > 0$ if $x$, $y$, and $z$ are positive.
\end{frame}

\end{document}

输出: 投影仪中的不同逗号

答案1

数学中的逗号与默认衬线字体中的逗号匹配,但取自 OML 编码。如果您通过将框架更改为强制文本使用衬线字体,则可以看到这一点

\begin{frame}
  $f(x,y,z) > 0$ if {\rmfamily $x$, $y$,} and $z$ are positive.
\end{frame}

调整文本逗号

然而,现在逗号取自衬线字体,而其余文本则取自无衬线字体。

最好确保逗号与数学运算符使用相同的字体,因为beamer我认为这被更改为 sans 字体。例如:

\documentclass{beamer}
\DeclareMathSymbol{,}{\mathpunct}{operators}{"2C}
\begin{document}

\begin{frame}
  $f(x,y,z) > 0$ if $x$, $y$, and $z$ are positive.
\end{frame}

\end{document}

调整数学逗号

这样做的好处是如果你覆盖 Beamer 的选择并坚持使用衬线而不是无衬线,你的逗号仍然会与你的文本匹配:

\documentclass[serif]{beamer}
\DeclareMathSymbol{,}{\mathpunct}{operators}{"2C}
\begin{document}

\begin{frame}
  $f(x,y,z) > 0$ if $x$, $y$, and $z$ are positive.
\end{frame}

\end{document}

衬线

尽管在这种情况下重新定义是不必要的,但您不必担心删除或禁用它,这很好。

编辑

鉴于芭芭拉的评论针对这个问题,我做了一些测试。虽然建议的特定标点符号没有问题,因为它已经取自operators而不是letters,但句号没有问题。此外,衬线字体和无衬线字体之间的区别。无衬线字体是方形的,而衬线字体是圆形的。

因此,为了完整性,您可能还想添加一行来重新声明此符号:

\documentclass{beamer}
\DeclareMathSymbol{,}{\mathpunct}{operators}{"2C}
\DeclareMathSymbol{.}{\mathpunct}{operators}{"2E}
\begin{document}

\begin{frame}
  $f(x,y,z) > 0$ if $x$, $y$, and $z$ are positive.

  $, . $ , .  {\rmfamily , .}
\end{frame}

\end{document}

这是更改后的数学和文本中逗号和句号的输出,右侧显示了衬线版本以供比较。

句号的乐趣

相关内容