
複数の継承型階層を描画する必要があります。最悪のケースは次のようになります。
これらの図を描くために表とを使用しましたtree-dvips
が、現在は互換性のあるものを探していますxelatex
。
私は単純な階層を でタイプセットし始めましたforrest
が、上記のようなケースではこれはやりすぎのようです。私はすでにTikZ でオブジェクト継承ツリーを描画するためのライブラリはありますか?しかし、継承には 2 つ以上の親ノードが関与する可能性があるため、問題はさらに複雑になります。
それで、これ用のパッケージまたは定義済みのスタイルはありますか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}