如何对 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*211

答案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(默认情况下已加载),请参阅章节数学和面向对象引擎tikz文档第 1010 页(4.1.4a 版),特定章节94.1 解析表达式在第1012页。

答案2

如果我理解正确的话,您想要构建一个由方形盒子组成的桌子,1 cm宽度为,彼此之间相隔1 cm

您可以使用nodes,使用默认将其轮廓绘制为 的选项,这里minimum size是正方形。1cmdrawrectangle

\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}

截屏

相关内容