Как выполнить арифметические действия для узла в TikZ?

Как выполнить арифметические действия для узла в TikZ?

У меня есть массив коробок, и я хотел бы быстро пронумеровать их с помощью TikZ. Моя идея была использовать что-то вроде этого:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[font=\tiny]
  \foreach \x in {0,...,4}
    \foreach \y in {0,...,4}
      \draw (\x*2-.5,\y*2-.5) rectangle (\x*2+.5,\y*2+.5) node[midway] {\x+1+5*\y};
\end{tikzpicture}

\end{document}

Однако узел node теперь выглядит 0+1+5*2как пример. Есть ли способ заставить TikZ конвертироваться 0+1+5*2в 11?

решение1

Сначала необходимо вычислить значение, \x+1+5*\yа затем использовать результат в качестве содержимого узла:

\documentclass[tikz, margin=3mm]{standalone}

\begin{document}
    \begin{tikzpicture}
\foreach \x in {0,...,4}
    \foreach \y in {0,...,4}
    \pgfmathtruncatemacro{\xy}{\x+1+5*\y} % macro which calculate value of \x+1+5*\y
        \draw (\x*8-1,\y*8+1) rectangle (\x*8+1,\y*8-1) node[midway] {\xy};
    \end{tikzpicture}
\end{document}

введите описание изображения здесь

Для использования библиотеки pgfmath(она загружена по умолчанию) см. главуМатематические и объектно-ориентированные движки, стр. 1010 в tikzдокументации (версия для 4.1.4a), отдельный раздел94.1 Анализ выраженийна странице 1012.

решение2

Если я правильно понял, вы хотите построить таблицу из квадратных ячеек 1 cmшириной 1 cm.

Вы можете использовать nodesс minimum sizeпараметром 1cm, с drawопцией, которая по умолчанию рисует их контур в виде rectangle, в данном случае квадрата.

\documentclass[tikz,border=5mm]{standalone}

\begin{document}

\begin{tikzpicture}[font=\tiny]
  \foreach \x in {0,...,4}{
    \foreach \y [evaluate =\y as \xy using int(\x+1+5*\y)]in {0,...,4}
      \node[draw,minimum size=1cm] at (2*\x,2*\y) {\xy};
      }

\end{tikzpicture}
\end{document}

Скриншот

Связанный контент