%% 
%%  A DANTE-Edition example
%% 
%% 
%%  Copyright (C) 2010 Herbert Voss
%% 
%%  It may be distributed and/or modified under the conditions
%%  of the LaTeX Project Public License, either version 1.3
%%  of this license or (at your option) any later version.
%% 
%%  See http://www.latex-project.org/lppl.txt for details.
%% 
%% 
%% ==== 
% Show page(s) 1
%% 
\documentclass[]{article}
\pagestyle{empty}
\setlength\textwidth{201.70511pt}
\setlength\parindent{0pt}

\usepackage{pst-tree}
\SpecialCoor
\makeatletter
\def\MyNodeA{\@ifnextchar[{\MyNodeA@i}{\MyNodeA@i[]}}
\def\MyNodeA@i[#1]#2{\Tr[#1]{\psframebox{#2}}}
\def\MyNodeB{\@ifnextchar[{\MyNodeB@i}{\MyNodeB@i[]}}
\def\MyNodeB@i[#1]#2{\TR[#1]{\psframebox{#2}}}
\def\MyNodeC{\@ifnextchar[{\MyNodeC@i}{\MyNodeC@i[]}}
\def\MyNodeC@i[#1]#2#3{\Tr[#1]{\rnode[b]{#2}{\psframebox{#3}}}}
\makeatother

\begin{document}
\psrotateleft{%
\pstree[arrows={-*},arrowscale=2,nodesepB=0.1]{\MyNodeA[ref=b]{matrix package}}{%
    \pstree[treesep=-2,levelsep=1.5] {\MyNodeC[ref=t]{Types}{matrix types}}{%
        \psset{levelsep=0.8,labelsep=0.1}%
        \def\pspred{Types}%
        \MyNodeB[href=-0.4]{\Rnode[href=-0.4]{Dense}{dense matrices}}
        \tlput[tpos=0.44]{0.7}
        \skiplevels{1}
            \MyNodeB{\Rnode{Sparse}{sparse matrices}}
            \tlput[tpos=0.58]{0.3}
        \endskiplevels
        \pspolygon*([nodesep=3.3]{\pspred}Dense)(\pspred)([nodesep=2.8]{\pspred}Sparse)
        \skiplevels{2}
            \MyNodeB[href=0.3]{\Rnode[href=0.3]{Real}{real matrices}}
            \tlput[tpos=0.65]{0.7}
        \endskiplevels
        \skiplevels{3}
            \MyNodeB[href=0.3]{\Rnode[href=0.3]{Complex}{complex matrices}}
            \tlput[tpos=0.7]{0.3}
        \endskiplevels
        \pspolygon*([nodesep=2.75]{\pspred}Real)(\pspred)([nodesep=2.3]{\pspred}Complex)
        \skiplevels{4}
            \MyNodeB[href=0.4]{rectangular matrices}
        \endskiplevels
        \psset{arrows={-o},tpos=0.78}%
        \skiplevels{5}
            \MyNodeB[href=0.4]{symmetric matrices}
            \tlput[tpos=0.74]{0.3}
        \endskiplevels
        \skiplevels{6}
            \MyNodeB[href=0.5]{diagonal matrices}
            \tlput{0.3}
        \endskiplevels
        \skiplevels{7}
            \MyNodeB[href=0.5]{triangular matrices}
            \tlput{0.3}
        \endskiplevels
        \skiplevels{8}
            \MyNodeB[href=1]{band matrices}
            \tlput[labelsep=0]{0.1}
        \endskiplevels
        \tspace{6}\Tn%
    }
    \pstree[treesep=-3.5,levelsep=1.5]%
      {\MyNodeC[ref=t]{Computation}{matrix computation types}}{%
        \def\pspred{Computation}%
        \MyNodeB[href=0.6]{factorizations}
        \psset{levelsep=0.8,labelsep=0.05,tpos=0.8}%
        \skiplevels{1}
            \MyNodeB[href=-0.4]{%
            \Rnode[href=-0.4]{Linear}{linear systems}}
            \tlput[tpos=0.7]{0.3}
        \endskiplevels
        \skiplevels{2}
            \MyNodeB[href=-0.6]{least squares}
            \tlput[tpos=0.75]{0.2}
        \endskiplevels
        \skiplevels{3}
            \MyNodeB[href=-0.6]{eigenvalues}
            \tlput{0.2}
        \endskiplevels
        \skiplevels{4}
            \MyNodeB[href=-0.8]{%
            \Rnode[href=-0.8]{Iterative}{iterative methods}}
            \tlput{0.2}
        \endskiplevels
        \pnode([nodesep=0.8]{\pspred}Linear){LinearB}
        \pnode([nodesep=3.3]{\pspred}Iterative){IterativeB}
        \pscustom*[arrows=-]{%
            \psline(IterativeB)(\pspred)(LinearB)
            \ncarc[arcangle=40]{LinearB}{IterativeB}%
        }%
    }%
}}
\end{document}
