tikz 树图片中的兄弟姐妹不能分开

tikz 树图片中的兄弟姐妹不能分开

我在用 tikz 绘制的树中分割兄弟姐妹时遇到了一些麻烦。我正在为作业制作解析树。我已经制作了树,但有一些重叠。我尝试使用

    level 4/.style={sibling distance=2.3cm}

样式,它对树的某些部分效果很好,但当我在第五层使用它时(问题就在这里),树的其他部分,也在第 5 层,变得一团糟!然后我尝试使用命令

    child{[sibling distance = 3cm]node{$ElementBody$}

方法,针对该特定节点,但是在编译代码时,树中没有任何区别,我不知道为什么!

这是我的代码:

\[ 
  \begin{tikzpicture}
[level distance=12mm,
sibling distance = 12mm,
level 3/.style={sibling distance=8cm},
level 2/.style={sibling distance=3cm},
level 4/.style={sibling distance=2.3cm} 
]
\node {$XMLFile$}
  child {node {$TaggedElement$}
    child{node {$StartTag$}
  }
  child{node {$ElementBody$}
        child{node{$ElementBody$}
          child{node{$Element$}
            child{node{$TaggedElement$}
                child{node{$StartTag$}
                }
                child{node{$Element$}
                }
                child{node{$EndTag$}
                }
            }
          }              
        }
        child{[sibling distance = 3cm]node{$ElementBody1!$}
            child{node{$ElementBody$}
                child{node{$Element$}
                    child{node{$TaggedElement$}
                        child{node{$StartTag$}
                        }
                        child{node{$Element$}
                        }
                        child{node{$EndTag$}
                        }
                    }
                }              
            }
            child{node{$ElementBody$}
                child{node{$Element$}
                    child{node{$TaggedElement$}
                        child{node{$StartTag$}
                        }
                        child{node{$Element$}
                        }
                        child{node{$EndTag$}
                        }
                    }
                }              
            }
          }
      }
      child{node {$EndTag$}
      }
};
\end{tikzpicture}
\] 

任何帮助是极大的赞赏!

答案1

我必须承认,我无法让这个工作正常sibling distance。下面,我将使用另一种解决方案。我在冲突的兄弟节点之间引入了两个缺失节点。

一个小小的意见,书写看起来$TaggedElement$不太好看,因为 LaTeX 会将字母排版TaggedElement为产品。使用$\mathit{TaggedElement}$看起来好看多了。

\documentclass[10pt]{article}
\usepackage{tikz}
\begin{document}

 \begin{tikzpicture}
[level distance=12mm,
sibling distance = 12mm,
level 3/.style={sibling distance=8cm},
level 2/.style={sibling distance=3cm},
level 4/.style={sibling distance=2.3cm} 
]
\node {$XMLFile$}
  child {node {$TaggedElement$}
    child{node {$StartTag$}
  }
  child{node {$ElementBody$}
        child{node{$ElementBody$}
          child{node{$Element$}
            child{node{$TaggedElement$}
                child{node{$StartTag$}}
                child{node{$Element$}}
                child{node{$EndTag$}}
            }
          }              
        }
        child{node{$ElementBody1!$}
            child{node{$ElementBody$}
                child{node{$Element$}
                    child{node{$TaggedElement$}
                        child{node{$StartTag$}}
                        child{node{$Element$}}
                        child{node{$EndTag$}}
                    }
                }              
            }
            child[missing]
            child[missing]
            child{node{$ElementBody$}
                child{node{$Element$}
                    child{node{$TaggedElement$}
                        child{node{$StartTag$}}
                        child{node{$Element$}}
                        child{node{$EndTag$}}
                    }
                }
            }
          }
      }
      child{node {$EndTag$}}
};
 \end{tikzpicture}

\end{document}

相关内容