我有以下frame
内容beamer
:
\begin{frame}{Language}
\begin{block}{}
\begin{align*}
\onslide<1->{
&\text{Types} & T &::= B | T \to T \\
}
\onslide<2->{
&\text{Terms} & E &::= A | E\ E | \ldots |
\tikz[baseline]{
\node (term-mon) [anchor=base,fill=blue!20]
{$\mathsf{mon}^{f, g}_h(E)$};
}
\onslide<3> {
\tikz[baseline]\node [fill=blue!20] (term-mon-expl) at ($(term-mon) + (1,2)$)
{Comments};
}
}
\end{align*}
\end{block}
\end{frame}
基本上,我想突出显示公式的一部分并在下一张幻灯片中显示附近的附加节点。但是,出于某种原因,TikZ 忽略了我向 x 轴移动 1 厘米,只将节点term-mon-expl
向 y 轴移动,将其放在节点旁边term-mon
。为什么?
答案1
以下代码显示了使用两个应相互放置的节点的可能性
- 在一张 TikZ 图片中
- 使用
remember picture
-overlay
组合。
代码
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{frame}
\begin{align*}
& \text{Types} & T & ::= B | T \to T \\
\onslide<2->{
& \text{Terms} & E &::= A | E\ E | \ldots |
\tikz[
baseline=(term-mon.base),
nodes={fill=blue!20}] {
\node (term-mon) {$\mathsf{mon}^{f, g}_h(E)$};
\begin{pgfinterruptboundingbox}
\node<3> (term-mon-expl) at ([shift={(1,2)}] term-mon) {Comments};
\end{pgfinterruptboundingbox}
}
}
\end{align*}
\end{frame}
\begin{frame}
\begin{align*}
& \text{Types} & T & ::= B | T \to T \\
\onslide<2->{
& \text{Terms} & E &::= A | E\ E | \ldots |
\tikz[baseline,remember picture]
\node (term-mon) [anchor=base,fill=blue!20] {$\mathsf{mon}^{f, g}_h(E)$};
}
\onslide<3> {
\tikz[baseline,remember picture,overlay]
\node [fill=blue!20] (term-mon-expl) at ($(term-mon) + (1,2)$) {Comments};
}
\end{align*}
\end{frame}
\end{document}