
Aquí está el código de un diagrama que acabo de generar:
\begin{tikzpicture}[fill=black]
\matrix[matrix of nodes, nodes={draw,minimum size=1cm}, nodes in empty cells,column sep=-\pgflinewidth,row sep=-\pgflinewidth](M){
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
};
\end{tikzpicture}
Básicamente, este código me ayuda a llenar mi tablero de 9 por 9 con cuadrados blancos y negros. Ahora, descomponiendo este tablero en 9 cuadrados de 3 por 3, me pregunto si hay una manera de crear bordes gruesos distintivos alrededor de los límites de cada cuadrado de 3 por 3 en el bloque. Es decir, quiero que los límites de cada cuadrado de 3 por 3 tengan un tono de negro más sólido en comparación con las otras líneas. (Esto se debe a que estoy tratando de probar un resultado y hacer lo anterior me ayudaría a ilustrar mejor mi punto).
Editar:Mmmm, según las respuestas que obtuve, aparentemente hay algunas formas de hacer esto: una es crear una lista matricial y luego especificar individualmente si desea que cada celda sea blanca o negra. De hecho, este método es mucho más intuitivo y relativamente factible de realizar siempre que su tablero no sea demasiado grande. El segundo método implica una aplicación clara de la aritmética modular y, aunque lleva un poco de tiempo entenderlo, su principal ventaja es que puedes llenar fácilmente todo el tablero con colores, lo cual es ventajoso cuando tienes un tablero más grande. Al menos esto es lo que he logrado reunir.
Respuesta1
No sabía si querías dibujar solo un borde o todos, así que agregué códigos para ambas situaciones. El punto básico es que los nodos en la matriz tienen nombres, por lo que puedes usar
\draw[blue,thick] (M-1-1.north west) rectangle (M-3-3.south east);
Código completo:
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of nodes, nodes={draw,minimum size=1cm}, nodes in empty cells,column sep=-\pgflinewidth,row sep=-\pgflinewidth](M){
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
};
\draw[blue,thick] (M-1-1.north west) rectangle (M-3-3.south east);
\end{tikzpicture}
\begin{tikzpicture}
\matrix[matrix of nodes, nodes={draw,minimum size=1cm}, nodes in empty cells,column sep=-\pgflinewidth,row sep=-\pgflinewidth](M){
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
& & |[fill]| & & & |[fill]| & & & |[fill]| \\
& |[fill]| & & & |[fill]| & & & |[fill]| & \\
|[fill]| & & & |[fill]| & & & |[fill]| & & \\
};
\draw[blue,thick] foreach \X in {1,2,3}
{foreach \Y in {1,2,3}
{(M-\the\numexpr3*\Y-3+1\relax-\the\numexpr3*\X-3+1\relax.north west) rectangle
(M-\the\numexpr3*\Y-3+3\relax-\the\numexpr3*\X-3+3\relax.south east)}};
\end{tikzpicture}
\end{document}
Respuesta2
Otra forma con la sintaxis x ? y : z
(si x entonces y si no z). El espesor se controla libremente mediante [line width]
. La opción [shift={(1,1)}]
se debe a la definición del grid
comando.
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\def\n{9}
\foreach \i in {1,...,\n}
\foreach \j in {1,...,\n}
{
\pgfmathparse{mod(\i+\n-\j,3) ? "white" : "black"}
\edef\colour{\pgfmathresult}
\fill[\colour] (\i,\j) rectangle +(1,1);
}
\draw (1,1) grid (\n+1,\n+1);
\draw[magenta,line width=1pt,shift={(1,1)}] (0,0) grid[step=3cm] (\n,\n);
\end{tikzpicture}
\end{document}