posicionamiento de nodos en un bosque

posicionamiento de nodos en un bosque

Seguí la solución basada en bosques de esta publicación.Hacer un árbol de directorios (simple)para crear una estructura de directorios. Derecho a cada archivo y nombre quiero agregar su ruta completa. Los caminos completos también deben estar alineados a la izquierda. Se me ocurrió esta solución sucia:

\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}

Eso se muestra así:

árbol de ejemplo

Se ve bien, pero me gustaría encontrar una solución limpia que evite distancias de codificación entre rutas completas.

Respuesta1

Sugiero simplificar un poco su árbol usando forked edge, con fork sep=0pt. (Tenga en cuenta que esto requiere \usepackage[edges]{forest}). Incluí cada descripción de ruta como un nuevo nodo secundario, luego lo usé if n children=0{no edge, tier=desc}{l-=4mm}para evitar que se dibujen esos últimos bordes y mantenerlos alineados en la ldimensión (que es tierpara lo que se usa). Si n children≠0 entonces la ldimensión se acorta en 4mm. También puede acortar (en la misma o diferente cantidad) si desea que la descripción de la ruta esté más cerca del árbol.

ingrese la descripción de la imagen aquí

\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}

información relacionada