TikZ、Beamer 和矩阵节点迭代突出显示以不必要的位移结束

TikZ、Beamer 和矩阵节点迭代突出显示以不必要的位移结束

我有这段代码,我希望蓝色圆圈节点在突出显示时不展开整个表格。使用附加的最小尺寸选项,表格保持不变,但节点会移动,这很丑陋:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{frame}[fragile]
\begin{tikzpicture}
  \footnotesize
  \matrix (m) [matrix of nodes, row sep=1\pgflinewidth, column sep=1\pgflinewidth,
               nodes={rectangle, draw=gray, minimum height=2em,
               anchor=center, align=center,
               inner sep=0pt, outer sep=0pt}]{
    1 & 5 & 6 & 6 & 6 & 7 & 7 & 7 & 8 & 8 & 9 & 10 \\
    \alt<2->{11 & 11 & 11 & 12 & 12 & 12 & 12 & 13 & 13 & 13 & 14 & |[draw, circle, blue, text width=1.5em]| 14}
    {11 & 11 & 11 & 12 & 12 & 12 & 12 & 13 & 13 & 13 & 14 & 14 }\\
    14 & 14 & 15 & 16 & 17 & 17 & 17 & 18 & 18 & 18 & 18 & 19 \\
    19 & 20 & 20 & 20 & 23 & 26 & 29 & 29 & 31 & 32 & 32 & 34\\
     } ;
\end{tikzpicture}
\end{frame}
\end{document}

此外,如果有人知道一种更优雅的方式来混合 Beamer 和 TikZ 矩阵以改变节点方面,欢迎他!谢谢。

答案1

这是实现此目的的一种方法。还请注意,使用此方法,代码会简化(我添加了一个minimum width值仅用于示例,但如果您不想使用它,可以将其删除):

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}

\tikzset{onslide/.code args={<#1>#2}{%
  \only<#1>{\pgfkeysalso{#2}}%
  }
}

\begin{document}

\begin{frame}[fragile]
\begin{tikzpicture}
  \footnotesize
  \matrix (m) [
    matrix of nodes, 
    row sep=1\pgflinewidth, 
    column sep=1\pgflinewidth,
    nodes={
      rectangle, 
      draw=gray, 
      minimum height=2em,
      anchor=center, 
      align=center,
      minimum width=2em,
      inner sep=0pt, 
      outer sep=0pt
      }
    ]
    {
    1 & 5 & 6 & 6 & 6 & 7 & 7 & 7 & 8 & 8 & 9 & 10 \\
    11 & 11 & 11 & 12 & 12 & 12 & 12 & 13 & 13 & 13 & 14 & |[onslide=<2->{circle,overlay,blue}]|14 \\
    14 & 14 & 15 & 16 & 17 & 17 & 17 & 18 & 18 & 18 & 18 & 19 \\
    19 & 20 & 20 & 20 & 23 & 26 & 29 & 29 & 31 & 32 & 32 & 34\\
     };
\end{tikzpicture}
\end{frame}

\end{document}

结果动画:

在此处输入图片描述

相关内容