copy from pst-node, there are many errors, is there another package that has the same function
\documentclass[border=3pt]{standalone}
\usepackage{pst-node}
\newcommand\xstrut{\vphantom{\tabular{c}Üg\\Üg\endtabular}}
\newcommand\psBox[3][white]{\rput(#2){\rnode{#2}{%
\psframebox[fillcolor=#1]{\xstrut\makebox[3.2cm]{\tabular{c}#3\endtabular}}}}}
\begin{document}
\begin{pspicture}(-1,-1)(21,7)
\psset{framearc=0.2,shadow,fillstyle=solid,shadowcolor=black!55}
\psBox[blue!30]{7,6}{politische\\Kommunikation}
\psBox[red!30]{3,4}{interpersonale\\Kommunikation}
\psBox[red!30]{13,4}{massenmediale\\Kommunikation}
\psBox[green!30]{1,2}{starke\\Beziehung}
\psBox[green!30]{5,2}{schwache\\Beziehung}
\psBox[green!30]{9,2}{Fernsehen}
\psBox[green!30]{17,2}{Zeitungen}
\psBox[cyan!30]{7,0}{öffentlich-rechtl.\\Fernsehen}
\psBox[cyan!30]{11,0}{privates\\Fernsehen}
\psBox[cyan!30]{15,0}{Boulevard-\\Zeitungen}
\psBox[cyan!30]{19,0}{Abonnement-\\Zeitungen}
\end{pspicture}
\psset{shadow=false,angleA=-90,angleB=90,linewidth=2pt}
\ncangles{7,6}{3,4}\ncangles{7,6}{13,4}
\ncangles{3,4}{1,2}\ncangles{3,4}{5,2}
\ncangles{13,4}{9,2}\ncangles{13,4}{17,2}
\ncangles{9,2}{7,0}\ncangles{9,2}{11,0}
\ncangles{17,2}{15,0}\ncangles{17,2}{19,0}
\def\filebox{%
\pspicture(-1,-.5)(1,.7)
\pspolygon[linearc=2pt,shadow,shadowangle=45,xunit=1.1]%
(-1,-.55)(-1,.5)(-.8,.5)(-.8,.65)(-.2,.65)(-.2,.5)(1,.5)(1,-.55)
\endpspicture}
\filebox
\end{document}
Using a psmatrix
will save you the hassle to have to calculate the position of each node. I added a simplified redefinition of \psBox
, using the eqmakebox
command, which replaces the length argument of the box with a tag: all \makebox[tag]
have for width the natural width of the widest contents. Last, I think that in this sort of diagram, a sans-serif font is better.
\documentclass[border=6pt]{standalone}
\usepackage{pst-node}
\usepackage{eqparbox}
%
\newcommand\xstrut{\vphantom{\tabular{c}Üg\\Üg\endtabular}}
\newcommand\psBox[2][white]{\psset{framearc=0.2, linejoin =1, shadow, fillstyle=solid, shadowcolor=black!55}\psframebox[fillcolor=#1]{\xstrut\eqmakebox[F]{\tabular{c}#2\endtabular}}}
%
\def\filebox{%
\pspicture(-1,-.5)(1,.7)
\pspolygon[linearc=2pt,shadow,shadowangle=45,xunit=1.1]%
(-1,-.55)(-1,.5)(-.8,.5)(-.8,.65)(-.2,.65)(-.2,.5)(1,.5)(1,-.55)
\endpspicture}
\begin{document}
\begin{pspicture}(-1,-1)(3,9)
\sffamily
\def\pscolhookiii{\hskip -2cm}
\begin{psmatrix}
[name=B] \psBox[blue!30]{politische\\Kommunikation} \psspan{5} \\
[name=R1] \psBox[red!30]{interpersonale\\Kommunikation} \psspan{2}
& \hskip 2cm \rnode{R2}{\psBox[red!30]{massenmediale\\Kommunikation}} \psspan{3}\\
[name=G1] \psBox[green!30]{starke\\Beziehung}
& [name=G2] \psBox[green!30]{schwache\\Beziehung}
& [name=G3] \psBox[green!30]{Fernsehen} \psspan{2}
& [name=G4] \psBox[green!30]{Zeitungen} \psspan{2} \\
& & [name=C1] \psBox[cyan!30]{öffentlich-rechtl.\\Fernsehen}
& [name=C2] \psBox[cyan!30]{privates\\Fernsehen}
& [name=C3] \psBox[cyan!30]{Boulevard-\\Zeitungen}
& [name=C4] \psBox[cyan!30]{Abonnement-\\Zeitungen}
\end{psmatrix}
\psset{shadow=false, angleA=-90, angleB=90, armA=6mm, linewidth=2pt, linejoin=1}
\foreach \S/\T in {B/R1,B/R2,R1/G1,R1/G2,R2/G3,R2/G4,G3/C1,G3/C2,G4/C3,G4/C4}{\ncangles{\S}{\T}}
\uput*{2.2}[-8](C4){\filebox}
\end{pspicture}
\end{document}