포레스트 패키지의 사각형 모서리

포레스트 패키지의 사각형 모서리

수평(사각형) 모서리가 있는 트리를 쉽게 만들 수 있습니다 tikz-qtree(MWE 참조). 그러나 이 forest패키지는 내 목적에 있어서 훨씬 뛰어난 대안입니다. 그러나 포리스트에서 사각형 모서리가 있는 수평 또는 수직 트리를 수행하려는 모든 시도는 무시되거나 컴파일 실패로 이어집니다(예: \tikzset포리스트 트리에 선 삽입). 이것이 가능한가?

여기에서 도움의 손길을 주시면 매우 감사하겠습니다.

 \documentclass[10pt,twoside,a4paper]{memoir}
 \usepackage{graphicx}
 \usepackage{forest}
 \usepackage{tikz-qtree}

 \begin{document}

 \begin{tikzpicture}
 \tikzset{edge from parent/.style={draw,edge from parent path={(\tikzparentnode.south)-- +(0,-8pt)-| (\tikzchildnode)}}}
 \Tree [.ZZ
 [.Bax
 [.X
 [.Y [.A ] [.B ] ]
 [.Z [.C ] [.D ] ] ]
 [.F
 [.M [.E ] [.F ] ]
 [.G [.G ] [.H ] ] ] ]
 [.A
 [.B
 [.S  [.I P R T V U ] [.J ] ]
 [.I  [.K ] [.L ] ] ]
 [.M
 [.L  [.M ] [.N ] ]
 [.A  [.O ] [.P ] ] ] ] ] ]
 \end{tikzpicture}


 \begin{forest}
 [ZZ
 [Bax
 [X
 [Y [A ] [B ] ]
 [Z [C ] [D ] ] ]
 [F
 [M [E ] [F ] ]
 [G [G ] [H ] ] ] ]
 [A
 [B
 [S  [I [P][R][T][V][U]] [J ] ]
 [I  [K ] [L ] ] ]
 [M
 [L  [M ] [.N ] ]
 [A  [O ] [P ] ] ] ] ] ]
 \end{forest}

 \end{document}

MWE 출력

답변1

\begin{forest} for tree={edge path=<your path>}}당신은 (! 없이 ) 해야 합니다 [].

거리를 약간 조정했습니다. 예를 들어 고정 거리가 아닌 레벨 거리의 절반을 사용하는 것이 더 좋습니다.

내 것을 사용할 수도 있습니다.paths.ortho라이브러리( tikzlibarypaths.ortho.code.tex및 둘 다 필요) 대신 tikzlibarypaths.ortho.tex사용할 수 있습니다 .|-|--

암호

\documentclass[10pt,twoside,a4paper]{memoir}
\usepackage{graphicx}
\usepackage{forest}
\usepackage{tikz-qtree}
\begin{document}

\begin{tikzpicture}
\tikzset{edge from parent/.style={draw,edge from parent path={(\tikzparentnode.south)-- +(0,-8pt)-| (\tikzchildnode)}}}
\Tree [.ZZ
[.Bax
[.X
[.Y [.A ] [.B ] ]
[.Z [.C ] [.D ] ] ]
[.F
[.M [.E ] [.F ] ]
[.G [.G ] [.H ] ] ] ]
[.A
[.B
[.S  [.I P R T V U ] [.J ] ]
[.I  [.K ] [.L ] ] ]
[.M
[.L  [.M ] [.N ] ]
[.A  [.O ] [.P ] ] ] ] ] ]
\end{tikzpicture}


\begin{forest} for tree={
    edge path={\noexpand\path[\forestoption{edge}] (\forestOve{\forestove{@parent}}{name}.parent anchor) -- +(0,-12pt)-| (\forestove{name}.child anchor)\forestoption{edge label};}
}
[ZZ
[Bax
[X
[Y [A ] [B ] ]
[Z [C ] [D ] ] ]
[F
[M [E ] [F ] ]
[G [G ] [H ] ] ] ]
[A
[B
[S  [I [P][R][T][V][U]] [J ] ]
[I  [K ] [L ] ] ]
[M
[L  [M ] [.N ] ]
[A  [O ] [P ] ] ] ] ] ]
\end{forest}

\end{document}

산출

여기에 이미지 설명을 입력하세요

답변2

edges현재 Forest에서는 라이브러리를 로드하고 forked edges트리의 프리앰블에 추가하는 간단한 문제입니다 .

\documentclass[border=10pt]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
  forked edges,
 [ZZ
 [Bax
 [X
 [Y [A ] [B ] ]
 [Z [C ] [D ] ] ]
 [F
 [M [E ] [F ] ]
 [G [G ] [H ] ] ] ]
 [A
 [B
 [S  [I [P][R][T][V][U]] [J ] ]
 [I  [K ] [L ] ] ]
 [M
 [L  [M ] [.N ] ]
 [A  [O ] [P ] ] ] ] ] ]
\end{forest}
\end{document}

숲의 사각형 모서리

Forest 버전 1만 있는 경우에는 작동하지 않습니다. 이 경우 업데이트해야 합니다. 이것이 가능하지 않은 경우 \forestove내부 구현의 일부로 의도된 매크로와 같은 매크로는 업데이트 시 중단될 수 있으므로 최종 사용자 코드에서는 피해야 합니다. 대신, Forest가 이 목적을 위해 제공하는 래퍼를 사용하십시오. 이는 Forest 내부에 대한 모든 변경 사항에서 살아남을 가능성이 훨씬 더 높습니다.

\documentclass[border=10pt]{standalone}
\usepackage{forest}% version 1
\begin{document}
\begin{forest}
  for tree={
    parent anchor=south,
    edge path={
      \noexpand\path [\forestoption{edge}] (!u.parent anchor) -- ++(0,-5pt) -| (.child anchor)\forestoption{edge label};
    }
  }
 [ZZ
 [Bax
 [X
 [Y [A ] [B ] ]
 [Z [C ] [D ] ] ]
 [F
 [M [E ] [F ] ]
 [G [G ] [H ] ] ] ]
 [A
 [B
 [S  [I [P][R][T][V][U]] [J ] ]
 [I  [K ] [L ] ] ]
 [M
 [L  [M ] [N ] ]
 [A  [O ] [P ] ] ] ] ] ]
\end{forest}
\end{document}

이전 숲

관련 정보