Como desenhar um símbolo em um nó TikZ que pode ser reutilizado

Como desenhar um símbolo em um nó TikZ que pode ser reutilizado

Estou tentando desenhar um símbolo de "ciência" no TikZ, representado por um átomo estilizado, e não consigo descobrir como fazê-lo. Existe alguma maneira de definir de alguma forma um estilo mágico do TikZ para que eu possa fazer algo como \node[science](C1) at (0,0){};?

Eu tentei usar uma \defmacro e ela pode desenhar o símbolo que desejo, mas de alguma forma o nome do nó não funciona de uma forma que eu possa consultá-lo mais tarde.

\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}

Isso desenha o que eu quero para os nós

insira a descrição da imagem aqui

mas recebo um erro na minha \draw[->] (C1) -- (C2);declaração:

Package pgf Error: No shape named C1 is known.

Responder1

Eu me atrapalhei usando append after commande fiz funcionar:

\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}

insira a descrição da imagem aqui

informação relacionada