叠加投影仪样式与矩阵分隔符

叠加投影仪样式与矩阵分隔符

使用时克劳迪奥·菲安德里诺太棒了雙方库,我意识到与库中的矩阵相关的一个有趣的特性matrix:如果将矩阵放置在 中\matrix,它们的分隔符将不会隐藏。以下 MWE 说明了这一点,其中我还介绍了两种可能的解决方法。

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix,overlay-beamer-styles}
\usetikzlibrary{positioning} %<- not important here
\begin{document}
 \begin{frame}[t]
 \frametitle{Matrix delimiters won't hide}
  \begin{tikzpicture}[ampersand replacement=\&]
   \matrix [matrix of nodes,left delimiter=(,right delimiter=)] (m1)
     {
       a \\
       b \\
     };
   \matrix [right=1cm of m1,visible on=<2->,matrix of nodes,
    left delimiter=(,right delimiter=)] (m2)
     {
       x \\
       y \\
     };
   \matrix [right=1cm of m2,visible on=<3->,matrix of nodes] (m3)
     {
       u \\
       v \\
     };
   \begin{scope}[visible on=<4->]  
    \matrix [right=1cm of m3,matrix of nodes,left delimiter=(,right delimiter=)] (m4)
      {
        p \\
        q \\
      };
   \end{scope}
   \path[visible on=<5->] 
   node[matrix,right=1cm of m4,matrix of nodes,left delimiter=(,right delimiter=)] 
   (m5)
     {
       r \\
       s \\
     };
   \node[visible on=<6->,matrix,right=1cm of m5,matrix of nodes,left delimiter=(,right delimiter=)] 
   (m6)
     {
       c \\
       d \\
     };  
  \end{tikzpicture}
 \end{frame}
\end{document}

在此处输入图片描述

该向量x y说明了问题:即使矩阵应该仅从覆盖层 2 开始可见(即当xy出现时),括号也不会隐藏。u v显示没有分隔符的矩阵是可以的。p qr s指出两种可能的解决方法:使用scope或仅使用\path[visible on=<...>] node[matrix ,...。最后,c d显示
\node[visible on=<...>,matrix,...具有与 相同的问题\matrix[visible on=<...>,...

对问题根源的评论:问题在于分隔符实际上并不是矩阵(节点)的一部分,如下面的 MWE 所示。

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix,fit}
\usetikzlibrary{positioning} %<- not important here
\begin{document}
 \begin{frame}[t]
 \frametitle{Comment on the origin of the problem}
  \begin{tikzpicture}[ampersand replacement=\&]
   \matrix [matrix of nodes,left delimiter=(,right delimiter=)] (m1)
     {
       a \\
       b \\
     };
   \matrix [right=1cm of m1,matrix of nodes,
    left delimiter=(,right delimiter=)] (m2)
     {
       c \\
       d \\
     };
   \path[local bounding box=m3] node[matrix,right=1cm of m2,matrix of nodes,
    left delimiter=(,right delimiter=)] 
     {
       u \\
       v \\
     };  
   \path[local bounding box=m4] node[matrix,right=1cm of m3,matrix of nodes,
    left delimiter=(,right delimiter=)] 
     {
       x \\
       y \\
     }; 
   \node[fit=(m1)(m2),draw]{};    
   \node[fit=(m3)(m4),draw]{};
  \end{tikzpicture}
 \end{frame}
\end{document}

在此处输入图片描述

问题:有没有更好的解决方法,甚至是使用简单的解决方案\tikzset{...}

答案1

其他一些可能的解决方法(并不是说它们更好):

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix,overlay-beamer-styles}
\usetikzlibrary{positioning} %<- not important here
\begin{document}
 \begin{frame}[t]
 \frametitle{Matrix delimiters won't hide}

  \begin{tikzpicture}[ampersand replacement=\&]
   \matrix [matrix of nodes,left delimiter=(,right delimiter=)] (m1)
     {
       a \\
       b \\
     };

   \tikzset{every delimiter/.append style={visible on=<2->}}
   \matrix [right=1cm of m1,visible on=<2->,matrix of nodes,
    left delimiter=(,right delimiter=)] (m2)
     {
       x \\
       y \\
     };
   \visible<3->{
      \matrix [right=1cm of m2,matrix of nodes,
       left delimiter=(,right delimiter=)] (m2)
        {
          x \\
          y \\
        };
   } 
  \end{tikzpicture}
 \end{frame}
\end{document}

相关内容