summaryrefslogtreecommitdiff
path: root/graphics/pdftricks/test.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/pdftricks/test.tex
Initial commit
Diffstat (limited to 'graphics/pdftricks/test.tex')
-rw-r--r--graphics/pdftricks/test.tex556
1 files changed, 556 insertions, 0 deletions
diff --git a/graphics/pdftricks/test.tex b/graphics/pdftricks/test.tex
new file mode 100644
index 0000000000..06083b4931
--- /dev/null
+++ b/graphics/pdftricks/test.tex
@@ -0,0 +1,556 @@
+\documentclass{ltxguide}
+\usepackage{txfonts,url}
+\usepackage[shell,debug]%
+ {pdftricks}
+
+\begin{psinputs}
+\usepackage{txfonts}
+\usepackage{pstricks}
+\usepackage{color}
+\usepackage{pstcol}
+\usepackage{pst-plot}
+\usepackage{pst-tree}
+\usepackage{pst-eps}
+\usepackage{multido}
+\usepackage{pst-node}
+\usepackage{pst-eps}
+\end{psinputs}
+
+% 1. run pdfLaTeX
+% 2. run script `pst2pdf' by invoking ./pst2pdf
+% 3. second run of pdfLaTeX
+
+\begin{document}
+
+%\NoProcess[1-6]
+
+
+\title{Trivial Experiments with psTricks manipulation}
+
+\author{\bfseries Radhakrishnan CV and Rajagopal
+ CV\\[-3pt]
+ \small River Valley Technologies,
+ Trivandrum, India\\[-3pt]
+ \small\url{http://www.river-valley.com}\\[6pt]
+ \bfseries Antoine Chambert-Loir\\[-3pt]
+ \small Ecole polytechnique, Palaiseau Cedex,
+ France\\[-3pt]
+ \small \url{http://www.math.polytechnique.fr/~chambert}
+}
+
+\maketitle
+
+\section{Objectives}
+
+|psTricks| macros cannot be used with pdf\TeX, since the high level
+PostScript language commands generated by the |psTricks| are unknown
+to pdf\TeX. As such, a package \emph{viz.}, |pdfTricks.sty| has been
+written to circumvent this limitation, so that the extensive
+facilities offered by the powerful |psTricks| package can be made use
+of in a pdf\TeX{} document. This is brought by making use of the shell
+escape function available in the |web2c| \TeX{} compiler, while this
+package is of no use to other commercial implementations.
+
+Shell escape provides us the facility of stopping a \TeX{} run midway,
+perform the functions that we do with a shell command, complete those
+functions, return to the \TeX{} run and finish the job. Within a
+package, this facility can be invoked by using
+|\write18{shell command}|. So if you use a line:
+\begin{decl}
+|write18 ls -l|
+\end{decl}
+\TeX{} will stop at the moment when it encounter the |\write18|
+command, escapes to shell, executes |ls -l| command and return to the
+compilation process.
+
+\section{Shell escape}
+
+In all the web2c \TeX{} implementations, shell escape is turned off by
+default. You can either turn it on by changing the line in your
+|texmf.cnf| (configuration file of your \TeX{} system) to:
+\begin{decl}
+|shell_escape = t|
+\end{decl}
+which will be `|f|' by default. You have to recreate all the formats
+like |pdflatex.fmt| or whatever you might need. This is not a wise
+step though, since it makes you open to the assault of Trojan macros
+without your knowledge.
+
+The more elegant way will be to invoke shell escape with a switch,
+each time you run the compiler like:
+\begin{decl}
+|pdflatex -shell-escape <file name>|
+\end{decl}
+This eliminates the vulnerability to macros/packages written by
+intelligent criminal minds.
+
+\section{Usage}
+
+The usage is very simple, as usual you have to load the package with a
+package loading line in the preamble of your document:
+
+\begin{decl}
+|\usepackage{pdftricks}|
+\end{decl}
+
+All the packages that are needed for the compilation of the |pstricks|
+code shall be enclosed within an environment |\begin{psinputs}| \dots
+ |\end{psinputs}| in order to make it available to all the figure
+documents during compilation. An example of this will look like
+\begin{decl}
+|\begin{psinputs}|\\
+| \usepackage{pstricks}|\\
+| \usepackage{color} |\\
+| \usepackage{pstcol} |\\
+| \usepackage{pst-plot}|\\
+| \usepackage{pst-tree}|\\
+| \usepackage{pst-eps} |\\
+| \usepackage{multido} |\\
+| \usepackage{pst-node}|\\
+| \usepackage{pst-eps} |\\
+| ... |\\
+|\end{psinputs}|
+\end{decl}
+
+Each |pspicture| environment along with any macro code shall be
+enclosed within an environment \emph{viz.}, |pdfpic|. This will enable
+pdf\LaTeX{} to write external files like |fig1.tex|, |fig2.tex|,
+\dots, depending on the number of |psTricks| figures you have included
+in your document. |pdftricks| will intelligently find out whether your
+pdf\TeX{} implementation has shell escape facility enabled or not.
+Depending on this, there are two ways of approaching the problem which
+are given in the succeeding sections.
+
+\subsection{With shell escape}
+
+With shell escape option invoked, one need not bother anything. The
+usual compilation with pdf\LaTeX{} will result in a |pdf| document
+with all the figures appearing in the correct positions. pdf\TeX{}
+will do the necessary job of writing all the |pstricks| code to self
+standing external |*.tex| documents, escapes to shell, compiles the
+|*.tex| document, converts to |*.eps|, translates to |*.pdf| and
+includes in the location where the |pstricks| code appeared.
+
+\subsection{Without shell escape}
+
+A special shell script viz., |pst2pdf| is also provided. Now as the
+second step, you have to execute this shell script, |pst2pdf| which
+will compile all the newly written |fig1.tex|,\dots, and respective
+|*.dvi| will be generated, which will be translated into respective
+|*.eps| files and finally translated to |*.pdf| by calling |epstopdf|.
+As a final step, you shall run pdf\LaTeX{} again, so that the |*.pdf|
+figures will be included with the usual |\includegraphics| command
+automatically in the locations wherever the |pstricks| code appeared.
+
+
+See an example below:
+\begin{verbatim}
+\begin{pdfdisplay}
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\SpecialCoor
+\begin{pspicture}(-6,-6)(6,6)
+ \psaxes{<<->>}(0,0)(-6,-6)(6,6)
+ \psset{arrows=->>}
+ \multido{\ia=-5+1}{11}{%
+\multido{\ib=-5+1}{11}{%
+ \pstVerb{/x \ia\space def
+ /y \ib\space def
+ y 0 eq
+ {/ValueTempA 0 def
+ /ValueTempB 0.5 def}
+ {/ValueTempZ 2 1 x x mul y y mul div add sqrt mul def
+ /ValueTempA 1 ValueTempZ div def
+ /ValueTempB x y ValueTempZ mul div def}
+ ifelse}
+ \psline(! x ValueTempA sub y ValueTempB sub)
+ (! x ValueTempA add y ValueTempB add)}}
+\end{pspicture}
+\end{pdfdisplay}
+\end{verbatim}
+
+This |psTricks| code will result in the following graphic:
+\configure[pdfgraphic][color=red,rulesep=12pt,
+ linecolor=gray30,
+ linewidth=2pt]
+\begin{pdfdisplay}
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\def\transl#1#2{#1\space 72 2.54 div mul #2\space 72 2.54 div
+ mul translate 0 0 moveto }
+\newif\ifnotbothz
+ \pspicture(-6,-6)(6,6)
+ \psaxes{<->}(0,0)(-6,-6)(6,6)
+ \multido{\n=-5+1}{11}{%
+ \multido{\N=-5+1}{11}{%
+ \notbothztrue%
+ \ifnum\N=0 %
+ \ifnum\n=0 \notbothzfalse\fi%
+ \fi%
+ \ifnotbothz%
+ \psdot(0,0)%
+ \pstverb{\transl{\n}{\N}\space
+ \n\space neg \N\space
+ atan rotate -9 0 moveto 18 0 rlineto stroke }
+\fi}}
+\endpspicture
+\end{pdfdisplay}
+
+The following are the steps in the sequential order:
+\begin{decl}
+1.~|latex <your document>|\\
+2.~|pst2pdf|\\
+3.~|latex <your document>|
+\end{decl}
+
+\section{Options and Hooks}
+
+\begin{description}
+
+\item[|shell|] This option will invoke the shell escape functions.
+
+\item[|noshell|] This option will suppress the shell escape functions
+ and will assume that there is no shell escape facility.
+
+\item[|NoProcess|] A new command |\NoProcess| has been introduced in
+ this version to facilitate the suppressing of pdf generation of
+ those figures whose pdf's are already available. This might prove
+ helpful when you have more figures to process and many of them are
+ perfected and don't need recompilation and translation everytime you
+ run pdf\LaTeX. The usage is:
+\begin{decl}
+|\NoProcess{<comma separated and/or hyphen separated ranges>}|
+\end{decl}
+If you have ten figures and if you want to suppress the processing of
+the figure numbers 1, 2, 4 to 8 you can issue the command at the top
+of the document as:
+\begin{decl}
+|\NoProcess{1,2,4-8}|
+\end{decl}
+\end{description}
+
+\noindent There are few hooks to resize the graphic thus translated and
+included.
+\begin{decl}
+|\configure[pdfgraphic][width=2in]|\\
+|\configure[pdfgraphic][height=3in]|\\
+|\configure[pdfgraphic][width=2in,height=3in]|
+\end{decl}
+the functionality is same as the |width| and |height| options as in
+the |\includegraphics| command. But the graphic will be restricted to
+aspect ratio.
+
+\section{Limitations/Dependencies}
+
+\begin{itemize}
+\item Usage is limited to |web2c| \TeX{} implementations.
+\item The shell escape commands used in this package are typical
+ \textsc{Unix} commands and as such it best works in
+ \textsc{Linux/Unix} flavours.
+\item The package needs, |graphicx| and |keyval| packages; |epstopdf|,
+ the Perl script that translates |eps| files into |pdf|.
+\end{itemize}
+
+\section{Licence}
+The package is distributed under \textsc{gnu} General Public Licence.
+
+\section{Examples}
+
+Here are some examples of pstricks code and the figures generated by
+pdf\LaTeX.
+\subsection{Example 1}
+\begin{verbatim}
+\configure[pdfgraphic][width=2in,linecolor=red,background=gray10]
+\begin{pdfdisplay}
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\SpecialCoor
+\begin{pspicture}(-6,-6)(6,6)
+ \psaxes{<<->>}(0,0)(-6,-6)(6,6)
+ \psset{arrows=->>}
+ \multido{\ia=-5+1}{11}{%
+\multido{\ib=-5+1}{11}{%
+ \pstVerb{/x \ia\space def
+ /y \ib\space def
+ y 0 eq
+ {/ValueTempA 0 def
+ /ValueTempB 0.5 def}
+ {/ValueTempZ 2 1 x x mul y y mul div add sqrt mul def
+ /ValueTempA 1 ValueTempZ div def
+ /ValueTempB x y ValueTempZ mul div def}
+ ifelse}
+ \psline(! x ValueTempA sub y ValueTempB sub)
+ (! x ValueTempA add y ValueTempB add)}}
+\end{pspicture}
+\end{pdfdisplay}
+\end{verbatim}
+\configure[pdfgraphic][width=.9\linewidth,linecolor=red,
+ rulesep=12pt,background=gray10,
+ linewidth=2pt]
+\begin{pdfdisplay}
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\SpecialCoor
+\begin{pspicture}(-6,-6)(6,6)
+ \psaxes{<->}(0,0)(-6,-6)(6,6)
+ \psset{arrows=->}
+ \multido{\ia=-5+1}{11}{%
+\multido{\ib=-5+1}{11}{%
+ \pstVerb{/x \ia\space def
+ /y \ib\space def
+ y 0 eq
+ {/ValueTempA 0 def
+ /ValueTempB 0.5 def}
+ {/ValueTempZ 2 1 x x mul y y mul div add sqrt mul def
+ /ValueTempA 1 ValueTempZ div def
+ /ValueTempB x y ValueTempZ mul div def}
+ ifelse}
+ \psline(! x ValueTempA sub y ValueTempB sub)
+ (! x ValueTempA add y ValueTempB add)}}
+\end{pspicture}
+\end{pdfdisplay}
+
+\subsection{Example 2}
+\begin{verbatim}
+\configure[pdfgraphic][linecolor=blue,background=gray10,width=4in]
+\begin{pdfdisplay}
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\newcommand{\MyNode}[2]{%
+ \Tr{\psshadowbox[fillstyle=solid,fillcolor=#1]{\tiny #2}}}
+\newcommand{\NoeudXt}[1]{\MyNode{ForestGreen}{#1}}
+\newcommand{\NoeudMotif}[1]{\MyNode{Navy}{\textcolor{white}{#1}}}
+\psset{armB=5mm,angleA=90,angleB=-90,levelsep=2cm,treesep=5mm}
+\renewcommand{\psedge}[2]{\ncangle{#2}{#1}}
+\TeXtoEPS
+\begin{pspicture}(-8cm,-9.5cm)(8cm,1cm)
+\rput(0,0){\LARGE\textcolor{red}{Set of Motif widgets classes}}
+\rput(0,-4.8){%
+ \psframebox[fillstyle=solid,fillcolor=LemonChiffon,linearc=5mm,
+ cornersize=absolute]
+ {\pstree{\NoeudXt{Core}}
+ {\pstree{\NoeudMotif{Primitive}}
+ {\pstree{\NoeudMotif{Label}}
+ {\TC*}
+ \NoeudMotif{Scrollbar}
+ \NoeudMotif{List}
+ \NoeudMotif{Text}
+ \NoeudMotif{ArrowButton}}
+ \pstree{\NoeudXt{Composite}}
+ {\pstree{\NoeudXt{Constraint}}
+ {\pstree{\NoeudMotif{Manager}}
+ {\TC*}}}
+ \pstree{\NoeudXt{Shell}}
+ {\pstree{\NoeudXt{OverrideShell}}
+ {\NoeudMotif{MenuShell}}
+ \pstree{\NoeudXt{WMShell}}
+ {\pstree{\NoeudXt{VendorShell}}
+ {\TC*}}}}}}
+\rput(-2,-10){%
+ \psshadowbox[fillstyle=solid,fillcolor=ForestGreen]{Core} Xt Class}
+\rput(2,-10){%
+ \psshadowbox[fillstyle=solid,fillcolor=Navy]{%
+ \textcolor{white}{List}} Motif Class}
+\end{pspicture}
+\endTeXtoEPS
+\end{pdfdisplay}
+\end{verbatim}
+\configure[pdfgraphic][linecolor=blue,
+ linewidth=2pt, rulesep=6pt,
+ background=gray10,scale=.8]
+\begin{pdfdisplay}
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\newcommand{\MyNode}[2]{%
+ \Tr{\psshadowbox[fillstyle=solid,fillcolor=#1]{\tiny #2}}}
+\newcommand{\NoeudXt}[1]{\MyNode{ForestGreen}{#1}}
+\newcommand{\NoeudMotif}[1]{\MyNode{Navy}{\textcolor{white}{#1}}}
+\psset{armB=5mm,angleA=90,angleB=-90,levelsep=2cm,treesep=5mm}
+\renewcommand{\psedge}[2]{\ncangle{#2}{#1}}
+\TeXtoEPS
+\begin{pspicture}(-8cm,-9.5cm)(8cm,1cm)
+\rput(0,0){\LARGE\textcolor{red}{Set of Motif widgets classes}}
+\rput(0,-4.8){%
+ \psframebox[fillstyle=solid,fillcolor=LemonChiffon,linearc=5mm,
+ cornersize=absolute]
+ {\pstree{\NoeudXt{Core}}
+ {\pstree{\NoeudMotif{Primitive}}
+ {\pstree{\NoeudMotif{Label}}
+ {\TC*}
+ \NoeudMotif{Scrollbar}
+ \NoeudMotif{List}
+ \NoeudMotif{Text}
+ \NoeudMotif{ArrowButton}}
+ \pstree{\NoeudXt{Composite}}
+ {\pstree{\NoeudXt{Constraint}}
+ {\pstree{\NoeudMotif{Manager}}
+ {\TC*}}}
+ \pstree{\NoeudXt{Shell}}
+ {\pstree{\NoeudXt{OverrideShell}}
+ {\NoeudMotif{MenuShell}}
+ \pstree{\NoeudXt{WMShell}}
+ {\pstree{\NoeudXt{VendorShell}}
+ {\TC*}}}}}}
+\rput(-2,-10){%
+ \psshadowbox[fillstyle=solid,fillcolor=ForestGreen]{Core} Xt Class}
+\rput(2,-10){%
+ \psshadowbox[fillstyle=solid,fillcolor=Navy]{%
+ \textcolor{white}{List}} Motif Class}
+\end{pspicture}
+\endTeXtoEPS
+\end{pdfdisplay}
+
+\subsection{Example 3}
+\begin{verbatim}
+\configure[pdfgraphic][linecolor=black,background=gray30]
+\begin{pdfdisplay}
+\TeXtoEPS
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\psset{unit=.825cm}
+\begin{pspicture}(10,8)
+ \psset{fillstyle=solid,linestyle=none,linewidth=0}
+ \psframe[fillcolor=lightblue](10,8)
+ \pscircle[fillcolor=yellow](2,6){.8} % Sun
+ {% Rays
+ \psset{linecolor=yellow,linestyle=solid,linewidth=.3}
+ \degrees[8]
+ \multido{\i=1+1}{8}{\rput{\i}(2,6){\psline(1,0)(1.5,0)}}
+ }%
+ \pspolygon[fillcolor=green](6,0)(10,2)(10,0)% Grass
+ \psdiamond[fillcolor=red,gangle=-45](8,6)(1.5,2.5)% Kite
+ \rput{45}(8,6){\pnode(-2.5,0){Kitetail}}
+ \rput{-10}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+ \rput{-80}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+ \pnode(.8,1.5){Tailend}
+ \nccurve[fillstyle=none,angleA=270,angleB=125,ncurvB=.9,ncurvA=1.4,
+ linestyle=dotted,dotstyle=square,linewidth=.25]{Kitetail}{Tailend}
+ \newcommand{\bunting}{\pstriangle(.35,.35)}
+ \psset{fillcolor=red,labelsep=.01}
+ \naput[nrot=115,npos=.15]{\bunting}
+ \nbput[nrot=25,npos=.15]{\bunting}
+ \naput[nrot=75,npos=.4]{\bunting}
+ \nbput[nrot=115,npos=.4]{\bunting}
+ \naput[nrot=115,npos=.7]{\bunting}
+ \nbput[nrot=25,npos=.7]{\bunting}
+\end{pspicture}
+\endTeXtoEPS
+\end{pdfdisplay}
+\end{verbatim}
+
+\configure[pdfgraphic][width=\linewidth,
+ linewidth=2pt,
+ linecolor=gray30,
+ background=gray10,
+ rulesep=6pt]
+\begin{pdfdisplay}
+\TeXtoEPS
+\definecolor{lightblue}{rgb}{0,0,.5}
+\definecolor{Navy}{rgb}{0,0,0.5}
+\definecolor{LemonChiffon}{rgb}{1,0.98,0.8}
+\definecolor{ForestGreen}{rgb}{0.13,0.55,0.13}
+\psset{unit=.825cm}
+\begin{pspicture}(10,8)
+ \psset{fillstyle=solid,linestyle=none,linewidth=0}
+ \psframe[fillcolor=lightblue](10,8)
+ \pscircle[fillcolor=yellow](2,6){.8} % Sun
+ {% Rays
+ \psset{linecolor=yellow,linestyle=solid,linewidth=.3}
+ \degrees[8]
+ \multido{\i=1+1}{8}{\rput{\i}(2,6){\psline(1,0)(1.5,0)}}
+ }%
+ \pspolygon[fillcolor=green](6,0)(10,2)(10,0)% Grass
+ \psdiamond[fillcolor=red,gangle=-45](8,6)(1.5,2.5)% Kite
+ \rput{45}(8,6){\pnode(-2.5,0){Kitetail}}
+ \rput{-10}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+ \rput{-80}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+ \pnode(.8,1.5){Tailend}
+ \nccurve[fillstyle=none,angleA=270,angleB=125,ncurvB=.9,ncurvA=1.4,
+ linestyle=dotted,dotstyle=square,linewidth=.25]{Kitetail}{Tailend}
+ \newcommand{\bunting}{\pstriangle(.35,.35)}
+ \psset{fillcolor=red,labelsep=.01}
+ \naput[nrot=115,npos=.15]{\bunting}
+ \nbput[nrot=25,npos=.15]{\bunting}
+ \naput[nrot=75,npos=.4]{\bunting}
+ \nbput[nrot=115,npos=.4]{\bunting}
+ \naput[nrot=115,npos=.7]{\bunting}
+ \nbput[nrot=25,npos=.7]{\bunting}
+\end{pspicture}
+\endTeXtoEPS
+\end{pdfdisplay}
+
+\configure[pdfgraphic][width=\linewidth,
+ linewidth=2pt,
+ linecolor=gray30,
+ background=gray10,
+ rulesep=12pt]
+
+\begin{pdfdisplay}
+
+\definecolor{Pink}{rgb}{1.,0.75,0.8}
+% Flow diagram with the psmatrix environment\\[5mm]
+
+ \psframebox[linearc=5mm,cornersize=absolute]{%
+ \begin{psmatrix}[rowsep=0.5cm,colsep=0.8cm]
+ \psovalbox[fillstyle=solid,fillcolor=yellow]{Begin} \\
+ \psframebox{Initialisations} \\
+ \psdiabox[fillstyle=solid,fillcolor=Pink]{Special} &
+ \psframebox{Call to SP1} & \psframebox{Call to SP2} \\
+ \psframebox{Action 1} \\
+ \psframebox{Action 2} \\
+ \psovalbox[fillstyle=solid,fillcolor=yellow]{End}
+ % Links
+ \ncline{1,1}{2,1}
+ \ncline{2,1}{3,1}
+ \ncline{3,1}{4,1}<{\textcolor{red}{No}}
+ \ncline{4,1}{5,1}
+ \ncline{5,1}{6,1}
+ \ncline{->}{3,1}{3,2}^{\textcolor{red}{Yes}}
+ \ncline{->}{3,2}{3,3}
+ \ncbar[angleA=-90,armB=0,nodesepB=2.5mm]{->}{3,3}{4,1}
+ \end{psmatrix}}
+\end{pdfdisplay}
+
+\begin{verbatim}
+\begin{pdfdisplay}
+
+\definecolor{Pink}{rgb}{1.,0.75,0.8}
+% Flow diagram with the psmatrix environment\\[5mm]
+
+ \psframebox[linearc=5mm,cornersize=absolute]{%
+ \begin{psmatrix}[rowsep=0.5cm,colsep=0.8cm]
+ \psovalbox[fillstyle=solid,fillcolor=yellow]{Begin} \\
+ \psframebox{Initialisations} \\
+ \psdiabox[fillstyle=solid,fillcolor=Pink]{Special} &
+ \psframebox{Call to SP1} & \psframebox{Call to SP2} \\
+ \psframebox{Action 1} \\
+ \psframebox{Action 2} \\
+ \psovalbox[fillstyle=solid,fillcolor=yellow]{End}
+ % Links
+ \ncline{1,1}{2,1}
+ \ncline{2,1}{3,1}
+ \ncline{3,1}{4,1}<{\textcolor{red}{No}}
+ \ncline{4,1}{5,1}
+ \ncline{5,1}{6,1}
+ \ncline{->}{3,1}{3,2}^{\textcolor{red}{Yes}}
+ \ncline{->}{3,2}{3,3}
+ \ncbar[angleA=-90,armB=0,nodesepB=2.5mm]{->}{3,3}{4,1}
+ \end{psmatrix}}
+\end{pdfdisplay}
+\end{verbatim}
+
+\end{document}