森林环境中的间距要素

森林环境中的间距要素

我需要排版目录树,我发现这里使用包的适当解决方案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}

相关内容