숲 패키지로 나무 키우기

숲 패키지로 나무 키우기

포레스트 패키지를 사용하여 다음과 같이 아이들이 수직으로 쌓이도록 나무를 키우는 것이 가능합니까? 많은 자식이 있는 트리 노드

나는 결국 다음과 같이 했습니다. 부모가 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를 사용하여 확실히 답변한 적이 있습니다.

질문의 이미지가 소스에 연결되어 있으면 힌트를 얻을 수 있기 때문에 훨씬 쉬울 것입니다.

포레스트 솔루션을 찾았기 때문에 제공했다는 것을 알고 있지만 답변에 대한 링크를 제공하지 않은 것 같습니다. 그리고 OP가 복사하여 붙여넣고 조정할 수 있는 코드에 연결할 수 있었을 때 다이어그램을 처음부터 그렸기 때문에 짜증이 났던 것을 기억합니다. 왜냐하면 이전에 답변이 있었기 때문입니다(하지만 코드가 더 이상 작동하지 않거나 Forest를 사용하지 않았을 수도 있습니다. 무엇).

이 다이어그램은 나에게 계속해서 발생하기 때문에 매우 짜증스럽습니다.

어쨌든, 나는 수정된 버전의 코드를 사용하여 Forest v.2용 코드를 업데이트했습니다.내 대답링크됨Torbjørn T.의 코멘트. 이 버전은 라이브러리 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}

포레스트 2 출력

관련 정보