绘制默认尺寸大于 1 的方形网格

绘制默认尺寸大于 1 的方形网格

我使用以下代码绘制网格,并用某些填充或形状填充某些单元格。

    \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{calc,shapes}
    \begin{document}
    \tikzset{
      pics/square/.default={1.5},
      pics/square/.style = {
        code = {
        \draw[pic actions] (0,0) rectangle (#1,#1);
    }}}    
    \begin{center}
    \begin{tikzpicture}
    \foreach \x in {1,2,...,5}  {
     \foreach \y in {1,2,...,5} {
       \pic[fill=white] at (\x,\y) {square};
     }
   }
    
    \node[regular polygon,regular polygon sides=4,draw=black,thick, fill=blue,minimum size=.8cm] at (5.5,4.5) {};
    \pic[draw=black,thick,fill=red] at (2,2) {square};
    \end{tikzpicture}
    \end{center}
    \end{document}

当我使用代码时

pics/square/.default={1},

我得到了一个方形网格。

在此处输入图片描述

但是当我使用代码时

pics/square/.default={1.5},

为了获得更大的网格尺寸,网格变成了矩形而不是正方形。

在此处输入图片描述

如何通过增加默认网格大小来解决此问题,而不增加其比例\tikzpicture

答案1

您可以使用grid-命令绘制网格,然后定义命令来制作正方形。在下面我使用\sqw来缩放网格中的正方形,这里设置为1.5

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\newcommand\sqw{1}
\newcommand\square[4][1]{\fill[#4] (#2*\sqw,#3*\sqw) rectangle +(#1*\sqw,#1*\sqw);}
\begin{document}
\renewcommand\sqw{1.5}
\begin{tikzpicture}
  \draw[step=\sqw] (0,0) grid (5*\sqw, 5*\sqw);
  \square{2}{1}{red}
  \square[0.6]{1.2}{3.2}{blue}
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑

使用问题中的picnode命令,您可以做或多或少相同的事情。问题中明确指出您不应缩放图片环境,然后其中的所有内容都必须缩放。

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,shapes}
\newcommand\sqw{1}
\tikzset{
      pics/square/.default={\sqw},
      pics/square/.style = {
        code = {
        \draw[pic actions] (0,0) rectangle (#1,#1);
    }}}   
\begin{document}
\renewcommand\sqw{1.5}
\begin{tikzpicture}
  \draw[step=\sqw] (\sqw,\sqw) grid (6*\sqw, 6*\sqw);
  \node[regular polygon,regular polygon sides=4,draw=black,thick, fill=blue,minimum size=.8*\sqw cm] at (5.5*\sqw,4.5*\sqw) {};
  \pic[draw=black,thick,fill=red] at (2*\sqw,2*\sqw) {square};
\end{tikzpicture}
\end{document}

答案2

修改你的foreach循环来匹配你的默认正方形大小。

   \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{calc,shapes}
    \begin{document}
    \tikzset{
      pics/square/.default={1.5},
      pics/square/.style = {
        code = {
        \draw[pic actions] (0,0) rectangle (#1,#1);
    }}}    
    \begin{center}
    \begin{tikzpicture}
    \foreach \x in {1,2.5,...,7.5}  {
     \foreach \y in {1,2.5,...,7.5} {
       \pic[fill=white] at (\x,\y) {square};
     }
   }
    
    \node[regular polygon,regular polygon sides=4,draw=black,thick, fill=blue,minimum size=.8cm] at (6.25,6.25) {};
    \pic[draw=black,thick,fill=red] at (2.5,2.5) {square};
    \end{tikzpicture}
    \end{center}
    \end{document}

相关内容