Latex:元素叠加在故障树中

时间:2017-09-10 15:42:28

标签: latex tikz

我有以下代码,但元素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 个答案:

答案 0 :(得分: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

P.S。可能这样的问题更适合Tex Site