Tikz:在图片中设置锚点以进行相对定位

Tikz:在图片中设置锚点以进行相对定位

我创建了一个pic简单的多边形,我想使用它并重复使用tikzpictures它来创建包含相对于彼此定位的副本。我该怎么做?

如果我没有pic,我会使用positioning库并相对于多边形的角进行定位。我可以用图片做类似的事情吗?

预期结果比这更优雅、更可重复。谢谢。

\documentclass[class=article,border=5pt,tikz]{standalone}
\usetikzlibrary{shapes.geometric}

\tikzset{fig/.pic={code={%
  \begin{scope}
   \node[regular polygon,regular polygon sides=6,draw,minimum width=3cm]
   (hexagon){};
   \foreach \x [evaluate=\x] in {1,...,6}
   {\node[draw,shape=circle,fill=white,opacity=1,minimum size=6mm] at (hexagon.corner \x){}; }
  \end{scope}
}}}%

\begin{document}
\begin{tikzpicture}[thick,x=1cm,y=1cm]
  \path (0,0) pic {fig};
  \path (2.265,1.305) pic {fig}; # inelegant + imprecise!
  \path (4.53,0) pic {fig};
  \path (2.265,-1.305) pic {fig};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

在这种情况下,我不会使用pic但是append after command。一个好处是你可以使用节点的锚点。

\documentclass[class=article,border=5pt,tikz]{standalone}
\usetikzlibrary{shapes.geometric}

\tikzset{myhex/.style={regular polygon,regular polygon sides=6,draw,
    outer sep=0pt,minimum width=3cm,
    append after command={[/utils/exec=\let\myln\tikzlastnode]
foreach \x  in {1,...,6} {(\myln.corner \x)
node[draw,shape=circle,fill=white,opacity=1,minimum size=6mm]{}}
}}}%

\begin{document}
\begin{tikzpicture}[thick,x=1cm,y=1cm]
  \path (0,0) node[myhex] (h1) {}
    node[myhex,anchor=corner 3]  (h2) at (h1.corner 1){}
    node[myhex,anchor=corner 3]  (h3) at (h1.corner 5){}
    node[myhex,anchor=corner 3]  (h4) at (h2.corner 5){};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容