答案1
为了理解这种行为,以下简单示例很有用
\[\color{red}\frac{2}{a}\]
\[{\color{red}\frac{2}{a}}\]
第一行显示较大的间距,第二行被一个附加组包围,间距更紧密。引用相关大卫·卡莱尔的评论
请参阅颜色包文档中的脚注,颜色有时会影响间距。脚注基本上是为了解释这不是我的错(
texdoc grfguide
第 6 页:-)
\everydisplay{\color{blue}}
显然,将添加\color
到数学显示并触发此行为。\setbeamercolor{math text displayed}{fg=red}
也会触发它,因为通常数学颜色未设置,并且\color
只有在颜色不为空时才会添加到数学显示中(请参阅https://github.com/josephwright/beamer/issues/177)
解决方案 1
为了获得统一的行为并防止幻灯片之间跳动,您可以在文档开头设置数学颜色。这将使所有数学显示具有更大的间距。
\documentclass{beamer}
\setbeamercolor{math text displayed}{parent=normal text}
\begin{document}
\begin{frame}
\only<2>{\everydisplay{\color{blue}}}
\[ \frac{2}{a} \]
\[ \frac{2}{a} \]
\end{frame}
\end{document}
解决方案 2
或者如果你喜欢紧凑的间距,以下内容基于https://tex.stackexchange.com/a/91551/36296
\documentclass{beamer}
\setbeamercolor{mymath}{parent=normal text}
\def\foo#1$$#2!!{\def\mathdisplay##1{#1$$\begingroup\usebeamercolor[fg]{mymath}#2}}
\expandafter\foo\mathdisplay{#1}!!
\long\def\foo#1$$#2!!{\def\endmathdisplay##1{#1\endgroup$$#2}}
\expandafter\foo\endmathdisplay{#1}!!
\begin{document}
\begin{frame}
\only<2>{\setbeamercolor{mymath}{fg=red}}
\[ \frac{2}{a} \]
\[ \frac{2}{a} \]
\end{frame}
\end{document}