对于熟悉 TikZ 的人来说,这可能是一个愚蠢的问题,但我不熟悉 TikZ,只想创建一些简单的树结构。希望能快速解决。
我的树通常没有内部节点上的标签,只有叶子。我尝试了这样的 qtree:
{\newcommand{\qleafhook}{\scriptsize}
\Tree [.
[ [ 0 1 ] [ 2 3 ] ]
[ [ 4 [ 5 6 ] ] [ [ 7 8 ] [ 9 10 ] ] ]
]
}
非常好,几乎就是我想要的,除了我想让同一深度的节点水平对齐,即,我只想要这里两个叶级别:一个用于 0 到 4(深度为 3),另一个用于 5 到 10(深度为 4)。
qtree 似乎不是为解决这个问题而设计的,所以我转而尝试使用 forest。我很快就得到了这个:
{\scriptsize
\begin{forest}
[, for tree={parent anchor=north, child anchor=north}
[ [ [0] [1] ] [ [2] [3] ] ]
[ [ [4] [ [5] [6] ] ] [ [ [7] [8] ] [ [9] [10] ] ] ]
]
\end{forest}
}
这正是我想要的,除了巨大的,为不存在的边缘标签提供了大量空间,并且水平空间也比我想要的更多。
有没有简单的方法可以解决这个问题?当我摆弄和l
时l sep
,它会破坏我想要的垂直对齐,而且效果也不大。我知道如果我深入研究 Forest 和/或 TikZ 手册,我就能找到如何做到这一点,但我希望我遗漏了一些相对简单的东西,有人可以指出来。
答案1
减少水平距离最简单的方法可能是添加l+=<something negative>
,但这不允许您任意缩小距离。为了改进这一点,您可以将这些选项传递给孩子。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={parent anchor=north, child anchor=north,font=\scriptsize,fit=tight,
for children={l sep-=1.5em,l-=1.5em}}
[
[ [ [0] [1] ] [ [2] [3] ] ]
[ [ [4] [ [5] [6] ] ] [ [ [7] [8] ] [ [9] [10] ] ] ]
]
\end{forest}
\end{document}
如果您想要更接近第一张照片,请修复边缘角度。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={parent anchor=north, child anchor=north,font=\scriptsize,fit=tight,
calign=fixed edge angles,calign angle=70,
for children={l sep-=2em,l-=2em}}
[
[ [ [0] [1] ] [ [2] [3] ] ]
[ [ [4] [ [5] [6] ] ] [ [ [7] [8] ] [ [9] [10] ] ] ]
]
\end{forest}
\end{document}