是否可以使用森林包更改某些树级别的边缘?

是否可以使用森林包更改某些树级别的边缘?

是否可以改变这个使用森林包的 MWE 来生成树,类似于下一个不使用森林的 MWE 生成的树?最后一级子节点必须堆叠在一起,边缘从父节点画到southwest节点。

在阅读了 Forest 手册后,我觉得该键where n children=0应该能够提供帮助,并添加了带有注释的行,但无论grow我提供什么参数,例如北/南,或 0-45-90-120 等,增长方向都没有改变。

解决方案可能位于 Forest 手册的第 10-12 页,但我却找不到 :(

\documentclass{article}
\usepackage{forest}

\begin{document}

\begin{forest} 
for tree={
  where n children=0{draw=red,grow=120}{}, %<============
  edge path={
    \noexpand\path[\forestoption{edge}]
      (!u.parent anchor) -- +(0,-15pt) -|   
      (.child anchor)\forestoption{edge label};
  },
  l sep=10pt,
} 
[P
  [N1
    [N1C1]
    [N1C2]
  ]
  [N2
    [N2C1]
    [N2C2]
  ]
]
\end{forest}
\end{document}

没有森林(最低级边缘不同且节点堆叠):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}

\begin{document}

\begin{tikzpicture}[
    children/.style={grow=down,xshift=-0.2cm,
        edge from parent path={(\tikzparentnode.201) |- (\tikzchildnode.west)}
    },
    level1/.style ={level distance=4em,anchor=west},
    level2/.style ={level distance=8em,anchor=west},
    level 1/.style={edge from parent fork down,sibling distance=5em,level distance=4em
    }
]
    \node[anchor=south](super){P}[]
    child{node {N1}
        child[children,level1] {node {N1C1}}
        child[children,level2] {node {N1C2}}
    }
    child{node {N2}
        child[children,level1] {node {N2C1}}     
        child[children,level2] {node {N2C2}}};
\end{tikzpicture}
\end{document}

答案1

选项where n children是正确的选择。但是,设置grow会改变子节点的增长方向,而不是节点本身。因此:

where n children=0{draw=red,for parent={grow'=120}}{},

grow'颠倒孩子的顺序。)

毋庸置疑,需要进一步定制才能实现下面非森林示例中所示的结果。事实上,N1 和 N2 的子节点在所需的方向上生长,但放置在节点的右侧,而不是下方……

相关内容