我的问题与这个。区别在于,我想用 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}
这是更改后的数学和文本中逗号和句号的输出,右侧显示了衬线版本以供比较。