재사용할 수 있는 TikZ 노드에 기호를 그리는 방법

재사용할 수 있는 TikZ 노드에 기호를 그리는 방법

양식화된 원자로 표시되는 TikZ에서 "과학" 기호를 그리려고 하는데 어떻게 해야 할지 모르겠습니다. 다음과 같은 작업을 수행할 수 있도록 마법의 TikZ 스타일을 정의할 수 있는 방법이 있습니까 \node[science](C1) at (0,0){};?

매크로 를 사용해 보았는데 \def원하는 기호를 그릴 수 있었지만 왠지 노드 이름이 나중에 참조할 수 있는 방식으로 작동하지 않습니다.

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\title{science symbol}
\begin{tikzpicture}[>=latex,
  font=\sffamily
]

\def\science#1#2 {
\node[circle, draw, minimum size=10mm] (#2) at #1 {};
\foreach \ang in {0,120,240}
  \draw[rotate around={\ang:#1}] #1 ellipse (4.5mm and 1.5mm);
\fill #1 circle (0.5mm);
}

\science{(0,0)}{C1};
\science{(2cm, 0)}{C2};
\draw[->] (C1) -- (C2);

\end{tikzpicture}
\end{document}

이것은 노드에 대해 내가 원하는 것을 그립니다.

여기에 이미지 설명을 입력하세요

\draw[->] (C1) -- (C2);하지만 내 진술서 에 오류가 발생했습니다 .

Package pgf Error: No shape named C1 is known.

답변1

나는 를 사용하는 데 혼란스러워서 append after command작동하게 만들었습니다.

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\title{science symbol}
\begin{tikzpicture}[>=latex,
  font=\sffamily,
  atom/.style = {circle, minimum size=#1,
    append after command={%
      \pgfextra{ 
        \foreach \ang in {0,120,240}
        \draw[rotate around={\ang:(0,0)}] (\tikzlastnode.center) ellipse (0.45*#1 and 0.15*#1); 
        \fill (\tikzlastnode.center) circle (0.05*#1);
      }
    }
  }
]

\node[draw, atom=10mm] (C1) at (0,0){};
\node[draw, atom=5mm] (C2) at (2cm,0){};
\draw[->] (C1) -- (C2);

\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보