LaTeX:如何制作一棵末端封闭的水平树(森林)

LaTeX:如何制作一棵末端封闭的水平树(森林)

我使用森林包在 LaTeX 中创建了以下水平树。

    \forestset{
  L1/.style={draw=black,},
  L2/.style={,edge={,line width=0.8pt}},
}

\begin{forest}
    for tree={
        grow=0,reversed, % tree direction
        parent anchor=east,child anchor=west, % edge anchors
        edge={line cap=round},outer sep=+1pt, % edge/node connection
        rounded corners,minimum width=15mm,minimum height=8mm, % node shape
        l sep=10mm % level distance
    }
  [Some text,L1
    [Some text ,L2]
    [Some text,L2]
    [Some text,L2]
  ]
\end{forest}

它给出了以下输出:

在此处输入图片描述

现在我想再次“关闭”树,即以下内容:

在此处输入图片描述

如果您能提供任何关于如何修改代码以便树最终“一起成长”的建议,我们将不胜感激!

答案1

您可以为树中的节点设置名称并手动绘制合并节点。

\documentclass{article}
\usepackage{forest}
\forestset{
  L1/.style={draw=black,},
  L2/.style={,edge={,line width=0.8pt}},
}
\begin{document}
\begin{forest}
  for tree={
    grow=0,reversed, % tree direction
    parent anchor=east,child anchor=west, % edge anchors
    edge={line cap=round},outer sep=+1pt, % edge/node connection
    rounded corners,minimum width=15mm,minimum height=8mm, % node shape
    l sep=10mm % level distance
  }
  [Some text,L1
  [Some text ,L2,name=ST1]
  [Some text,L2,name=ST2]
  [Some text,L2,name=ST3]
  ]
  \node[draw,rounded corners,minimum width=15mm,minimum height=8mm,anchor=west] (EndNode) at ($(ST2.east) + (1,0)$){Merge text};
  \foreach \num in {1,2,3}{
    \draw (ST\num.east) -- (EndNode.west);
  }
\end{forest}
\end{document}

在此处输入图片描述

答案2

我认为最好的解决方案是将附加节点添加为树的一部分,然后使用该节点的edge选项添加附加边。您可以通过命名节点或使用相对节点名称(如这里)来执行此操作。您不必使用键tikz,但如果使用相对节点名称,则可以简化问题,因为这意味着节点与当前节点有关。当前()节点也是如此,(!u)是其父节点,(!up)是其父节点的前一个兄弟节点,依此类推。这意味着() edge ...将从“这里”绘制边,无论这里在哪里。

\documentclass[border=10pt]{standalone}
\usepackage[linguistics]{forest}
\begin{document}
\tikzset{%
  L1/.style={draw=black},
  L2/.style={line width=0.8pt, line cap=round},
}%
\begin{forest}
  for tree={
    grow'=0,
    parent anchor=children,
    child anchor=parent,
    edge+=L2,
    outer sep=+1pt,
    rounded corners,
    minimum width=15mm,
    minimum height=8mm,
    l sep'=10mm,
  }
  [Some text, L1
    [Some text, L2]
    [Some text, L2
      [\phantom{Some text}, L1, tikz+/.process={Ow1{edge}{\draw [#1] (.child anchor) edge (!un.parent anchor) -- (!up.parent anchor);}}]
    ]
    [Some text, L2]
  ]
\end{forest}
\end{document}

对称结尾

相关内容