如何将两个父母与同一个孩子联系起来,尽管父母不在同一棵树上?

如何将两个父母与同一个孩子联系起来,尽管父母不在同一棵树上?

我正在尝试绘制一棵特定的树,其中两个父节点链接到同一个子节点。问题是其中一个父节点在主树之外。

这是我目前拥有的代码:

\documentclass{article}
\usepackage{tikz-qtree,tikz-qtree-compat}
%\usepackage{gb4e}
\usepackage{forest}

\begin{document}

%\begin{exe}
\begin{forest}
qtree edges/.style={for tree= parent anchor=north, child anchor=south}
   [A, grow=north
       [C, name=C, grow'=north
           [D, grow=north ]
           [E, name=t5, grow=north ]
       ]
       [B, grow=north ]
   ]
   \hspace{0.8cm}
   [$F$, name=F, grow=north ]
   %\draw (F.north) -- (C.south);
\end{forest}
%\end{exe}

\end{document}

我希望节点 F 和 C 连接起来。我不知道为什么,但如果我删除美元符号,节点 F 甚至不会出现在我的文档中。

另一件事是我想将森林环境嵌入到示例环境中,但这也不起作用。

在此先感谢您的帮助!

答案1

您的代码存在各种问题。首先,多根结构不是正式的树,所以你不能指望树绘制包直接处理它们。有关这方面的更多技术讨论,请参阅以下问题:

此外,示例的语法gb4e要求示例由\ex宏引入(在{exe}环境内)。

为了处理多重支配,我使用了 Ignasi 的建议来创建一个相对于-|节点 A 和 E 之间的路径的节点。您也可以使用 TikZpositioning库来手动放置节点。我还删除了包tikz-qtree,因为如果您使用,它就不需要了forest。由于您的“树”向上生长,我已将其添加baseline到其中一个终端节点,以便它与示例编号正确对齐,并为树全局设置增长函数。此外,您的示例中的节点具有特定的样式,但您从未应用过该样式,我也这样做过。

您还应该gb4e在大多数其他包之后加载,否则可能会导致问题。)

\documentclass{article}
\usepackage{forest}

\usepackage{gb4e}


\begin{document}

\begin{exe}
\ex
\begin{forest}
qtree edges/.style={for tree={parent anchor=north, child anchor=south}},
for tree={grow=north},qtree edges
   [A, name=A,
       [C, name=C 
           [E,baseline,name=E  ]
           [D,   ]
       ]
       [B ]
   ] 
   \node  (F) at (A-|E) {F};
   \draw (F.north) -- (C.south);
   \end{forest}
\end{exe}

\end{document}

代码输出

相关内容