森林中的树使用样式相当不错的空节点

森林中的树使用样式相当不错的空节点

我正在使用fairly nice empty nodes这个问题的风格:使用 Forest 减少树中节点之间的距离创建一个空节点的树,该树比使用nice empty nodes生成的树要小。但是,一个节点只是相当不错。有解决方案吗,或者这就是使用fairly作为样式名称的一部分的原因。

\documentclass{minimal}
\usepackage{forest}

\forestset{
fairly nice empty nodes/.style={
            delay={where content={}{shape=coordinate,for parent={
                  for children={anchor=north}}}{}}
, angled/.style={content/.expanded={$<$\forestov{content}$>$}}
}}
\useforestlibrary{linguistics}
\forestapplylibrarydefaults{linguistics}


\begin{document}

\begin{forest} fairly nice empty nodes, for tree={l sep-=.2em,l=0}
[CP
    [C, fit=band]
    [TP
        [T, fit=band]
        [\textit{v}P
            [DP\\(EA), fit=band]
            [{}
                [VP
                    [DP\\(IA), fit=band]
                    [V]]                        
                [\textit{v}]]]]]
\end{forest}


\end{document}

输出如下。问题是,分支到 VP 的节点和树枝太高,导致树变得有点不对称。我喜欢实现的是节点之间的直线P 通过空节点到达节点

在此处输入图片描述

答案1

问题是,当你无法拥有一切时,你准备放弃什么。使用直线(或几乎直线)会使树更宽。使用直线fit=band会使树很多更宽的。

fairly nice empty nodes通过不保持边缘之间的角度恒定,牺牲了直边。(它放弃了calign=fixed edge angles。)

另一种可能性是pretty nice empty nodes牺牲完美的笔直边缘。(它放弃了shape=coordinate。)然而,有了fit=band,这会使树非常宽,因为这是保持边缘(几乎)笔直的唯一方法。

这些样式是必需的,因为树不能使用,nice empty nodes因为在这种情况下,该样式需要除以零,而 TikZ 无法做到这一点。但是,nice empty nodes与 结合也会使树变宽fit=band。因此fairly/pretty权衡不是导致树中节点看起来平庸的原因。没错,nice empty nodes会使用直边,但使用fit=band,树最终会变得非常宽。

这不是软件的限制,而是由于现实本身的性质。你遇到的限制是几何限制,而不是样式或包装限制。

这里有一种使用 的可能性pretty nice empty nodes,这可能不是您想要的,但它演示了如何创建具有(几乎)直边的紧凑树。这里牺牲的是fit=band

\documentclass[border=10pt,multi,tikz]{standalone}
\usepackage{forest}
\forestset{%
  pretty nice empty nodes/.style={
    for tree={
      calign=fixed edge angles,
      parent anchor=children,
      delay={if content={}{
          inner sep=0pt,
          edge path={\noexpand\path [\forestoption{edge}] (!u.parent anchor) -- (.children)\forestoption{edge label};}
        }{}}
    },
  }
}
\begin{document}
\begin{forest}
  pretty nice empty nodes,
  for tree={%
    l sep-=.2em,
    l=0,
    align=center,
  }
  [CP
    [C]
      [TP
        [T]
        [\textit{v}P
          [DP\\(EA)]
          [
            [VP
              [DP\\(IA)]
              [V]
            ]
            [\textit{v}]
          ]
        ]
      ]
    ]
\end{forest}
\end{document}

树形紧凑,边缘几乎笔直

相关内容