PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erstellen von Flowcharts mit pstricks



PaRu
29-01-2008, 17:27
ich habe mit pstricks folgendes flowchart erstellt:


\documentclass{article}
\usepackage{pstricks}
\usepackage{pst-node}
\usepackage[scaled=.90]{helvet}
\usepackage{amsfonts, amssymb}
\usepackage[cmex10]{amsmath}

\pagestyle{empty}

\makeatletter
\def\MyBox{\pst@object{MyBox}}
\def\MyBox@i#1#2#3{{%
\use@par % Local parameters
\if@star\solid@star\fi % Stared version
\pssetlength{\pst@dimc}{-\psframesep}
\psaddtolength{\pst@dimc}{-\psframesep}
\psaddtolength{\pst@dimc}{-\pslinewidth}
\psaddtolength{\pst@dimc}{-\pslinewidth}
\pssetlength{\pst@dima}{#1}
\psaddtolength{\pst@dima}{\pst@dimc}
\pssetlength{\pst@dimb}{#2}
\psaddtolength{\pst@dimb}{\pst@dimc}
\setbox\z@\vbox to\pst@dimb{\hsize\pst@dima\sloppy\vfil#3\vfil}%
\psframebox{\box\z@}}}

%\setlength{\parindent}{0cm}


\begin{document}

\rput[br](0, 1){\rnode{A}{\MyBox[framesep=0.15]{2.25}{1.0}{\noindent Data Signal\\ @ $\lambda_{\mathrm{Data}}$}}}
\rput[br](0, -1){\rnode{B}{\MyBox[framesep=0.15]{2.25}{1.0}{\noindent CW Signal\\ @ $\lambda_{\mathrm{CW}}$}}}
\rput[br](4.5, 0){\rnode{C}{\pstribox[trimode=R,framesep=0.115]{UL-SOA}}}
\rput[br](7, 0){\rnode{D}{\MyBox[framesep=0.15]{1.65}{1.0}{\noindent OBPF\\ @ $\lambda_{\mathrm{Data}}$}}}
\rput[br](9.5, -0.25){\rnode{E}{\MyBox[framesep=0.15]{1.75}{1.5}{\noindent Optical\\ Sampling\\ Scope}}}
\ncangle[angleA=0, angleB=180, armB=0.8cm, arrowsize=0.2, arrowinset=0]{->}{A}{C}
\ncangle[angleA=0, angleB=180, armB=0.8cm, arrowsize=0.2, arrowinset=0]{->}{B}{C}
\ncangle[angleA=0, angleB=180, arrowsize=0.2, arrowinset=0]{->}{C}{D}
\ncangle[angleA=0, angleB=180, arrowsize=0.2, arrowinset=0]{->}{D}{E}

\end{document}

ich finde, dass das dreieck zu lang ist und würde es gerne kürzen und dafür in der höhe vergrößern (etwas stauchen). wenn ich mit dem framesep parameter etwas spielt, bekommt ich leider nicht das gewünschte ergebnis. ich habe es acuh mit \vphantom und \displaystyle versucht, die aber keine wirkung zeigten.

voss
29-01-2008, 18:18
ich habe mit pstricks folgendes flowchart erstellt:

ich finde, dass das dreieck zu lang ist und würde es gerne kürzen und dafür in der höhe vergrößern (etwas stauchen). wenn ich mit dem framesep parameter etwas spielt, bekommt ich leider nicht das gewünschte ergebnis. ich habe es acuh mit \vphantom und \displaystyle versucht, die aber keine wirkung zeigten.


\documentclass{article}
\usepackage{pstricks}
\usepackage{pst-node}
\pagestyle{empty}

\makeatletter
\def\MyBox{\pst@object{MyBox}}
\def\MyBox@i#1#2#3{{%
\use@par % Local parameters
\if@star\solid@star\fi % Stared version
\parindent=0pt%
\pssetlength{\pst@dimc}{-\psframesep}
\psaddtolength{\pst@dimc}{-\psframesep}
\psaddtolength{\pst@dimc}{-\pslinewidth}
\psaddtolength{\pst@dimc}{-\pslinewidth}
\pssetlength{\pst@dima}{#1}
\psaddtolength{\pst@dima}{\pst@dimc}
\pssetlength{\pst@dimb}{#2}
\psaddtolength{\pst@dimb}{\pst@dimc}
\setbox\z@\vbox to\pst@dimb{\hsize\pst@dima\sloppy\vfil#3\vfil}%
\psframebox{\box\z@}}}

\begin{document}

\rput[br](0, 1){\rnode{A}{\MyBox[framesep=0.15]{2.25}{1.0}%
{Data Signal\\ @ $\lambda_{\mathrm{Data}}$}}}
\rput[br](0, -1){\rnode{B}{\MyBox[framesep=0.15]{2.25}{1.0}%
{CW Signal\\ @ $\lambda_{\mathrm{CW}}$}}}
\rput[br](4.5, -0.5){\rnode{C}{\pstribox[trimode=R,framesep=0.115]%
{\rule[-2ex]{0pt}{5ex}\makebox[2em][l]{UL-SOA}}}}
\rput[br](7, 0){\rnode{D}{\MyBox[framesep=0.15]{1.65}{1.0}{OBPF\\ @ $\lambda_{\mathrm{Data}}$}}}
\rput[br](9.5, -0.25){\rnode{E}{\MyBox[framesep=0.15]{1.75}{1.5}%
{Optical\\ Sampling\\ Scope}}}
\psset{angleB=180, arrowsize=0.2, arrowinset=0}
\ncangle[armB=0.8cm]{->}{A}{C}
\ncangle[armB=0.8cm]{->}{B}{C}
\ncangle{->}{C}{D}
\ncangle{->}{D}{E}

\end{document}

Herbert

PaRu
30-01-2008, 14:45
danke.

kannst du mir bitte den trick erklären?

\rule[-2ex]{0pt}{5ex}\makebox[2em][l]{text}

wie kann ich mein objekt (das flowchart) in einen text einbinden? ich würde es gerne wie ein bild via float-umgebung einbinden.

voss
30-01-2008, 16:31
danke.

kannst du mir bitte den trick erklären?

\rule[-2ex]{0pt}{5ex}\makebox[2em][l]{text}


Eine senkrechte Linie ohne Breite (also unsichtbar) der Höhe von 5 x und um 2 x nach unten verschoben.
Box einer Breite von 2cm mit linksbündigem Text. Ist dieser länger, wird einfach
über die Box hinausgeschreiben.



wie kann ich mein objekt (das flowchart) in einen text einbinden? ich würde es gerne wie ein bild via float-umgebung einbinden.

Genau wie sonst auch. In einer Gleitumgebung kann alles mögliche stehen.

Herbert

PaRu
31-01-2008, 09:11
wenn ich die grafiken per gleitumgebung einbinde, kann ich sie dann auch wie bei einem bild nachträglich skalieren (\includegraphics[width=.45\textwidth]{beispiel}) oder muss ich beim zeichnen die größe direkt berücksichtigen?

wie kann ich komplizierte pictogramme für meine flowcharts erzeugen? ich habe zwei beispiele angehangen. ich denke an eine bibliothek mit den einzelnen modulen, die man dann schnell zusammenstellen kann.

voss
31-01-2008, 10:51
wenn ich die grafiken per gleitumgebung einbinde, kann ich sie dann auch wie bei einem bild nachträglich skalieren (\includegraphics[width=.45\textwidth]{beispiel}) oder muss ich beim zeichnen die größe direkt berücksichtigen?


\begin{figure}[!htb]
\resizebox{\linewidth}{!}{%
... hier deine PSTricks ... %
}
\caption{...}\label{...}
\end{figure}


wie kann ich komplizierte pictogramme für meine flowcharts erzeugen? ich habe zwei beispiele angehangen. ich denke an eine bibliothek mit den einzelnen modulen, die man dann schnell zusammenstellen kann.

Die kannst du dir alle als PSTricks-Objekte definieren, was je nach
Abbildung einfach oder etwas komplizierter ist. Paket pst-circ macht das
so mit seinen logischen Bausteinen.

Herbert