%% $Id: psmatrix-docDE.tex 696 2017-12-30 19:01:07Z herbert $ \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} \addbibresource{\jobname.bib} \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=} 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} & \OptEinh\ & 0.8pt \\ \texttt{linecolor} & & black \\ \texttt{linestyle} & none|solid|dotted|dashed & solid \\ \texttt{shadow} & & false \\ \texttt{shadowsize} & \OptEinh\ & 3pt \\ \texttt{shadowangle} & & $-$45 \\ \texttt{shadowcolor} & & darkgray \\ \texttt{arrows} & & -- \\ \texttt{doubleline} & & 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] & & & & & \\ & & & [mnode=oval] 18 & &\\ & & & & & \\ & & & &[mnode=tri] 12 &\\ & & & & & \\ & & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\ \fbox{12} & & & \fbox{51} & & \\ & \fbox{36} & & & &\\ & & & & & \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] & & & & & \\ & & & [mnode=oval] 18 & &\\ & & & & & \\ & & & &[mnode=tri] 12 &\\ & & & & & \\ & & [mnode=C,linestyle=dashed,radius=0.5,mcol=l] & & &\\ \fbox{12} & & & \fbox{51} & & \\ & \fbox{36} & & & &\\ & & & & & \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{*} \raggedright \printbibliography \egroup \clearpage \addcontentsline{toc}{section}{Index} \printindex \end{document}