我想使用 foreach 为许多多边形编写一个代码。如何使用 n 个变量并写入 n 个值来用相同的代码绘制每个多边形?我正在以与下面相同的方式重复几个步骤。但我想为每个多边形编写一个代码,通常使用 foreach 循环,但我想学习不同的循环。我正在研究一个细节,tikz。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usepackage{caption}
\tikzset{
buffer/.style={
draw,
regular polygon,
regular polygon sides=4,
minimum size=20em
},
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\node[buffer, fill=pink]{};
\end{tikzpicture}
\caption{One square}
\end{figure}
\begin{figure}
\centering
\begin{tikzpicture}
\node[buffer, fill=pink] (A) {};
\foreach \mycorner in {1,2,3,4}
{\node[buffer, fill=green,scale=.33, transform shape] (A\mycorner) at (A.corner \mycorner) {};}
\end{tikzpicture}
\caption{One square with squares}
\end{figure}
\end{document}
答案1
使用 可以很容易地根据边数对该构造进行参数化\newcommand
。这是我的尝试。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usepackage{caption}
\tikzset{
buffer/.style={
draw,
regular polygon,
regular polygon sides=#1,
minimum size=20em
}
}
\newcommand{\myPoly}[1]{\node[buffer=#1, fill=pink] (A) {};
\foreach \mycorner in {1,2,...,#1}
{\node[buffer=#1, fill=green,scale=.33, transform shape] (A\mycorner) at (A.corner \mycorner) {};} }
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\node[buffer=4, fill=pink]{};
\end{tikzpicture}
\caption{One square}
\end{figure}
\begin{figure}
\centering
\begin{tikzpicture}
\myPoly{5}
\end{tikzpicture}
\caption{One pentagon with pentagons}
\end{figure}
\end{document}