
Можно ли с помощью пакета Forest вырастить дерево так, чтобы дочерние элементы располагались вертикально, вот так:
В итоге я сделал следующее: если родительский элемент — A и у него трое детей BCD, и я хочу присоединить всех детей, как показано выше, мне пришлось сделать следующее:
\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}
Как видите, несмотря на то, что все они являются дочерними элементами A, мне пришлось сделать B родительским элементом C, а C — родительским элементом D.
решение1
Мало того, что несколько человек уже предоставили код для этой диаграммы, так еще и я уже ответил на нее, используя Forest.
Было бы намного проще, если бы изображение в вопросе было связано с источником, поскольку это могло бы дать мне подсказку.
Я знаю, что дал решение Forest, потому что нашел его, но, похоже, не дал ссылку на свой ответ. И я помню, как был раздражен, потому что нарисовал диаграмму с нуля, когда OP мог бы дать ссылку на код, который я мог бы скопировать, вставить и адаптировать, поскольку на него уже был дан ответ (но, возможно, код больше не работал или не использовал Forest или что-то в этом роде).
Эта диаграмма меня очень раздражает, так как это ПРОДОЛЖАЕТ происходить со мной.
В любом случае, я обновил код, который у меня есть для Forest v.2, используя модифицированную версию кода вмой ответсвязаны вКомментарий Торбьёрна Т.. В этой версии используется folder
стиль из edges
библиотеки.
\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}