%% $Id: pstmatrix-doc.tex ch. roemer $
\listfiles
\documentclass[11pt,ngerman,a4paper,BCOR10mm,DIV12,bibliography=totoc,parskip,smallheadings
    headexclude,footexclude,oneside]{pst-doc}
\usepackage[utf8]{inputenc}
\usepackage{babel}

%\setlength{\parindent}{0pt}
%\setlength{\parskip}{1ex plus 0.2ex minus 0.1ex}

\usepackage{pst-node,pst-grad,pstricks-add,pst-blur,float}
\def\tab#1{\tabular{@{}l@{}}#1\endtabular}
\def\OptEinh{\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Einheit}}\kern1pt}

\let\myFV\fileversion

\usepackage{tabularx}
\usepackage{longtable}

\lstset{explpreset={pos=l,rframe=},frame=,backgroundcolor=\color{white},literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
  {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
  {ß}{\ss}1} 


\usepackage{bibgerm}

%\psset{subgriddiv=0,gridlabels=7pt,gridcolor=black!15}
%\hypersetup{pdfauthor={Christine Roemer},pdftitle={psmatrix}}
%
\def\bgImage{\hspace*{1cm}%
\begin{psmatrix}[colsep=0.8cm,rowsep=0.4cm,mcol=c,emnode=r]
    &  & semantische Ebene &  &
    \psshadowbox[framearc=0.25]{Bedeutung}\\
    &  & morphologische Ebene & & \\
[name=A]\tab{pragmatische\\Ebene} & [name=B]& & & \\
    &  & syntaktische Ebene & & \\
    &  & \tab{phonetisch-phonologische Ebene\\graphische Ebene}
   & & \psshadowbox[framearc=0.25]{Formativ}
\end{psmatrix}
\psset{nodesep=3pt,arrowscale=1.5,arrows=->,
  armA=6mm,angleB=180}
\ncline{A}{B}
\ncangles{A}{1,3} \ncangles{A}{2,3}
\ncangles{A}{4,3} \ncangles{A}{5,3}
\ncline{1,3}{1,5} \ncline{5,3}{5,5}
\ncline{<->}{1,5}{5,5}%
}

\lstset{basicstyle=\ttfamily\footnotesize}

\begin{document}
\author{Timothy van Zandt\\Herbert Vo\ss}
\docauthor{Christine R\"omer}
\date{\today}
\title{Schematische \"Ubersichten mit \texttt{psmatrix}}

\maketitle%

\tableofcontents

\clearpage
\begin{abstract}
Mit der
\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} k\"onnen  au{\ss}erhalb 
einer mathematischen 
Umgebung vielfältige schematische \"Ubersichten gesetzt werden. Das Makro \texttt{psmatrix}
wird nicht extra geladen. Es ist in verschiedene Pakete des
PSTricks-Verbundes\index{PSTricks-Verbund}
(\texttt{pstricks,\\pst-node,pst-grad})\index{pstricks@\texttt{pstricks}}
\index{pst-node@\texttt{pst-node}} \index{pst-grad@\texttt{pst-grad}} integriert
 und wird mit ihnen aufgerufen.

\vfill\noindent
Danke f\"ur die Unterst\"utzung bei der Erstellung dieser Dokumentation an Herbert Vo\ss.
\end{abstract}


\section{Einf\"uhrung}

Mit der
\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} k\"onnen  
au{\ss}erhalb einer mathematischen 
Umgebung schematische \"Ubersichten gesetzt werden. Sie basiert auf dem
Tabellenmakro \texttt{array}\index{array@\texttt{array}} und gleicht ihm deshalb in der 
Syntax. Es hat jedoch nicht dessen 
Einschr\"ankungen bez\"uglich Verbindungen über die Zellen und Zeilen hinweg. Das Makro 
\texttt{psmatrix}
wird nicht extra geladen. Es ist in verschiedene Pakete des
PSTricks-Verbundes\index{PSTricks-Verbund}
(\texttt{pstricks,\\pst-node,pst-grad})\index{pstricks@\texttt{pstricks}}
\index{pst-node@\texttt{pst-node}} \index{pst-grad@\texttt{pst-grad}} integriert und 
wird mit ihnen aufgerufen.

\section{Erstellen einer Matrix}
\subsection{Einordnung}

Das Makro \bs{\texttt{psmatrix}} arbeitet sowohl in einer \TeX - als auch
\LaTeX-Umgebung:

\begin{BDef}
\Lcs{psmatrix}\OptArgs \ldots\ \Lcs{endpsmatrix} &  \% TeX-Version\\
\LBEG{psmatrix}\OptArgs \ldots \ \LEND{psmatrix} &  \% LaTeX-Version
\end{BDef}

Da mit der \TeX-Version einige Einschr\"ankungen verbunden sind, wird nur auf
die \LaTeX-Variante eingegangen. Das Grundprinzip des Strukturaufbaus
stellt eine Knoten- und Knotenverbindungszuordnung dar. Diese kann mehrfach
geschachtelt und sowohl bei der Knotenbelegung als auch
Verbindungsdarstellung in verschiedener Weise ausgestalltet werden. Dazu
stellt der PSTricksverbund zahlreiche Makros bereit.

\subsection{Matrixgrundstruktur}\index{Matrixgrundstruktur}

Die Knoten werden in der Art einer Tabelle innerhalb der
\texttt{psmatrix}-Umgebung\index{psmatrix@\texttt{psmatrix}-Umgebung} angeordnet.

\begin{LTXexample}[width=.3\linewidth]
\begin{psmatrix}[rowsep=0.2cm]
1 & 2 & 3 \\
X & Y & Z
\end{psmatrix}
\end{LTXexample}


\section{Zuordnung Knoten zu Verbindungen}

Die Matrix entsteht durch die Zuordnung von Knoten zu Verbindungen. Die
Knoten werden in die Zellen in der \texttt{psmatrix}-Umgebung eingetragen
(siehe obiges Beispiel). Nach \bs{\texttt{end}}\{\texttt{psmatrix}\} werden die gew\"unschten
Linien definiert. Grunds\"atzlich geschieht dies nach dem Schema

\psframebox{\bs
nc\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Verbindung}}
[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
\{Koordinaten ZelleA\}\{Koordinaten ZelleB\}}

Die Koordinaten\index{Zellen-Koordinaten} werden, wenn den Zellen keine
Namen gegeben werden (siehe
Parameter \texttt{name}),
durch abz\"ahlen gewonnen: jeweils erst die Zeile und danach durch Komma abgetrennt
die Zelle.

\vspace{4mm}
\begin{LTXexample}[width=.3\linewidth]
\begin{psmatrix}[rowsep=0.2cm]
1 & 2 & 3 \\
X & Y & Z
\end{psmatrix}
\ncline[linecolor=red]{1,1}{2,2} 
\ncline[linecolor=green]{1,3}{2,2}
\ncline[linestyle=dotted]{<-}{1,2}{2,1} 
\ncline[linestyle=dashed]{->}{1,2}{2,3}
\end{LTXexample}


\section{Knotenparameter}
\subsection{mnode}\index{mnode@\texttt{mnode}}

Der Parameter \texttt{mnode=<Knotenart>} legt die Knotenart fest. Das kann lokal für
einzelne Knoten oder global für die ganze Matrix erfolgen (siehe folgende
Beispiele). Dazu muss neben
dem Paket \texttt{pstricks}\index{pstricks@\texttt{pstricks}} auch
\texttt{pst-node}\index{pst-node@\texttt{pst-node}} geladen werden.

\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm]
1 & 2 \\
X & Y 
\end{psmatrix}
\end{LTXexample}

