summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/nassflow
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 /macros/latex/contrib/nassflow
Initial commit
Diffstat (limited to 'macros/latex/contrib/nassflow')
-rw-r--r--macros/latex/contrib/nassflow/aaread.me48
-rw-r--r--macros/latex/contrib/nassflow/add.lse29
-rw-r--r--macros/latex/contrib/nassflow/flow.sty373
-rw-r--r--macros/latex/contrib/nassflow/flow_man.pdfbin0 -> 68147 bytes
-rw-r--r--macros/latex/contrib/nassflow/flow_man.tex271
-rw-r--r--macros/latex/contrib/nassflow/manual.cls598
-rw-r--r--macros/latex/contrib/nassflow/manual.sty504
-rw-r--r--macros/latex/contrib/nassflow/nass_man.pdfbin0 -> 74168 bytes
-rw-r--r--macros/latex/contrib/nassflow/nass_man.tex367
-rw-r--r--macros/latex/contrib/nassflow/nassi.sty422
-rw-r--r--macros/latex/contrib/nassflow/struct.lse356
11 files changed, 2968 insertions, 0 deletions
diff --git a/macros/latex/contrib/nassflow/aaread.me b/macros/latex/contrib/nassflow/aaread.me
new file mode 100644
index 0000000000..14724b0758
--- /dev/null
+++ b/macros/latex/contrib/nassflow/aaread.me
@@ -0,0 +1,48 @@
+ This is the third public release of the nassflow package.
+ It is an update to make it work with LaTeX2e. The changes
+ are purely in the documentation and the class file needed
+ for it.
+ The versions of the package files are still for nassi.sty
+ version 5 and for flow.sty version 2.
+ This distribution is dated february 5, 1997
+
+ Johannes Braams JLBraams@cistron.nl
+
+------------------------------------------------------------------------------
+
+This set contains the document style options with macros to create either
+flow charts or nassi-schneidermann diagrams in a LaTeX document.
+
+The Nassi/Flow style options-set contains the following files:
+
+AAREAD.ME This file
+FLOW.STY Style option file with flow chart macros
+FLOW_MAN.TEX Manaul page describing how to use the flow macros
+NASSI.STY Style option file with NS-Diagram macros
+NASS_MAN.TEX Manual page describing how to use the nassi macros
+MANUAL.STY Style file to create both manual pages
+STRUCT.LSE LSEDIT support for both flow and nassi
+ADD.LSE LSEDIT support for both flow and nassi
+
+Unfortunately there are hardly any comments in the .STY files. The manual
+pages however fully descibe the use of the macros.
+
+
+The .LSE files are included in the set for those of you already using the
+LSEDIT environment and section files made for LaTeX, which are part of the
+Decus TeX collection. When included you'll have full support on the macros
+of both nassi and flow.
+
+STRUCT.LSE is a complete file which can be added to the current set of files,
+ADD.LSE contains a few definitions to be included in the current file
+LATEX_ENVIRONMENTS.LSE
+
+
+ Marion van Geest-Slort,
+ Center for the Automation of Weapon and Command Systems (CAWCS)
+ Royal Netherlands Navy
+
+ P.O. Box 10000
+ 1780 CA Den Helder
+ The Netherlands
+
diff --git a/macros/latex/contrib/nassflow/add.lse b/macros/latex/contrib/nassflow/add.lse
new file mode 100644
index 0000000000..9d7592777d
--- /dev/null
+++ b/macros/latex/contrib/nassflow/add.lse
@@ -0,0 +1,29 @@
+!
+! Add the following defenition in the menu list in the placeholder
+! "environments" in the file LATEX_ENVIRONMENTS.LSE
+
+"structure" /placeholder
+
+! Add the following definitions also somewhere in the same file
+
+
+DELETE TOKEN "\struct" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\struct" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=structure
+
+delete placeholder "structure" /language = latex
+define placeholder "structure" /language = latex -
+ /descr = "Full structure definition for Flow or NS diagram" -
+ /topic_string = "LATEX Commands Environments structure"
+
+"\scriptsize%"
+"\STRUCT{<struct-name>}{<<struct-description>>}{%"
+" <<statement>>..."
+"}%"
+"\normalsize"
+""
+end define
+
+
diff --git a/macros/latex/contrib/nassflow/flow.sty b/macros/latex/contrib/nassflow/flow.sty
new file mode 100644
index 0000000000..fa04248d6a
--- /dev/null
+++ b/macros/latex/contrib/nassflow/flow.sty
@@ -0,0 +1,373 @@
+% flow.sty 5 september 1989, C.M. Lindhout.
+%
+% Copyright (C) by CAWCS, Royal Netherlands Navy.
+% This program may be freely used and copied but may not be sold
+% without the author's written permission. This notice must remain
+% in any copy or derivative.
+%
+% Please send improvements, bug fixes, comments, etc., to
+% Marion van Geest,
+% CAWCS,
+% Royal Netherlands Navy,
+% P.O.BOX 10000,
+% 1780 CA Den Helder,
+% The Netherlands.
+
+% Modifications.
+% --------------
+% Version 2, march 1993,
+% 1) Error in empty \THEN in \IF statement corrected
+% 2) \tenrm for typesetting second parameter in \STRUCT replaced by \rm\small.
+% The reason for using \tenrm in the first place, was that originally
+% flow.sty was designed to be used with a very specific documentstyle that
+% was always typeset in 11pts. When flow.sty was adapted for more general
+% use, this \tenrm was forgotten. \rm\small serves the same purpose in our
+% document style, but is generally a better solution.
+
+\ProvidesPackage{flow}[1989/09/05 v2.0 Flow macro's.]
+%
+\newdimen\unitwidth%
+\unitwidth=60pt%
+\newbox\thentext%
+\newbox\elsetext%
+\newbox\savethentext%
+\newbox\saveelsetext%
+\newdimen\unitheight%
+\newdimen\unitysize%
+\newdimen\unitxsize%
+\newdimen\unitspace%
+\newdimen\wa%
+\newdimen\ha%
+\newdimen\wb%
+\newdimen\hb%
+\newdimen\wda%
+\newdimen\hta%
+\newdimen\wdb%
+\newdimen\htb%
+%
+\def\setiftext#1#2{\setbox\thentext=\hbox{#1}\setbox\elsetext=\hbox{#2}}%
+\setiftext{}{}%
+%
+\def\cvline#1{%
+ \hbox{\kern.5\unitwidth\rule{0.0067in}{#1}}%
+}%
+%
+\def\chline#1{%
+ \hbox{%
+ \raise.5\unitheight%
+ \hbox to #1{\leaders\hrule height0.0067in\hfill}%
+ }%
+}%
+%
+\def\VCENTER#1{%
+ \raise.5\unitspace%
+ \hbox{#1}%
+ \rule{0pt}{\unitheight}%
+}%
+%
+\def\makepicture#1{%
+ \ifvmode%
+ \cvline{.5\unitspace}
+ \hbox to \unitwidth{\hfil\hbox{#1}\hfil}%
+ \cvline{.5\unitspace}
+ \else%
+ \chline{.5\unitspace}%
+ \VCENTER{#1}%
+ \chline{.5\unitspace}%
+ \fi%
+}%
+%
+\def\ACTION#1{\makepicture{\makeaction{#1}}}%
+%
+\def\makeaction#1{%
+ \wa=0.86\unitwidth%
+ \begin{picture}(90,60)%
+ \put(00,00){\line( 0, 1){60}}%
+ \put(90,00){\line( 0, 1){60}}%
+ \put(00,00){\line( 1, 0){90}}%
+ \put(00,60){\line( 1, 0){90}}%
+ \put(02,00){%
+ \vbox to \unitysize{%
+ \vfil%
+ \parbox{\wa}{\raggedright#1}%
+ \vfil%
+ }%
+ }%
+ \end{picture}%
+}%
+%
+\def\PROC#1#2{\makepicture{\makeproc{#1}{#2}}}%
+%
+\def\makeproc#1#2{%
+ \wa=.76\unitwidth%
+ \wb=.80\unitwidth%
+ \ha=.56\unitwidth%
+ \begin{picture}(90,60)
+ \put(00,00){\line( 0, 1){60}}
+ \put(05,00){\line( 0, 1){60}}
+ \put(85,00){\line( 0, 1){60}}
+ \put(90,00){\line( 0, 1){60}}
+ \put(00,00){\line( 1, 0){90}}
+ \put(00,60){\line( 1, 0){90}}
+ \put(07,02){%
+ \vbox to \ha{%
+ \vfil%
+ \parbox{\wa}{\raggedright#2}%
+ \vfil%
+ \vbox to 2ex{}%
+ }%
+ }%
+ \put(05,02){%
+ \vbox to 2ex{%
+ \hbox to \wb{\leaders\hrule height0.0067in\hfill}%
+ \vfil%
+ \hbox to \wb{\hfil#1\hfil}%
+ }%
+ }%
+ \end{picture}%
+}%
+%
+\def\LABEL#1{\makepicture{\makelabel{#1}}}%
+%
+\def\makelabel#1{%
+ \begin{picture}(30,30)
+ \put(15,15){\circle{30}}
+ \put(00,00){\makebox(30,30){#1}}
+ \end{picture}%
+}%
+%
+\def\makeif#1{%
+ \wa=\unitxsize%
+ \advance\wa by -2ex%
+ \wb=\unitxsize%
+ \advance\wb by -6ex%
+ \begin{picture}(90,60)
+ \put(00,30){\line( 3, 2){45}}
+ \put(45,60){\line( 3,-2){45}}
+ \put(90,30){\line(-3,-2){45}}
+ \put(45,00){\line(-3, 2){45}}
+ \put(90,33){\hbox to 0pt{\copy\elsetext\hss}}
+ \put(00,00){\vbox to 0pt{\hbox to 43\unitlength{\hfil\copy\thentext}\vss}}
+ \put(00,30){%
+ \parbox{\unitxsize}{%
+ \parshape=3 3ex\wb 1ex\wa 3ex\wb%
+ \begin{center}%
+ #1%
+ \end{center}%
+ }%
+ }%
+ \end{picture}%
+}%
+%
+\def\IF#1\THEN#2\ELSE#3\ENDIF{%
+ \setbox0=\vbox{#2}%
+ \setbox1=\vbox{#3}%
+ \wda=\wd0%
+ \hta=\ht0%
+ \wdb=\wd1%
+ \htb=\ht1%
+ \hbox{%
+ \vbox{%
+ \makepicture{\makeif{#1}}%
+ }%
+ \kern-.5\unitspace\chline{.5\unitspace}%
+ \ifdim\wda=0pt%
+ \wa=.5\unitwidth%
+ \advance\wa by 0.0067in%
+ \else%
+ \wa=\wda%
+ \fi%
+ \ifdim\wdb=0pt%
+ \advance\wa by -\unitwidth%
+ \advance\wa by .5\unitspace%
+ \else%
+ \advance\wa by -.5\unitwidth%
+ \fi%
+ \chline{\wa}%
+ \rule{0.0067in}{.5\unitheight}%
+ }%
+ \hbox{%
+ \vbox{%
+ \ifdim\htb>\hta%
+ \hb=\htb%
+ \advance\hb by -\hta%
+ \cvline{\hb}%
+ \fi%
+ \box0%
+ }%
+ \ifdim\wdb=0pt%
+ \hbox{%
+ \kern.5\unitspace%
+ \rule{0.0067in}{\hta}%
+ \kern.5\unitspace%
+ }%
+ \else%
+ \vbox{%
+ \ifdim\hta>\htb%
+ \ha=\hta%
+ \advance\ha by -\htb%
+ \cvline{\ha}%
+ \fi%
+ \box1%
+ }%
+ \fi%
+ }%
+ \kern -0.0067in%
+ \hbox{%
+ \kern.5\unitwidth%
+ \ifdim\wda=0pt%
+ \wa=.5\unitwidth%
+ \advance\wa by .0067in%
+ \else
+ \wa=\wda%
+ \fi%
+ \ifdim\wdb=0pt%
+ \advance\wa by -.5\unitwidth%
+ \advance\wa by .5\unitspace%
+ \fi%
+ \rule{\wa}{0.0067in}%
+ }%
+}%
+%
+\def\WHILE#1#2\ENDWHILE{%
+ \IF{#1}%
+ \THEN{%
+ \setbox\savethentext=\copy\thentext%
+ \setbox\saveelsetext=\copy\elsetext%
+ \setbox\elsetext=\copy\savethentext%
+ \setbox\thentext=\copy\saveelsetext%
+ \ifdim\wd\thentext=0pt%
+ \ifdim\wd\elsetext=0pt%
+ \setiftext{n}{y}%
+ \fi%
+ \fi%
+ \REPEAT{%
+ \setbox\thentext=\copy\savethentext%
+ \setbox\elsetext=\copy\saveelsetext%
+ #2%
+ }%
+ \UNTIL{#1}%
+ }%
+ \ELSE{}%
+ \ENDIF%
+}%
+%
+\def\REPEAT#1\UNTIL#2{%
+ \setbox0=\vbox{#1}%
+ \wda=\wd0%
+ \hta=\ht0%
+ \hbox{%
+ \kern.5\unitwidth%
+ \ifdim\wda=0pt%
+ \wa=\unitwidth%
+ \else%
+ \wa=\wda%
+ \fi%
+ \advance\wa by -.5\unitwidth%
+ \advance\wa by .5\unitspace%
+ \rule{\wa}{0.0067in}%
+ }%
+ \kern -0.0067in%
+ \hbox{%
+ \box0%
+ \kern.5\unitspace%
+ \rule{0.0067in}{\hta}%
+ \kern.5\unitspace%
+ }%
+ \hbox{%
+ \vbox{%
+ \makepicture{\makeif{#2}}%
+ }%
+ \kern-.5\unitspace\chline{.5\unitspace}%
+ \ifdim\wda=0pt%
+ \wa=\unitwidth%
+ \else%
+ \wa=\wda%
+ \fi%
+ \advance\wa by -\unitwidth%
+ \advance\wa by .5\unitspace%
+ \chline{\wa}%
+ \rule[.5\unitheight]{0.0067in}{.5\unitheight}%
+ }%
+}%
+%
+\def\WHEN#1#2{%
+ \hbox{%
+ \vbox{%
+ \hbox{%
+ \kern.5\unitspace%
+ \parbox{\unitxsize}{\raggedright#1}%
+ }%
+ \kern.5\unitspace%
+ \chline{\unitwidth}%
+ }%
+ {#2}%
+ \chline{.5\unitspace}%
+ }%
+}%
+%
+\def\CASE#1#2\ENDCASE{%
+ \setbox0=\vbox{#2}%
+ \wda=\wd0%
+ \hta=\ht0%
+ \setbox\savethentext=\copy\thentext%
+ \setbox\saveelsetext=\copy\elsetext%
+ \setiftext{}{}%
+ \makepicture{\makeif{#1}}%
+ \setbox\thentext=\copy\savethentext%
+ \setbox\elsetext=\copy\saveelsetext%
+ \hbox{%
+ \cvline{\hta}%
+ \vbox{%
+ \box0%
+ \kern-0.0067in%
+ \hbox to \wda{\leaders\hrule height0.0067in\hfill}%
+ }%
+ \ha=\hta%
+ \advance\ha by -.5\unitheight%
+ \rule{0.0067in}{\ha}%
+ \kern.5\unitspace%
+ }%
+}%
+%
+\def\STRUCT#1#2#3{%
+ \vbox{%
+ \unitheight=0.7\unitwidth%
+ \unitysize=0.6\unitwidth%
+ \unitxsize=0.9\unitwidth%
+ \unitspace=0.1\unitwidth%
+ \unitlength=0.01\unitwidth%
+ \baselineskip=0pt%
+ \lineskip=0pt%
+ \parindent=0pt%
+ \parskip=0pt%
+ \linethickness{0.0067in}%
+ \hbox{%
+ \hbox to .5\unitspace{}%
+ \hbox{%
+ \begin{picture}(90,50)
+ \put(45,15){\oval(90,30)}
+ \put(00,00){\makebox(90,30){#1}}
+ \end{picture}%
+ \hbox to .5\unitwidth{}%
+ \wa=\textwidth%
+ \advance\wa by -1.5\unitwidth%
+ \raise\unitspace%
+ \hbox{\rm\small\parbox{\wa}{#2}}%
+ }%
+ }%
+ \cvline{.5\unitspace}%
+ {#3}%
+ \cvline{.5\unitspace}%
+ \hbox{%
+ \hbox to .5\unitspace{}%
+ \hbox{%
+ \begin{picture}(90,30)
+ \put(45,15){\oval(90,30)}
+ \put(00,00){\makebox(90,30){return}}
+ \end{picture}%
+ }%
+ }%
+ }%
+}%
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/nassflow/flow_man.pdf b/macros/latex/contrib/nassflow/flow_man.pdf
new file mode 100644
index 0000000000..05068c22ca
--- /dev/null
+++ b/macros/latex/contrib/nassflow/flow_man.pdf
Binary files differ
diff --git a/macros/latex/contrib/nassflow/flow_man.tex b/macros/latex/contrib/nassflow/flow_man.tex
new file mode 100644
index 0000000000..a3f4061405
--- /dev/null
+++ b/macros/latex/contrib/nassflow/flow_man.tex
@@ -0,0 +1,271 @@
+\documentclass[11pt,twoside]{manual}
+\usepackage{flow}
+\tool{FLOW}{Typeset Flow diagrams in \LaTeX}{2}
+\begin{document}
+
+\maketitle
+
+\begin{para}{Synopsis}
+\verb"\STRUCT{struct name}{structure purpose}{statements}"
+
+\vspace{0.25cm}
+For a description of the statements see section Macros
+\end{para}
+
+\begin{para}{Description}
+The {\tt Flow} macros enable the user to create flow diagrams in
+a \LaTeX\ document. The macros can be used in any type of document, within all
+the standard \LaTeX\ environments.
+
+A flow diagram in this context is described in macros resembling a pseudo code.
+The diagram itself is defined as a structure and is build from statements.
+Macros are available for all standard programming statements (if, while, action
+etc.).
+
+The Language Sensitive Editor for \LaTeX, LSA, is extended to support the
+creation of flow diagrams with the {\tt Flow} macros.
+
+The macros needed to create a flow diagram in your \LaTeX\
+document will be made available to you when you include the option \verb"Flow"
+in the \verb"\documentstyle" command at the start of your \LaTeX\ file, as in
+the following example:
+\begin{verbatim}
+\documentstyle[11pt,Flow]{article}
+\end{verbatim}
+
+A flow diagram in the context of the {\tt Flow} macros is called a structure.
+The drawing of the diagram is based on units. A unit can be seen as the box in
+which an action is described. The unit has an attribute, the width. It
+determines the width of the boxes to be drawn. Users can change the with of
+units through a macro which must be used before the actual structure is
+described.
+
+By default the text in the diagrams is typeset in the same size as the text in
+the document. This will be to large.
+Before starting a structure it is adviced to set the desired text size. For the
+default setting of the unit width \verb|\scriptsize| is recommended.
+
+When you run into errors like {\tt overfull vbox[]} you may have to use a
+smaller text size like \verb|\tiny|. In a default sized box 4 lines of
+{\tt scriptsize} text can be placed. When {\tt tiny} is used 5 lines will fit.
+
+Do not forget to reset the text size to {\tt normalsize} after the structure.
+\end{para}
+
+\begin{para}{Macros}
+
+The available macros fall into three categories:
+
+\begin{enumerate}
+\item Width setting of the units. It must appear before the
+structure.
+\item Definition of the structure itself.
+\item Statements. They must appear within the structure definition.
+\end{enumerate}
+
+\goodbreak
+Width setting macro is:
+\begin{itemize}
+
+\nobreak
+\item \verb"\unitwidth=size" \\
+Specifies the minimum width of a unit. Size must be given as a standard \LaTeX\
+length.
+\end{itemize}
+
+\goodbreak
+Structure definition macro is:
+\begin{itemize}
+
+\nobreak
+\item \verb"\STRUCT{struct-name}{struct-description}{statements}%" \\
+Specifies the complete diagram. The structure name will appear at the top of the
+flow diagram and the description, which can be a short description of its
+purpose, will be put beside the actual diagram. The statements of the structure,
+described below, must be specified as part of the \verb"\STRUCT" command.
+\end{itemize}
+
+\goodbreak
+Statement macros are:
+\begin{itemize}
+
+\nobreak
+\item \verb"\ACTION{action}%" \\
+Specifies a normal statement.
+
+\item \verb"\PROC{proc-name}{proc-description}%" \\
+Specifies a special kind of action, a procedure call. The proc-name will be put
+below the proc-description text in the same box, separated by a horizontal line.
+
+\item \verb"\LABEL{lab-name}%" \\
+Specifies a label with a label-name of only a few letters.
+
+\item \verb"\IF{condition}\THEN{statements}\ELSE{statements}\ENDIF%" \\
+Specifies an if statement with a condition and a collection of statements in the
+{\tt THEN} and the {\tt ELSE} part. Neither the {\tt THEN} nor the {\tt ELSE}
+part is optional. If one of them is not needed an empty statement,
+``\verb"{}"'', must be used.
+
+\item \verb"\REPEAT{statements}\UNTIL{test}%" \\
+Specifies a loop statement with a collection of statements and an
+end-condition.
+
+\item \verb"\WHILE{condition}{statements}\ENDWHILE%" \\
+Specifies a loop statement with a start-condition and a collection of
+statements.
+
+\item \verb"\CASE{case-item}{when-statements}\ENDCASE%" \\
+Specifies a case statement with a case-item and a collection of when-statements.
+
+\item \verb"\WHEN{condition}{statements}%" \\
+Part of a case statement. Specifies a condition and a collection of statements.
+\end{itemize}
+
+\goodbreak
+Options are:
+\begin{itemize}
+
+\nobreak
+\item \verb"\setiftext{downward}{right-hand}%"\\
+Specifies the text to be put on the downward and right-hand sides of the
+condition of an if statement. By default the settings are empty. The scope for
+these settings depends on the position of the command within the document.
+
+\begin{itemize}
+\item If the command occurs before a \verb"\STRUCT" statement, the settings
+remain valid for all \verb"\IF" statements in all following structures until
+they are reset by a \verb"\setiftext" command with the same scope. (Remember to
+put the \verb"\setiftext" command {\bf after} any font size changing commands).
+
+\item If the command occurs inside a \verb"\STRUCT" statement but outside any
+other commands, the settings will remain valid for all \verb"\IF" statements in
+the same structure until they are reset by a \verb"\setiftext" command with the
+same scope.
+
+\item If the command occurs inside a command within a structure, the settings
+will remain valid for all \verb"\IF" statements within the command (for
+instance an if statement within the then or else part of another if statement)
+until they are reset by a \verb"\setiftext" command with the same scope.
+
+\end{itemize}
+
+It is allowed to `nest' the \verb"\setiftext" commands, thus
+changing the settings for a particular part of a structure or a document.
+
+\end{itemize}
+
+Note that each line within the structure, including the command itself,
+{\em must} be concluded by a \%.
+
+The text appearing (between the braces) in the structure definition and in all
+statements is free but must adhere to the standard \LaTeX\ syntax. Every text is
+considered a paragraph in the \LaTeX\ context.
+\end{para}
+
+\begin{para}{Files}
+The file \verb"TEX$INPUTS:FLOW.STY" specifies the flow macros.
+\end{para}
+
+\begin{para}{See also}
+The pages on \LaTeX, LSA and NASSI in this section of the manual.
+\end{para}
+
+\begin{para}{Bugs}
+The {\tt Flow} option is mutually exclusive with the {\tt Nassi} option
+because the same macro names are used.
+
+Always put the same number of actions in each branch ({\tt WHEN} statement) of a
+{\tt CASE} statement. Only {\tt ACTION} and {\tt PROC} statements are allowed
+here.
+
+
+{\tt Flow} has a limit to the number of statement macro's in one structure
+definition. For example a maximum of 26 IF macro's can be used. If one of these
+limits is reached, \LaTeX\ shows some curious error messages, like ``You cannot
+use = as a prefix'', which have no relation at all to the real problem.
+\end{para}
+
+\begin{para}{Example}
+The following is an example of a structure with all possible statements. The
+resulting diagram is shown below.
+
+\begin{verbatim}
+\scriptsize
+\STRUCT{struct name}{structure purpose}{%
+ \ACTION{initial statement}%
+ \PROC{proc name}{procedure purpose}%
+ \IF{condition\\ to test}%
+ \THEN{%
+ \ACTION{true action 1}%
+ \ACTION{true action 2}%
+ }%
+ \ELSE{%
+ \ACTION{false action}%
+ }%
+ \ENDIF%
+ \LABEL{A}%
+ \REPEAT{%
+ \ACTION{statement to repeat}%
+ }%
+ \UNTIL{end condition}%
+ \WHILE{start condition}{%
+ \ACTION{statement to do}%
+ }%
+ \ENDWHILE%
+ \CASE{case item}{%
+ \WHEN{condition 1}{%
+ \ACTION{statement to do}%
+ }%
+ \WHEN{condition 2}{%
+ \ACTION{statement to do}%
+ }%
+ \WHEN{condition 3}{%
+ \ACTION{statement to do}%
+ }%
+ }%
+ \ENDCASE%
+}%
+\normalsize
+\end{verbatim}
+\end{para}
+
+\newpage
+\scriptsize
+\STRUCT{struct name}{structure purpose}{%
+ \ACTION{initial statement}%
+ \PROC{proc name}{procedure purpose}%
+ \IF{condition\\ to test}%
+ \THEN{%
+ \ACTION{true action 1}%
+ \ACTION{true action 2}%
+ }%
+ \ELSE{%
+ \ACTION{false action}%
+ }%
+ \ENDIF%
+ \LABEL{A}%
+ \REPEAT{%
+ \ACTION{statement to repeat}%
+ }%
+ \UNTIL{end condition}%
+ \WHILE{start condition}{%
+ \ACTION{statement to do}%
+ }%
+ \ENDWHILE%
+ \CASE{case item}{%
+ \WHEN{condition 1}{%
+ \ACTION{statement to do}%
+ }%
+ \WHEN{condition 2}{%
+ \ACTION{statement to do}%
+ }%
+ \WHEN{condition 3}{%
+ \ACTION{statement to do}%
+ }%
+ }%
+ \ENDCASE%
+}%
+\normalsize
+
+\end{document}
+
diff --git a/macros/latex/contrib/nassflow/manual.cls b/macros/latex/contrib/nassflow/manual.cls
new file mode 100644
index 0000000000..e3ea6e1380
--- /dev/null
+++ b/macros/latex/contrib/nassflow/manual.cls
@@ -0,0 +1,598 @@
+% Manual.cls 5 february 1997, by Johannes Braams, based on:
+% Manual.sty 11 july 1989, derived from article.sty 8 april 1985
+% Implementattion of the manual page style used at the CAWCS for general
+% software user documentation.
+%
+% Copyright (C) 1989 by Marion van Geest,
+% Center for the Automation of Weapon and Command Systems,
+% Royal Netherlands Navy
+%
+% Manual defines some commands and an environment:
+%
+% \tool{name}{1 line description}{version number}
+% \begin{para}{title} .. \end{para}
+% used to document all sorts of software tools in Unix-like
+% manual page style
+% \package{name}{version number}
+% used to document Ada package specifications
+% \urm{name}{version number}
+% used to document all sorts of software tools in
+% users reference manuals
+% (titlepage is mandatory)
+%
+% and its own pagestyle so \pagestyle cannot be used
+%
+% Contact:
+%
+% Marion van Geest,
+% KM/CAWCS
+% P.O. Box 10000
+% 1780 CA Den Helder
+% The Netherlands
+
+\ProvidesClass{manual}[1997/02/05 v2.0 CAWCS manuals]
+
+\newcommand\@ptsize{}
+\newif\if@restonecol
+\newif\if@titlepage
+\@titlepagefalse
+\if@compatibility\else
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{a5paper}
+ {\setlength\paperheight {210mm}%
+ \setlength\paperwidth {148mm}}
+\DeclareOption{b5paper}
+ {\setlength\paperheight {250mm}%
+ \setlength\paperwidth {176mm}}
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{legalpaper}
+ {\setlength\paperheight {14in}%
+ \setlength\paperwidth {8.5in}}
+\DeclareOption{executivepaper}
+ {\setlength\paperheight {10.5in}%
+ \setlength\paperwidth {7.25in}}
+\DeclareOption{landscape}
+ {\setlength\@tempdima {\paperheight}%
+ \setlength\paperheight {\paperwidth}%
+ \setlength\paperwidth {\@tempdima}}
+\fi
+\if@compatibility
+ \renewcommand\@ptsize{0}
+\else
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\fi
+\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
+\if@compatibility\else
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\fi
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\if@compatibility\else
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+\fi
+\if@compatibility\else
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\fi
+\DeclareOption{twocolumn}{\@twocolumntrue}
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+\DeclareOption{openbib}{%
+ \AtEndOfPackage{%
+ \renewcommand\@openbib@code{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+ \renewcommand\newblock{\par}}%
+}
+
+\ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
+\ProcessOptions
+\input{size1\@ptsize.clo}
+
+ %Page layout inserts
+
+\setlength\vsize{29.5cm}
+\setlength\hsize{21cm}
+\setlength\topmargin{-36\p@}
+\setlength\oddsidemargin{36\p@}
+\setlength\evensidemargin\z@
+\setlength\textheight{24cm}
+\setlength\textwidth{15.0cm}
+\setlength\parindent\z@
+\setlength\parskip\z@
+\setlength\marginparsep\z@
+\setlength\marginparwidth\z@
+
+%end of inserts
+
+
+
+\renewcommand\theenumi{\@arabic\c@enumi}
+\renewcommand\theenumii{\@alph\c@enumii}
+\renewcommand\theenumiii{\@roman\c@enumiii}
+\renewcommand\theenumiv{\@Alph\c@enumiv}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{\textbullet}
+\newcommand\labelitemii{\normalfont\bfseries \textendash}
+\newcommand\labelitemiii{\textasteriskcentered}
+\newcommand\labelitemiv{\textperiodcentered}
+
+\newenvironment{description}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
+\newcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont\bfseries #1}
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ \bfseries \abstractname
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \begin{center}%
+ {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \quotation
+ \fi}
+ {\if@twocolumn\else\endquotation\fi}
+\fi
+\newenvironment{verse}
+ {\let\\\@centercr
+ \list{}{\itemsep \z@
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em}%
+ \item\relax}
+ {\endlist}
+\newenvironment{quotation}
+ {\list{}{\listparindent \z@
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@}%
+ \item\relax}
+ {\endlist}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item\relax}
+ {\endlist}
+
+\renewcommand \theequation {\@arabic\c@equation}
+
+\if@compatibility
+\newenvironment{titlepage}
+ {%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \setcounter{page}\z@
+ }%
+ {\if@restonecol\twocolumn \else \newpage \fi
+ }
+\else
+\newenvironment{titlepage}
+ {%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \setcounter{page}\@ne
+ }%
+ {\if@restonecol\twocolumn \else \newpage \fi
+ \if@twoside\else
+ \setcounter{page}\@ne
+ \fi
+ }
+\fi
+
+\setlength\arraycolsep{5\p@}
+\setlength\tabcolsep{6\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+\setlength\tabbingsep{\labelsep}
+\skip\@mpfootins = \skip\footins
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+
+\newcounter{part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+\renewcommand \thepart {\@Roman\c@part}
+\renewcommand \thesection {\@arabic\c@section}
+\renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
+\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
+\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
+
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+
+\newcommand\@pnumwidth{1.55em}
+\newcommand\@tocrmarg{2.55em}
+\newcommand\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\newcommand\tableofcontents{%
+ \section*{\contentsname
+ \@mkboth{%
+ \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
+ \@starttoc{toc}%
+ }
+
+\newcommand*\l@part[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty\@secpenalty
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \setlength\@tempdima{3em}%
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\leavevmode
+ \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+ \nobreak
+ \if@compatibility
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \fi
+ \endgroup
+ \fi}
+
+\newcommand*\l@section[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \bfseries
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi}
+
+\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+
+\newcommand\listoffigures{%
+ \section*{\listfigurename
+ \@mkboth{\MakeUppercase\listfigurename}%
+ {\MakeUppercase\listfigurename}}%
+ \@starttoc{lof}%
+ }
+\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\newcommand\listoftables{%
+ \section*{\listtablename
+ \@mkboth{%
+ \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
+ \@starttoc{lot}%
+ }
+\let\l@table\l@figure
+
+\newdimen\bibindent
+\setlength\bibindent{1.5em}
+\newenvironment{thebibliography}[1]
+ {\section*{\refname
+ \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
+\let\@openbib@code\@empty
+
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\section*{\indexname}]%
+ \@mkboth{\MakeUppercase\indexname}%
+ {\MakeUppercase\indexname}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+
+\newcommand\@idxitem{\par\hangindent 40\p@}
+\newcommand\subitem{\@idxitem \hspace*{20\p@}}
+\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+
+\renewcommand\footnoterule{%
+ \kern-3\p@
+ \hrule\@width.4\columnwidth
+ \kern2.6\p@}
+\newcommand\@makefntext[1]{%
+ \parindent 1em%
+ \noindent
+ \hb@xt@1.8em{\hss\@makefnmark}#1}
+
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize
+ \unhbox\@tempboxa
+ \par
+ \else
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+\newcommand\maketitle{
+ \if@toolspec \@maketooltitle
+ \else
+ \par
+ \begingroup
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{%
+ \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{plain}
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ \fi}
+
+\def\@maketitle{
+ \newpage
+ \null
+ \vskip 2em
+ \begin{center}%
+ {\LARGE \@title \par} %
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}%
+ \par}
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par
+ \vskip 1.5em}
+
+\if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markboth {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@
+ \thesection\quad
+ \fi
+ ##1}}{}}%
+ \def\subsectionmark##1{%
+ \markright {%
+ \ifnum \c@secnumdepth >\@ne
+ \thesubsection\quad
+ \fi
+ ##1}}}
+\else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \thesection\quad
+ \fi
+ ##1}}}}
+\fi
+
+\def\ps@myheadings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\@gobbletwo
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+ }
+
+% Special commands for manual pages, ada specs and urms
+
+\newif\if@toolspec \@toolspecfalse
+
+\def\tool#1#2#3{%
+ \gdef\@headname{#1}%
+ \gdef\@tooldesc{#2}%
+ \gdef\@headvrs{#3}%
+ \@toolspectrue
+ \pagestyle{manual}}
+
+\def\package#1#2{%
+ \gdef\@headname{#1}%
+ \gdef\@headvrs{#2}%
+ \pagestyle{manual}}
+
+\def\urm#1#2{%
+ \gdef\@headname{#1}%
+ \gdef\@headvrs{#2}%
+ \pagestyle{manual}}
+
+\def\ps@manual{%
+ \def\@oddhead{Version: \@headvrs\hfill{\large\bfseries\@headname}}
+ \def\@oddfoot{\hfil\normalfont\thepage\hfil}
+ \def\@evenhead{{\large\bfseries\@headname}\hfill Version: \@headvrs}
+ \def\@evenfoot{\hfil\normalfont\thepage\hfil}
+ \def\sectionmark##1{}
+ \def\subsectionmark##1{}}
+
+\newcommand*\@maketooltitle{
+ \par
+ \begingroup
+ \newpage
+ \global\@topnum\z@
+ \thispagestyle{manual}
+ \parindent0cm
+ \begingroup
+ \para{Name}
+ {\Large\bfseries \@headname} -- \@tooldesc
+ \endpara
+ \endgroup
+ \par
+ \begingroup
+ \para{Date}
+ \today
+ \endpara
+ \endgroup
+ \endgroup}
+
+\newenvironment{para}[1]{%
+ \vspace{0.5cm}
+ \goodbreak
+ {\Large\emph{#1}}
+ \nobreak
+ \quotation
+ }{%
+ \endquotation}
+
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\refname{References}
+\newcommand\indexname{Index}
+\newcommand\figurename{Figure}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+\newcommand\today{}
+\edef\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\setlength\columnsep{10\p@}
+\setlength\columnseprule{0\p@}
+\pagestyle{plain}
+\pagenumbering{arabic}
+\if@twoside
+\else
+ \raggedbottom
+\fi
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+\else
+ \onecolumn
+\fi
+\endinput
diff --git a/macros/latex/contrib/nassflow/manual.sty b/macros/latex/contrib/nassflow/manual.sty
new file mode 100644
index 0000000000..5c934b9423
--- /dev/null
+++ b/macros/latex/contrib/nassflow/manual.sty
@@ -0,0 +1,504 @@
+% Manual.sty 11 july 1989, derived from article.sty 8 april 1985
+% Implementattion of the manual page style used at the CAWCS for general
+% software user documentation.
+%
+% Copyright (C) 1989 by Marion van Geest,
+% Center for the Automation of Weapon and Command Systems,
+% Royal Netherlands Navy
+%
+% Manual defines some commands and an environment:
+%
+% \tool{name}{1 line description}{version number}
+% \begin{para}{title} .. \end{para}
+% used to document all sorts of software tools in Unix-like
+% manual page style
+% \package{name}{version number}
+% used to document Ada package specifications
+% \urm{name}{version number}
+% used to document all sorts of software tools in
+% users reference manuals
+% (titlepage is mandatory)
+%
+% and its own pagestyle so \pagestyle cannot be used
+%
+% Contact:
+%
+% Marion van Geest,
+% KM/CAWCS
+% P.O. Box 10000
+% 1780 CA Den Helder
+% The Netherlands
+
+
+
+\typeout{Document Style 'Manual'. Released 11 juli 1989 Ground Support}
+
+\def\@ptsize{0}
+\@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+
+\def\ds@twoside{
+ \@twosidetrue
+ \@mparswitchtrue}
+
+\def\ds@draft{\overfullrule 5pt}
+
+\@options
+\input art1\@ptsize.sty\relax
+
+%Page layout inserts
+
+\vsize=29.5cm
+\hsize=21cm
+\topmargin=-36pt
+\oddsidemargin= 36pt
+\evensidemargin= 0pt
+\textheight=24cm
+\textwidth=15.0cm
+\parindent=0pt
+\parskip=0pt
+\marginparsep=0cm
+\marginparwidth=0cm
+
+%end of inserts
+
+
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+
+\def\verse{
+ \let\\=\@centercr
+ \list{}{\itemsep\z@
+ \itemindent -1.5em
+ \listparindent \itemindent
+ \rightmargin\leftmargin
+ \advance\leftmargin 1.5em}
+ \item[]}
+
+\let\endverse\endlist
+
+\def\quotation{
+ \list{}{\listparindent 0em
+ \itemindent\listparindent
+ \rightmargin\leftmargin
+ \parsep 0pt plus 1pt}
+ \item[]}
+
+\let\endquotation=\endlist
+
+\def\quote{
+ \list{}{\rightmargin\leftmargin}
+ \item[]}
+
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+
+\def\description{
+ \list{}{\labelwidth\z@
+ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+
+\let\enddescription\endlist
+
+
+
+\def\theequation{\arabic{equation}}
+
+
+\def\titlepage{
+ \@restonecolfalse
+ \if@twocolumn
+ \@restonecoltrue
+ \onecolumn
+ \else
+ \newpage
+ \fi
+ \thispagestyle{empty}
+ \c@page\z@}
+
+\def\endtitlepage{
+ \if@restonecol
+ \twocolumn
+ \else
+ \newpage
+ \fi}
+
+\arraycolsep 5pt
+\tabcolsep 6pt
+\arrayrulewidth .4pt
+\doublerulesep 2pt
+\tabbingsep
+\labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt
+\fboxrule = .4pt
+
+
+\newcounter{part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+\def\thepart{\Roman{part}} \def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\tableofcontents{
+ \section*{Contents
+ \markboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}}
+
+\def\l@part#1#2{
+ \addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt}
+ \begingroup
+ \@tempdima 3em
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip-\@pnumwidth
+ {\large \bf
+ \leavevmode #1
+ \hfil
+ \hbox to\@pnumwidth{\hss #2}}
+ \par
+ \nobreak
+ \endgroup}
+
+\def\l@section#1#2{
+ \addpenalty{\@secpenalty}
+ \addvspace{1.0em plus 1pt}
+ \@tempdima 1.5em
+ \begingroup
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf
+ \leavevmode #1
+ \hfil
+ \hbox to\@pnumwidth{\hss #2}
+ \par
+ \endgroup}
+
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+
+\def\listoffigures{
+ \section*{List of Figures
+ \markboth{LIST OF FIGURES}{LIST OF FIGURES}}
+ \@starttoc{lof}}
+
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+
+\def\listoftables{
+ \section*{List of Tables
+ \markboth{LIST OF TABLES}{LIST OF TABLES}}
+ \@starttoc{lot}}
+
+\let\l@table\l@figure
+
+
+
+\def\thebibliography#1{
+ \section*{References
+ \markboth{REFERENCES}{REFERENCES}}
+ \list{[\arabic{enumi}]}
+ {\settowidth\labelwidth{[#1]}
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+
+\let\endthebibliography=\endlist
+
+
+
+\newif\if@restonecol
+
+\def\theindex{
+ \@restonecoltrue
+ \if@twocolumn
+ \@restonecolfalse
+ \fi
+ \columnseprule \z@
+ \columnsep 35pt
+ \twocolumn[\section*{Index}]
+ \markboth{INDEX}{INDEX}
+ \thispagestyle{plain}
+ \parindent\z@
+ \parskip\z@ plus .3pt\relax
+ \let\item\@idxitem}
+
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+
+\def\footnoterule{
+ \kern-3\p@
+ \hrule width .4
+ \columnwidth
+ \kern 2.6\p@}
+
+\long\def\@makefntext#1{
+ \parindent 1em
+ \noindent
+ \hbox to 1.8em
+ {\hss$^{\@thefnmark}$}
+ #1}
+
+
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize
+ \unhbox\@tempboxa
+ \par
+ \else
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+\def\maketitle{
+ \if@toolspec \@maketooltitle
+ \else
+ \par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else
+ \newpage
+ \global\@topnum\z@
+ \@maketitle
+ \fi
+ \thispagestyle{plain}
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}
+ \gdef\@author{}
+ \gdef\@title{}
+ \let\thanks\relax
+ \fi}
+
+\def\@maketitle{
+ \newpage
+ \null
+ \vskip 2em
+ \begin{center}
+ {\LARGE \@title \par}
+ \vskip 1.5em
+ {\large
+ \lineskip .5em
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}
+ \par}
+ \vskip 1em
+ {\large \@date}
+ \end{center}
+ \par
+ \vskip 1.5em}
+
+\def\abstract{
+ \if@twocolumn
+ \section*{Abstract}
+ \else
+ \small
+ \begin{center}
+ {\bf Abstract
+ \vspace{-.5em}
+ \vspace{0pt}}
+ \end{center}
+ \quotation
+ \fi}
+
+\def\endabstract{
+ \if@twocolumn
+ \else
+ \endquotation
+ \fi}
+
+
+\mark{{}{}}
+
+\if@twoside
+ \def\ps@headings{
+ \def\@oddfoot{}
+ \def\@evenfoot{}
+ \def\@evenhead{\rm\thepage\hfil \sl \leftmark}
+ \def\@oddhead{\hbox{}\sl \rightmark \hfil\rm\thepage}
+ \def\sectionmark##1{\markboth
+ {\uppercase{
+ \ifnum \c@secnumdepth>\z@
+ \thesection\hskip 1em\relax \fi
+ ##1}}
+ {}}
+ \def\subsectionmark##1{\markright
+ {\ifnum \c@secnumdepth>\@ne
+ \thesubsection\hskip 1em\relax \fi
+ ##1}}}
+
+\else
+ \def\ps@headings{
+ \def\@oddfoot{}
+ \def\@evenfoot{}
+ \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
+ \def\sectionmark##1{\markright{\uppercase
+ {\ifnum \c@secnumdepth >\z@
+ \thesection\hskip 1em\relax \fi
+ ##1}}}}
+\fi
+
+\def\ps@myheadings{\def\@oddhead{\hfil\large\bf\rightmark\hbox{}}
+ \def\@oddfoot{\hfil\rm\thepage\hfil}
+ \def\@evenhead{\hbox{}\large\bf\leftmark\hfill}
+ \def\@evenfoot{\hfil\rm\thepage\hfil}
+ \def\sectionmark##1{}
+ \def\subsectionmark##1{}}
+
+% Special commands for manual pages, ada specs and urms
+
+\newif\if@toolspec \@toolspecfalse
+
+\def\tool#1#2#3{\gdef\@headname{#1}
+ \gdef\@tooldesc{#2}
+ \gdef\@headvrs{#3}
+ \@toolspectrue
+ \pagestyle{manual}}
+
+\def\package#1#2{\gdef\@headname{#1}
+ \gdef\@headvrs{#2}
+ \pagestyle{manual}}
+
+\def\urm#1#2{\gdef\@headname{#1}
+ \gdef\@headvrs{#2}
+ \pagestyle{manual}}
+
+\def\ps@manual{\def\@oddhead{\hbox{}Version: \@headvrs\hfill
+ {\large\bf\@headname}\hbox{}}
+ \def\@oddfoot{\hfil\rm\thepage\hfil}
+ \def\@evenhead{\hbox{}{\large\bf\@headname}
+ \hfill Version: \@headvrs\hbox{}}
+ \def\@evenfoot{\hfil\rm\thepage\hfil}
+ \def\sectionmark##1{}
+ \def\subsectionmark##1{}}
+
+\def\@maketooltitle{
+ \par
+ \begingroup
+ \newpage
+ \global\@topnum\z@
+ \thispagestyle{manual}
+ \parindent0cm
+ \begingroup
+ \para{Name}
+ {\Large\bf \@headname} -- \@tooldesc
+ \endpara
+ \endgroup
+ \par
+ \begingroup
+ \para{Date}
+ \today
+ \endpara
+ \endgroup
+ \endgroup}
+
+\def\para#1{
+\vspace{0.5cm}
+\goodbreak
+{\Large{\em #1}}
+\nobreak
+\quotation}
+
+\def\endpara{\endquotation}
+
+
+
+\def\today{
+ \ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December
+ \fi
+ \space\number\day,
+ \number\year}
+
+
+\ps@plain \pagenumbering{arabic} \onecolumn
+
+\if@twoside
+\else
+ \raggedbottom\fi
+
diff --git a/macros/latex/contrib/nassflow/nass_man.pdf b/macros/latex/contrib/nassflow/nass_man.pdf
new file mode 100644
index 0000000000..81aae4b7fb
--- /dev/null
+++ b/macros/latex/contrib/nassflow/nass_man.pdf
Binary files differ
diff --git a/macros/latex/contrib/nassflow/nass_man.tex b/macros/latex/contrib/nassflow/nass_man.tex
new file mode 100644
index 0000000000..93b76ada24
--- /dev/null
+++ b/macros/latex/contrib/nassflow/nass_man.tex
@@ -0,0 +1,367 @@
+\documentclass[11pt,twoside]{manual}
+\usepackage{nassi}
+\tool{NASSI}{Typeset Nassi-Schneiderman diagrams in \LaTeX}{3}
+
+\hyphenation{sta-te-ment}
+\begin{document}
+
+\maketitle
+
+\begin{para}{Synopsis}
+\verb"\STRUCT{struct name}{structure purpose}{statements}"
+
+\vspace{0.25cm}
+For a description of the statements see section Macros
+\end{para}
+
+\begin{para}{Description}
+The {\tt Nassi} macros enable the user to create Nassi-Schneiderman diagrams in
+a \LaTeX\ document. The macros can be used in any type of document, within all
+the standard \LaTeX\ environments.
+
+An NS-diagram in this context is described in macros resembling a pseudo code.
+The diagram itself is defined as a structure and is build from statements.
+Macros are available for all standard programming statements (if, while, action
+etc.).
+
+The Language Sensitive Editor for \LaTeX, LSA, is extended to support the
+creation of NS-diagrams with the {\tt Nassi} macros.
+
+The macros needed to create a Nassi-Schneiderman diagram in your \LaTeX\
+document will be made available to you when you include the option \verb"Nassi"
+in the \verb"\documentstyle" command at the start of your \LaTeX\ file, as in
+the following example:
+\begin{verbatim}
+\documentstyle[11pt,Nassi]{article}
+\end{verbatim}
+
+An NS-diagram in the context of the {\tt Nassi} macros is called a structure.
+The drawing of the diagram is based on units. A unit can be seen as the box in
+which an action is described. Both the structure and the unit have an attribute,
+the width. The layout of the diagram is determined from the value of these
+attributes. Both can be changed by the user through macros which must be used
+before the actual structure is described. They have the following effect:
+
+\begin{itemize}
+\item If both attributes have their default values, the unit width is 60 points
+(there are 72 points to an inch). The width of the structure is determined by
+the number of units on one line, while each unit has a minimum width of 60
+points. The maximum width of a unit is the structure width.
+\item If the unit width is specified by the user the same rules apply but the
+minimum width of a unit is the specified width.
+\item If the structure width is specified by the user, the diagram will have
+this width, while the width of each unit is determined depending on their
+contents and the number of units on one line. The maximum unit width is still
+the structure width.
+\end{itemize}
+
+{\em It is recommended that users do not change both attributes for the same
+structure.}
+
+By default the text in the diagrams is typeset in the same size as the text in
+the document. This will be to large.
+Before starting a structure it is adviced to set the desired text size. For the
+default settings of structure and unit width \verb|\scriptsize| is recommended.
+
+When you run into errors like {\tt overfull hbox[]} you may either have to use a
+smaller text size like \verb|\tiny| or give a proper hyphenation directions
+for the indicated text.
+
+Do not forget to reset the text size to {\tt normalsize} after the structure.
+\end{para}
+
+\begin{para}{Macros}
+The available macros fall into four categories:
+
+\begin{enumerate}
+\item Width settings of structure and unit. They must appear before the
+structure.
+\item Definition of the structure itself.
+\item Statements. They must appear within the structure definition.
+\item Options. They may appear before as well as within the structure
+definition.
+\end{enumerate}
+
+Width setting macros are:
+\begin{itemize}
+
+\item \verb"\unitwidth=size" \\
+Specifies the minimum width of a unit. Size must be given as a standard \LaTeX\
+length.
+
+\item \verb"\nassiwidth=size" \\
+Specifies the total width of the diagram. Size must be given as a standard
+\LaTeX\ length. For a diagram with the same width as the normal text the
+command \verb"\nassiwidth=\textwidth" can be used.
+\end{itemize}
+
+Structure definition macro is:
+\begin{itemize}
+
+\item \verb"\STRUCT{struct-name}{struct-description}{statements}%" \\
+Specifies the complete diagram. The structure name and description, which can be
+a short description of its purpose, will be put above the actual diagram. The
+statements of the structure, described below, must be specified as part of the
+\verb"\STRUCT" command.
+\end{itemize}
+
+Statement macros are:
+\begin{itemize}
+
+\item \verb"\ACTION{action}%" \\
+Specifies a normal statement.
+
+\item \verb"\PROC{proc-name}{proc-description}%" \\
+Specifies a special kind of action, a procedure call. The proc-name will be put
+behind the proc-description text in brackets.
+
+\item \verb"\ACCEPT{entry-name}{statements}\ENDACCEPT%" \\
+Specifies the {\tt ADA} accept statement. The entry-name will be followed by
+a separate box containing the statements.
+
+This statement is not available for flow structures.
+
+\item \verb"\IF{condition}\THEN{statements}\ELSE{statements}\ENDIF%" \\
+Specifies an if statement with a condition and a collection of statements in the
+{\tt THEN} and the {\tt ELSE} part. Neither the {\tt THEN} nor the {\tt ELSE}
+part is optional. If one of them is not needed an empty statement,
+``\verb"{}"'', must be used.
+
+\item \verb"\REPEAT{statements}\UNTIL{test}%" \\
+Specifies a loop statement with a collection of statements and an
+end-condition.
+
+\item \verb"\WHILE{condition}{statements}\ENDWHILE%" \\
+Specifies a loop statement with a start-condition and a collection of
+statements.
+
+\item \verb"\CASE{case-item}{when-statements}\ENDCASE%" \\
+Specifies a case statement with a case-item and a collection of when-statements.
+The case statement can also be used to represent the \verb"ADA" select
+statement by specifying \verb"select" as the case-item.
+
+\item \verb"\WHEN{condition}{statements}%" \\
+Part of a case statement. Specifies a condition and a collection of statements.
+When the case statement is used as an \verb"ADA" select statement the
+condition represents the \verb"gard", \verb"delay" or \verb"else" part.
+
+\end{itemize}
+
+Options are:
+
+\begin{itemize}
+\item \verb"\setiftext{left-hand}{right-hand}%" \\
+Specifies the text to be put on the left-hand and right-hand sides of the
+condition of an if statement. Defaults are ``Y'' and ``N'' for the left-hand
+and the right-hand respectively. The scope for these settings depends on the
+position of the command within the document.
+
+\begin{itemize}
+\item If the command occurs before a \verb"\STRUCT" statement, the settings
+remain valid for all \verb"\IF" statements in all following structures until
+they are reset by a \verb"\setiftext" command with the same scope. (Remember to
+put the \verb"\setiftext" command {\bf after} any font size changing commands).
+
+\item If the command occurs inside a \verb"\STRUCT" statement but outside any
+other commands, the settings will remain valid for all \verb"\IF" statements in
+the same structure until they are reset by a \verb"\setiftext" command with the
+same scope.
+
+\item If the command occurs inside a command within a structure, the settings
+will remain valid for all \verb"\IF" statements within the command (for
+instance an if statement within the then or else part of another if statement)
+until they are reset by a \verb"\setiftext" command with the same scope.
+
+\end{itemize}
+
+It is allowed to `nest' the \verb"\setiftext" commands, thus
+changing the settings for a particular part of a structure or a document.
+
+\item \verb"\underlinewhentrue%" and \verb"\underlinewhenfalse%"\\
+Specifies whether a line is drawn underneath an \verb"\IF", \verb"\WHILE",
+\verb"\REPEAT", \verb"\ACCEPT" or a nested \verb"\CASE" statement. To be
+compatible with previous releases of Nassi the default setting is
+\verb"\underlinewhenfalse%". The scope for this settings depends on the
+position of the command within the document. See \verb"\setiftext" for more
+information.
+
+This option is not available for flow structures.
+
+\end{itemize}
+
+Note that each line within the structure, including the command itself,
+{\em must} be concluded by a \%.
+
+The text appearing (between the braces) in the structure definition and in all
+statements, including the \verb"\setiftext" macro is free but must adhere to the
+standard \LaTeX\ syntax. Every text is considered a paragraph in the \LaTeX\
+context.
+\end{para}
+
+\begin{para}{Files}
+The file \verb"TEX$INPUTS:NASSI.STY" specifies the Nassi-Schneiderman macros.
+\end{para}
+
+\begin{para}{See also}
+The pages on \LaTeX, LSA and FLOW in this section of the manual.
+\end{para}
+
+\begin{para}{Bugs}
+\begin{itemize}
+\item The {\tt Nassi} option is mutually exclusive with the {\tt Flow} option
+because the same macro names are used.
+
+\item {\tt Nassi} has a limit to the number of statement macro's in one
+structure definition. For example a maximum of 26 IF macro's can be used. If
+one of these limits is reached, \LaTeX\ shows some curious error messages, like
+``You cannot use = as a prefix'', which have no relation at all to the real
+problem.
+
+\item Within the \verb"\ACCEPT" statement part at least one statement is
+required. As dummy the \verb"\ACTION{null}" is recommended.
+
+\item If \verb"\underlinewhentrue%" is specified and the concerning
+\verb"\WHEN" statement is the tallest of all \verb"\WHEN" statements in the
+\verb"\CASE" statement a double line will show. By specifying
+\verb"\underlinewhenfalse%" at the end of this \verb"\WHEN" statement, this
+problem can be prevented.
+
+\end{itemize}
+\end{para}
+
+\begin{para}{Example}
+The following is an example of a structure with all possible statements. The
+resulting diagram is shown below.
+
+\begin{verbatim}
+\scriptsize
+\STRUCT{structure name}{structure purpose}{%
+ \ACTION{initial statement}%
+ \PROC{proc name}{procedure purpose}%
+ \ACCEPT{entry name}{%
+ \ACTION{critical part}%
+ }%
+ \ENDACCEPT%
+ \IF{condition to test}%
+ \THEN{%
+ \ACTION{true action 1}%
+ \ACTION{true action 2}%
+ }%
+ \ELSE{%
+ \ACTION{false action}%
+ }%
+ \ENDIF%
+ \REPEAT{%
+ \ACTION{statement to repeat}%
+ }%
+ \UNTIL{end condition}%
+ \WHILE{start condition}{%
+ \ACTION{statement to do}%
+ }%
+ \ENDWHILE%
+ \CASE{case item}{%
+ \WHEN{condition 1}{%
+ \ACTION{statement to do}%
+ }%
+ \WHEN{condition 2}{%
+ \ACTION{statement 1 to do}%
+ \ACTION{statement 2 to do}%
+ }%
+ \WHEN{condition 3}{%
+ \ACTION{statement to do}%
+ }%
+ }%
+ \ENDCASE%
+ \CASE{select}{%
+ \WHEN{gard 1}{%
+ \ACCEPT{entry name 1}{%
+ \ACTION{statement to do}%
+ }%
+ \ENDACCEPT%
+ }%
+ \WHEN{}{%
+ \ACCEPT{entry name 2}{%
+ \ACTION{critical statement to do}%
+ }%
+ \ENDACCEPT%
+ \ACTION{non critical statement to do}%
+ }%
+ \WHEN{}{%
+ \ACTION{delay 10.0}%
+ }%
+ \WHEN{else}{%
+ \ACTION{else actions}%
+ }%
+ }%
+ \ENDCASE%
+}%
+\normalsize
+\end{verbatim}
+\end{para}
+
+\newpage
+\scriptsize
+\STRUCT{structure name}{structure purpose}{%
+ \ACTION{initial statement}%
+ \PROC{proc name}{procedure purpose}%
+ \ACCEPT{entry name}{%
+ \ACTION{critical part}%
+ }%
+ \ENDACCEPT%
+ \IF{condition to test}%
+ \THEN{%
+ \ACTION{true action 1}%
+ \ACTION{true action 2}%
+ }%
+ \ELSE{%
+ \ACTION{false action}%
+ }%
+ \ENDIF%
+ \REPEAT{%
+ \ACTION{statement to repeat}%
+ }%
+ \UNTIL{end condition}%
+ \WHILE{start condition}{%
+ \ACTION{statement to do}%
+ }%
+ \ENDWHILE%
+ \CASE{case item}{%
+ \WHEN{condition 1}{%
+ \ACTION{statement to do}%
+ }%
+ \WHEN{condition 2}{%
+ \ACTION{statement 1 to do}%
+ \ACTION{statement 2 to do}%
+ }%
+ \WHEN{condition 3}{%
+ \ACTION{statement to do}%
+ }%
+ }%
+ \ENDCASE%
+ \CASE{select}{%
+ \WHEN{gard 1}{%
+ \ACCEPT{entry name 1}{%
+ \ACTION{statement to do}%
+ }%
+ \ENDACCEPT%
+ }%
+ \WHEN{}{%
+ \ACCEPT{entry name 2}{%
+ \ACTION{critical statement to do}%
+ }%
+ \ENDACCEPT%
+ \ACTION{non critical statement to do}%
+ }%
+ \WHEN{}{%
+ \ACTION{delay 10.0}%
+ }%
+ \WHEN{else}{%
+ \ACTION{else actions}%
+ }%
+ }%
+ \ENDCASE%
+}%
+\normalsize
+
+\end{document}
+
diff --git a/macros/latex/contrib/nassflow/nassi.sty b/macros/latex/contrib/nassflow/nassi.sty
new file mode 100644
index 0000000000..ad0b1e34af
--- /dev/null
+++ b/macros/latex/contrib/nassflow/nassi.sty
@@ -0,0 +1,422 @@
+% nassi.sty 29 augustus 1989, C.M. Lindhout.
+%
+% Copyright (C) by CAWCS, Royal Netherlands Navy.
+% This program may be freely used and copied but may not be sold
+% without the author's written permission. This notice must remain
+% in any copy or derivative.
+%
+% Please send improvements, bug fixes, comments, etc., to
+% Marion van Geest,
+% CAWCS,
+% Royal Netherlands Navy,
+% P.O.BOX 10000,
+% 1780 CA Den Helder,
+% The Netherlands.
+
+% Modifications.
+% --------------
+% Version 2, july 1990,
+% Scope of \setiftext command changed
+% Version 3, november 1990,
+% A lot of unnecessary 'overfull hbox' messages are no longer given
+% Version 4, october 1991,
+% \ACCEPT created for use with ADA code
+% Version 5, august 1992,
+% Improved layout for empty \ELSE in \IF statement
+
+\ProvidesPackage{nassi}[1992/08/01 v5.0 Nassi-Scheiderman macro's.]
+
+\global\newdimen\wwa \global\newdimen\wwb \global\newdimen\wwc
+\global\newdimen\wwd \global\newdimen\wwe \global\newdimen\wwf
+\global\newdimen\wwg \global\newdimen\wwh \global\newdimen\wwi
+\global\newdimen\wwj \global\newdimen\wwk \global\newdimen\wwl
+\global\newdimen\wwm \global\newdimen\wwn \global\newdimen\wwo
+\global\newdimen\wwp \global\newdimen\wwq \global\newdimen\wwr
+\global\newdimen\wws \global\newdimen\wwt \global\newdimen\wwu
+\global\newdimen\wwv \global\newdimen\www \global\newdimen\wwx
+\global\newdimen\wwy \global\newdimen\wwz
+\global\newdimen\wwA \global\newdimen\wwB \global\newdimen\wwC
+\global\newdimen\wwD \global\newdimen\wwE \global\newdimen\wwF
+\global\newdimen\wwG \global\newdimen\wwH \global\newdimen\wwI
+\global\newdimen\wwJ \global\newdimen\wwK \global\newdimen\wwL
+\global\newdimen\wwM \global\newdimen\wwN \global\newdimen\wwO
+\global\newdimen\wwP \global\newdimen\wwQ \global\newdimen\wwR
+\global\newdimen\wwS \global\newdimen\wwT \global\newdimen\wwU
+\global\newdimen\wwV \global\newdimen\wwW \global\newdimen\wwX
+\global\newdimen\wwY \global\newdimen\wwZ
+
+\def\ww#1{%
+ \ifcase#1%
+ \wwa\or\wwb\or\wwc\or\wwd\or\wwe\or\wwf\or\wwg\or\wwh\or\wwi\or\wwj\or
+ \wwk\or\wwl\or\wwm\or\wwn\or\wwo\or\wwp\or\wwq\or\wwr\or\wws\or\wwt\or
+ \wwu\or\wwv\or\www\or\wwx\or\wwy\or\wwz\or\wwA\or\wwB\or\wwC\or\wwD\or
+ \wwE\or\wwF\or\wwG\or\wwH\or\wwI\or\wwJ\or\wwK\or\wwL\or\wwM\or\wwN\or
+ \wwO\or\wwP\or\wwQ\or\wwR\or\wwS\or\wwT\or\wwU\or\wwV\or\wwW\or\wwX\or
+ \wwY\or\wwZ
+ \fi%
+}%
+
+\global\newcount\nr%
+\global\newif\iftry%
+\global\newif\ifunderline%
+\newif\ifunderlinethen%
+\newif\ifunderlineelse%
+\newif\ifunderlinewhen%
+\underlinewhenfalse%
+\newdimen\nassiwidth%
+\nassiwidth=0pt%
+\newdimen\minunitwidth%
+\minunitwidth=60pt%
+\newdimen\unitwidth%
+\newdimen\thickness%
+\newbox\thentext%
+\newbox\elsetext%
+\thickness=0.01in%
+\newdimen\spc%
+\newdimen\fac%
+\newdimen\ha%
+\newdimen\hb%
+\newdimen\hc%
+\newcount\nra%
+\newcount\nrb%
+\newdimen\wa%
+\newdimen\wb%
+\newdimen\wc%
+%
+\def\reserveww#1{#1=\nr \global\advance\nr by 1}%
+\def\saveww#1#2{\global\ww#2=#1}%
+\def\readww#1{#1=\ww\nr \global\advance\nr by 1}%
+%
+\def\setiftext#1#2{\setbox\thentext=\hbox{#1}\setbox\elsetext=\hbox{#2}}%
+\setiftext{Y}{N}%
+%
+\def\vspc{%
+ \vbox to 2\spc{}%
+}%
+%
+\def\hspc{%
+ \hbox to \spc{}%
+}%
+%
+\def\spcbox#1#2{%
+ \hbox{%
+ \hspc%
+ \vbox{%
+ \vspc%
+ \wa=#1%
+ \advance\wa-2\spc%
+ \hbox{\parbox[t]{\wa}{\raggedright#2}}%
+ \vspc%
+ }%
+ \hspc%
+ }%
+}%
+%
+\def\ACTION#1{%
+ \iftry%
+ \hbox to \unitwidth{}%
+ \else%
+ \hrule height\thickness%
+ \spcbox{\unitwidth}{#1}%
+ \global\underlinefalse%
+ \fi%
+}%
+%
+\def\PROC#1#2{%
+ \iftry%
+ \hbox to \unitwidth{}%
+ \else%
+ \hrule height\thickness%
+ \spcbox{\unitwidth}{#2 (#1)}%
+ \global\underlinefalse%
+ \fi%
+}%
+%
+\def\LABEL#1{%
+}%
+%
+\def\leftif{%
+ \hbox{%
+ \begin{picture}(80,60)%
+ \put(0,60){\line(4,-3){80}}%
+ \put(0,5){\hbox to 80\unitlength{\hspc\copy\thentext\hfil}}%
+ \end{picture}%
+ }%
+}%
+%
+\def\rightif{%
+ \hbox{%
+ \begin{picture}(80,60)%
+ \put(0,0){\line(4,3){80}}%
+ \put(0,5){\hbox to 80\unitlength{\hfil\copy\elsetext\hspc}}%
+ \end{picture}%
+ }%
+}%
+%
+\def\IF#1\THEN#2\ELSE#3\ENDIF{%
+ \iftry%
+ \reserveww{\nra}%
+ \reserveww{\nrb}%
+ \setbox0=\vbox{\hbox to 8ex{} #2}%
+ \setbox2=\vbox{\hbox to 8ex{} #3}%
+ \saveww{\wd0}{\nra}%
+ \saveww{\wd2}{\nrb}%
+ \hbox{\hbox to 16ex{}\hbox to \unitwidth{}}%
+ \hbox{\box0\box2}%
+ \else%
+ \readww{\wa}%
+ \readww{\wb}%
+%
+ \ifdim \wb=8ex%
+ \wa=\unitwidth%
+ \advance\wa-\wb%
+ \else%
+ \wc=0.003\wa%
+ \advance\wc0.003\wb%
+ \wb=\unitwidth%
+ \divide\wb\wc%
+ \wa=0.003\wa%
+ \multiply\wa\wb%
+%
+ \wb=\unitwidth%
+ \advance\wb-\wa%
+ \fi%
+%
+ \hrule height\thickness%
+ \hbox{%
+ \leftif%
+ \wa=\unitwidth%
+ \advance\wa-16ex%
+ \spcbox{\wa}{#1}%
+ \rightif%
+ }%
+ \setbox0=\vbox{\unitwidth=\wa\hbox to \unitwidth{}\global\underlinetrue #2}%
+ \ifunderline\underlinethentrue\else\underlinethenfalse\fi%
+ \ha=\ht0%
+ \advance\ha\dp0%
+ \setbox2=\vbox{\unitwidth=\wb\hbox to \unitwidth{}\global\underlinetrue #3}%
+ \ifunderline\underlineelsetrue\else\underlineelsefalse\fi%
+ \hb=\ht2%
+ \advance\hb\dp2%
+ \ifdim\ha>\hb\hc=\ha\else\hc=\hb\fi%
+ \hbox{%
+ \vtop{%
+ \unvbox0%
+ \ifdim\ha<\hb{\ifunderlinethen\hrule height\thickness\fi}\fi%
+ }%
+ \hbox to -\thickness{}%
+ \vrule width\thickness%
+ \vtop{%
+ \unvbox2%
+ \ifdim\hb<\ha{\ifunderlineelse\hrule height\thickness\fi}\fi%
+ }%
+ }%
+ \global\underlinetrue%
+ \fi%
+}%
+%
+\def\REPEAT#1\UNTIL#2{%
+ \iftry%
+ \hbox{%
+ \hbox to 4ex{}%
+ \vtop{%
+ #1%
+ }%
+ }%
+ \hbox to \unitwidth{}%
+ \else%
+ \hbox{%
+ \vtop{%
+ \hrule height\thickness%
+ \hbox to 4ex{}%
+ }%
+ \vrule width\thickness%
+ \vtop{%
+ \wa=\unitwidth%
+ \advance\wa-4ex%
+ \unitwidth=\wa%
+ #1%
+ \hrule height\thickness%
+ }%
+ }%
+ \spcbox{\unitwidth}{#2}%
+ \global\underlinetrue%
+ \fi%
+}%
+%
+\def\WHILE#1#2\ENDWHILE{%
+ \iftry%
+ \hbox to \unitwidth{}%
+ \hbox{%
+ \hbox to 4ex{}%
+ \vtop{%
+ #2%
+ }%
+ }%
+ \else%
+ \hrule height\thickness%
+ \spcbox{\unitwidth}{#1}%
+ \hbox{%
+ \hbox to 4ex{}%
+ \vrule width\thickness%
+ \vbox{%
+ \wa=\unitwidth%
+ \advance\wa-4ex%
+ \unitwidth=\wa%
+ #2%
+ }%
+ }%
+ \global\underlinetrue%
+ \fi%
+}%
+%
+\def\ACCEPT#1#2\ENDACCEPT{%
+ \iftry%
+ \hbox to \unitwidth{}%
+ \hbox{%
+ \hspc%
+ \vtop{%
+ #2%
+ }%
+ \hspc%
+ }%
+ \else%
+ \hrule height\thickness%
+ \spcbox{\unitwidth}{#1}%
+ \hbox{%
+ \hspc%
+ \vbox{%
+ \hbox{%
+ \vrule width\thickness%
+ \hbox to -\thickness{}%
+ \vbox{%
+ \wa=\unitwidth%
+ \advance\wa-2\spc%
+ \unitwidth=\wa%
+ #2%
+ }%
+ \hbox to -\thickness{}%
+ \vrule width\thickness%
+ }%
+ \vbox to -\thickness{}%
+ \hrule height\thickness%
+ \vbox to \spc{}%
+ }%
+ \hspc%
+ }%
+ \global\underlinetrue%
+ \fi%
+}%
+%
+\def\WHEN#1#2{%
+ \iftry%
+ \reserveww{\nra}%
+ \setbox0=\vbox{\hbox to \unitwidth{}#2}%
+ \saveww{\wd0}{\nra}%
+ \box0%
+ \else%
+ \readww{\wa}%
+ \wa=0.003\wa%
+ \multiply\wa\wc%
+ \vtop{%
+ \global\underlinefalse%
+ \hbox to 0pt{}%
+ \unitwidth=\wa%
+ \setbox0=\hbox{\raggedright#1}%
+ \ifdim\wd0=0pt%
+ #2%
+ \else%
+ \hrule height\thickness%
+ \spcbox{\unitwidth}{#1}%
+ #2%
+ \fi%
+ \ifunderlinewhen\ifunderline\hrule height\thickness\fi\fi%
+ }%
+ \hbox to -\thickness{}%
+ \vrule width\thickness%
+ \fi%
+}%
+%
+\def\leftcase{%
+ \hbox{%
+ \begin{picture}(80,60)%
+ \put(0,60){\line(4,-3){80}}%
+ \end{picture}%
+ }%
+}%
+%
+\def\CASE#1#2\ENDCASE{%
+ \iftry%
+ \reserveww{\nra}%
+ \setbox0=\hbox{#2}%
+ \saveww{\wd0}{\nra}%
+ \hbox{\box0}%
+ \else%
+ \readww{\wa}%
+%
+ \wc=0.003\wa%
+ \wb=\unitwidth%
+ \divide\wb\wc%
+ \wc=\wb%
+% \wa=0.01\wa%
+% \multiply\wa\wb%
+%
+ \hrule height\thickness%
+ \hbox{%
+ \leftcase%
+ \wa=\unitwidth%
+ \advance\wa-8ex%
+ \spcbox{\wa}{#1}%
+ }%
+ \hbox{#2}%
+ \global\underlinetrue%
+ \fi%
+}%
+%
+\def\STRUCT#1#2#3{%
+ \spc=1ex%
+ \unitlength=0.1\spc%
+%
+ \nr=0%
+ \trytrue%
+ \unitwidth=\minunitwidth%
+ \setbox0=\vbox{%
+ \baselineskip=0pt%
+ \lineskip=0pt%
+ \parindent=0pt%
+ \parskip=0pt%
+ #3
+ }%
+%
+ \nr=0%
+ \tryfalse%
+ \ifdim\nassiwidth=0pt%
+ \ifdim\wd0>\textwidth%
+ \unitwidth=\textwidth%
+ \else%
+ \unitwidth=\wd0%
+ \fi%
+ \else%
+ \unitwidth=\nassiwidth%
+ \fi%
+ \vbox{%
+ \vspace{0.5cm}
+ {\normalsize{\bf #1 --- }#2}%
+ \vspace{0.5cm}
+ \par%
+ \hbox{%
+ \baselineskip=0pt%
+ \lineskip=0pt%
+ \parindent=0pt%
+ \parskip=0pt%
+ \vrule width\thickness%
+ \vbox{%
+ #3%
+ \hrule height\thickness%
+ }%
+ \hbox to -\thickness{}%
+ \vrule width\thickness%
+ }%
+ }%
+}%
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/nassflow/struct.lse b/macros/latex/contrib/nassflow/struct.lse
new file mode 100644
index 0000000000..01d4d94437
--- /dev/null
+++ b/macros/latex/contrib/nassflow/struct.lse
@@ -0,0 +1,356 @@
+!++
+! Facility:
+! LaTeX Document Preparation System -- \structure extention
+!
+! Abstract:
+! This file contains the language constructs that make up the
+! structure definitions for Flow and NS diagrams.
+!
+! Author:
+! C.M. Lindhout
+!
+! Creation Date: 28-8-1989
+!
+! Modification History:
+! 5-12-1989 Marion van Geest:
+!
+! Structure removed from this file and inserted with standard environments
+! in Latex_environments.lse
+! Some file layout formatting and comment changes
+!
+! Known bugs:
+!
+! \LABEL command definition for flow supersedes the standard LaTeX
+! \label command definition. May cause some syntactic errors
+!
+!--
+! Contact:
+!
+! Marion van Geest,
+! KM/CAWCS
+! P.O. Box 10000
+! 1780 CA Den Helder
+! The Netherlands
+
+DELETE PLACEHOLDER "struct-name" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "struct-name" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="struct name" -
+ /DUPLICATION=CONTEXT_DEPENDENT -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=TERMINAL
+
+ "Enter struct name"
+
+ END DEFINE
+
+DELETE PLACEHOLDER "struct-description" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "struct-description" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="struct description" -
+ /DUPLICATION=CONTEXT_DEPENDENT -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=TERMINAL
+
+ "Enter struct description"
+
+ END DEFINE
+
+DELETE PLACEHOLDER "statement" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "statement" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="struct Symbol" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=MENU
+
+ "action" /PLACEHOLDER
+ "if" /PLACEHOLDER
+ "ifthen" /PLACEHOLDER
+ "while" /PLACEHOLDER
+ "repeatuntil" /PLACEHOLDER
+ "case" /PLACEHOLDER
+ "proc" /PLACEHOLDER
+ "label" /PLACEHOLDER
+
+ END DEFINE
+
+DELETE TOKEN "\action" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\action" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=action
+
+DELETE PLACEHOLDER "action" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "action" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="list of actions" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\ACTION{<<action-list>>}%"
+
+ END DEFINE
+
+DELETE TOKEN "\proc" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\proc" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=proc
+
+DELETE PLACEHOLDER "proc" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "proc" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="procedure box" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\PROC{<proc-name>}{<proc-description>}%"
+
+ END DEFINE
+
+DELETE TOKEN "\label" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\label" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=label
+
+DELETE PLACEHOLDER "label" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "label" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="label" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\LABEL{<label-name>}%"
+
+ END DEFINE
+
+DELETE TOKEN "\if" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\if" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=if
+
+DELETE PLACEHOLDER "if" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "if" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="if ... then ... else ... endif" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\IF{<text>}%"
+ "\THEN{%
+ " <<statement>>..."
+ "}%"
+ "\ELSE{%
+ " <<statement>>..."
+ "}%"
+ "\ENDIF%"
+
+ END DEFINE
+
+DELETE TOKEN "\ifthen" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\ifthen" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=ifthen
+
+DELETE PLACEHOLDER "ifthen" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "ifthen" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="if ... then ... else endif" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\IF{<text>}%"
+ "\THEN{%
+ " <<statement>>..."
+ "}%"
+ "\ELSE{}%"
+ "\ENDIF%"
+
+ END DEFINE
+
+DELETE TOKEN "\while" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\while" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=while
+
+DELETE PLACEHOLDER "while" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "while" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="while ... endwile" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\WHILE{<text>}{%
+ " <statement>..."
+ "}%"
+ "\ENDWHILE%"
+
+ END DEFINE
+
+DELETE TOKEN "\repeatuntil" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\repeatuntil" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=repeatuntil
+
+DELETE PLACEHOLDER "repeatuntil" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "repeatuntil" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="repeat ... until" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\REPEAT{%
+ " <statement>..."
+ "}%"
+ "\UNTIL{<text>}%"
+
+ END DEFINE
+
+DELETE TOKEN "\case" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\case" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=case
+
+DELETE PLACEHOLDER "case" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "case" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="case ... is when ... : ... endcase" -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\CASE{<text>}{%"
+ " <when>..."
+ "}%"
+ "\ENDCASE%"
+
+ END DEFINE
+
+DELETE TOKEN "\when" -
+ /LANGUAGE=LATEX
+DEFINE TOKEN "\when" -
+ /LANGUAGE=LATEX -
+ /PLACEHOLDER=when
+
+DELETE PLACEHOLDER "when" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "when" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="when condition statements " -
+ /DUPLICATION=VERTICAL -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=NONTERMINAL
+
+ "\WHEN{<<text>>}{%"
+ " <statement>..."
+ "}%"
+
+ END DEFINE
+
+DELETE PLACEHOLDER "action-list" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "action-list" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="action list, new lines seprated by \\" -
+ /DUPLICATION=CONTEXT_DEPENDENT -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=TERMINAL
+
+ "Enter action-list, new lines seperated by \\"
+
+ END DEFINE
+
+DELETE PLACEHOLDER "proc-name" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "proc-name" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="procedure name" -
+ /DUPLICATION=CONTEXT_DEPENDENT -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=TERMINAL
+
+ "Enter procedure name"
+
+ END DEFINE
+
+DELETE PLACEHOLDER "proc-description" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "proc-description" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="procedure description" -
+ /DUPLICATION=CONTEXT_DEPENDENT -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=TERMINAL
+
+ "Enter procedure description"
+
+ END DEFINE
+
+DELETE PLACEHOLDER "label-name" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "label-name" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="label name, limited number of characters" -
+ /DUPLICATION=CONTEXT_DEPENDENT -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=TERMINAL
+
+ "Enter label name"
+
+ END DEFINE
+
+DELETE PLACEHOLDER "text" -
+ /LANGUAGE=LATEX
+DEFINE PLACEHOLDER "text" -
+ /LANGUAGE=LATEX -
+ /DESCRIPTION="text to be entered" -
+ /DUPLICATION=CONTEXT_DEPENDENT -
+ /SEPARATOR="" -
+ /TOPIC="" -
+ /TYPE=TERMINAL
+
+ "Enter text"
+
+ END DEFINE
+