diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/nassflow |
Initial commit
Diffstat (limited to 'macros/latex/contrib/nassflow')
-rw-r--r-- | macros/latex/contrib/nassflow/aaread.me | 48 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/add.lse | 29 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/flow.sty | 373 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/flow_man.pdf | bin | 0 -> 68147 bytes | |||
-rw-r--r-- | macros/latex/contrib/nassflow/flow_man.tex | 271 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/manual.cls | 598 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/manual.sty | 504 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/nass_man.pdf | bin | 0 -> 74168 bytes | |||
-rw-r--r-- | macros/latex/contrib/nassflow/nass_man.tex | 367 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/nassi.sty | 422 | ||||
-rw-r--r-- | macros/latex/contrib/nassflow/struct.lse | 356 |
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 Binary files differnew file mode 100644 index 0000000000..05068c22ca --- /dev/null +++ b/macros/latex/contrib/nassflow/flow_man.pdf 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 Binary files differnew file mode 100644 index 0000000000..81aae4b7fb --- /dev/null +++ b/macros/latex/contrib/nassflow/nass_man.pdf 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 + |