2017-09-10 3 views
0

J'ai le code suivant mais l'élément 31 est superposé à l'élément 27. Comment puis-je résoudre ce problème?Latex: les éléments sont superposés dans l'arbre de défaillance

\documentclass[border=10pt]{standalone} 
\usepackage{tikz,rotating} 
\usetikzlibrary{trees,calc,shadings,shapes.gates.logic.US,positioning,arrows} 
\usetikzlibrary{shapes,snakes} 

\begin{document} 
\begin{turn}{-90} 
\begin{tikzpicture}[ 
% Gates and symbols style 
    and/.style={and gate US,thick,draw,fill=red!60,rotate=90, 
     anchor=east,xshift=-2mm}, 
    or/.style={or gate US,thick,draw,fill=blue!60,rotate=90, 
     anchor=east,xshift=-1mm}, 
    be/.style={circle,thick,draw,fill=green!60,anchor=north, 
     minimum width=0.7cm}, 
    tr/.style={buffer gate US,thick,draw,fill=purple!60,rotate=90, 
     anchor=east,minimum width=0.8cm}, 
% Label style 
    label distance=-3mm, 
    every label/.style={blue,rotate=90}, 
% Event style 
    event/.style={rectangle,thick,draw,fill=yellow!20,text width=0.7cm, 
     text centered,font=\sffamily,anchor=north}, 
% Children and edges style 
    edge from parent/.style={very thick,draw=black!70}, 
    edge from parent path={(\tikzparentnode.south) -- ++(0,-1.05cm) 
      -| (\tikzchildnode.north)}, 
    level 1/.style={sibling distance=7cm,level distance=1.4cm, 
      growth parent anchor=south,nodes=event}, 
    level 2/.style={sibling distance=5cm}, 
    level 3/.style={sibling distance=1cm}, 
    level 4/.style={sibling distance=3cm} 
    ] 
    \node (g1) {} 
     child{node (g2) {\rotatebox{90}{Final}} 
      child {node (g3) {\rotatebox{90}{1}} 
       child {node (g4) {\rotatebox{90}{11}}} 
      } 
      child {node (g5) {\rotatebox{90}{2}} 
       child {node (S1) {\rotatebox{90}{21}}} 
       child {node (S2) {\rotatebox{90}{22}}} 
       child {node (S3) {\rotatebox{90}{23}}} 
       child {node (S4) {\rotatebox{90}{24}}} 
       child {node (S5) {\rotatebox{90}{25}}} 
       child {node (S6) {\rotatebox{90}{26}}} 
       child {node (S7) {\rotatebox{90}{27}}} 
      } 
     child {node (g6) {\rotatebox{90}{3}} 
       child {node (R1) {\rotatebox{90}{31}}} 
       child {node (R2) {\rotatebox{90}{32}}} 
       child {node (R3) {\rotatebox{90}{33}}} 
       child {node (R4) {\rotatebox{90}{34}}} 
      } 
      }; 
    \node [and] at (g2.south) [label=-100:AND] {}; 
    \node [or] at (g3.south) [label=-100:OR] {}; 
    \node [or] at (g5.south) [label=-100:OR] {}; 
    \node [or] at (g6.south) [label=-100:OR] {}; 
\end{tikzpicture} 
\end{turn} 


\end{document} 

enter image description here

Comme vous voyez les éléments sont superposés les uns les autres. Quand je change quelques paramètres dans le code, la figure est passée à la fin du document.

Répondre

1

Vous pouvez ajouter un xshift au second enfant (il est sur x à cause de la rotation). Essayez cette version si elle vous satisfait:

\documentclass[border=10pt]{standalone} 
\usepackage{tikz,rotating} 
\usetikzlibrary{trees,calc,shadings,shapes.gates.logic.US,positioning,arrows} 
\usetikzlibrary{shapes,snakes} 

\begin{document} 
\begin{turn}{-90} 
\begin{tikzpicture}[ 
% Gates and symbols style 
    and/.style={and gate US,thick,draw,fill=red!60,rotate=90, 
     anchor=east,xshift=-2mm}, 
    or/.style={or gate US,thick,draw,fill=blue!60,rotate=90, 
     anchor=east,xshift=-1mm}, 
    be/.style={circle,thick,draw,fill=green!60,anchor=north, 
     minimum width=0.7cm}, 
    tr/.style={buffer gate US,thick,draw,fill=purple!60,rotate=90, 
     anchor=east,minimum width=0.8cm}, 
% Label style 
    label distance=-3mm, 
    every label/.style={blue,rotate=90}, 
% Event style 
    event/.style={rectangle,thick,draw,fill=yellow!20,text width=0.7cm, 
     text centered,font=\sffamily,anchor=north}, 
% Children and edges style 
    edge from parent/.style={very thick,draw=black!70}, 
    edge from parent path={(\tikzparentnode.south) -- ++(0,-1.05cm) 
      -| (\tikzchildnode.north)}, 
    level 1/.style={sibling distance=7cm,level distance=1.4cm, 
      growth parent anchor=south,nodes=event}, 
    level 2/.style={sibling distance=5cm}, 
    level 3/.style={sibling distance=1cm}, 
    level 4/.style={sibling distance=3cm} 
    ] 
    \node (g1) {} 
     child{node (g2) {\rotatebox{90}{Final}} 
      child {node (g3) {\rotatebox{90}{1}} 
       child {node (g4) {\rotatebox{90}{11}}} 
      } 
      child {node (g5) {\rotatebox{90}{2}} 
       child {node (S1) {\rotatebox{90}{21}}} 
       child {node (S2) {\rotatebox{90}{22}}} 
       child {node (S3) {\rotatebox{90}{23}}} 
       child {node (S4) {\rotatebox{90}{24}}} 
       child {node (S5) {\rotatebox{90}{25}}} 
       child {node (S6) {\rotatebox{90}{26}}} 
       child {node (S7) {\rotatebox{90}{27}}} 
      } 
     child {node[xshift=1cm] (g6) {\rotatebox{90}{3}} % <--- EDIT! 
       child {node (R1) {\rotatebox{90}{31}}} 
       child {node (R2) {\rotatebox{90}{32}}} 
       child {node (R3) {\rotatebox{90}{33}}} 
       child {node (R4) {\rotatebox{90}{34}}} 
      } 
      }; 
    \node [and] at (g2.south) [label=-100:AND] {}; 
    \node [or] at (g3.south) [label=-100:OR] {}; 
    \node [or] at (g5.south) [label=-100:OR] {}; 
    \node [or] at (g6.south) [label=-100:OR] {}; 
\end{tikzpicture} 
\end{turn} 


\end{document} 

Result

post-scriptum probablement une telle question convient mieux sur Tex Site