フォレスト内のノードの配置

フォレスト内のノードの配置

私はこの投稿の森林ベースの解決策に従いました(単純な)ディレクトリツリーの作成ディレクトリ構造を作成します。各ファイルと名前の右側に、そのフルパスを追加します。フルパスも左揃えにする必要があります。私は、この汚い解決策を思いつきました:

\documentclass{standalone}
\usepackage{forest}
\usetikzlibrary{positioning}
\begin{document}
\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    child anchor=west,
    parent anchor=south,
    anchor=west,
    calign=first,
    s sep=6pt,
    inner sep=0pt,
    edge path={
      \noexpand\path [draw, \forestoption{edge}]
      (!u.south west) +(6pt,0) |- (.child anchor)\forestoption{edge label};
    },
    before typesetting nodes={
      if n=1
      {insert before={[,phantom]}}
      {}
    },
    fit=band,
    before computing xy={l=5mm},
  }
  [a,name=a
    [b
      [c
        [d]
      ]
    ]
    [e
      [f]
      [b]
    ]
  ]
  %
  \node[right of=a,node distance=2cm] (desc) {\tt /a};
  \node[below=13pt of desc.west,anchor=west] (desc) {\tt /a/b};
  \node[below=13pt of desc.west,anchor=west] (desc) {\tt /a/b/c};
  \node[below=13pt of desc.west,anchor=west] (desc) {\tt /a/b/c/d};
  \node[below=12pt of desc.west,anchor=west] (desc) {\tt /a/e};
  \node[below=13pt of desc.west,anchor=west] (desc) {\tt /a/e/f};
  \node[below=13pt of desc.west,anchor=west] (desc) {\tt /a/e/b};
\end{forest}

\end{document}

次のように表示されます。

例の木

問題ないように見えますが、完全なパス間の距離をハードコーディングすることを避けるクリーンなソリューションを考え出したいと思います。

答え1

forked edgeを とともに使用して、ツリーをいくらか簡略化することをお勧めしますfork sep=0pt。(注意: これには が必要です\usepackage[edges]{forest}。) 各パス記述を新しい子ノードとして含め、その後 を使用して、if n children=0{no edge, tier=desc}{l-=4mm}最後のエッジが描画されないようにし、それらを 次元l( の用途tier) に揃えておきます。n children≠0 の場合、l次元は だけ短くなります4mm。パス記述をツリーに近づけたい場合は、 を (同じ量または異なる量で) 短くすることもできます。

ここに画像の説明を入力してください

\documentclass{article}
\usepackage[edges]{forest}

\begin{document}
\begin{forest}
  for tree={
    font=\ttfamily,
    grow'=0,
    anchor=west,
    calign=first,
    s sep=6pt,
    inner sep=0pt,
    forked edge,
    fork sep=0pt,
    l sep=3mm,
    if n children=0{no edge, tier=desc}{l-=4mm}
  }
  [a
    [/a]
    [b
    [/a/b]
      [c
      [/a/b/c]
        [d
        [/a/b/c/d]
        ]
      ]
    ]
    [e
    [/a/e]
      [f
      [/a/e/f]
      ]
      [b
      [/a/e/b]
      ]
    ]
  ]
\end{forest}
\end{document}

関連情報