我对 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}
红色网格只是为了引导视线。