경고 사항 ...

경고 사항 ...

나무가 전체 텍스트 너비에 걸쳐 늘어나도록 지정하는 방법이 있습니까? 즉, 가장 왼쪽 노드를 왼쪽 여백에 정렬하고 가장 오른쪽 노드를 오른쪽 여백에 정렬한 다음 해당 점을 기준으로 그 사이의 모든 항목을 그리려면?

여기에 제가 맞추려고 하는 트리의 MWE가 있습니다.

\documentclass{article}
\usepackage[margin=.75in]{geometry}
\usepackage[linguistics]{forest}

\begin{document}

\begin{center}
\begin{forest}
    [IP$_{<t>}$
        [VP$_{<<e,t>,t>}$
            [NP $_{<<<e,t>,e,t>>,t>}$
                [at least five $_{<<e,t>,<<<e,t>,<e,t>>,t>>}$]
                [NP $_{<e,t>}$
                    [students $_{<<e,t>,<e,t>>}$]
                    [$t_{2_{<e,t>}}$]
                ]
            ]
            [arrived $_{<e,t>}$]
        ]
        [CP$_{<e,t>}$
            [who$_1$]
            [CP$_{<t>}$
                [$t_{1_{<e>}}$]
                [VP $_{<e,t>}$
                    [took $_{<e,<e,t>>}$]
                    [semantics $_{<e>}$]
                ]
            ]
        ]
    ]
\end{forest}
\end{center}

\end{document}

답변1

내가 올바르게 이해했다면 기본 유형의 표현을 수정했다고 생각합니다. 나는 언어학자가 아니고 실제로 이것이 무엇을 의미하는지 모르기 때문에 그 가치를 그대로 받아들이십시오.

데모용으로만 for tree={draw}추가 했습니다 . showframeOkular에는 이미지를 망치는 버그가 있기 때문에 실제로 데모를 보려면 컴파일하거나 상상해야 하지만 샘플에서 철저하게 테스트했습니다.N나무 어디에N=1. 하나는 당신의 나무이기 때문에 적어도 이 경우에는 작동합니다.

스타일

widen tree to width=<dimension expression>

단일 선택적 인수를 사용합니다. 지정하지 않으면 기본값은 0pt스타일이 적용되지 않는 것입니다.

노트

  1. 알고리즘은 보수적으로 시도합니다. 즉, 많은 나무에 스타일을 적용하면 속도가 느려집니다. 나는 추천한다 memoize.

  2. 너무 보수적이지 않아 극단적인 경우에도 깨지지 않습니다. 이러한 목적을 위해 '극단적인 경우'는 알고리즘이 실패하는 모든 경우입니다.

  3. 이것을 무인 컴파일하도록 두지 마십시오.잘못되면 영원한 forest루프에 빠질 수 있습니다. 나는 아니에요생각하다이런 일이 일어날 것입니다. (1)에서 설명한 대로 철저하게 테스트해 보았지만, 너무 조심하시면 안 됩니다.

  4. 트리와 타겟의 차이가 1pt.이것을 0pt로 변경하지 마십시오.TeX의 계산은 대략적인 것입니다. 수당을 다음으로 줄임0pt ~ 할 것이다무한 루프를 트리거합니다.

  5. 라벨, 가장자리 또는 노드 테두리는 허용되지 않습니다. 나무에 이러한 특징이 있고 너비 방향으로 돌출된 경우 이에 따라 대상 너비를 조정해야 합니다.

  6. 나는 미적 측면이나 효율성 측면에서 이것을 권장하지 않습니다. 특별히 지정된 너비의 트리를 원하는 이유가 무엇인지 잘 모르겠습니다. 하지만 어쩌면 나는 상상력이 부족할 수도 있습니다.

경고 사항 ...

\documentclass{article}
\usepackage[margin=.75in,showframe]{geometry}
\usepackage[linguistics]{forest}
\forestset{% ateb: https://tex.stackexchange.com/a/715314/
  declare dimen register=target wd,
  target wd'=0pt,
  declare dimen register=needed wd,
  needed wd'=0pt,
  adjust tree/.style={
    tempcounta'=1,
    tempcountc'=0,
    for tree breadth-first={%
      if={ >OR> {level}{tempcountc} }{
        tempcountc/.option=level,
        tempcountd'=1,
      }{
        tempcountd'+=1,
        if={ >RR> {tempcountd}{tempcounta} }{
          tempcounta/.register=tempcountd,
        }{},
      },
    },
    tempcounta*/.register=tempcountc,
    tempcounta'+=1,
    tempdima/.process={ RRw2+d {needed wd}{tempcounta}{##1/##2} },
    where={>O_<{s}{0pt}}{
      s-/.register=tempdima,
    }{
      s+/.register=tempdima,
    },
    compute xy stage,
    tempdima/.max={>OOw2+d{x}{max x}{##1+##2}}{tree},
    tempdimb/.min={>OOw2+d{x}{min x}{##1+##2}}{tree},
    tempdimc/.register=tempdima,
    tempdimc-/.register=tempdimb,
    needed wd/.register=target wd,
    needed wd-/.register=tempdimc,
    if={ >Rd>{needed wd}{1pt} }
    {% pam alla i ddim ddefnyddio loop yma?
      adjust tree,
    }{},
  },
  widen tree to width/.style={
    target wd=#1,
    needed wd/.register=target wd,
    before drawing tree={
      tempdima/.max={>OOw2+d{x}{max x}{##1+##2}}{tree},
      tempdimb/.min={>OOw2+d{x}{min x}{##1+##2}}{tree},
      tempdimc/.register=tempdima,
      tempdimc-/.register=tempdimb,
      needed wd-/.register=tempdimc,
      if={ >Rd>{needed wd}{1pt} }
      {% pam alla i ddim ddefnyddio loop yma?
        adjust tree,
      }{},
    },
  },
}
\begin{document}

\begin{center}
  \begin{forest}
    widen tree to width=\linewidth,
    for tree={draw},
    [IP$_{t}$ 
      [VP$_{<<e,t>,t>}$
        [NP $_{<<<e,t>,e,t>>,t>}$
          [at least five $_{<<e,t>,<<<e,t>,<e,t>>,t>>}$]
          [NP $_{<e,t>}$
            [students $_{<<e,t>,<e,t>>}$]
            [$t_{2_{<e,t>}}$]
          ]
        ]
        [arrived $_{<e,t>}$]
      ]
      [CP$_{<e,t>}$
        [who$_1$]
        [CP$_{t}$
          [$t_{1_{e}}$]
          [VP $_{<e,t>}$
            [took $_{<e,<e,t>>}$]
            [semantics $_{e}$]
          ]
        ]
      ]
    ]
  \end{forest}
\end{center}

\end{document}

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

관련 정보