숲속의 특별한 지위를 지닌 두 딸에 관한 사양 추가

숲속의 특별한 지위를 지닌 두 딸에 관한 사양 추가

다음 그림을 생성하고 싶습니다 forest.

Tesniereian Stemma

그래서 제가 찾고 있는 것은 딸 1(frapp)과 딸 2(개미)가 함께 A와 관련이 있다는 스타일 사양입니다. 딸 2(개미)가 더 중요하며, 이는 아래 그림에서 아래쪽으로 구부러진 선으로 표시되어 있습니다. 아래 오른쪽 ant.

아래 예시에 통합할 수 있는 방법이 있나요?

\documentclass{article}

\usepackage{forest}


\begin{document}

\begin{forest}
[un exemple
  [A
    [frapp]
     [ant] ] ]
\end{forest}


\end{document}

이는 세 가지 요소를 포함하는 두 관계입니다. A는 frapp과 ant의 어머니입니다. 그리고 개미는 A 내부의 머리(가장 중요한 요소)입니다. forest스타일을 사용하여 이를 수행할 수 있는 좋은 방법이 있습니까?

편집하다:

나는 그 제안을 따르고 edge path. 이것이 내가 가진 것입니다:

\documentclass{article}

\usepackage{forest}

\forestset{
dg translation/.style={edge path={\noexpand\path[\forestoption{edge}]
(!u.parent anchor)-- +(0,-l)
(!p.north west)--(.north east)\forestoption{edge label};}}
}

\begin{document}

\begin{forest}
[un example
  [A
    [frapp, no edge]
     [ant, dg translation] ] ]
\end{forest}


\end{document}

이는 다음을 생성합니다.

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

남쪽 길이의 직선 l과 두 딸을 덮는 선. 그런 다음 다시 A 수준이 되도록 선을 올려야 합니다(그리고 약간의 곡선을 추가해야 합니다). 하지만 어떻게 거리를 확보하는지 모르겠습니다. 그렇지는 않지만 l조금 적습니다. 또는 A 아래에서 그릴 수도 있지만 딸의 크기에 따라 왼쪽과 오른쪽으로 얼마나 멀리 가야할지 모르겠습니다.

no edge나는 또한 다른 딸에 대해서도 지정해야했습니다 . 어떻게든 피할 수 있다면 정말 좋을 것 같습니다.

편집 2:

no edge좋습니다. cfr의 설명에 따라 트리에서 사양을 제거했습니다 .

\documentclass{article}

\usepackage{forest}

\forestset{
dg translation/.style={edge path={\noexpand\path[\forestoption{edge}]
(!u.parent anchor)-- +(0,-l)
(!p.north west)--(.north east)\forestoption{edge label};},!p.edge'={}}
}

\begin{document}

\begin{forest}
[un example
  [A
    [frapp]
     [ant, dg translation] ] ]
\end{forest}


\end{document}

그런데 A 아래에 곡선을 어떻게 그려야 할지 아직도 모르겠습니다. 여기서는 이 댓글이 도움이 되지 않습니다.

편집 3:

좋아요. 나는 여기까지 왔다:

\documentclass{article}

\usepackage{forest}
\usetikzlibrary{calc}


\forestset{
dg translation/.style={edge path={\noexpand\path[\forestoption{edge}, rounded corners=3pt]
% the line downwards
(!u.parent anchor)-- +($(0,-l)-(0,12pt)$)-- +($(12pt,-l)-(0,12pt)$)
% the horizontal line
($(!p.north west)+(0,l)-(0,14pt)$)--($(.north east)+(0,l)-(0,14pt)$)\forestoption{edge label};},!p.edge'={}}
}

\begin{document}

\begin{forest}
[un exemple
  [A
    [frapp]
     [ant, dg translation] ] ]
\end{forest}


\end{document}

그러면 다음 그림이 생성됩니다.

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

내가 만족하지 못하는 몇 가지 사항이 있습니다. 코드에 14pt 위쪽으로 수동 이동이 포함되어 있습니다. 다른 글꼴 크기에서는 작동하지 않습니다.

또 다른 질문은 수평선을 곡선으로 만드는 방법입니다. 에서 선에 영향을 줄 수 있는 몇 가지 방법을 찾았 tikz지만 이는 경로에 대한 옵션이며 에서 두 개의 서로 다른 가장자리 경로를 갖는 것은 불가능한 것 같습니다 forest. 따라서 경로의 모든 부분에 영향을 미치는 것과 같은 옵션을 지정하면 rounded corners두 개의 별도 경로가 필요합니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

편집하다내 원래 답변은 다음에서만 작동합니다.버전 1. 아래 코드는 더 간단할 뿐만 아니라 버전 1과 버전 2 모두에서 동일하게 잘 작동합니다.


이것이 나의 해결책이었습니다. no edge형제 설정에 대한 Stefan Müller의 솔루션은 node walk이 코드의 원래 버전에서 명시적으로 사용한 것보다 훨씬 깔끔했지만 아래 업데이트된 버전은 여전히 ​​더 간단합니다.

나는 tikz이것을 경로에 넣기보다는 키를 사용하여 곡선의 수평선을 그립니다 edge. 이렇게 하면 내가 참조하는 노드가 존재하는지 쉽게 확인할 수 있지만 edge약간의 주의를 기울여 도면에 통합할 수도 있습니다.

'VIN'은 물론 사람들의 'VIP'에 해당하는 노드이다.

\documentclass[tikz,border=10pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
  for tree={
    parent anchor=south,
    child anchor=north,
  },
  vin/.style={
    child anchor=south west,
    edge path={
      \noexpand\path [draw, \forestoption{edge}]
      (!u.parent anchor) -- (!u.parent anchor |- .west) [out=-90, in=180] to (.child anchor)\forestoption{edge label};
    },
    for parent={
      before packing={
        tikz={
          \draw (!1.north west |- .parent anchor) [out=30, in=170] to (.parent anchor) [out=-10, in=-150] to (!l.north east |- .parent anchor);
        },
      },
    },
    before typesetting nodes={
     !p.no edge,
    },
  }
  [un exemple
    [A
      [frapp
      ]
      [ant, vin
      ]
    ]
  ]
\end{forest}
\end{document}

굴곡진 길

관련 정보