Desenhe múltiplas hierarquias de herança

Desenhe múltiplas hierarquias de herança

Tenho que desenhar várias hierarquias de tipo de herança. O pior caso é algo como o seguinte:

insira a descrição da imagem aqui

Usei tabelas e tree-dvipspara desenhar essas figuras, mas agora procuro algo que seja xelatexcompatível.

Comecei a compor hierarquias simples com forrest, mas para casos como o acima isso parece um exagero. eu já encontreiExiste uma biblioteca para desenhar árvores de herança de objetos no TikZ?mas o problema é mais complicado, pois a herança pode envolver dois ou mais nós pais.

Então: existe um pacote para isso ou um estilo predefinido para forest?

Responder1

Se você não pedir uma forma automática, TiKZ matrixalguns foreachloops são suficientes:

\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}

insira a descrição da imagem aqui

informação relacionada