为什么我的代码不起作用;翻译图片

为什么我的代码不起作用;翻译图片

考虑下面的代码。

\documentclass[border=5mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{backgrounds} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\pgfplotsset{ticks=none}

\newcommand{\newvar}{\pgfmathsetmacro}

\begin{document}

\begin{tikzpicture}[scale=1, transform shape]
    \newvar{\num}{5}
    \newvar{\val}{\num-1}

  \coordinate (A) at (0, 0);
  \coordinate (B) at (1, 0);
  \coordinate (C) at (0, 1);
  \coordinate (D) at (0, 2);
  \coordinate (E) at (1, 2);

  \tikzset{
        square/.pic={
            \draw[line width=1mm, pic actions]  (0, 0) -- (1, 0) -- (1, 1) -- (0, 1) -- cycle;
        }
    }

    \tikzset{
        tile1/.pic={
          \foreach \i in {(A), (B), (C), (D), (E)}{
            \draw \i pic {square} ;
          }
        }
    }

  \begin{scope}[scale=1]
        \foreach \i in {0,...,\num}{
            \foreach \j in {0,...,\val}{
                \path (3*\j+\i, -\j+3*\i) pic {tile1};
            }
        }
  \end{scope}

\end{tikzpicture}

\end{document}

首先我定义了square/.pic它只是单位正方形的轮廓。

然后我定义了坐标 (A)、(B)、(C)、(D) 和 (E)。这些定义的方式是,如果将单位正方形放置在每个坐标处,则生成的图形为 C 形瓷砖。这是在 中执行的tile1/.pic

在代码的末尾,我们可以看到两个 for 循环,它们应该将各种平移放置tile1/.pic在平面上,以实现镶嵌。

然而,我得到的输出却很少:

在此处输入图片描述

PS:请随时提供任何一般的编码建议。

答案1

不能像这样翻译符号坐标,这里也不需要使用这些。(另外我不会使用你的命令\newvar。它有点意外地起作用了。而且我删除了未使用的包和库。)以下有效。

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

\newcommand{\newvar}{\pgfmathsetmacro}

\begin{document}
\begin{tikzpicture}[scale=1, transform shape]
   \pgfmathtruncatemacro{\num}{5}
    \pgfmathtruncatemacro{\val}{\num-1}

  \tikzset{
        square/.pic={
            \draw[line width=1mm, pic actions]  (0, 0) -- (1, 0) -- (1, 1) -- (0, 1) -- cycle;
        }
    }

    \tikzset{
        tile1/.pic={
          \foreach \i in {(0, 0),(1, 0),(0, 1),(0, 2),(1, 2)}{
            \draw \i pic {square} ;
          }
        }
    }
  \begin{scope}[scale=1]
        \foreach \i in {0,...,\num}{
            \foreach \j in {0,...,\val}{
                \path (3*\j+\i, -\j+3*\i) pic {tile1};
            }
        }
  \end{scope}

\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容