diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:49:07 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:49:07 +0000 |
commit | 007f67a693e4d031fd3d792df8e4d5f43e2cb2e7 (patch) | |
tree | 90d17e00e572ecb1e24764b6f29c80e098b08d29 /Master/texmf-dist/doc/latex/nassflow/nass_man.tex | |
parent | 950209b26f70aa87ed07c54f82a95b6f03b7c3a0 (diff) |
doc/latex
git-svn-id: svn://tug.org/texlive/trunk@84 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/nassflow/nass_man.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/nassflow/nass_man.tex | 367 |
1 files changed, 367 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/nassflow/nass_man.tex b/Master/texmf-dist/doc/latex/nassflow/nass_man.tex new file mode 100644 index 00000000000..93b76ada24c --- /dev/null +++ b/Master/texmf-dist/doc/latex/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} + |