
Quero que a cor e o estilo do símbolo do átomo abaixo sejam iguais ao estilo do nó envolvente; Como eu faço isso? Existe uma maneira de fazer referência ao estilo de linha de \tikzlastnode
?
\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, very thin, red, atom=10mm] (C2) at (2cm,0){};
\node[draw, thick, green, atom=10mm] (C3) at (2cm,2cm){};
\draw[->] (C1) -- (C2);
\draw[->] (C1) -- (C3);
\end{tikzpicture}
\end{document}
Responder1
Eu me atrapalhei com isso novamente e encontrei uma abordagem alternativa usando \pgfdeclareshape
em vez de append after command
. (por que sempre parece uma vitória dolorosa quando faço esse tipo de coisa???) Outras perguntas de referência que usei foram
- Tamanho do caminho do círculo versus nó do círculo em \pgfdeclareshape?
- Como recuperar o traço atual e preencher a cor em PGF/TikZ
mas era basicamente como usar \pgfdeclareshape
para trabalhar a partir da circle
forma, vejahttps://svn.ssec.wisc.edu/repos/geoffc/LaTeX/beamerposter_UW-SSEC/pgfmoduleshapes.code.texpara código-fonte.
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\title{science symbol}
\pgfdeclareshape{atomshape}{%
\inheritsavedanchors[from=circle]%
\inheritanchorborder[from=circle]%
\inheritanchor[from=circle]{center}%
%
\backgroundpath{%
\pgfpathcircle{\pgfpointorigin}{0.1*\radius}
\pgfusepath{fill}
\pgfpathcircle{\pgfpointorigin}{\radius}%
\foreach\ang in {0,120,240}{
\pgftransformrotate{\ang}
\pgfpathellipse{\pgfpointorigin}
{\pgfpoint{0.9*\radius}{0cm}}
{\pgfpoint{0cm}{0.3*\radius}}
}
}%
}
\begin{tikzpicture}[>=latex,
font=\sffamily,
atom/.style = {atomshape, minimum size=#1}
]
\node[draw, atom=10mm] (C1) at (0,0){};
\node[draw, very thin, red, atom=10mm] (C2) at (2cm,0){};
\node[draw, thick, green, atom=10mm] (C3) at (2cm,2cm){};
\draw[->] (C1) -- (C2);
\draw[->] (C1) -- (C3);
\end{tikzpicture}
\end{document}