我需要排版目录树,我发现这里使用包的适当解决方案forest
。经过轻微修改(路径上的方块,如建议的那样这里), 我懂了:
不幸的是,如您所见,元素之间的间距远非完美。例如,text 5.1
和之间的垂直距离text 6
,以及text 6
和之间的垂直距离text 5.2
:它们(明显且可怕地)不同,这是我无法接受的。
有没有办法解决这个问题,即让所有元素都正确间隔?
以下是图中树的代码:
\begin{forest} dir tree,
for tree = {font=\ttfamily}
[text 1
[text 2
[text 3
[text 4
[text 5.1
[text 6]
][text 5.2
]]]]]
\end{forest}
这些是forest
设置:
\usepackage{forest}
\forestset{
dir tree/.style={
for tree={
parent anchor=south west,
child anchor=west,
anchor=mid west,
inner ysep=0pt,
grow'=0,
align=left,
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) ++(1em,0) |- node[fill,inner sep=1.25pt] {} (.child anchor)\forestoption{edge label};
},
if n children=0{}{
delay={
prepend={[,phantom, calign with current]}
}
},
fit=band,
before computing xy={
l=2em
}
},
}
}
答案1
也许是这样的?
\documentclass[tikz, border=5pt]{standalone}
\usepackage{forest}
\forestset{
dir node/.style={
parent anchor=south west,
child anchor=west,
anchor=west,
inner ysep=0pt,
align=left,
},
dir tree/.style={
for tree={
grow'=0,
dir node,
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) ++(1em,0) |- node[fill,inner sep=1.25pt] {} (.child anchor)\forestoption{edge label};
},
if n children=0{}{
delay={
prepend={[text 1, dir node, phantom, calign with current]}
}
},
fit=band,
before computing xy={
l=2em,
}
},
}
}
\begin{document}
\begin{forest}
dir tree,
for tree = {
font=\ttfamily
}
[text 1
[text 2
[text 3
[text 4
[text 5.1
[text 6]
]
[text 5.2
]
]
]
]
]
\end{forest}
\end{document}