\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm]
1 & 2 \\
[mnode=dia] X & Y 
\end{psmatrix}
\end{LTXexample}

Folgende \textbf{Knotenarten}\index{Knotenarten} stehen zur Verf\"ugung. Ihr Aufruf erfolgt mit
\texttt{mnode=} über die in Klammern angegebenen K\"urzel.

\begin{compactitem}
  \item \texttt{Rnode} (R):\index{Rnode@\texttt{Rnode} (R)}
  Es wird damit das Eingetragene zur Basislinie
  positioniert. Mittels Optionen kann dies variiert werden.
\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[rowsep=0.2cm,linecolor=blue,radius=0.5]
X & [mnode=R,vref=0pt] Y
\end{psmatrix}
\ncline{1,1}{1,2}
\end{LTXexample}

\item \texttt{Cnode} (C):\index{Cnode@\texttt{Cnode} (C)}  Ungef\"ullte Kreise werden gesetzt. 
Deren Radius mit   dem Parameter \texttt{radius}\index{radius@\texttt{radius}} modifiziert
werden kann. Es muss irgendetwas eingetragen werden, was dann aber nicht erscheint.
\vspace{2mm}
\begin{LTXexample}[width=.3\linewidth]
\begin{psmatrix}[mnode=C,rowsep=0.2cm,linecolor=blue,radius=0.5]
       X & Y
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}

\item \texttt{pnode} (p):\index{pnode@\texttt{pnode} (p)}  Ein Knoten mit dem Radius Null, ein 
leerer Knoten (siehe folgendes Beispiel, wo der Knoten 1 leer gesetzt wird).

\item \texttt{Circlenode}
(Circle):\index{Circlenode@\texttt{Circlenode} (Circle)}  Ein Knoten, der von einem Kreis 
umschlossen
wird, dessen Umfang richtet sich nach dem Inhalt. Er kann mit der Option
\texttt{radius} modifiziert werden (siehe obiges Beispiel).

\vspace{2mm}
\begin{LTXexample}[width=.42\linewidth]
\begin{psmatrix}[mnode=Circle,radius=1cm,rowsep=0.2cm]
             X &  Y \\
[mnode=p] 1 &  2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}

\item \texttt{dianode} (dia):\index{dianode@\texttt{dianode} (dia)}  Ein Knoten, der von 
einer Raute umschlossen
wird, deren Umfang richtet sich nach dem Inhalt 

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=dia,rowsep=0.2cm,colsep=0.7cm]
             X &  Y \\
             1 &  2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}

\item \texttt{dotnode} (dot):\index{Rnode@\texttt{dotnode}  (dot)}  Es wird im unmarkierten 
Fall ein gef\"ullter Kreisknoten gesetzt, der
u.\,a. \"uber den Parameter \texttt{dotscale} gesteuert
werden kann.

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=dot,rowsep=0.2cm]
[mnode=dot,dotscale=3] X &  Y \\
[mnode=dot,dotscale=2,dotstyle=triangle]1&2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}

\item \texttt{rnode} (r):\index{Rnode@\texttt{rnode} (r)}
Unterscheidet sich von \bs{rnode} (R) in der
Festlegung des Knotenzentrums, das ohne optionale Parameter das Zentrum
der umgebenden Box ist. Eingesetzter "`Text"' erscheint pur.

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=r,rowsep=0.2cm]
             X &  Y \\
             1 &  2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}



\item \texttt{fnode} (f):\index{fnode@\texttt{fnode} (f)}  Ein leerer
Rahmen, dessen Gr\"o{"s}e \"uber
\texttt{framesize=} und
Koordinatenfestlegungen beeinflusst werden kann.%\footnote{Diese Funktion
%ist bisher nur eingeschr\"ankt nutzbar, die K\"astchen einer Zeile werden nicht getrennt. 
%Mit "`Text"' gef\"ullte K\"astchen k\"onnen einfach mit \bs{\texttt{fbox}\{
%\}} oder \bs{\texttt{psframebox}\{ \}} gesetzt werden.}

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=f,rowsep=0.2cm]
             X &  Y \\
             1 &  2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}


\item \texttt{circlenode}
(circle):\index{circlenode@\texttt{circlenode} (circle)}  Entspricht
weitgehend \texttt{Circlenode}. Es
kann aber nicht der Radius ge\"andert werden.

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=circle,rowsep=0.2cm,colsep=1cm]
             X &  Y \\
             1 &  2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}
  
\item \texttt{ovalnode} (oval):\index{ovalnode@\texttt{ovalnode} (oval)}  Ovaler Knoten, 
dessen Gr\"o"se aus dem Inhalt resultiert.

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=oval,rowsep=0.2cm,colsep=0.7cm]
             XX &  YY \\
             1 &  2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}
  

\item \texttt{trinode} (tri):\index{trinode@\texttt{trinode} (tri)}
Dreieck, dessen Gr\"o"se aus dem Inhalt resultiert.

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[mnode=tri,rowsep=0.2cm,colsep=0.7cm]
             X &  Y \\
             1 &  2 
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}

