如何在 beamer 中叠加 tikz 矩阵?

如何在 beamer 中叠加 tikz 矩阵?

背景:在 Beamer 中叠加 tikz 时,我遇到了一些意外情况matrix。latex 代码在最后给出(笔记:您也可以阅读并复制分享Latex:TikzMatrixOverlay)。有两个 tikz 矩阵,第一个没有叠加的矩阵用于比较。第二个有叠加的矩阵在以下方面不令人满意:

  1. 针对 (2,1) 单元格(第二行,第一列)的指令|[red]|不起作用;请注意,|[red]|针对 (3,2) 单元格的指令确实起作用。
  2. 我不能用 替换\only<4>{4444 & 4444 & 4444} \\\only<4>{4444 & 4444 & 4444 \\}否则,我会收到Missing \endgroup inserted错误。
  3. 如果我使用\only<4>{4444 & 4444 & 4444} \\(如源代码所示),则覆盖期间会显示一个额外的空单元格(在第四行)。

请注意,您还可以看到源代码中的注释和下图中这三个问题。tikz-矩阵覆盖

问题:因此,我的问题是如何解决这三个问题。具体来说,

  1. 启用|[red]|(2,1)单元格的指令;
  2. 消除叠加过程中多余的空单元格(在第四行);
  3. 逐行叠加 tikz 矩阵。
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\begin{frame}[fragile]{TikzMatrixOverlay}
  \begin{tikzpicture}

  % matrix without overlay for comparison
  \matrix [align = center, matrix of nodes, nodes = {text width = 16mm, draw}]
  {
    1 & 1 & 1 \\
    |[red]| 22 & 22 & 22 \\
    333 & |[red]| 333 & 333 \\
    4444 & 4444 & 4444 \\
  };

  % matrix with overlay
  \matrix [align = center, xshift = 6.0cm, matrix of nodes, nodes = {text width = 16mm,   draw}]
  {
    1 & 1 & 1 \\
    \only<2->{|[red]| 22 & 22 & 22 \\} % Problem 1: the |[red]| instruction does not work.
    \only<3->{333 & |[red]| 333 & 333 \\} % this |[red]| instruction does work.
    \only<4>{4444 & 4444 & 4444} \\   % Problem 2: it cannot be: \only<4>{4444 & 4444 &     4444 \\}
  };
  \end{tikzpicture}
\end{frame}

\end{document}

答案1

就在最近,昨天,我给 CTAN 发了一个新的包裹,名为aobs-tikz正是为这些工作而设计的。它基于 Daniel 的方法,思维导图 tikzpicture 在 beamer 中 (逐步显示)它扩展了我定义的样式使用 TikZ 节点在 Beamer 中突出显示

其用法预览:

\documentclass{beamer}
\usepackage{lmodern,tikz}
\usetikzlibrary{overlay-beamer-styles,matrix}

\begin{document}

\begin{frame}[fragile]{TikzMatrixOverlay}
  \begin{tikzpicture}[
  background default draw=black, % define default behaviour
  background default text=black, % define default behaviour
  background default aspect={solid}, % define default behaviour
  highlight/.style={background draw=red, % define modified behaviour
    background text=red, % define modified behaviour
    background aspect=dashed,% define modified behaviour
    },
  ]

  % matrix without overlay for comparison
  \matrix [align = center, matrix of nodes, nodes = {text width = 16mm, draw},]
  {
    1 & 1 & 1 \\
    |[red]| 22 & 22 & 22 \\
    333 & |[red]| 333 & 333 \\
    4444 & 4444 & 4444 \\
  };

  % matrix with overlay
  \matrix [align = center, xshift = 6.0cm, matrix of nodes, nodes = {text width = 16mm,draw},
  row 4/.style={visible on=<3>}% original visible on style by Daniel
  ]{
    1 & 1 & 1 \\
    |[highlight, draw on=<1->, text on=<1->, aspect on=<3>]| 22 & 22 & 22 \\ % new styles
    333 & |[highlight, draw on=<2->, text on=<2->, aspect on=<3>]| 333 & 333 \\ % new styles
    4444 & 4444 & 4444\\
  };

  \end{tikzpicture}  
\end{frame}

\end{document}

在此处输入图片描述

答案2

困难在于,TikZ 在测试单元格如何开始或单元格是否存在时不会进行任何扩展。因此,\only即使没有内容,所有 s 也被视为“这是一个新单元格”。此外,它们被视为单元格的开头,意味着样式选项(例如 )的测试|[red]|失败。此外,由于 TikZ 矩阵必须以 结尾\\,因此它后面的任何内容都被视为新行,这就是空方块存在的原因。一种解决方案是确保所有 s\only都不会出现在单元格的开头。这不是我所说的完美解决方案,但在这种情况下有效。本质上,我们将行视为以\\ 在上一行。这确保当\\看到 时,\only已经展开,所有问题都会悄悄消失。(使用此解决方案时,必须对空格稍加注意。)

\documentclass{beamer}
%\url{http://tex.stackexchange.com/q/153782/86}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\begin{frame}[fragile]{TikzMatrixOverlay}
  \begin{tikzpicture}[baseline = 0pt]

  % matrix without overlay for comparison
  \matrix [anchor=north,align = center, matrix of nodes, nodes = {text width = 16mm, draw}]
  {
    1 & 1 & 1 \\
    |[red]| 22 & 22 & 22 \\
    333 & |[red]| 333 & 333 \\
    4444 & 4444 & 4444 \\
  };

  % matrix with overlay
  \matrix [anchor = north, align = center, xshift = 6.0cm, matrix of nodes, nodes = {text width = 16mm,   draw}]
  {
    1 & 1 & 1\only<2->{\\
    |[red]| 22 & 22 & 22}% Problem 1: the |[red]| instruction does not work.
    \only<3->{\\ 333 & |[red]| 333 & 333}% this |[red]| instruction does work.
    \only<4>{\\ 4444 & 4444 & 4444}\\   % Problem 2: it cannot be: \only<4>{4444 & 4444 &     4444 \\}
  };
  \end{tikzpicture}
\end{frame}

\end{document}

相关内容