Smashoperator scheint die Transparenz des Beamers zu zerstören

Smashoperator scheint die Transparenz des Beamers zu zerstören

Ich verwende Beamer und Smashoperator wie folgt:

\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}

Dies führt jedoch zu einem merkwürdigen Ergebnis.

Bildbeschreibung hier eingeben

Gibt es eine Möglichkeit, das zu beheben?

Antwort1

Es funktioniert tatsächlich, wenn Sie hinzufügen

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

obwohl das keine wirkliche Lösung ist.

\sboxzusätzlich zum \setboxPrimitiv wird die aktuelle Farbe nach oben und unten verschoben, aber der hellgraue transparente Effekt ist dafür nicht ausgelegt...

Dies erfordert einen etwas rigorosen Ansatz und entfernt das Farb-Push/Pop für alle Sboxen im Mathematikmodus.

Bildbeschreibung hier eingeben

Antwort2

Ihr \onslidebeginnt mit &. Das heißt, es beginnt in einer tabellarischen/ausgerichteten Zelle und wird in der nächsten fortgesetzt. Tabellarische Zellen bilden Gruppen, und obwohl Beamer Code enthält, der Farbmixins erlaubt, Gruppen zu überstehen, schlägt er hier teilweise fehl, da es zwei Gruppenebenen gibt. Dies betrifft \smashoperator, da es einen \sbox-Befehl enthält, der einen Farbbefehl ausgibt, jetzt jedoch mit der falschen Farbe.

Ich bezweifle, dass eine echte Lösung möglich ist. Workarounds sind:

  • Verschieben Sie die &außerhalb der \onslide, so dass sie nicht mehr mehr als eine Gruppe abdeckt.
  • Drücken Sie die Taste a, \color{.}um die Farbe zurückzusetzen.
\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}

Bildbeschreibung hier eingeben

Antwort3

Ich kann nicht erklären, was hier schief läuft \smashoperator, aber ich kann eine praktikable Alternative vorschlagen: die Anwendung \mathclapauf das Untersatzargument von \sum.

Folie 1:

Bildbeschreibung hier eingeben


Folie 2:

Bildbeschreibung hier eingeben


Folie 3:

Bildbeschreibung hier eingeben


\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}

verwandte Informationen