Mit der Option \texttt{trimode}\index{trimode@\texttt{trimode}} kann die Lage der Dreiecke verändert
werden. Die Sternversion verkleinert die Basis und erzeugt aus
stumpfwinkligen (Winkel zwischen 90 und 180 Grad) spitzwinkelige (kleiner
als 90 Grad) Dreiecke.
\vspace{2mm}
\begin{table}[H]
\centering
\caption{Ver\"anderung der Dreieckslage}
\begin{tabular}{@{}ll@{}}
Befehl & Lage des Dreiecks \\ \hline
\texttt{trimode=U} & Spitze oben \\
\texttt{trimode=D} & Spitze unten \\
\texttt{trimode=R} & Spitze rechts \\
\texttt{trimode=L} & Spitze links 
\end{tabular}
\end{table} 

\vspace{2mm}
\begin{LTXexample}[width=.25\linewidth]
\begin{pspicture}(0,-2)(3,2)
\begin{psmatrix}[mnode=tri,rowsep=0.2cm,colsep=0.7cm]
  [trimode=U] Dreieck \\
  [trimode=*D]Dreieck 
\end{psmatrix}
\end{pspicture}
\end{LTXexample}
\vspace{2mm}


  \item \texttt{no node} (none):\index{no node@\texttt{no node} (none)}  Ohne Knoten, was für das 
  Einf\"ugen von Verbindungslinien sinnvoll sein kann.

 
\end{compactitem}



\subsection{emnode}\index{emnode@\texttt{emnode}}

Mit \texttt{emnode} k\"onnen verschiedene Arten (Parameter wie bei
\texttt{mnode} von Knoten für "`leere"' Zellen gesetzt
werden. Es muss also nichts in die Zellen eingetragen werden. Wie
nachfolgendes Beispiel auch belegt, kann es dabei auf der rechten Seite zu
fehlerhaften Ausgaben kommen, weil
\bs{pst-node}\index{pst-node@\texttt{pst-node}} da noch nicht v\"ollig korrekt
arbeitet.


\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[emnode=circle,rowsep=0.2cm,colsep=2cm]
              &  \\
              &   
\end{psmatrix}
\end{LTXexample}
\vspace{2mm}

\subsection{nodealign}\index{nodealign@\texttt{nodealign}}

Der Parameter \texttt{nodealign} kann in [\texttt{nodealign=true}]
abge\"andert werden, um das Zentrum des Knotens auf die Basisebene zu
verschieben (vgl. \cite[S.\,259]{PSTricks2}).

\section{Parameter zu Zellen und Zeilen}

\subsection{name}\index{name@\texttt{name}}

Der Parameter \texttt{name} erm\"oglicht es, jeder Zelle einen
selbstgew\"ahlten Namen zu geben, der am Anfang einer Zelle eingef\"ugt werden
muss. Dies kann beim Setzen von Linien die
Arbeit erleichtern, man muss dann nicht die Positionen ausz\"ahlen.

\vspace{2mm}
\begin{LTXexample}[width=.4\linewidth]
\begin{psmatrix}[emnode=r,colsep=0.4cm,
                          rowsep=0.4cm]
        & [name=A] Buch    &  \\
[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman
\end{psmatrix}
\psset{nodesep=3pt,arrows=->}
\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} 
\end{LTXexample}
\vspace{2mm}


Au"serdem ist es \"uber diese Zellenfestlegung m\"oglich, auch \Lcs{pcline} und
\Lcs{psline} in einer Matrixumgebung zu benutzen. Diese nehmen die
Koordinatenargumente (hier gleich Zellennamen) aber in runden Klammern, wie
in dem folgenden Beispiel zu sehen ist. 

\vspace{2mm}
\begin{LTXexample}[width=.45\linewidth]
\begin{psmatrix}[emnode=r,colsep=1cm,
                          rowsep=0.4cm]
[name=A]Buch  \psspan{3}  &  \\[1cm]
[name=B]Fachbuch & [name=C]Lehrbuch & 
[name=D]Roman
\end{psmatrix}
\psset{nodesep=3pt,arrows=->,linecolor=red}
\psline(A)(C)
\pcline(A)(B) 
\nbput*[nrot=:D]{\footnotesize \texttt{pcline}}
\ncline{A}{D} 
\naput*[nrot=:U]{\footnotesize \texttt{ncline}}
\end{LTXexample}

\Lcs{pcline} geht immer vom Zentrum aus und kann nicht an einer
Umgebungsbox beginnen oder aufh\"oren. Sie kann deshalb von
\texttt{nodesep} nicht beeinflusst werden. Andere Parameter --
beispielsweise \texttt{offset=},\index{offset@\texttt{offset}} der eine vertikale Verschiebung
erm\"oglicht, -- k\"onnen das aber schon. \Lcs{psline}
reagiert wiederum darauf nicht.

\vspace{2mm}
\begin{LTXexample}[width=.3\linewidth]
\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm]
[name=A]Fachbuch &  \\[1cm]
                 & [name=C]Roman 
\end{psmatrix}
\psset{nodesep=3pt,arrows=<-,linecolor=red,offset=0.3cm}
\pcline(A)(C)
\pcline(C)(A)
\end{LTXexample}

\begin{LTXexample}[width=.3\linewidth]
\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm]
        [name=A] Fachbuch   &  \\[1cm]
             & [name=C] Roman 
\end{psmatrix}
\psset{nodesep=3pt,arrows=->,linecolor=red,offset=1cm}
\psline(A)(C)
\psline(C)(A)
\end{LTXexample}



\subsection{mcol}\index{mcol@\texttt{mcol}}

Mit \texttt{mcol} kann lokal und global der horizontale
Zellenabstand\index{Zellenabstand!horizontal}
mit den Optionen \texttt{l,r,c} modifiziert werden.

\vspace{2mm}
\begin{LTXexample}[width=.4\linewidth]
\begin{psmatrix}[emnode=r,colsep=0.4cm,
                  rowsep=0.4cm,mcol=r]
        & [name=A] Buch    &  \\
[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman
\end{psmatrix}
\psset{nodesep=3pt,arrows=->}
\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} 
\end{LTXexample}
\vspace{2mm}

\begin{LTXexample}[width=.4\linewidth]
\begin{psmatrix}[emnode=r,colsep=0.4cm,
                 rowsep=0.4cm,mcol=l]
 & [name=A]Buch &  \\
