2017-09-10 62 views
0

我有以下代碼,但元素31疊加在元素27上。 我該如何解決這個問題?乳膠:元素疊加在故障樹中

\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

正如你所看到的元素相互疊加。當我更改代碼中的某些參數時,該數字會到達文檔的末尾。

回答

1

您可以添加一個簡單的xshift到第二個孩子(因爲旋轉,它在x上)。試試這個版本,如果它滿足你:

\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

附:可能這樣的問題更適合於Tex Site