如何在方格中标记单元格

如何在方格中标记单元格

我对 Tikz 还比较陌生,还有很多方面我还不熟悉。我想构建下图,如图所示。现在,我知道如何创建正方形网格本身,但我不知道如何按图表要求标记各个正方形。

编辑:8×8网格的代码如下:

\begin{tikzpicture}
\draw[step=1cm,black,very thin] (-2,-2) grid (6,6);
\end{tikzpicture}

在此先感谢您提供的任何帮助。图表

编辑 2:感谢接受的答案,我现在了解了构建所需内容所需的代码。以下是完整内容:

\begin{tikzpicture}
\matrix[matrix of nodes, nodes={minimum size=1cm, draw, anchor=center}, row sep=-\pgflinewidth, column sep=-\pgflinewidth](mygrid){%
 R & B & W & G & R & B & W & G \\
 B & W & G & R & B & W & G & R \\
 W & G & R & B & W & G & R & B \\
 G & R & B & W & G & R & B & W \\
 R & B & W & G & R & B & W & G \\
 B & W & G & R & B & W & G & R \\
 W & G & R & B & W & G & R & B \\
 G & R & B & W & G & R & B & W \\
 };
 \end{tikzpicture}

编辑 3:这是其中一个回复中提供的另一种解决方案,它使用模块化算法 - 我相信它非常强大,因为它可以推广到任意大的正方形,而无需我们手动输入每个单元格的值:

\begin{tikzpicture}
\edef\lstM{"R","B","W","G"}
\path (-1.5,6) coordinate(m10);
\foreach \X in {1,...,8}
{\foreach \Y in {1,...,8}
{\pgfmathsetmacro{\pft}{{\lstM}[Mod(\X+\Y-2,4)]}
\ifnum\X=1
\node[draw,minimum size=1cm,anchor=north] (m\X\Y) 
at ([yshift=\pgflinewidth]m\X\the\numexpr\Y-1.south){\pft};
\else 
\node[draw,minimum size=1cm,anchor=west] (m\X\Y) 
at ([xshift=-\pgflinewidth]m\the\numexpr\X-1\relax\Y.east){\pft};
\fi}}
\draw[black, solid]  (-2,-2) grid (6,6); 
\end{tikzpicture}

我将 [红色,虚线] 改为 [黑色,实线] 以满足我的目的。

答案1

您可以从以下几点开始:

\documentclass[tikz]{standalone}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\matrix[matrix of nodes, nodes={minimum size=1cm, draw, anchor=center}, row sep=-\pgflinewidth, column sep=-\pgflinewidth](mygrid){%
R & B & W & G \\
B & W & G & R \\
W & G & R & B \\
G & R & B & W \\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

只是为了好玩。使用一些模数算法。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \edef\lstM{"R","B","W","G"}
 \path (-1.5,6) coordinate(m10);
 \foreach \X in {1,...,8}
  {\foreach \Y in {1,...,8}
  {\pgfmathsetmacro{\pft}{{\lstM}[Mod(\X+\Y-2,4)]}
  \ifnum\X=1
   \node[draw,minimum size=1cm,anchor=north] (m\X\Y) 
   at ([yshift=\pgflinewidth]m\X\the\numexpr\Y-1.south){\pft};
  \else 
   \node[draw,minimum size=1cm,anchor=west] (m\X\Y) 
   at ([xshift=-\pgflinewidth]m\the\numexpr\X-1\relax\Y.east){\pft};
  \fi}}
 \draw[red,dashed]  (-2,-2) grid (6,6); 
\end{tikzpicture}
\end{document}

在此处输入图片描述

红色网格只是为了引导视线。

相关内容