[name=B]Fachbuch & [name=C]Lehrbuch & [name=D]Roman
\end{psmatrix}
\psset{nodesep=3pt,arrows=->}
\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} 
\end{LTXexample}

\subsection{rowsep und colsep}\index{Abstand!Zellen und Zeilen}

Mit \texttt{rowsep}\index{rowsep@\texttt{rowsep}} kann man den
vertikalen und mit \texttt{colsep}\index{colsep@\texttt{colsep}}
den horizontalen Abstand zwischen
den Zeilen bzw. Zellen regulieren; welchen hinzuf\"ugen oder mit einem
negativen Wert reduzieren (siehe Beispiele bei \texttt{name}).

\subsection{mnodesize}\index{mnodesize@\texttt{mnodesize}}

Im Defaultfall wird die Breite der Zellen\index{Zelle!Breite} von deren Inhalt bestimmt;
innerhalb einer Zellenspalte von der mit dem gr\"o"sten Umfang. Mit
\texttt{mnodesize=} kann allen Spalten dieselbe Breite gegeben werden.
Dabei ist zu beachten, dass kein automatischen
Zeilenumbruch\index{Zelle!Zeilenumbruch} in den Zellen
erfolgt. Man kann in eine Zelle jedoch mehrere Zeilen über eine Tabelle
einbringen.

\begin{LTXexample}[width=.52\linewidth]
\begin{psmatrix}[emnode=r,
colsep=-0.4cm,rowsep=0.6cm,
mnodesize=3cm]
& [name=A] 
  \begin{tabular}{c}Grafische\\Grundelemente\end{tabular} &  \\
[name=B]Linien & [name=C]Polygone & 
[name=D]Rahmen
\end{psmatrix}
\psset{nodesep=3pt,arrows=->}
\ncline{A}{B} \ncline{A}{C} 
\ncline{A}{D} 
\end{LTXexample}

Wenn der von \texttt{mnodesize=} festgelegte Raum nicht ausreichend ist
erweitert sich einfach die Zelle.

\subsection{psspan}\index{psspan@\texttt{psspan}}

Mit \texttt{psspan\{n\}} k\"onnen Zellen analog zu
\bs{multicolumn}\index{multicolumn@\texttt{\textbackslash{multicolumn}}} mehrere
Zellen\index{Zellen!zusammenfassen} zusammengefasst werden.

\begin{LTXexample}[width=.4\linewidth]
\begin{psmatrix}[emnode=r,colsep=0.4cm,
rowsep=0.4cm]
[name=A]Buch  \psspan{3}  &  \\
[name=B]Fachbuch  & [name=C]Lehrbuch & [name=D]Roman
\end{psmatrix}
\psset{nodesep=3pt,arrows=->}
\ncline{A}{B} \ncline{A}{C} \ncline{A}{D} 
\end{LTXexample}


\section{Knotenverbindungen}\index{Knotenverbindung}

Die Knotenverbindungen beginnen in der Regel mit \texttt{nc} und haben die Syntax:

\begin{BDef}
\bs{Knotenverbindung}\OptArgs\{Pfeile\}\{KnotenA\}\{KnotenB\}
\end{BDef}

Sie gehen von einem Knoten zu einem anderen, wenn es nicht anders festgelegt
wurde, ist die Zielorientierung die Knotenmitte.

Die Knotenverbindungen können über eine Reihe von Parametern geändert
werden (vgl. \cite[S.\,43\,f]{PSTricks2} und \cite{siart}). Einige, die für das Zeichnen von
Strukturen besonders relevant sind, werden in der nachfolgenden Tabelle 
aufgelistet:\index{Knotenverbindung!Parameter}

