Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm trying to make a flowchart such as below in psmatrix enviroment using the pstricks package. but the problem is that I don't know how to make the node between the {3-1}(num<=100) and {5-1}(num <- num + 2). I want to have my node as below: enter image description here

But I have no idea how to make the above connection with pst-nodes or any other package! I checked out several documentations about pst-nodes but couldn't find anything. The code is:

 \documentclass{article}‎‎
 \usepackage{amsmath,amssymb}‎ ‎
 \usepackage{pstricks}
 \usepackage{pst-node}
 \usepackage{pst-blur}
 \definecolor{‎Blue‎}{rgb}{1.,0.75,0.8‎}‎
    ‎
    % ================================
    % Source: http://tug.org/pipermail/pstricks/2009/006766.html

    \makeatletter
    \newdimen\psparallelogramsep
    \def\psset@parallelogramsep#1{\pssetlength\psparallelogramsep{#1}}
    \psset@parallelogramsep{3mm}
    \def\psparallelogrambox{\pst@object{psparallelogrambox}}
    \def\psparallelogrambox@i{\pst@makebox\psparallelogrambox@ii}
    \def\psparallelogrambox@ii{%
        \begingroup
        \pst@useboxpar
        \pst@dima=\pslinewidth
        \advance\pst@dima by \psframesep
        \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
        \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
        \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
        \setbox\pst@hbox=\hbox{%
            \ifpsboxsep\kern\pst@dima\fi
            \begin@ClosedObj
            \addto@pscode{%
                \psk@cornersize
                \pst@number\pst@dima neg
                \pst@number\pst@dimb neg
                \pst@number\pst@dimc
                \pst@number\pst@dimd .5
                \pst@number\psparallelogramsep
                \tx@Parallelogram}%
                \def\pst@linetype{2}%
                \showpointsfalse
            \end@ClosedObj
            \box\pst@hbox
            \ifpsboxsep\kern\pst@dima\fi%
        }%
        \ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
        \leavevmode\box\pst@hbox
        \endgroup%
    }

    % From the Frame and Rect PostScript macros
    \pst@def{Parallelogram}<{%
    /ParallelogramA {
    x1 pgs sub y1 moveto
    x1 y2 lineto
    x2 pgs add y2 lineto
    x2 y1 lineto
    x1 pgs sub y1 lineto
    closepath} def
    %
    /pgs ED
    CLW mul
    /a ED
    3 -1 roll
    2 copy gt { exch } if
    a sub
    /y2 ED
    a add
    /y1 ED
    2 copy gt { exch } if
    a sub
    /x2 ED
    a add
    /x1 ED
    1 index 0 eq {pop pop ParallelogramA } { OvalFrame } ifelse}>
    \makeatother

    \def\pspbox[#1]#2{\makebox[#1]{\psparallelogrambox{#2}}}

    % ================================
    \pagestyle{‎empty}‎‎‎‎‎‎‎‎‎‎

    ‎\begin{‎document}‎‎
    ‎
    ‎\vspace{0.5cm}
    ‎\small‎
      \psset{shadowcolor=black!70,shadowangle=-90,blur=true}‎
      \begin{psmatrix}[rowsep=0.5,colsep=0.7]% defines the distance between two frames 
       %Begin‎‎
        ‎\psovalbox[fillstyle=solid, fillcolor=‎yellow!30‎]‎{Start} \\
       %computation‎
        \psframebox[shadow=true]{‎$‎Sum ‎\Leftarrow 0 ‎,‎‎ Num ‎\‎leftarrow ‎10‎‎‎$}  ‎\\‎
       %Condition‎
        \psdiabox[fillstyle=solid, fillcolor=magenta!20]{‎‎$‎Num ‎\leqslant ‎100‎ ‎‎$‎} &
       %Output‎‎
        ‎‎‎\psparallelogrambox[fillstyle=solid,fillcolor=‎blue!20‎]{‎Print Sum‎} ‎\\‎‎ 
       ‎%Computation‎
       ‎ \psframebox{‎‎‎$‎Sum ‎\l‎eftarrow ‎Num + Sum ‎‎‎$‎} ‎&‎‎‎‎‎‎‎‎‎
      ‎%End‎
      ‎  \psovalbox[fillstyle=solid, fillcolor=yellow!30]{‎End}‎\\‎
      %computation‎‎
         ‎\psframebox{‎‎‎$‎Num ‎\l‎eftarrow ‎Num + 2‎‎‎$‎}‎‎\\‎
      % Links
        \ncline{->}{1,1}{2,1}
        \ncline{->}{2,1}{3,1‎}‎‎‎ 
        \ncline{->}{3,1}{4,1}<{\textcolor{red}{‎Yes‎}}‎‎ 
        \ncline{->}{4,1}{5,1}‎‎
        \ncline{->}{3,1}{3,2}^{\textcolor{red}{‎No‎}}‎‎
        \ncline{->}{3,2}{4,2} ‎‎
        % I‎ ‎used ‎these ‎two ‎but ‎none ‎of ‎the‎m were helpful 
         \ncdiag[angleA=-90,angleB=‎18‎0, armA=1cm,armB=1cm,‎lineAngle=-‎3‎0]{->}{5,1}{‎3,1}‎‎
        ‎%‎ \nccurve[ angleA=-90,angleB=180]{->}{5,1}{3,1}    ‎‎
 \end{psmatrix} ‎‎‎‎

 \end{‎document}‎

But the shape which I get is: enter image description here

So which command should I use in order to get the right nodes for this flowchart?

share|improve this question
add comment

1 Answer

up vote 5 down vote accepted

You can use the connection ncangles In the example below I removed the defintion of \psparallelogrambom and use instead \psframebox to simplify the example.

For more information to this command have look at the documentation of pst-node.

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{xcolor}
\usepackage{pstricks}
\usepackage{pst-node}
\usepackage{pst-blur}
\definecolor{blue}{rgb}{1,0.75,0.8}
\pagestyle{empty}
\begin{document}
 ‎\vspace{0.5cm}
 ‎\small‎
  \psset{shadowcolor=black!70,shadowangle=-90,blur=true,fillstyle=solid}‎
  \begin{psmatrix}[rowsep=0.5,colsep=0.7]% defines the distance between two frames 
    \psovalbox[fillcolor=yellow!30]{Start} \\
    \psframebox[shadow=true]{$Sum \Leftarrow 0 , Num \leftarrow 10$}\\
    \psdiabox[fillcolor=magenta!20]{$NUM\leqslant100$}&
    \psframebox[fillcolor=blue!20]{Print Sum} \\
    \psframebox{$Sum \leftarrow Num +Sum$} &
   \psovalbox[fillcolor=yellow!30]{‎End}‎\\‎
   \psframebox{$Num \leftarrow Num +2$}  \\

   \psset{arrows=->,fillstyle=none}
        \ncline{1,1}{2,1}
        \ncline{2,1}{3,1}
        \ncline{3,1}{4,1}<{\textcolor{red}{Yes}}
        \ncline{4,1}{5,1}
        \ncline{3,1}{3,2}^{\textcolor{red}{No}}
        \ncline{3,2}{4,2}
        \ncangles[angleA=-90,angleB=180,armA=1cm,armB=1cm,lineAngle=-30]{5,1}{3,1}

 \end{psmatrix}

\end{document}

share|improve this answer
    
@ Macro : THank you very much –  Negin Dec 9 '11 at 13:15
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.