LaTeX 中的多根树状结构和具有多个父节点的节点

LaTeX 中的多根树状结构和具有多个父节点的节点

qtree软件包似乎仅支持绘制简单的树。有没有办法整合:

  1. 多重根 &
  2. 具有多个父节点的节点

在 LaTeX 中的一棵树中?

答案1

多支配“树”实际上不是树,而是图形,而标准的树绘制包实际上并非为处理它们而设计的。根据树的复杂性,可以绘制这些树,但是需要一些手动干预。我会使用基于 TikZ 的树绘制包之一来绘制这些树,而不是qtree。最好的两个此类包是tikz-qtree和 非常强大的forest包。实现多支配的一般方法是相同的:绘制一个空边和节点,然后手动绘制到具有多个父节点的相关节点的额外分支。

使用 tikz-qtree

\documentclass{article}
\usepackage{tikz-qtree,tikz-qtree-compat}


\begin{document}
% Some multi-dominance structures using qtree and forest
% We fake the multi-dominance with an empty edge and node and then
% a regular tikz \draw between the node and its extra parent
\begin{tikzpicture}[sibling distance=.25cm]
\Tree [.Y
        [.Z ]
        [.\node (X) {X}; 
           [.A [.B ] [.\node (C) {C}; ] ]
           [.\node (A2) {A};
             \edge[draw=none]; {} \edge; {B} ]]]] 
\draw (A2.south) -- (C.north);

\end{tikzpicture}
\end{document}

使用森林

\documentclass{article}
\usepackage{forest}
\forestset{qtree edges/.style={for tree=
    {parent anchor=south, child anchor=north}}}

\begin{document}
\begin{forest}
qtree edges
[Y
[Z ]
[X,name=X [A  [B ] [C, name=C ]]
   [A, name=A2  [, no edge ] [B ]]]]
\draw (A2.south) -- (C.north);
\end{forest}
\end{document}

代码输出

使用 tkz-graph 绘制图表

对于更复杂的图表,最好使用专门为图表设计的包。 阿兰·马特斯 tkz-graph包就是这样做的。下面是使用该包的一个更复杂的例子。文档是法语的,但有很多例子可供参考,所有命令语法都是基于英语的。还请注意,由于命令名称冲突,tikz-qtreetkz-graph不能一起使用,但这里有一个补丁:

如何使用 tkz-graph 和 tikz-qtree 而不发生冲突?

\documentclass{article}
% a more complicated graph using tkz-graph
% depending on the actual graph this could be partially automated
% with tikz \for loops
\usepackage{tkz-graph}
\renewcommand*{\EdgeLineWidth}{0.15pt}

\begin{document}
\begin{tikzpicture}
\GraphInit[vstyle=Empty]
\Vertex{Y}
\Vertex[x=2,y=0]{Q}
\Vertex[x=1,y=-2]{X}
\Vertex[x=-1,y=-2]{Z}
\Vertex[x=3,y=-2]{R}
\Vertex[x=0,y=-3]{A}
\Vertex[x=2,y=-3]{B}
\Vertex[x=-1,y=-4]{C}
\Vertex[x=1,y=-4]{D}
\Vertex[x=3,y=-4]{E}
\Edges(Z,Y,X,Q,R) 
\Edges(A,X,B)
\Edges(C,A,D,B,E)

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容