diff options
Diffstat (limited to 'macros/latex/contrib/nassflow/flow_man.tex')
-rw-r--r-- | macros/latex/contrib/nassflow/flow_man.tex | 271 |
1 files changed, 271 insertions, 0 deletions
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} + |