Comment puis-je appliquer un style au noeud tikz existant sur des lames spécifiques
Question
est ce que je suis en train de faire
\begin{tikzpicture}
[node distance = 1cm, auto,font=\footnotesize,
% STYLES
every node/.style={node distance=1.3cm},
comment/.style={rectangle, inner sep= 5pt, text width=4cm, node distance=0.25cm, font=},
module/.style={rectangle, drop shadow, draw, fill=black!10, inner sep=5pt, text width=3cm, text badly centered, minimum height=0.8cm, font=\bfseries\footnotesize\sffamily,rounded corners},
selected/.style={fill=red!40}]
\node [module] (nodeA) {node A};
\node [module, below of=nodeA] (nodeA) {node B};
\only<1>{
\node [comment, text width=6cm, right=0.25 of nodeA] {short description of Node A};
\node [comment, text width=6cm, right=0.25 of nodeB] {short description of Node B};
}
\only<2>{
\node [selected] (nodeA) {};
\node [comment, text width=6cm, right=0.25 of nodeA] {long description of node A};
}
\only<3>{
\node [selected] (nodeB) {};
\node [comment, text width=6cm, right=0.25 of nodeA] {long description of node B};
}
\end{tikzpicture}
Le problème est
\node [selected] (nodeB) {};
crée un nouveau nœud, mais je veux qu'il applique le style du nœud existant. Est-il possible de le faire?
Bien sûr, je pourrais avoir des copies de chaque noeud dans l'état sélectionné et état non sélectionné, mais je veux vraiment avoir une solution normale.
La solution
Je ne pense pas que vous pouvez faire comme vous voulez (en supposant que je comprends bien la question), car une fois un nœud est tiré, il n'y a aucun moyen de changer son apparence. Je suggère d'utiliser la macro \alt
Beamer:
\alt<2>{\node[module,selected] at (nodeA) {node A};}{\node[module] at (nodeA) {node A};}
\alt<3>{\node[module,selected] at (nodeB) {node B};}{\node[module] at (nodeB) {node B};}
\node[comment,text width=6cm,right=0.25 of nodeA]{\alt<2>{short description}{long description}};
\node[comment,text width=6cm,right=0.25 of nodeB]{\alt<3>{short description}{long description}};
Ou quelque chose comme ça (vous pourriez avoir à bricoler avec les points-virgules pour le faire fonctionner, je ne peux pas test pour le moment).
Une autre option serait en fait juste dessiner un nouveau nœud. Si vous incluez
\node[module,selected] at (nodeA) {node A};
à l'intérieur \only<2>
, qui attirera un nœud qui ressemble noeud A, sauf avec un fond rouge, à la même position au niveau du noeud A. Le nouveau nœud couvriront le nœud d'origine A.
Autres conseils
Parfois, à des répétitions d'éviter, il peut être agréable de faire quelque chose comme ceci:
% #1 Overlay specs.
% #2 Style name.
% #4 Style properties.
\def\onlystyle<#1>#2#3{%
\alt<#1>{%
\tikzset{#2/.style = {#3}}
}{%
\tikzset{#2/.style = {}}
}%
}
Alors, si vous mettez, par exemple, cela dans un cadre:
\onlystyle<2>{selected}{fill = red}
le style selected
sera défini comme fill = red
sur la deuxième diapositive de l'animation, et comme un style sans que ce soit l'effet sur tous les autres diapositives. Ensuite, vous pouvez écrire une figure lisible comme:
\begin{tikzpicture}
\node at (0, 0) {A};
\node[selected] at (1, 0) {B};
\node at (2, 0) {C};
\end{tikzpicture}
et le noeud « B » seront mis en évidence sur le second coulisseau. De cette façon, vous n'avez pas de copier-coller des tonnes de définitions de noeuds. Bien sûr, il ne peut pas être appliquée à tous les besoins d'animation unique, mais je tiens à garder cette technique dans ma manche.