
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 \def
macro 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
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 command
e 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}