如何在森林树中获得有限的多重显性

如何在森林树中获得有限的多重显性

我想要拥有forest允许非常有限的多重支配的树,如下图所示:

多显性树

基本思想是终端节点A位于两个X节点之间并受其支配。

这是通过以下黑客方式生成的:我制作了一个带有幻影中间边缘的三元分支树,以便终端是中间分支的终端节点,然后手动绘制多主分支。这很好用,但我想知道是否有一种不那么黑客的方式来做到这一点。

\documentclass{article}
\usepackage[linguistics]{forest}
\forestset{multi/.style={before typesetting nodes={
     prepend={[X,name=X1,tier=x]},
     append={[X,name=X2,tier=x]}}}}
\begin{document}
\begin{forest}
    [A,s sep=0pt,multi
        [X,phantom, tier=x [a,tier=s,name=X ]]
    ]
\draw (X1.south) -- (X.north);
\draw (X2.south) -- (X.north);
\end{forest} 
\end{document}

答案1

\documentclass[border=9pt]{standalone}
\usepackage[linguistics]{forest}
\forestset{
  declare toks={multi name}{},
  multi dom/.style={
    if={>On={level}{0}}{}{%
      delay/.process={OOw2}{name}{multi name}{
        insert before={[##2,tier=##1]},
        insert after={[##2,tier=##1]},
        !u.s sep'=0pt,
      },
      before typesetting nodes={
        replace by/.process={OOw2}{name}{multi name}{[##2, phantom, before drawing tree={content=, no edge, phantom=0, typeset node}, tier=##1, delay={append=##1}]}
      },
      edge path'={(!up.parent anchor) -- (.child anchor) -- (!un.parent anchor)},
    },
  },
  multi/.style={
    multi name=#1,
    multi dom,
  },
}
\begin{document}
\begin{forest}
  [A
    [a,multi=X ]
  ]
\end{forest} 
\begin{forest}
  [A
    [a,multi=X ]
    [b [c,multi=C] ]
    [f [g,multi=H] ]
  ]
\end{forest} 
\begin{forest}
  for tree={multi name=J}
  [A
    [a,multi dom ]
    [b [c,multi=C] ]
    [f [g,multi dom] ]
  ]
\end{forest} 
\begin{forest}
  [C [A
      [a, multi=C  ]
  ]
    [B [c,multi=V ]]
  ]
\end{forest}
\end{document}

太多受压迫的孩子被父母控制

相关内容