在 tikz 中创建一个类似符号的形状并轻松重复使用它?

在 tikz 中创建一个类似符号的形状并轻松重复使用它?

我想创建一个类似圆圈的东西,并在它周围放置指向圆圈(或者可能是矩形)的箭头:

在此处输入图片描述

我是这样做的,如果有人因为我的方法非常手动而有所改进,欢迎您:

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\def\size{2}
\begin{tikzpicture}
\node[circle, draw, text width=\size cm, text height=\size cm](down){};
\foreach \x/\y in {
north/90,
north east/45, 
east/0, 
south east/315,
south/270,
south west/225, 
west/180,
 north west/135}
{\draw[latex-] (down.\x) to ++ (\y:1cm);
}
\end{tikzpicture}
\end{document}

我现在想在更大的 tikz_diagramm 中使用此图片,就像一个简单的、可能可扩展的符号。有没有比在节点(需要符号的地方)内创建新的 tikz 环境并复制粘贴上述代码更有效的方法?

您是否知道已在 tikz 中预定义符号的良好存储库(例如符号)?

答案1

您可以使用pics 来做这些事情。它们可以有参数,这里是大小。还要注意和north90等价的,所以循环中只需要一个变量。

\documentclass[tikz,border=3.14mm]{standalone}
\tikzset{pics/.cd,
            funky circle/.style={
            code={
            \node[circle, draw,minimum size=#1](down){};
            \foreach \X in {90,45,...,-225}
            {\draw[latex-] (down.\X) to ++ (\X:1cm);}
            }}}
\begin{document}
\begin{tikzpicture}
\path (0,0) pic{funky circle=2cm};
\path (4,2) pic{funky circle=1cm};
\path (pi,-1) pic[blue]{funky circle=1cm};
\end{tikzpicture}
\end{document}

在此处输入图片描述

只是为了好玩:你可以使用这些东西来完成一些有趣的任务。

\documentclass[tikz,border=3.14mm]{standalone}
\tikzset{pics/.cd,
            funky circle/.style={
            code={
            \node[circle, draw,minimum size=#1](-down){};
            \foreach \X in {0,45,...,315}
            {\draw[latex-] (-down.\X) to ++ (\X:1cm) coordinate(-\X);}
            }}}
\begin{document}
\begin{tikzpicture}
\pic (Emma) at (0,0) {funky circle=2cm};
\pic (Elisa) at (4,2) {funky circle=1cm};
\path (pi,-1) pic[blue,rotate=30,transform shape]{funky circle=1cm};
\draw[red,latex-latex] (Elisa-135) to[out=135,in=90] (Emma-90);
\end{tikzpicture}
\end{document}

在此处输入图片描述

如您所见,旋转这些图片时需要小心:因为里面有一个节点,所以您必须添加transform shape。这在这里特别微妙,因为旋转后的圆与未旋转的圆具有相同的形状。但是,变换形状会变换用于构造的锚点90pic

相关内容