
Estou tentando fazer um diagrama para uma estrutura de pasta/arquivo. O problema que tenho é que há um grande número de arquivos em subpastas, o que produz um diagrama muito longo.
MWE:
\documentclass[border=5pt]{standalone}
\usepackage[edges]{forest}
\definecolor{folderbg}{RGB}{124,166,198}
\definecolor{folderborder}{RGB}{110,144,169}
\def\Size{4pt}
\tikzset{
folder/.pic={
\filldraw[draw=folderborder,top color=folderbg!50,bottom color=folderbg]
(-1.05*\Size,0.2\Size+5pt) rectangle ++(.75*\Size,-0.2\Size-5pt);
\filldraw[draw=folderborder,top color=folderbg!50,bottom color=folderbg]
(-1.15*\Size,-\Size) rectangle (1.15*\Size,\Size);
}
}
\begin{document}
\begin{forest}
for tree={
font=\ttfamily,
grow'=0,
child anchor=west,
parent anchor=south,
anchor=west,
calign=first,
inner xsep=7pt,
forked edges,
edge path={
\noexpand\path [draw, \forestoption{edge}]
(!u.south west) +(7.5pt,0) |- (.child anchor) pic {folder} \forestoption{edge label};
},
before typesetting nodes={
if n=1
{insert before={[,phantom]}}
{}
},
fit=band,
before computing xy={l=15pt},
}
[Main Folder
[subfolder 1
[subsubfolder 1
[file
]
]
[subsubfolder 2
[file
]
]
[file
]
]
[subfolder 2
]
[subfolder 3
]
[subfolder 4
]
]
\end{forest}
\end{document}
O que produz:
Existe uma maneira de ramificar cada subpasta de nível superior horizontalmente e fazer com que a estrutura restante dentro da subpasta seja vertical como no diagrama acima? Por exemplo
ATUALIZAR
Usando a resposta do @js bibra mudei a linha
grow'=0,
Para:
where level=0{
l sep'=0.1cm,
s sep'=0.5cm,
}{
grow'=0,
},
Para referência, meu diagrama completo se parece com:
Isso está bem próximo do que eu gostaria de alcançar. Existe uma maneira de reduzir o espaçamento horizontal e centralizar os ramos em relação ao pai?
Responder1
É isso que você está procurando
\documentclass[border=10pt]{standalone}
\usepackage[edges]{forest}
\usetikzlibrary{shadows,arrows.meta}
\tikzset{
parent/.style={align=center,text width=4cm,fill=gray!50,rounded corners=2pt},
child/.style={align=center,text width=2.5cm,fill=gray!20,rounded corners=6pt},
grandchild/.style={fill=white,text width=2.3cm}
}
\begin{document}
\begin{forest}
for tree={%
thick,
drop shadow,
node options={
draw,
font=\sffamily
},
edge={
semithick,
-Latex
},
where level=0{
parent,
l sep'=0.8cm,
s sep'=1.0cm,
}{
folder,
grow'=0,
},
where level=1{
minimum height=1cm,
child,
l sep=7.5mm,
for descendants={%
grandchild,
minimum height=0.6cm,
},
for children={
before computing xy={s+=5mm},
}
}{},
}
[\large Long text with line break%
[\textbf{Test 1} \\ with a lot of subtext%
[Topic]
[Long topic with line break]
[Topic]
]
[\textbf{Test 2} \\ with a lot of subtext%
[Topic]
[Long topic with line break]
[Topic]
]
[\textbf{Test 3} \\ with a lot of subtext%
[Topic]
[Long topic with line break]
[Topic]
]
[\textbf{Test 4} \\ with a lot of subtext%
[Topic]
[Long topic with line break]
[Topic]
]
]
\end{forest}
\end{document}