使用 foreach 的连续整数矩形表

使用 foreach 的连续整数矩形表

我想要一个带有整数(像彩票一样)的矩形表,比如说 4x9,数字从 1 到 36。我假设使用 tikz 很容易,两个 foreach 循环。像这样:

\foreach \i in {0,1,2,...,8}{
  \foreach \j in {1,2,3,4}{
    \draw[fill=blue!15] (\i,\j) rectangle (1+\i,1+\j);
    \tikzmath{\k=9*(4-\j)+\i+1;} 
    \draw (\i+0.5,\j+.5) node {\k};
  }
}

但是数字的形式是 1.0、2.0 等,而我想要的是 1、2 等。您能帮帮我吗?

答案1

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

\begin{document}

\begin{tikzpicture}
\foreach \i in {0,1,2,...,8}{
  \foreach \j [evaluate=\j as \num using int(9*(4-\j)+\i+1)] in {1,2,3,4}
    \node[fill=blue!15, minimum size=1cm, draw] at (\i,\j) {\num};
}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

这是一个基于 LuaLaTeX 的解决方案。它采用了两个for循环。

在此处输入图片描述

\documentclass{article}
\usepackage{array}   % for \extrarowheight length parameter and 'w' column type
\usepackage{luacode} % for \luaexec macro
\begin{document}

\setlength\extrarowheight{2pt} % make squares 14pt wide and tall
\setlength\tabcolsep{4pt}

\begin{tabular}{|*{9}{w{c}{6pt}|}}
\hline
\luaexec{
  for i=1,4 do
    for j=1,8 do 
      tex.sprint( i*j .. "&" ) 
    end
    tex.sprint( i*9 .. "\\\\ \\hline" )
  end }
\end{tabular}
\end{document}

答案3

\pgfmathprintnumber解决了问题。

我真的不知道为什么这么复杂。

相关内容