
Ich bin der waldbasierten Lösung dieses Beitrags gefolgtErstellen eines (einfachen) Verzeichnisbaumsum eine Verzeichnisstruktur zu erstellen. Direkt neben jeder Datei und jedem Namen möchte ich den vollständigen Pfad hinzufügen. Vollständige Pfade sollten auch linksbündig ausgerichtet sein. Ich habe mir diese schmutzige Lösung ausgedacht:
\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}
Das wird folgendermaßen angezeigt:
Es sieht ok aus, aber ich möchte eine saubere Lösung finden, die die Festcodierung von Abständen zwischen vollständigen Pfaden vermeidet.
Antwort1
Ich schlage vor, Ihren Baum etwas zu vereinfachen forked edge
, indem Sie , mit verwenden fork sep=0pt
. (Beachten Sie, dass hierfür erforderlich ist \usepackage[edges]{forest}
.) Ich habe jede Pfadbeschreibung als neuen untergeordneten Knoten eingefügt und dann verwendet, if n children=0{no edge, tier=desc}{l-=4mm}
um zu verhindern, dass diese letzten Kanten gezeichnet werden, und um sie in der l
Dimension ausgerichtet zu halten (wofür tier
verwendet wird). Wenn n children
≠0, l
wird die Dimension um verkürzt 4mm
. Sie können auch verkürzen (um den gleichen oder einen anderen Betrag), wenn Sie die Pfadbeschreibung näher am Baum haben möchten.
\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}