我想逐步或动态地显示矩阵的元素。理想情况下,我希望每次前进时元素(如 Beamer 的叠加层)从灰色淡入黑色,但我满足于单元格背景的变化(从浅灰色变为白色)。我得到的并不令人满意:
\begin{tikzpicture}
% \tikzstyle{unseen} = [color=blue!70]
\tikzstyle{seen} = []
\matrix (m) [matrix of math nodes,
nodes in empty cells,
minimum size=7mm, ampersand replacement=\&, every
node/.style={font={\large\ttfamily\bfseries},fill=gray!10}] {
1 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \\
0 \& 1 \& 1 \& 1 \& 0 \& 0 \& 0 \\
0 \& 1 \& 1 \& 0 \& 1 \& 1 \& 0 \\
0 \& 0 \& 0 \& 1 \& 1 \& 1 \& 0 \\
0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \\
};
\foreach \f/\r/\c in {1/2/1,2/3/1} {
\draw<\f->[seen] (m-\r-\c.north west) rectangle (m-\r-\c.south east);
}
\end{tikzpicture}
由于这些(目前)是稀疏二进制矩阵,我可以让foreach
列表插入1
条目吗?
非常感谢所有帮助或建议。
答案1
语法可能有点隐藏,我不太确定第一列的方块,但类似
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{frame}[fragile]{}
\newcommand\showmatrix{%
\begin{tikzpicture}
% \tikzstyle{unseen} = [color=blue!70]
\tikzstyle{seen} = []
\matrix (m) [matrix of math nodes,
nodes in empty cells,
minimum size=7mm, ampersand replacement=\&, every
node/.style={font={\large\ttfamily\bfseries},fill=gray!10}] {
\zz 1 \& 0 \& 0 \& 0 \& 0 \& 0 \& 0 \\
\zz 0 \& 1 \& 1 \& 1 \& 0 \& 0 \& 0 \\
\zz 0 \& 1 \& 1 \& 0 \& 1 \& 1 \& 0 \\
\zz 0 \& 0 \& 0 \& 1 \& 1 \& 1 \& 0 \\
\zz 0 \& 0 \& 0 \& 0 \& 0 \& 0 \& 1 \\
};
\foreach \f/\r/\c in {1/2/1,2/3/1} {
\draw<\f->[seen] (m-\r-\c.north west) rectangle (m-\r-\c.south east);
}
\end{tikzpicture}}
\def\zz#1\\\{#1\\}%
\only<1>{\showmatrix}%
\def\zz#1\\\\{#1\\\}%
\only<2>{\showmatrix}%
\def\zz#1\\\\\{#1\\\\}%
\only<3>{\showmatrix}%
\def\zz#1\\\\\\{#1\\\\\}%
\only<4>{\showmatrix}%
\def\zz#1\\\\\\\{#1\\\\\\}%
\only<5>{\showmatrix}%
\def\zz#1\\\\\\\\{#1\\\\\\\}%
\only<6>{\showmatrix}%
\def\zz#1\\\\\\\\{#1\\\\\\\\}%
\only<7>{\showmatrix}%
\end{frame}
\end{document}