Я использую 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
начинается с &
. Это означает, что он начинается в одной табличной/выравнивающей ячейке и продолжается в следующей. Табличные ячейки создают группы, и хотя beamer содержит код, позволяющий цветовым миксинам выживать в группах, он здесь частично терпит неудачу, поскольку есть два уровня групп. Это влияет на \smashoperator, поскольку он содержит команду \sbox, которая выдает команду цвета, но теперь с неправильным цветом.
Я сомневаюсь, что реальное решение возможно. Обходные пути:
- переместите
&
за пределы\onslide
, так чтобы он больше не охватывал более одной группы - введите a,
\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}