\begin{table}[H]
\centering
\caption{Parameter f\"ur Knotenverbindungen}
\begin{tabular}{@{}lll@{}}
Name & Werte & Vorgabe \\ \hline
\texttt{linewidth} & <Wert>\OptEinh\ & 0.8pt \\
\texttt{linecolor} & <Farbe>         & black \\
\texttt{linestyle} & none|solid|dotted|dashed & solid \\
\texttt{shadow}    & <an (true)/aus (false)> & false \\
\texttt{shadowsize} & <Wert>\OptEinh\ & 3pt \\
\texttt{shadowangle} & <Winkel>  & $-$45 \\
\texttt{shadowcolor} & <Farbe> & darkgray \\
\texttt{arrows} & <Pfeiltyp> & -- \\
\texttt{doubleline} & <true/false> & false
\end{tabular}
\end{table}

\subsection{ncline}

Mit \Lcs{ncline} wird eine direkte Linie von einem Knoten zum anderen
gezogen\footnote{Wenn Sie das nächste Beispiel mit den
folgenden Beispielen vergleichen, können Sie auch sehen, dass eine bessere
Positionierung in einer einfachen Box über die Umgebung
\bs{\texttt{pspicture}}
m\"oglich ist. Zumal ohne diese Umgebung die Kurvenlinien \"uber die Box
hinausragen w\"urden, wie dies im ersten Beispiel zu \texttt{ncdiag} der
Fall ist.}.

\begin{LTXexample}[width=.35\linewidth]
\begin{psmatrix}[emnode=r,colsep=2cm]
 KnotenX   &  KnotenY
\end{psmatrix}
\ncline[linecolor=red]{1,1}{1,2}  
\end{LTXexample}


\subsection{ncarc}\xLcs{ncarc}

Eine Kurve verbindet die Knoten. 

\begin{LTXexample}[width=.35\linewidth]
\begin{pspicture}(0,-0.5)(4,1)
\begin{psmatrix}[emnode=r,colsep=2cm]
        KnotenX   &  KnotenY
\end{psmatrix}
\ncarc[linecolor=red]{<->}{1,1}{1,2} 
\end{pspicture}
\end{LTXexample}

Mit der Option \texttt{arcangle=}\index{arcangle@\texttt{arcangle}} kann der
Steigungswinkel\index{Steigungswinkel} erh\"oht werden.

\begin{LTXexample}[width=.35\linewidth]
\begin{pspicture}(0,-0.5)(4,1)
\begin{psmatrix}[emnode=r,colsep=2cm]
        KnotenX   &  KnotenY
\end{psmatrix}
\ncarc[arcangle=60,linecolor=red]{<->}{1,1}{1,2}  
\end{pspicture}
\end{LTXexample}

In der Sternchenversion wird der von der Kurve eingeschlossenen Raum mit
der Linienfarbe ausgefüllt.

\begin{LTXexample}[width=.4\linewidth]
\begin{pspicture}(0,-0.5)(4,1)
\begin{psmatrix}[emnode=r,colsep=2cm]
        KnotenX   &  KnotenY
\end{psmatrix}
\ncarc*[arcangle=60,linecolor=red]{<->}{1,1}{1,2}  
\end{pspicture}
\end{LTXexample}


\subsection{ncdiag}

Mit \Lcs{ncdiag} wird eine Linie in drei Segmente "`zerlegt"'. Man kann
diese Zerlegung über die Winkelfestlegungen (siehe folgendes Beispiel)
steuern.

\begin{LTXexample}[width=.4\linewidth]
\begin{psmatrix}[emnode=r,colsep=2cm]
        KnotenX   &  KnotenY
\end{psmatrix}
\ncdiag[angleA=90,angleB=-90,linecolor=red]{<->}{1,1}{1,2}  
\end{LTXexample}

Die Angabe \texttt{arm=0}\index{arm@\texttt{arm}} erzwingt eine gerade Linie.

\begin{LTXexample}[width=.4\linewidth]
\begin{psmatrix}[emnode=r,colsep=2cm]
        KnotenX   &  KnotenY
\end{psmatrix}
\ncdiag[angleA=-90,angleB=90,arm=0,linecolor=red]{<->}{1,1}{1,2}  
\end{LTXexample}

\subsection{ncdiagg}

\Lcs{ncdiagg} ist \Lcs{ncdiag} \"ahnlich. Für den Ausgangsknoten wird aber
nur eine Verbindung gezeichnet.

\begin{LTXexample}[width=.3\linewidth]
\usepackage{pstricks-add}
\begin{pspicture}(-1,-1)(4,6)
  \circlenode{A}{A}\quad\circlenode{C}{C}
  \rput(0,4){\circlenode{B}{B}}
  \rput(1,5){\circlenode{D}{D}}
  {\psset{arrowscale=2,linearc=0.2,
    linecolor=red,armA=0.5,angleA=90}
  \ncdiagg[lineAngle=-160]{->}{A}{B}
  \ncput*[nrot=:U]{Linie I}
  \ncdiagg[lineAngle=-160]{->}{C}{D}
  \ncput*[nrot=:U]{Linie II}}
\end{pspicture}
\end{LTXexample}

\subsection{ncbar}

\Lcs{ncbar} arbeitet ähnlich wie \Lcs{ncdiag}. Zwei Knoten werden
durch drei Linienteile verbunden.

\begin{LTXexample}[width=.4\linewidth]
\begin{pspicture}(0,1)(4,-2)
\begin{psmatrix}[emnode=r]
\psset{arrowscale=2}
Verbinde {\rnode{A}{KnotenX}} mit 
{\rnode{B}{KnotenY}}!
\end{psmatrix}
\ncbar[nodesep=3pt,angleA=-90,angleB=90,linecolor=red,arrows=<->,arrowscale=2,
arm=0.8]{A}{B}
\end{pspicture}
\end{LTXexample}


\subsection{ncbarr}

\Lcs{ncbarr} verwendet f\"unf Liniensegmente und erstellt damit eine
S-f\"ormige Verbindung.

\begin{LTXexample}[width=.3\linewidth]
\begin{psmatrix} 
 & \circlenode{X}{X}\\[1cm]
 & \circlenode{Y}{Y}
\end{psmatrix}
\ncbarr[angleA=0,linecolor=red]{X}{Y}
\end{LTXexample}


\subsection{ncangle}

\Lcs{ncangle} erm\"oglich genauer berechnete dreiteilige Linien. Es
arbeitet analog zu \Lcs{ncdiag}.

\begin{LTXexample}[width=.37\linewidth]
\begin{pspicture}(0,1)(4,-1)
\begin{psmatrix}[emnode=r,colsep=2cm,
                 rowsep=0.5cm]
KnotenX &  KnotenY \\
\end{psmatrix}
\ncdiag[angleA=-90,angleB=135,armA=1cm,armB=1cm,
linearc=.5,linecolor=red]{->}{1,1}{1,2}
\end{pspicture}
\end{LTXexample}

\subsection{ncangles}

\Lcs{ncangles} produziert viergliedrige Linien.

\begin{LTXexample}[width=.4\linewidth]
\begin{pspicture}(0,1)(4,-2.3)
\begin{psmatrix}[emnode=r,colsep=2cm,
                 rowsep=0.5cm]
\psframebox{\emph{KnotenX}} & 
\psframebox{\emph{KnotenY}}
\end{psmatrix}
\ncangles[angleA=-90,angleB=135,armA=1cm,
          armB=1cm,
linearc=.15,linecolor=red]{->}{1,1}{1,2}  
\rput[bl](-5,-0.7){armA}
\rput[rB](-0.4,0.5){armB}
\end{pspicture}
\end{LTXexample}

\subsection{ncloop}

\Lcs{ncloop} setzt f\"unfgliedrige Linien. Gegenüber \Lcs{ncangles}
kommt noch die Option \texttt{loopsize}\index{loopsize@\texttt{loopsize}} hinzu, die die 
H\"ohe für einen Loop (eine Schlinge) vorgibt.


\begin{LTXexample}[width=.45\linewidth]
\begin{pspicture}(-1.5,-1)(4,2)
\rnode[lB]{A}{\psframebox{Knoten mit Schlinge}}
\ncloop[angleB=180,loopsize=1,arm=.5,
  linearc=.2,linecolor=red]{->}{A}{A}
\ncput[npos=3.5,nrot=:U]{\psline{|<->|}%
  (0.5,-0.2)(-0.5,-0.2)}
\nbput[npos=3.5,nrot=:D,labelsep=.35cm]{%
  {\small\texttt{loopsize}}}
\end{pspicture} 
\end{LTXexample}

\subsection{nccurve}

\Lcs{nccurve} setzt eine B\`ezierkurve zwischen zwei Knoten, die über
die Winkel \texttt{angleA} und \texttt{angleB} sowie den
Kurvenparameter\index{Kurvenparameter}
\texttt{ncurv}\index{nccurv@\texttt{nccurv}} gesteuert werden kann.

\begin{LTXexample}[width=.4\linewidth]
\begin{psmatrix}[emnode=r,colsep=2cm,
rowsep=0.5cm]
{\rnode{A}{\psframebox{KnotenX}}} & \\
& {\rnode{B}{\psframebox{KnotenY}}}
\end{psmatrix}
\nccurve[angleB=180,ncurv=0.9,
linecolor=red]{A}{B}
\end{LTXexample}

\subsection{nccircle}

\Lcs{nccircle} erzeugt \"uber einem Knoten einen ungef\"ullten oder gef\"ullten
(Sternchenversion) Kreis.

\vspace{2mm}
\begin{LTXexample}[width=.25\linewidth]
\begin{pspicture}(-1,-1)(3,2)
\begin{psmatrix}[emnode=r]
\rnode{A}{herum}
\end{psmatrix}
\nccircle[nodesep=3pt,linecolor=red]{->}{A}{.8cm}
\kern 5pt
\end{pspicture}
\end{LTXexample}

\vspace{2mm}
\begin{LTXexample}[width=.25\linewidth]
\begin{pspicture}(-1,-1)(3,2)
\begin{psmatrix}[emnode=r]
\rnode{A}{dar\"uber}
\end{psmatrix}
\nccircle*[nodesep=3pt,linecolor=lightgray]{->}{A}{1cm}
\kern 5pt
\end{pspicture}
\end{LTXexample}

\subsection{offset}

Die Option \texttt{offset}\index{offset@\texttt{offset}} verschiebt, wie
schon bei den Erl\"auterungen zu dem Parameter \texttt{name} angesprochen,
die Verbindungslinie parallel zum eigentlich festgelegten Verlauf. Dies ist
besonders bei zwei Linien sinnvoll und effektiv.
Wenn man jede Linien einzeln modifizieren m\"ochte, kann dies mit
\texttt{offsetA}\index{offsetA@\texttt{offsetA}}  und
\texttt{offsetB}\index{offsetB@\texttt{offsetB}} 
geschehen. Beispielsweise, wenn von
einem Knoten zwei Verbindungen ausgehen sollen.

\vspace{2mm}
\begin{LTXexample}[width=.2\linewidth]
\begin{psmatrix}[emnode=r,colsep=1cm,rowsep=0.4cm]
[name=A]Buch  \\
[name=B]Fachbuch \\
[name=C]\LaTeX buch 
\end{psmatrix}
\psset{nodesep=3pt,arrows=->,linecolor=red,offset=0.3cm}
\pcline[offsetA=0.3cm](A)(B)
\pcline[offsetB=-0.3cm](A)(C)
\end{LTXexample}


\section{Linien beschriften}\index{Linienbeschriftung}

\subsection{Beschriftung einf\"ugen}

\psframebox{\parbox{0.65\textwidth}{
\bs ncput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*}
[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
\{Beschriftung auf der Linie\}\\
\bs naput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*}
[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
\{Beschriftung \"uber der Linie\}\\
\bs nbput\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{*}
[\psframebox[framesep=2pt,fillstyle=solid,fillcolor=black!20,linecolor=black!20]{\texttt{Optionen}}]
\{Beschriftung unter der Linie\}
}}

\begin{LTXexample}[width=.4\linewidth]
\begin{pspicture}(0,1)(4,-2)
\begin{psmatrix}[emnode=r]
\psset{arrowscale=2}
Verbinde {\rnode{A}{KnotenX}} mit 
{\rnode{B}{KnotenY}}!
\end{psmatrix}
\ncbar[nodesep=3pt,angleA=-90,angleB=90,
linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
{A}{B}
\ncput*{auf}
\naput*{\"uber}
\nbput*{unter}
\end{pspicture}
\end{LTXexample}

Die angegebene Sternchenversion ist besser geeignet, da sie die Linien
überschreibt und damit die Beschriftungen besser sichtbar sind (vgl. mit
der nachfolgenden Beispielversion ohne Sternchen). Das betrifft besonders
die \texttt{naput}-Version.

\begin{LTXexample}[width=.4\linewidth]
\begin{pspicture}(0,1)(4,-2)
\begin{psmatrix}[emnode=r]
\psset{arrowscale=2}
Verbinde {\rnode{A}{KnotenX}} mit 
{\rnode{B}{KnotenY}}!
\end{psmatrix}
\ncbar[nodesep=3pt,angleA=-90,angleB=90,
linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
{A}{B}
\ncput{auf}
\naput{\"uber}
\nbput{unter}
\end{pspicture}
\end{LTXexample}

Ohne die Angabe von Optionen wird die Beschriftung auf den sichtbaren
Linienteil geschrieben. Sie orientiert sich dabei an der Linienmitte.
Mit \texttt{npos=}\index{npos@\texttt{npos}} und
\text{nrot=}\index{nrot@\texttt{nrot}} kann diese Orientierung ge\"andert werden.

Mit \Lcs{psset}\{labelset=\} kann der Abstand zwischen Label und Linie
reguliert werden. Wenn der Wert auf 0pt gesetzt wird (also direkt über oder
unter der Linie, sollte f\"ur \Lcs{naput} bzw. \Lcs{nbput}  nicht die
Sternchenversion gew\"ahlt werden, die wahrscheinlich ohnehin nur f\"ur
\Lcs{ncput} sinnvoll scheint. Die Nullversion ist immer dann zu nehmen,
wenn es Probleme mit dem Sichtbarmachen des Labels gibt.

\subsection{npos}

\texttt{npos} ermöglicht die Platzierung der Beschriftung auf den
verschiedenen Segmenten des entsprechenden Linientyps. Die Zahl gibt vor
dem Punkt die Segmentnummer (0,1,2,\ldots) und nach dem Punkt den Abstand
zum Segmentanfang an. Im folgenden Beispiel bekommt die Beschriftung den
Wert 1.2 und steht damit auf dem zweiten Liniensegment 20\% vom
Segmentanfang.

\begin{table}[H]
\centering
\caption{Zusammenstellung der Kurzformen für die Drehwinkel}\label{tab:wind}
  \begin{tabular}{@{}l|*{8}{>{\ttfamily}c}@{}}
  \emph{Buchstabe} & U & L & D & R & N & W & S & E \\\hline
  \emph{Bedeutung} & Up& Left&Down&Right&North&West&South&East\\
  \emph{Enstprechung} &0&90&180&270&*0&*90&*180&*270
%
%    \begin{tabular}{@{}>{\ttfamily}llr@{}}
%      \textrm{Buchstabe} & Bedeutung & Winkel\\\hline
%      U & Up & 0\\
%      L & Left & 90\\
%      D & Down & 180\\
%      R & Right & 270\\
%      N & North & *0\\
%      W & West & *90\\
%      S & South & *180\\
%      E & East & *270
    \end{tabular}
\end{table}

\begin{LTXexample}[width=.4\linewidth]
\begin{pspicture}(0,1)(4,-2)
\begin{psmatrix}[emnode=r]
\psset{arrowscale=2}
Verbinde {\rnode{A}{KnotenX}} mit 
{\rnode{B}{KnotenY}}!
\end{psmatrix}
\ncbar[nodesep=3pt,angleA=-90,angleB=90,
linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
{A}{B}
\ncput*[npos=1.2]{auf}
\end{pspicture}
\end{LTXexample}


\subsection{nrot}

\texttt{nrot=:Winkel/K\"urzel} erm\"oglicht es die Beschriftung zu
drehen:

\begin{table}[htb]
\centering\tabcolsep=3pt
\caption{Vergleich der verschiedenen Knotenverbindungen bez\"uglich ihrer
Segmentanzahl}\label{tab:segmente}
\hspace*{-1em}
\begin{tabular}{@{} lccc | lccc @{}}
\emph{Verbindung} & \emph{Segm.} & \emph{Bereich} & \emph{Vorgabe} &
\emph{Verbindung} & \emph{Segm.} & \emph{Bereich} & \emph{Vorgabe}\\\hline
 \Lcs{ncline}    & $1$ & $0\leq npos\leq 1$ & $0.5$ &
 \Lcs{nccurve}   & $1$ & $0\leq npos\leq 1$ & $0.5$\\
 \Lcs{ncarc}     & $1$ & $0\leq npos\leq 1$ & $0.5$ &
 \Lcs{ncbar}     & $3$ & $0\leq npos\leq 3$ & $1.5$\\
 \Lcs{ncdiag}    & $3$ & $0\leq npos\leq 3$ & $1.5$ &
 \Lcs{ncdiagg}   & $2$ & $0\leq npos\leq 2$ & $0.5$\\
 \Lcs{ncangle}   & $3$ & $0\leq npos\leq 3$ & $1.5$ &
 \Lcs{ncangles}   & $4$ & $0\leq npos\leq 4$ & $1.5$\\
 \Lcs{ncloop}    & $5$ & $0\leq npos\leq 5$ & $2.5$ &
 \Lcs{nccircle}  & $1$ & $0\leq npos\leq 1$ & $0.5$\\
\end{tabular}
\end{table}


\begin{LTXexample}[width=.4\linewidth]
\begin{pspicture}(0,1)(4,-2)
\begin{psmatrix}[emnode=r]
\psset{arrowscale=2}
Verbinde {\rnode{A}{KnotenX}} mit 
{\rnode{B}{KnotenY}}!
\end{psmatrix}
\ncbar[nodesep=3pt,angleA=-90,angleB=90,
linecolor=red,arrows=<->,arrowscale=2,arm=0.8]
{A}{B}
\ncput*[nrot=:L]{auf}
\end{pspicture}
\end{LTXexample}

\section{Strukturbeispiele}



Jetzt sollen noch einige wenige Beispiele von Struktur\"ubersichten
vorgestellt werden, die von mir in der \texttt{pstmatrix}-Umgebung gesetzt wurden.

\begin{figure}[H]\centering
\begin{psmatrix}[colsep=0.8,rowsep=0.8]
\psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]
{$\left[\tabular{c}GF: /Pinguin/\\ WA: +N\endtabular\right]$}
  & \psframebox[fillcolor=yellow!40,fillstyle=solid]{Vogel} \\
\psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{\tabular{l}aufrecht\\ gehend\endtabular}
  & \psshadowbox[fillcolor=red,fillstyle=solid,shadow=true,blur=true,shadowsize=5pt]{\textbf{Pinguin}} & 
  \psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{flugunfähig}\\
  & \psframebox[fillcolor=green!40,fillstyle=solid]{Felsenpinguin}
\end{psmatrix}
\ncline{1,1}{2,2} \naput{s}
\ncline{1,2}{2,2} \naput{ob}
\ncline{2,1}{2,2} \naput{a}  
\ncline{2,2}{2,3} \naput{a}
\ncline{2,2}{3,2} \naput{ub}
\caption{Ein Frame}
\end{figure}

\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
\usepackage{pst-node,pst-blur}
\begin{psmatrix}[colsep=0.8,rowsep=0.8]
\psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]
{$\left[\tabular{c}GF: /Pinguin/\\ WA: +N\endtabular\right]$}
  & \psframebox[fillcolor=yellow!40,fillstyle=solid]{Vogel} \\
\psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{\tabular{l}aufrecht\\ gehend\endtabular}
  & \psshadowbox[fillcolor=red,fillstyle=solid,shadow=true,blur=true,shadowsize=5pt]{\textbf{Pinguin}} & 
  \psframebox[fillcolor=blue!40,fillstyle=solid,doubleline=true]{flugunfähig}\\
  & \psframebox[fillcolor=green!40,fillstyle=solid]{Felsenpinguin}
\end{psmatrix}
\ncline{1,1}{2,2} \naput{s}
\ncline{1,2}{2,2} \naput{ob}
\ncline{2,1}{2,2} \naput{a}  
\ncline{2,2}{2,3} \naput{a}
\ncline{2,2}{3,2} \naput{ub}
\end{lstlisting}


\begin{figure}[H]\centering
\begin{psmatrix}[colsep=0.8,rowsep=0.8]
\psset{shortput=nab,framesep=10pt}
  \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Lebewesen} &
  \psframebox[fillcolor=yellow!40,fillstyle=solid]{allgemeine Kategorisierung}\\
  \psshadowbox[framearc=0.25,fillcolor=red!40,fillstyle=solid,doubleline=true]{\textbf{Löwe}} 
& \psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]{Basisebene}\\
  \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Höhlenlöwe} 
& \psframebox[fillcolor=green!30,fillstyle=solid]{spezielle Kategorisierung}
\end{psmatrix}
\psset{nodesep=2pt,arrows=->}
\ncline[arrowscale=2]{1,1}{2,1}
\ncline[arrowscale=2]{2,1}{3,1}
\caption{Eine konzeptuelle Kategorisierung}
\end{figure}

\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
\begin{psmatrix}[colsep=0.8,rowsep=0.8]
\psset{shortput=nab,framesep=10pt}
  \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Lebewesen} &
  \psframebox[fillcolor=yellow!40,fillstyle=solid]{allgemeine Kategorisierung}\\
  \psshadowbox[framearc=0.25,fillcolor=red!40,fillstyle=solid,doubleline=true]{\textbf{Löwe}} 
& \psframebox[fillcolor=red!40,fillstyle=solid,doubleline=true]{Basisebene}\\
  \psshadowbox[framearc=0.25,fillcolor=blue!20,fillstyle=solid,doubleline=true]{Höhlenlöwe} 
& \psframebox[fillcolor=green!30,fillstyle=solid]{spezielle Kategorisierung}
\end{psmatrix}
\psset{nodesep=2pt,arrows=->}
\ncline[arrowscale=2]{1,1}{2,1}
\ncline[arrowscale=2]{2,1}{3,1}
\end{lstlisting}

\begin{figure}[H]\centering
\psset{framearc=0.2,shadow=true,fillstyle=solid,shadowcolor=black!55}
\begin{psmatrix}[colsep=0,rowsep=0.9]
 & & \psframebox[fillcolor=blue!30]{Synchronie}\\
 & \psframebox[fillcolor=red!30]{Sprache} & \\
 & & \psframebox[fillcolor=blue!30]{Diachronie} \\
\psframebox[fillcolor=red!30]{Menschliche Rede} & & \\
 & \psframebox[fillcolor=red!30]{Sprechen} &
 \end{psmatrix}
 \psset{shadow=false}
\ncline[arrows=->,arrowscale=2]{2,2}{1,3}
\ncline[arrows=->,arrowscale=2]{2,2}{3,3}
\ncline[arrows=->,arrowscale=2]{4,1}{2,2}
\ncline[arrows=->,arrowscale=2]{4,1}{5,2}
\caption{F. de Saussure zu Sprache}
\end{figure}

\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
\psset{framearc=0.2,shadow=true,fillstyle=solid,shadowcolor=black!55}
\begin{psmatrix}[colsep=0,rowsep=0.9]
 & & \psframebox[fillcolor=blue!30]{Synchronie}\\
 & \psframebox[fillcolor=red!30]{Sprache} & \\
 & & \psframebox[fillcolor=blue!30]{Diachronie} \\
\psframebox[fillcolor=red!30]{Menschliche Rede} & & \\
 & \psframebox[fillcolor=red!30]{Sprechen} &
 \end{psmatrix}
 \psset{shadow=false}
\ncline[arrows=->,arrowscale=2]{2,2}{1,3}
\ncline[arrows=->,arrowscale=2]{2,2}{3,3}
\ncline[arrows=->,arrowscale=2]{4,1}{2,2}
\ncline[arrows=->,arrowscale=2]{4,1}{5,2}
\end{lstlisting}

\begin{figure}[H] \centering
\begin{psmatrix}[emnode=r,colsep=0.5cm,rowsep=0.5cm,mcol=c]
 &   &   &  &  <Metall> & \\
 &   &   & [mnode=oval] 18 & &\\
 <WERKZEUG> & & & & & \\
 &   &    &  &[mnode=tri] 12 &\\
 &   &    &    & & <arbeiten> \\
 &   & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\
 \fbox{12} & & & \fbox{51} &  & \\
 & \fbox{36} & & & <Hammer> &\\
 <Feile> & & <Zange> & & &
\end{psmatrix}
\psset{arrowscale=2,labelsep=0pt}
\ncline{->}{1,5}{2,4}
\ncarc{->}{4,5}{2,4}\naput[npos=0.4]{OBJ}
\ncarc{->}{6,3}{4,5}\naput[npos=0.4]{INSTR}
\ncline{<->}{6,3}{3,1}
\ncarc{->}{6,3}{7,1}\naput[npos=0.4]{UB}
\ncarc{->}{6,3}{7,4}\naput[npos=0.4]{UB}
\ncarc{->}{6,3}{8,2}\naput[npos=0.4]{UB}
\ncarc{->}{9,1}{7,1} \ncarc{->}{9,3}{8,2} 
\ncarc{->}{8,5}{7,4} \ncline{->}{5,6}{4,5}
\caption{Begriffliches Merkmalsnetz nach Hoffmann}
\end{figure}

\begin{lstlisting}[language={[LaTeX]TeX},basicstyle=\rmfamily\small,backgroundcolor={\color{yellow!20}},frame=single]
\begin{psmatrix}[emnode=r,colsep=0.5cm,rowsep=0.5cm,mcol=c]
 &   &   &  &  <Metall> & \\
 &   &   & [mnode=oval] 18 & &\\
 <WERKZEUG> & & & & & \\
 &   &    &  &[mnode=tri] 12 &\\
 &   &    &    & & <arbeiten> \\
 &   & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\
 \fbox{12} & & & \fbox{51} &  & \\
 & \fbox{36} & & & <Hammer> &\\
 <Feile> & & <Zange> & & &
\end{psmatrix}
\psset{arrowscale=2,labelsep=0pt}
\ncline{->}{1,5}{2,4}
\ncarc{->}{4,5}{2,4}\naput[npos=0.4]{OBJ}
\ncarc{->}{6,3}{4,5}\naput[npos=0.4]{INSTR}
\ncline{<->}{6,3}{3,1}
\ncarc{->}{6,3}{7,1}\naput[npos=0.4]{UB}
\ncarc{->}{6,3}{7,4}\naput[npos=0.4]{UB}
\ncarc{->}{6,3}{8,2}\naput[npos=0.4]{UB}
\ncarc{->}{9,1}{7,1} \ncarc{->}{9,3}{8,2} 
\ncarc{->}{8,5}{7,4} \ncline{->}{5,6}{4,5}
\end{lstlisting}

\newpage
\bgroup
\appendix

%\addcontentsline{toc}{section}{Literaturverzeichnis}

\nocite{PSTricks2}
\nocite{pstricks2007}
\raggedright
\bibliographystyle{gerplain}

\bibliography{psmatrix-docDE}
\egroup
\clearpage
\addcontentsline{toc}{section}{Index}
\printindex


\end{document}


