smashoperator 似乎破坏了 beamer 透明度

smashoperator 似乎破坏了 beamer 透明度

我正在使用 beamer 和 smashoperator,如下所示:

\documentclass[xcolor={rgb}]{beamer}
\setbeamercovered{transparent}
\beamertemplatenavigationsymbolsempty
\setbeamersize{text margin left=10mm,text margin right=5mm}
\setbeamertemplate{frametitle}[default][center]
\usepackage{mathtools}
\usepackage{bm}
\newcommand{\var}[1]{\operatorname{var}{#1}}
\newcommand{\E}{\mathbb{E}}
\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
\begin{document}
\begin{frame}[t]
\begin{align*}
\onslide<2->{&= \E\Bigl( g(a)^2 \smashoperator{\sum_{j\in[n]\backslash\{a\}}} f^2_j Y^2_j + \smashoperator{\sum_{\substack{j\in[n]\setminus\{a\}\\i\ne j}}} f_i f_j g(i) g(j) Y_i B_j\Bigr) -{}\\}
\onslide<2->{&\qquad\qquad\qquad\qquad \Bigl(\smashoperator{\sum_{j\in[n]\backslash\{a\}}} f_j \mathbb{E}[g(a)g(j)Y_j]\Bigr)^2\\[\jot]}
\onslide<3->{&= \sum_{j\in[n]\backslash\{a\}} \frac{f^2_j}{k} + 0 - 0\\[\jot]}
\end{align*}
\end{frame}
\end{document}

然而,这会产生一个奇怪的结果。

在此处输入图片描述

有没有什么办法解决这一问题?

答案1

如果你添加它,它实际上会起作用

\everymath{\def\sbox#1#2{\setbox#1\hbox{{#2}}}}

尽管这并不是真正的解决办法。

\sbox除了\setbox原始的推送和弹出当前颜色之外,还没有设置浅灰色透明效果.....

这采用了一种略显强硬的方法并删除了数学模式下所有 sbox 的颜色推送/弹出。

在此处输入图片描述

答案2

您的\onslide开头是&。这意味着它从一个 tabular/align 单元格开始,然后继续到下一个单元格。表格单元格会构建组,虽然 beamer 包含允许颜色混合在组中生存的代码,但它在这里失败了,部分原因是有两个组级别。这会影响 \smashoperator,因为它包含一个 \sbox 命令,该命令发出颜色命令,但现在颜色错误。

我怀疑是否有真正的解决方案。解决方法是:

  • 移动&外部\onslide,以便它不再覆盖多个组
  • 发出一个\color{.}重置颜色
\documentclass[]{beamer}
\setbeamercovered{transparent}
\setbeamertemplate{navigation symbols}{}
\newsavebox\testbox

\begin{document}
\begin{frame}[plain,t]

\begingroup\begingroup
 \onslide<2->{\sbox\testbox{111}\usebox\testbox\endgroup %works
              \sbox\testbox{222}\usebox\testbox\endgroup %still works
              \sbox\testbox{333}\usebox\testbox}         %fails
              
\begingroup\begingroup
 \onslide<2->{\sbox\testbox{111}\usebox\testbox\endgroup
              \sbox\testbox{222}\usebox\testbox\endgroup
              \color{.}\sbox\testbox{333}\usebox\testbox} %work around
          
\end{frame}
\end{document}

在此处输入图片描述

答案3

我无法解释可能出了什么问题\smashoperator,但我可以建议一个可行的替代方案:应用于\mathclap的底集参数\sum

幻灯片 1:

在此处输入图片描述


幻灯片 2:

在此处输入图片描述


幻灯片 3:

在此处输入图片描述


\documentclass[xcolor={rgb}]{beamer}
\setbeamercovered{transparent}
\beamertemplatenavigationsymbolsempty
\setbeamersize{text margin left=10mm,text margin right=5mm}
\setbeamertemplate{frametitle}[default][center]

\usepackage{mathtools,bm}
\newcommand{\var}[1]{\operatorname{var}{#1}}
\DeclareMathOperator{\E}{\mathbb{E}}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}

\begin{document}
\begin{frame}[t]
\begin{align*}
\onslide<1->{&= \E\Bigl( g(a)^2 
\sum_{\mathclap{j\in[n]\setminus\{a\}}} f^2_j Y^2_j + 
\sum_{\mathclap{\substack{j\in[n]\setminus\{a\}\\i\ne j}}} f_i f_j g(i) g(j) Y_i B_j\Bigr) \\}
\onslide<2->{&\kern1.5cm -\Bigl(\,
\sum_{\mathclap{j\in[n]\textminus\{a\}}} f_j \E[g(a)g(j)Y_j]\Bigr)^2 \\[\jot]}
\onslide<3->{&= 
\sum_{\mathclap{j\in[n]\setminus\{a\}}} f^2_j/k + 0 - 0 \,.\\[\jot]}
\end{align*}
\end{frame}
\end{document}

相关内容