例如,我可以执行这个命令:
\filldraw[fill=blue,draw=black,opacity=0.3] (0,0) circle (2cm);
但我也想要一些适用于正多边形的东西,像这样:
\filldraw[fill=blue,draw=black,opacity=0.3] (0,0) regular polygon, regular polygon sides=6 (2cm);
是否有这样的命令,或者我应该先编写\newcommand
并定义一个脚本来执行此操作?
答案1
我提出两种解决方案,各有优缺点:
- 第一个使用
pics
和node
,因此您必须与路径分开指定操作(填充、绘制...)。例如,您可以使用pic[draw]{poly=5:1cm}
来绘制五边形内半径1厘米。 - 第二种方法使用
insert path
,更接近于circle
,因为它只是插入与多边形对应的路径,因此使用路径的操作。例如,您可以使用[poly=5:1cm]
插入五边形外半径1厘米。
\documentclass[tikz,border=7pt]{standalone}
\usetikzlibrary{shapes.geometric} % <- for regular polygon nodes
\tikzset{
pics/poly/.style args={#1:#2}{
code = {
\node[regular polygon, regular polygon sides={#1}, pic actions,
outer sep=0pt,inner sep={#2}] at (0,0){};
}
},
poly/.style args={#1:#2}{
insert path={
+(0:#2) foreach ~ in {1,...,#1}{ -- +(~*360/#1:#2)} +(0,0)
}
},
}
\begin{document}
\begin{tikzpicture}
\draw[blue, fill=yellow] (0,0) -- (1,1)
[poly=7:1cm]
-- (4,1)
pic[fill=red, opacity=.5]{poly=7:1cm}
-- (2,2)
;
\end{tikzpicture}
\end{document}