
Ist es möglich, mit dem Forest-Paket einen Baum so wachsen zu lassen, dass die untergeordneten Elemente vertikal gestapelt sind, etwa wie folgt:
Am Ende habe ich Folgendes gemacht: Wenn das übergeordnete Element A ist und drei untergeordnete Elemente BCD hat und ich alle untergeordneten Elemente wie oben gezeigt anhängen möchte, musste ich Folgendes tun:
\begin{forest}
for tree={
draw,
% minimum height=2cm,
% anchor=west,
align=center
% calign
% child anchor=west
},
[{ROOT}, align=center
[{ A} , parent anchor=south, child anchor=north
[{B}, parent anchor=east, anchor=east, child anchor=east , calign=child edge
[{C}, parent anchor=east, anchor=east, child anchor=east, calign=child edge
[{D}, parent anchor=east, anchor=east, child anchor=east
]
]
]
]
\end{forest}
Wie Sie sehen, musste ich B zum übergeordneten Element von C und C zum übergeordneten Element von D machen, obwohl sie alle Kinder von A sind.
Antwort1
Nicht nur haben schon mehrere Leute Code für dieses Diagramm bereitgestellt, ich habe es definitiv auch schon einmal mit Forest beantwortet.
Es wäre viel einfacher, wenn das Bild in der Frage mit der Quelle verknüpft wäre, da mir das durchaus einen Hinweis geben könnte.
Ich weiß, dass ich eine Forest-Lösung angegeben habe, weil ich eine gefunden habe, aber anscheinend habe ich keinen Link zu meiner Antwort angegeben. Und ich erinnere mich, dass ich verärgert war, weil ich das Diagramm von Grund auf neu gezeichnet habe, obwohl der OP auf Code hätte verweisen können, den ich hätte kopieren und einfügen und anpassen können, da er zuvor beantwortet worden war (aber vielleicht funktionierte der Code nicht mehr oder verwendete kein Forest oder so etwas).
Dieses Diagramm ist äußerst ärgerlich, weil es mir IMMER WIEDER passiert.
Wie dem auch sei, ich habe den Code für Forest v.2 aktualisiert, indem ich eine modifizierte Version des Codes inmeine Antwortverlinkt inKommentar von Torbjørn T.. Diese Version verwendet den folder
Stil aus der edges
Bibliothek.
\documentclass[border=5pt,tikz,multi]{standalone}
\usepackage[edges]{forest}
\usetikzlibrary{arrows.meta,shadows.blur}
\forestset{%
colour me out/.style={outer color=#1!75, inner color=#1!50, draw=darkgray, thick, blur shadow, rounded corners},
rect/.append style={rectangle, rounded corners=2pt},
dir tree switch/.style args={at #1}{%
for tree={
edge=-Latex,
font=\sffamily,
fit=rectangle,
},
where level=#1{
for tree={
folder,
grow'=0,
},
delay={child anchor=north},
}{},
before typesetting nodes={
for tree={
content/.wrap value={\strut ##1},
},
if={isodd(n_children("!r"))}{
for nodewalk/.wrap pgfmath arg={{fake=r,n=##1}{calign with current edge}}{int((n_children("!r")+1)/2)},
}{},
},
},
}
\begin{document}
\begin{forest}
dir tree switch=at 1,
for tree={
font=\sffamily\bfseries,
rect,
align=center,
edge+={thick, draw=darkgray},
where level=0{%
colour me out=green!50!white,
}{%
if level=1{%
colour me out=green!95!black,
}{%
colour me out=magenta!50!orange!75!white,
edge+={-Triangle},
},
},
}
[Drawing\\Diagrams
[Defining node\\and arrow styles
[Setting shape]
[Choosing colour]
[Adding shading]
]
[Positioning\\the nodes
[Using a matrix
[Absolutely]
[Relatively]
[Using overlays]
]
]
[Drawing arrows\\between nodes
[Default arrows
[Arrow library]
[Re-sizing tips]
[Shortening]
[Bending]
]
]
]
\end{forest}
\end{document}