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