我在用 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}