
Вот код диаграммы, которую я только что сгенерировал:
\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}
По сути, этот код помогает мне заполнить мою доску 9 на 9 белыми и черными квадратами. Теперь, разбив эту доску на 9 квадратов 3 на 3, я задаюсь вопросом, есть ли способ создать отличительные толстые границы вокруг границ каждого квадрата 3 на 3 в блоке? То есть, я хочу, чтобы границы каждого квадрата 3 на 3 были более плотного оттенка черного по сравнению с другими линиями. (Это потому, что я пытаюсь доказать результат, и выполнение вышеизложенного поможет мне лучше проиллюстрировать мою точку зрения).
Редактировать:Хм, так, основываясь на полученных мной ответах, по-видимому, есть несколько способов сделать это: один из них — создать список матриц, а затем индивидуально указать, хотите ли вы, чтобы каждая ячейка была черной или белой. Действительно, этот метод гораздо более интуитивен и относительно осуществим, если ваша доска не слишком большая. Второй метод подразумевает аккуратное применение модульной арифметики, и хотя его понимание занимает немного времени, его главное достоинство в том, что вы можете легко заполнить всю доску цветами, что выгодно, когда у вас большая доска. По крайней мере, это то, что мне удалось собрать.
решение1
Я не знал, хотите ли вы нарисовать только одну границу или все, поэтому я добавил коды для обеих ситуаций. Основная идея в том, что узлы в матрице имеют имена, поэтому вы можете использовать
\draw[blue,thick] (M-1-1.north west) rectangle (M-3-3.south east);
Полный код:
\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}
решение2
Другой способ с синтаксисом x ? y : z
(если x, то y, иначе z). Толщина свободно контролируется [line width]
. Опция [shift={(1,1)}]
обусловлена определением команды grid
.
\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}