我必须绘制多个继承类型层次结构。最糟糕的情况如下:
我使用表格和tree-dvips
来绘制这些图形,但现在我正在寻找xelatex
兼容的东西。
我开始用 排版简单的层次结构forrest
,但对于上述情况,这似乎有点过头了。我已经发现TikZ 中是否有用于绘制对象继承树的库?但问题更加复杂,因为继承可能涉及两个或多个父节点。
那么:是否有针对此的包或预定义的样式forest
?
答案1
如果您不要求自动方式,则TiKZ matrix
和一些foreach
循环就足够了:
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (A) [matrix of nodes, row sep=1cm, nodes={minimum width=2cm}]
{
arg1+ & arg4+ & arg2+& arg3+ & arg3- & arg4- & arg1- & arg2- \\
arg12-123-124 & arg-124-2-24 & arg1-12 & arg12-23 & arg0-2 \\
arg124 & arg123 & arg12 & arg24 & arg1 & arg2 & arg23 & arg0 \\
};
\path (A-1-4)--(A-1-5) node[above=1cm, midway] (link) {link};
\foreach \i in {1,...,8}
\draw (link.south) -- (A-1-\i.north);
\foreach \i/\j in {1/1,1/3,3/1,3/2,3/4,5/2,5/3,5/5,6/5}
\draw (A-1-\i.south)--(A-2-\j.north);
\foreach \i/\j in {2/1,2/3,4/2,4/6,5/4,7/4,7/7,8/5,8/8}
\draw (A-1-\i.south)--(A-3-\j.north);
\foreach \i/\j in {1/1,1/2,1/3,2/1,2/3,2/4,2/6,3/3,3/5,4/3,4/7,5/6,5/8}
\draw (A-2-\i.south)--(A-3-\j.north);
\end{tikzpicture}
\end{document}