Beamer 中的 TikZ 节点定位忽略了 x 坐标

Beamer 中的 TikZ 节点定位忽略了 x 坐标

我有以下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}

输出

在此处输入图片描述

相关内容