Beamer:发现支撑不足和支撑过度的奇怪行为

Beamer:发现支撑不足和支撑过度的奇怪行为

我最近需要弥补一些过度和不足的支撑,并在这里找到了解决方案:Beamer:揭开下支架的面纱

然而,我对提供的解决方案并不是 100% 满意,特别是,我的目标是创建命令\underbrace<>{}_{},并且\overbrace<>{}^{}应该像您期望的那样工作,而对覆盖规范或内容没有任何额外的限制。我成功地做到了这一点underbrace[A],虽然我不知道我的解决方案为什么有效(我很惊讶它有效!)然而,更让我吃惊的是,它不适用于overbrace!然而,事实证明,只要稍加修改,它就会再次起作用——我再次不明白为什么它在一种情况下完全有效,而在另一种情况下却无效。代码的关键部分是:

% underbrace version A
\onslide<#1>\underbrace{\onslide<1->#2}_{#3}\onslide
% underbrace version B
\underbrace{#2\onslide<#1>}_{#3}\onslide
% overbrace version A
\onslide<#1>\overbrace{\onslide<1->#2}^{#3}\onslide
% overbrace version B
\overbrace{#2\onslide<#1>}^{#3}\onslide

唯一能按预期发挥作用的组合是下支撑版本 B 和上支撑版本 A。但是为什么呢?编辑:我刚才指出,对于\overset\underset,必须反过来做!完整的 MWE:

\documentclass{beamer}
\setbeamercovered{transparent}
\usepackage{xparse}

\DeclareDocumentCommand{\ubraceA}{d<> m e{_}}{%
  \IfValueTF{#1}{% IF <overlay-specification> given
    \onslide<#1>\underbrace{\onslide<1->#2}_{#3}\onslide
  }{% ELSE
    \underbrace{#2}_{#3}
  }%
}%

\DeclareDocumentCommand{\ubraceB}{d<> m e{_}}{%
  \IfValueTF{#1}{% IF <overlay-specification> given
    \underbrace{#2\onslide<#1>}_{#3}\onslide
  }{% ELSE
    \underbrace{#2}_{#3}
  }%
}%

\DeclareDocumentCommand{\obraceA}{d<> m e{^}}{%
  \IfValueTF{#1}{% IF <overlay-specification> given
      \onslide<#1>\overbrace{\onslide<1->#2}^{#3}\onslide
  }{% ELSE
    \overbrace{#2}^{#3}
  }%
}%

\DeclareDocumentCommand{\obraceB}{d<> m e{^}}{%
  \IfValueTF{#1}{% IF <overlay-specification> given
    \overbrace{#2\onslide<#1>}^{#3}\onslide
  }{% ELSE
    \overbrace{#2}^{#3}
  }%
}%

\begin{document}
\begin{frame}{underA, overA}
\begin{align*}
  \ubraceA<5->{p(x\mid y)}_{\text{posterior}}
  = \frac{\obraceA<2->{p(y\mid x)}^{\text{likelihood}}
  \,\obraceA<3->{p(x)}^{\text{prior}}
  }{\ubraceA<4->{p(y)}_{\text{evidence}}}
\end{align*}
\end{frame}
%
\begin{frame}{underA, overB}
\begin{align*}
  \ubraceA<5->{p(x\mid y)}_{\text{posterior}}
  = \frac{\obraceB<2->{p(y\mid x)}^{\text{likelihood}}
  \,\obraceB<3->{p(x)}^{\text{prior}}
  }{\ubraceA<4->{p(y)}_{\text{evidence}}}
\end{align*}
\end{frame}
%
\begin{frame}{underB, overA}
\begin{align*}
  \ubraceB<5->{p(x\mid y)}_{\text{posterior}}
  = \frac{\obraceA<2->{p(y\mid x)}^{\text{likelihood}}
  \,\obraceA<3->{p(x)}^{\text{prior}}
  }{\ubraceB<4->{p(y)}_{\text{evidence}}}
\end{align*}
\end{frame}
%
\begin{frame}{underB, overB}
\begin{align*}
  \ubraceB<5->{p(x\mid y)}_{\text{posterior}}
  = \frac{  \obraceB<2->{p(y\mid x)}^{\text{likelihood}}
  \,\obraceB<3->{p(x)}^{\text{prior}}
  }{\ubraceB<4->{p(y)}_{\text{evidence}}}
\end{align*}
\end{frame}
\end{document}

相关内容