我想创建一个类似圆圈的东西,并在它周围放置指向圆圈(或者可能是矩形)的箭头:
我是这样做的,如果有人因为我的方法非常手动而有所改进,欢迎您:
\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
您可以使用pic
s 来做这些事情。它们可以有参数,这里是大小。还要注意和north
是90
等价的,所以循环中只需要一个变量。
\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
。这在这里特别微妙,因为旋转后的圆与未旋转的圆具有相同的形状。但是,变换形状会变换用于构造的锚点90
等pic
。