有条件地强调/突出显示矩阵条目

有条件地强调/突出显示矩阵条目

我想按提供的列表中的指定顺序强调/突出显示矩阵条目。从概念上讲,我希望可以更改指定覆盖层上提供的矩阵单元格的样式。下面的代码在相应覆盖层上围绕指定条目绘制一个框,但我想更改单元格的样式(颜色为蓝色、粗体或其他)。

是否可以通过这种方式“动态”更改单元格的样式?当然可以在矩阵设置中设置单个单元格的样式。

非常感谢。

    \begin{tikzpicture}
      % \tikzstyle{unseen} = []
      \tikzstyle{seen} = [color=blue!70]
      \matrix (m) [matrix of math nodes,
      nodes in empty cells,
      minimum size=7mm, ampersand replacement=\&, every
      node/.style={font={\large\ttfamily\bfseries}}] {
        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 \o/\r/\c in {1/2/1,2/3/1} {
         \draw<\o->[seen] (m-\r-\c.north west) rectangle (m-\r-\c.south east);
       }
    \end{tikzpicture}

答案1

alt使用以下键更改节点的外观aobs-tikz/overlay-beamer-styles非常简单。

改变节点的内容也是可能的,但需要进行调整matrix of nodes

代码

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix, overlay-beamer-styles}
\tikzset{
  matrix beamer/.style args={<#1>#2-#3:#4#5}{
    row #2 column #3/.append style={
      every node/.append style={
        alt=<{#1}>{#4}{#5}}}}}
\begin{document}
\begin{frame}
\begin{tikzpicture}[
  % unseen/.style={},
  seen/.style={blue!70},
  matrix seen/.style args={####1/####2}{% ####‽ Ugh.
    matrix beamer={<####1->####2:{seen}{}}}
]
\matrix (m) [
  matrix of math nodes,
  nodes in empty cells,
  ampersand replacement=\&,
  minimum size=7mm,
  matrix seen/.list={1/2-1, 2/3-1}, % <overlay>/<row>-<column>
  every node/.style={font={\large\ttfamily\bfseries}}
] {
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 \\
};
\end{tikzpicture}
\end{frame}
\end{document}

答案2

这个问题最好在 TikZ 矩阵之外解决。在如图所示的环境\alt中使用 beamerarray更新 beamer 中的矩阵条目是我现在正在考虑的一个更简单、更合适的解决方案。

相关内容