带有交叉点和虚线的依赖树

带有交叉点和虚线的依赖树

为了进行演示,我需要参考一篇使用某种依赖树的论文:

具有交叉点和基线的依赖树

因为我想自己构建一些示例,所以我很乐意重建它。我尝试了几个语言树包(qtree、xytree、tkiz、parsetree 等),但我还没有弄清楚如何重建它。如果有人可以重建这个(或一个更简单的示例),那就太好了。

注意:对于以后的解释来说,很重要的是虚线、基线和“跨越”结构的能力(就像 $X_{2}^{2}$ 那样)。

答案1

我不太了解这类树,但看起来节点是按行和列排列的,这在任何常规的树绘制包中都不太可能实现。因此,如果这很重要,那么使用矩阵来做到这一点是有意义的。以下是使用 TikZ 的示例。

关于此处使用的语法的一些说明。指定节点矩阵时,您可以在|(<node-name>)|节点文本前使用符号为任何节点添加名称。或者,您可以使用符号(<matrix-row-column>)。使用哪种符号主要取决于个人喜好:命名单个节点会使您的代码更易读,但需要更多输入。在此示例中,我混合使用了这两种方法,因为最后一行实际上不需要命名节点来提高可读性。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\begin{tikzpicture}
\matrix [matrix of math nodes,row sep=1cm,column sep=.5cm,nodes={outer sep=0pt}] (M) {
& & & & & |(1-0)| X^{1}_{0} &\\
& & |(2-1)| X^{2}_{1} & |(2-2)| X^{2}_{2} & & & |(2-3)| X^{2}_{3}\\
|(3-1)| X^{3}_{1} & |(3-2)| X^{3}_{2} &  & & |(3-3)| X^{3}_{3}  &\\
'X^{3}_{1} & 'X^{3}_{2} & 'X^{2}_{1} & 'X^{2}_{2} & 'X^{3}_{3} & 'X^{1}_{0} & 'X^{2}_{3}\\
};
\draw (1-0) -- (2-1);
\draw (1-0) -- (2-2);
\draw[dotted] (1-0) -- (M-4-6);
\draw (1-0) -- (2-3);
\draw (2-1) -- (3-1);
\draw (2-1) -- (3-2);
\draw[dotted] (2-1) -- (M-4-3);
\draw (2-2) -- (3-3);
\draw[dotted] (2-2) -- (M-4-4);
\draw[dotted] (2-3) -- (M-4-7);
\draw[dotted] (3-3) -- (M-4-5);
\draw[dotted] (3-1) -- (M-4-1);
\draw[dotted] (3-2) -- (M-4-2);
\path[draw] (M-4-1.north west) to (M-4-7.north east) node[right=2pt] {P};
\end{tikzpicture}
\end{document}

代码输出

相关内容