%% %% This is file `struktex.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% struktex.dtx (with options: `struktex') %% %% Copyright (C) 1989-2017 by Jobst Hoffmann. All rights reserved. %% %% IMPORTANT COPYRIGHT NOTICE: %% %% No other permissions to copy or distribute this file in any form %% are granted and in particular NO PERMISSION to modify its contents. %% %% You are NOT ALLOWED to change this file. %% %% Please address error reports and any problems in case of UNCHANGED versions %% to %% j.hoffmann_(at)_fh-aachen.de \NeedsTeXFormat{LaTeX2e}[1999/12/01]{% \def\@git@ $#1Date: #2-#3-#4 #5$$#6Revision: #7$ {% \ProvidesPackage{struktex}[#2/#3/#4 v#7 Nassi Shneiderman Diagrams (Jobst Hoffmann)]} %% git revision information }% %% \RequirePackage{ifthen} \let\@ifthenelse\ifthenelse \RequirePackage{struktxf} \RequirePackage{struktxp} \newcommand{\dbgArgs@nss}[1]{\typeout{===> dbg Args:\space\space\space#1}} \newcommand{\dbgCond@nss}[1]{% \@ifthenelse{\boolean{#1}}{ \typeout{===> dbg Cond:\space #1 = true} }{ \typeout{===> dbg Cond:\space #1 = false} } } \newcommand{\dbgCount@nss}[2][]{% \def\argI{#1}% ^^A dbg \typeout{===> dbg Count:\space\space\ifx\argI\empty\else(#1)\space\fi% \string#2 = \the#2}} \newcommand{\dbgCoord@nss}[3][]{% \def\argI{#1}% ^^A dbg \typeout{===> dbg Coord:\space\space\ifx\argI\empty\else(#1)\space\fi% (\string#2, \string#3) = (\the#2, \the#3)}}% ^^A dbg \newcommand{\dbgMark@nss}[3][]{% \def\argI{#1}% ^^A dbg \put(#2,#3){\makebox(0,0)[cc]{\ifx\argI\empty$\bullet$\else#1\fi% }}}% ^^A dbg \newcommand{\dbgString@nss}[1]{\typeout{===> dbg String:\space#1}} \newboolean{curves} \newboolean{emlines} \newboolean{pictIIe} \newboolean{anygradient} \DeclareOption{curves}{% \setboolean{anygradient}{true} \setboolean{curves}{true} \setboolean{emlines}{false} \setboolean{pictIIe}{false} } \DeclareOption{emlines}{% \setboolean{anygradient}{true} \setboolean{curves}{false} \setboolean{emlines}{true} \setboolean{pictIIe}{false} } \DeclareOption{pict2e}{% \setboolean{anygradient}{true} \setboolean{curves}{false} \setboolean{emlines}{false} \setboolean{pictIIe}{true} } \DeclareOption{english}{% \def\declarationtitlename@nss{providing memory space:}% \def\pTruename@nss{true}% \def\pFalsename@nss{false}% } \DeclareOption{german}{% \def\declarationtitlename@nss{Speicherplatz bereitstellen:} \def\pTruename@nss{WAHR}% \def\pFalsename@nss{FALSCH}% } \DeclareOption{ngerman}{% \def\declarationtitlename@nss{Speicherplatz bereitstellen:} \def\pTruename@nss{WAHR}% \def\pFalsename@nss{FALSCH}% } \newboolean{verification} \DeclareOption{verification}% {% \setboolean{verification}{true} } \newboolean{filler} \setboolean{filler}{true} \DeclareOption{nofiller}% {% \setboolean{filler}{false} } \let\ifdraft@nss\iffalse \let\iffinal@nss\iftrue \DeclareOption{draft}% {% \let\ifdraft@nss\iftrue \let\iffinal@nss\iffalse } \DeclareOption{final}% {% \let\ifdraft@nss\iffalse \let\iffinal@nss\iftrue } \newboolean{debug} \DeclareOption{debug}% {% \setboolean{debug}{true} } \DeclareOption{nodebug}% {% \setboolean{debug}{false} } \newboolean{outer} \DeclareOption{outer}% {% \setboolean{outer}{true} } \def\dimtomm #1{\the\numexpr \dimexpr #1\relax*635000/118407168\relax } \newboolean{fixedindent@nss} \DeclareOption{fixedindent}% {% \setboolean{fixedindent@nss}{true} \gdef\xindent@nss{\dimtomm{\baselineskip}} } %% \ifnum\language=\languageNGerman% \ExecuteOptions{pict2e,english,final} \ProcessOptions*\relax \ifcurves% \RequirePackage{curves} \else\ifemlines \RequirePackage{emlines2} \else\ifpictIIe \RequirePackage{pict2e} \fi\fi\fi \ifthenelse{\boolean{debug}}{ \typeout{debug active}}{ \typeout{debug inactive} \renewcommand{\dbgCond@nss}[1]{} \renewcommand{\dbgCount@nss}[2][]{} \renewcommand{\dbgCoord@nss}[3][]{} \renewcommand{\dbgMark@nss}[3][]{} \renewcommand{\dbgString@nss}[1]{} } \def\StrukTeX{S\kern-.05emt\kern-.05em\raise.5ex\hbox{r}% \kern-.1667emu\kern-.05em\lower.5ex\hbox{k}% \kern-.2emT\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} \newdimen\savelength@nss \newcount\gx@nss \newcount\gy@nss \newcount\gsize@nss \countdef\param@nss=199 \countdef\x@nss=220 \countdef\y@nss=221 \countdef\xsize@nss=222 \countdef\ydepth@nss=223 \countdef\xx@nss=224 \countdef\yy@nss=225 \countdef\tempx@nss=226 \countdef\tempxx@nss=227 \countdef\tempy@nss=229 \countdef\tempyy@nss=230 \ifpictIIe% \countdef\tempxxx@nss=228 \countdef\tempyyy@nss=231 \fi \newbox\TextBox@nss \newdimen\TextBoxHt@nss \DeclareMathSymbol\varnothing{\mathord}{AMSb}{"3F} \let\emptyset\varnothing \def\filler@nss{% \iffiller\ensuremath{\emptyset}\fi% } \def\c@nter@nss{% \leftskip=0pt plus 2em \rightskip=\leftskip \parfillskip=0pt \spaceskip=.333em \xspaceskip=.5em \pretolerance=9999 \tolerance=9999 \hyphenpenalty=9999 \exhyphenpenalty=9999% } \def\Position@nss{}% \newcommand{\PositionNSS}[1]{% \def\Position@nss{#1}% } \def\struktogramm(#1,#2){% \let\ifthenelse=\ifthenelse@nss% \let\ifend=\ifend@nss% \ifdraft@nss\let\struktogramm@nss=\struktogramm@Proof\fi% \@ifnextchar [{\struktogramm@nss(#1,#2)}{\struktogramm@nss(#1,#2)[]}% } \def\endstruktogramm{% \endstr@kt% \end{picture}% \end{minipage}% \setlength{\unitlength}{\savelength@nss}% } \def\struktogramm@NoProof(#1,#2)[#3]{% \def\next{#3} \setlength{\savelength@nss}{\unitlength} \setlength{\unitlength}{0.001mm} \begin{minipage}[\Position@nss]{#1mm} \ifx\next\empty\else #3\\[\smallskipamount]\fi% \begin{picture}(#1000,#2000)% \str@kt{0}{#2000}{#1000}% } \def\struktogramm@Proof(#1,#2)[#3]{% \def\next{#3}% \setlength{\savelength@nss}{\unitlength}% \setlength{\unitlength}{0.001mm}% \begin{minipage}[\Position@nss]{#1mm}% \ifx\next\empty\else #3\\[\smallskipamount]\fi% \begin{picture}(#1000,#2000)% \put(0,0){\makebox(0,0)[cc]{$\bullet$}}% \put(0,#2000){\makebox(0,0)[cc]{$\bullet$}}% \put(#1000,0){\makebox(0,0)[cc]{$\bullet$}}% \put(#1000,#2000){\makebox(0,0)[cc]{$\bullet$}}% \str@kt{0}{#2000}{#1000}% } \def\sProofOn% {% \let\struktogramm@nss=\struktogramm@Proof% } \def\sProofOff% {% \let\struktogramm@nss=\struktogramm@NoProof% } \let\struktogramm@nss=\struktogramm@NoProof% \def\openstrukt#1#2{% \setlength{\savelength@nss}{\unitlength} \setlength{\unitlength}{0.001mm} \begin{picture}(#1000,#2000) \str@kt{0}{#2000}{#1000}% } \def\closestrukt% {% \endstr@kt \end{picture} \setlength{\unitlength}{\savelength@nss}% } \def\getoption{\@ifnextchar [{\getnum}{\param@nss=0\next}} \def\getnum[#1]{\param@nss=#1\next} \def\str@kt#1#2#3{% \dbgString@nss{Beginn \string\str@kt} \dbgArgs@nss{#1, #2, #3} \global\gx@nss=#1\global\gy@nss=#2\global\gsize@nss=#3% \begingroup% \x@nss=\gx@nss\y@nss=\gy@nss\xsize@nss=\gsize@nss% \dbgString@nss{rectangle size} \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss} \dbgCount@nss[Breite]{\xsize@nss} } \def\endstr@kt{% \global\gy@nss=\y@nss% \endgroup% \ydepth@nss=\gy@nss% \dbgString@nss{Ende \string\str@kt} } \def\set@nss#1#2{% \dbgString@nss{Beginn \string\set@nss} \setbox\TextBox@nss=\hbox{#1}% \tempxx@nss=\xsize@nss\advance\tempxx@nss by-#2% \ifdim\wd\TextBox@nss>\tempxx@nss\unitlength% \setbox\TextBox@nss=\vbox{\hsize=\tempxx@nss\unitlength\noindent#1}% \else \setbox\TextBox@nss=\hbox to \tempxx@nss\unitlength{#1\hss}% \fi% \dbgString@nss{Ende \string\set@nss} } \def\block@nss#1#2{% \dbgString@nss{Beginn \string\block@nss} \tempy@nss=#1% \dbgCount@nss{\ydepth@nss} \TextBoxHt@nss=\ht\TextBox@nss% \advance\TextBoxHt@nss by\dp\TextBox@nss% \advance\TextBoxHt@nss by 2mm% \dbgCount@nss[original]{\TextBoxHt@nss} \ifdim\TextBoxHt@nss<\tempy@nss\unitlength% \TextBoxHt@nss=\tempy@nss\unitlength% \fi% \dbgCount@nss[korrigiert]{\TextBoxHt@nss} \TextBoxHt@nss=0.00536\TextBoxHt@nss% \dbgCount@nss[skaliert]{\TextBoxHt@nss} \ydepth@nss=\TextBoxHt@nss\advance\y@nss by-\ydepth@nss% \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss} \dbgCoord@nss[Breite, Hoehe]{\xsize@nss}{\ydepth@nss} \ifx#21% \put(\x@nss,\y@nss){% \framebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}% }% \else\ifx#20% \put(\x@nss,\y@nss){% \makebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}% }% \else% \advance\y@nss by \ydepth@nss% \fi\fi% \dbgString@nss{Ende \string\block@nss} } \def\declarationtitle{\declarationtitlename@nss} \newlength{\descriptionindent} \setlength{\descriptionindent}{1.5em} \newlength{\descriptionwidth} \setlength{\descriptionwidth}{40pt} \newlength{\descriptionsep} \setlength{\descriptionsep}{\tabcolsep} \newlength{\descriptionwidth@nss} \newcommand{\descriptionlabel@nss}[1]% {% \settowidth{\descriptionwidth@nss}{#1}% \ifnum\descriptionwidth@nss>\descriptionwidth% % term > labelwidth \parbox[b]{\descriptionwidth}% {% \makebox[0pt][l]{#1}\\% }% \else% % term < labelwidth #1% \fi% \hfil\relax% } \newenvironment{declaration}[1][\declarationtitle]% {% \def\next{#1}% \ifx\next\empty\else #1\\\fi \let\description=\description@nss \tempxx@nss=\xsize@nss\advance\tempxx@nss by -\tempx@nss% \begin{minipage}[t]{\tempxx@nss\unitlength} \begin{list}{}% {% \renewcommand{\makelabel}{\descriptionlabel@nss}% \setlength{\labelwidth}{\descriptionwidth}% \setlength{\itemsep}{0pt} \setlength{\topsep}{0pt}% \setlength{\parsep}{0pt} \setlength{\partopsep}{0pt} \setlength{\leftmargin}{\descriptionwidth}% \addtolength{\leftmargin}{\descriptionsep}% \addtolength{\leftmargin}{\descriptionindent}% }% }% {% \end{list}% \end{minipage} } \newcommand{\description@nss}[2]{\item[#1] \{#2\}} \def\assign{\let\next=\@assign\getoption}% \def\@assign#1{% \dbgString@nss{Beginn \string\@assign} \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss} \dbgCount@nss[Breite]{\xsize@nss} \tempx@nss=\xsize@nss\divide\tempx@nss by 6% \set@nss{#1}{\tempx@nss}% \tempy@nss=\number\param@nss000% \block@nss{\tempy@nss}{1}% \dbgString@nss{Ende \string\@assign} \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss} } \def\sub{\let\next=\@sub\getoption} \def\@sub#1% {% \@assign{#1}\tempx@nss=\xsize@nss\divide\tempx@nss by 20% \tempxx@nss=\x@nss\advance\tempxx@nss by \tempx@nss% \put(\tempxx@nss,\y@nss){\line(0,1){\ydepth@nss}}% \tempxx@nss=\x@nss\advance\tempxx@nss by \xsize@nss% \advance\tempxx@nss by -\tempx@nss% \put(\tempxx@nss,\y@nss){\line(0,1){\ydepth@nss}}% } \def\exit{\let\next=\@exit\getoption} \def\@exit#1% {% \tempx@nss=\xsize@nss\divide\tempx@nss by 6% \set@nss{#1}{\tempx@nss}% \tempy@nss=\number\param@nss000% \block@nss{\tempy@nss}{1}% \divide\ydepth@nss by 2% \advance\y@nss by \ydepth@nss% \ifnum\ydepth@nss<3500% {% \multiply\ydepth@nss by 2% \put(\x@nss,\y@nss){\line(2,1){\ydepth@nss}}% \put(\x@nss,\y@nss){\line(2,-1){\ydepth@nss}}% }% \else% \put(\x@nss,\y@nss){\line(1,1){\ydepth@nss}}% \put(\x@nss,\y@nss){\line(1,-1){\ydepth@nss}}% \fi% \advance\y@nss by-\ydepth@nss% } \def\return{\let\next=\@return\getoption} \def\@return#1% {% \tempy@nss=\number\param@nss000% \ifnum\tempy@nss<7000 \tempy@nss=7000 \fi% \set@nss{#1}{\tempy@nss} \block@nss{\tempy@nss}{1}% \divide\ydepth@nss by 2% \advance\y@nss by \ydepth@nss% \put(\x@nss,\y@nss){\line(1,1){\ydepth@nss}}% \put(\x@nss,\y@nss){\line(1,-1){\ydepth@nss}}% \tempx@nss=\x@nss\advance\tempx@nss by \xsize@nss% \put(\tempx@nss,\y@nss){\line(-1,1){\ydepth@nss}}% \put(\tempx@nss,\y@nss){\line(-1,-1){\ydepth@nss}}% \advance\y@nss by-\ydepth@nss% } \countdef\condindent@nss=232 \countdef\index@nss=233% \newdimen\indentmeasure@nss \newdimen\indentmeasureright@nss \newdimen\thisindent@nss \newdimen\thisindentright@nss \newdimen\thislength@nss \countdef\gindhelp@nss=234 \def\ifthenelse@nss{\let\next=\@ifthenelse@nss\getoption} \def\@ifthenelse@nss#1#2#3#4#5{% \dbgString@nss{Beginn \string\@ifthenelse@nss} \ifanygradient \xx@nss=#1 \advance\xx@nss by #2% \ifnum\number\param@nss000>0% \tempyy@nss=\number\param@nss000% \tempx@nss=\xsize@nss% \multiply\tempx@nss by #1 \divide\tempx@nss by \xx@nss% \tempxx@nss=\xsize@nss% \multiply\tempxx@nss by #2 \divide\tempxx@nss by \xx@nss% \else% \tempyy@nss=\xsize@nss \divide\tempyy@nss by \xx@nss% \tempx@nss=\tempyy@nss \multiply\tempx@nss by #1% \tempxx@nss=\tempyy@nss \multiply\tempxx@nss by #2% \fi% \xx@nss=\tempx@nss \advance\xx@nss by \x@nss% \tempy@nss=\y@nss \advance\tempy@nss by -\tempyy@nss% \ifemlines% \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}% \else\ifcurves% \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)% \else\ifpictIIe% \tempyyy@nss=\tempyy@nss \divide\tempyyy@nss by 1000 \tempxxx@nss=\tempx@nss \divide\tempxxx@nss by 1000 \put(\x@nss,\y@nss){\line(\tempxxx@nss, -\tempyyy@nss){\tempx@nss}} \fi\fi\fi% \advance\x@nss by \xsize@nss% \ifemlines% \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}% \else\ifcurves% \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss) \else\ifpictIIe% \tempxxx@nss=\tempxx@nss \divide\tempxxx@nss by 1000 \put(\x@nss,\y@nss){\line(-\tempxxx@nss, -\tempyyy@nss){\tempxx@nss}} \fi\fi\fi% \advance\x@nss by -\xsize@nss \advance\y@nss by -\tempyy@nss% \tempy@nss=\tempyy@nss\divide\tempy@nss by 5000% \ifnum\tempy@nss<1 \tempy@nss=1\fi% \indentmeasure@nss=\xsize@nss\unitlength% \gindhelp@nss=#1\advance\gindhelp@nss by #2% \divide\indentmeasure@nss by \gindhelp@nss% \indentmeasureright@nss = \indentmeasure@nss% \multiply\indentmeasure@nss by #1% \multiply\indentmeasureright@nss by #2% \divide\indentmeasure@nss by \tempyy@nss% \divide\indentmeasureright@nss by \tempyy@nss% \phantom{\vbox{\hsize=0pt\global\gindhelp@nss=\the\baselineskip}}% \multiply\gindhelp@nss by 360% \multiply\indentmeasure@nss by \gindhelp@nss% \multiply\indentmeasureright@nss by \gindhelp@nss% \xdef\shape{}\index@nss=0% \loop% \advance\index@nss by 1% %Zahl der Zeile \thisindent@nss=\indentmeasure@nss% \multiply\thisindent@nss by \index@nss% \advance\thisindent@nss by 0.175cm% \xdef\shape{\shape\the\thisindent@nss}% \thisindentright@nss=\indentmeasureright@nss% \multiply\thisindentright@nss by \index@nss% \advance\thisindentright@nss by 0.175cm% \thislength@nss=\xsize@nss\unitlength% \advance\thislength@nss by -\thisindent@nss \advance\thislength@nss by -\thisindentright@nss \xdef\shape{\shape\the\thislength@nss}% \ifnum\index@nss<\tempy@nss% \repeat% \else %\ifanygradient \ifnum\number\param@nss000>0% \typeout{struktex warning:}% \typeout{[...] not supplied without curves, emlines2, or pict2e}% \fi% \tempx@nss=#1 \advance\tempx@nss by #2% \tempyy@nss=\xsize@nss \divide\tempyy@nss by \tempx@nss% \tempx@nss=\tempyy@nss \multiply\tempx@nss by #1% \put(\x@nss,\y@nss){\line(#1,-1){\tempx@nss}}% \tempxx@nss=\tempyy@nss \multiply\tempxx@nss by #2% \advance\x@nss by \xsize@nss% \put(\x@nss,\y@nss){\line(-#2,-1){\tempxx@nss}}% \advance\x@nss by -\xsize@nss \advance\y@nss by -\tempyy@nss% \tempy@nss=\tempyy@nss\divide\tempy@nss by 5000% \ifnum\tempy@nss<1 \tempy@nss=1\fi% \xdef\shape{}\index@nss=0% \loop% \advance\index@nss by 1% \condindent@nss=#1\multiply\condindent@nss by\index@nss% \multiply\condindent@nss by 5000% \xdef\shape{\shape\the\condindent@nss\unitlength}% \condindent@nss=#1\advance\condindent@nss by #2% \multiply\condindent@nss by\index@nss% \multiply\condindent@nss by -5000% \advance\condindent@nss by \xsize@nss% \xdef\shape{\shape\the\condindent@nss\unitlength}% \ifnum\index@nss<\tempy@nss% \repeat% \fi %\ifanygradient \put(\x@nss,\y@nss){% \framebox(\xsize@nss,\tempyy@nss)[tl]{% \vbox{% \hsize=\xsize@nss\unitlength% \parshape=\tempy@nss \shape \c@nter@nss% %dies sorgt f"ur den Einzug \noindent\vrule width0pt height12pt \relax #3% %hier wird der Text ausgegeben }% }% }% \divide\tempyy@nss by 2% \xx@nss=\xsize@nss\advance\xx@nss by-\tempx@nss% \advance\xx@nss by-\tempxx@nss% \ifodd\xx@nss\advance\tempxx@nss by 1\fi% \divide\xx@nss by 2\advance\tempxx@nss by \xx@nss% \advance\tempx@nss by \xx@nss% \ifouter% \put(\x@nss,\y@nss){\makebox(\tempx@nss,\tempyy@nss)[l]{\hspace{1em}#4}}% \else%\outer \put(\x@nss,\y@nss){\makebox(\tempx@nss,\tempyy@nss){#4}}% \fi %\outer \xx@nss=\x@nss\advance\xx@nss by \tempx@nss% \ifouter% \put(\xx@nss,\y@nss){\makebox(\tempxx@nss,\tempyy@nss)[r]{#5\hspace{1em}}}% \else%\outer \put(\xx@nss,\y@nss){\makebox(\tempxx@nss,\tempyy@nss){#5}}% \fi %\outer \str@kt{\x@nss}{\y@nss}{\tempx@nss}% \dbgString@nss{Ende \string\@ifthenelse@nss} } \def\change{% \dbgString@nss{\string\change} \endstr@kt\str@kt{\xx@nss}{\y@nss}{\tempxx@nss}% } \def\ifend@nss{% \dbgString@nss{Beginn \string\ifend@nss} \global\gy@nss=\y@nss\endgroup\tempy@nss=\gy@nss% \ifnum\tempy@nss<\ydepth@nss% \y@nss=\tempy@nss\advance\ydepth@nss by-\tempy@nss% \put(\x@nss,\y@nss){% \framebox(\tempx@nss,\ydepth@nss){% \ifnum\ydepth@nss>5000\filler@nss\fi% }% }% \else% \ifnum\tempy@nss>\ydepth@nss% \y@nss=\ydepth@nss\advance\tempy@nss by-\ydepth@nss% \put(\xx@nss,\y@nss){% \framebox(\tempxx@nss,\tempy@nss){% \ifnum\tempy@nss>5000\filler@nss\fi% }% }% \else% \y@nss=\ydepth@nss% \fi% \fi% \dbgString@nss{Ende \string\ifend@nss} } \def\forloop@nss{\let\next=\@forloop@nss\getoption} \def\@forloop@nss#1{ \def\argi{#1} \dbgString@nss{Beginn \string\@forloop} \tempx@nss=\xsize@nss \divide\tempx@nss by 6 \ifx\argi\empty% \set@nss{\mbox{\rule{0mm}{2ex}}}{\tempx@nss}% \else% \set@nss{#1\hskip\xsize@nss\unitlength}{\tempx@nss}% \fi% \tempy@nss=\number\param@nss000 \block@nss{\tempy@nss}{0} \advance\x@nss by \ydepth@nss \tempxx@nss=\xsize@nss \advance\tempxx@nss by -\ydepth@nss \tempy@nss=\ydepth@nss \str@kt{\x@nss}{\y@nss}{\tempxx@nss} } \def\forloopend@nss{ \endstr@kt \advance\x@nss by-\tempy@nss \advance\ydepth@nss by -\tempy@nss \tempyy@nss=\ydepth@nss \ydepth@nss=-\ydepth@nss \advance\ydepth@nss by \y@nss \advance\ydepth@nss by \tempy@nss \y@nss=\tempyy@nss \put(\x@nss,\y@nss){\framebox(\xsize@nss,\ydepth@nss){}} \dbgString@nss{Ende \string\@forloop@nss} } \let\forallin=\forloop@nss \let\forallinend=\forloopend@nss \def\forever{\let\next=\@forever\getoption} \def\@forever{% \@forloop@nss{}% } \let\foreverend=\forloopend@nss \let\dfr\forever \let\dfrend\foreverend \def\while{\let\next=\@while\getoption} \def\@while#1{% \dbgString@nss{Beginn \string\@while} \dbgCond@nss{fixedindent@nss} \tempx@nss=\xsize@nss\divide\tempx@nss by 6 \set@nss{#1\hskip\xsize@nss\unitlength}{\tempx@nss} \tempy@nss=\number\param@nss000 \block@nss{\tempy@nss}{0} \tempy@nss=\y@nss\advance\y@nss by \ydepth@nss \@ifthenelse{\boolean{fixedindent@nss}}{% \tempx@nss=\x@nss\advance\tempx@nss by \xindent@nss \tempxx@nss=\xsize@nss\advance\tempxx@nss by -\xindent@nss }{% \tempx@nss=\x@nss\advance\tempx@nss by \ydepth@nss \tempxx@nss=\xsize@nss\advance\tempxx@nss by -\ydepth@nss } \str@kt{\tempx@nss}{\tempy@nss}{\tempxx@nss}% } \def\whileend{% \endstr@kt\tempy@nss=\y@nss\advance\tempy@nss by-\ydepth@nss \y@nss=\ydepth@nss \put(\x@nss,\y@nss){\framebox(\xsize@nss,\tempy@nss){}}% \dbgString@nss{Ende \string\whileend} } \def\until{\let\next=\@until\getoption} \def\@until#1{\tempx@nss=\xsize@nss\divide\tempx@nss by 6 \dbgString@nss{Beginn \string\@until} \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss} \dbgCount@nss[Breite]{\xsize@nss} \set@nss{#1\hskip\xsize@nss\unitlength}{\tempx@nss} \tempy@nss=\number\param@nss000 \block@nss{\tempy@nss}{2} \@ifthenelse{\boolean{fixedindent@nss}}{% \advance\x@nss by \xindent@nss\tempxx@nss=\xsize@nss \advance\tempxx@nss by -\xindent@nss \tempy@nss=\ydepth@nss % \advance\x@nss by \xindent@nss\tempxx@nss=\xsize@nss % \advance\tempxx@nss by -\xindent@nss \tempy@nss=\ydepth@nss }{ \advance\x@nss by \ydepth@nss\tempxx@nss=\xsize@nss \advance\tempxx@nss by -\ydepth@nss \tempy@nss=\ydepth@nss } \str@kt{\x@nss}{\y@nss}{\tempxx@nss} } \def\untilend{\endstr@kt% \advance\ydepth@nss by -\tempy@nss \tempyy@nss=\ydepth@nss\ydepth@nss=-\ydepth@nss% \advance\ydepth@nss by \y@nss \y@nss=\tempyy@nss \@ifthenelse{\boolean{fixedindent@nss}}{% \advance\x@nss by -\xindent@nss \put(\x@nss,\y@nss){\framebox(\xsize@nss,\ydepth@nss){}} \put(\x@nss,\y@nss){\makebox(\xsize@nss,\tempy@nss) {\box\TextBox@nss}} }{% \advance\x@nss by-\tempy@nss \put(\x@nss,\y@nss){\framebox(\xsize@nss,\ydepth@nss){}} \put(\x@nss,\y@nss){\makebox(\xsize@nss,\tempy@nss) {\box\TextBox@nss}} }% \dbgString@nss{Ende \string\untilend}% } \def\case{\let\next=\@case\getoption} \def\@case#1#2#3#4{% \dbgString@nss{Beginn \string\@case} \tempxx@nss=\number#2% \ifanygradient% %{% \ifnum\number\param@nss000>0 \tempyy@nss=\number\param@nss000% \ifodd\number#1 \advance\tempxx@nss by -1 \fi \else \tempyy@nss=\xsize@nss \divide\tempyy@nss by #1 \fi \ifnum\number#2=\tempxx@nss \xx@nss=\x@nss \advance\xx@nss by \xsize@nss \tempy@nss=\y@nss \advance\tempy@nss by -\tempyy@nss \ifemlines% \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}% \else\ifcurves% \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)% \else\ifpictIIe% \tempxxx@nss=\xx@nss \advance\tempxxx@nss by -\x@nss \divide\tempxxx@nss by 1000 \tempyyy@nss=\tempy@nss \advance\tempyyy@nss by -\y@nss \divide\tempyyy@nss by 1000 \advance\xx@nss by -\x@nss \put(\x@nss,\y@nss){\line(\tempxxx@nss, \tempyyy@nss){\xx@nss}} \fi\fi\fi% \else \tempx@nss=\xsize@nss \multiply\tempx@nss by \tempxx@nss \divide\tempx@nss by #2 \xx@nss=\x@nss \advance\xx@nss by \tempx@nss \tempy@nss=\y@nss \advance\tempy@nss by -\tempyy@nss \ifemlines% \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}% \else\ifcurves% \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)% \else\ifpictIIe% \begingroup \tempxxx@nss=\xx@nss \advance\tempxxx@nss by -\x@nss \divide\tempxxx@nss by 1000 \tempyyy@nss=\tempy@nss \advance\tempyyy@nss by -\y@nss \divide\tempyyy@nss by 1000 \advance\xx@nss by -\x@nss \put(\x@nss,\y@nss){\line(\tempxxx@nss, \tempyyy@nss){\xx@nss}} \endgroup \fi\fi\fi% \advance\x@nss by \xsize@nss \ifemlines% \emline{\x@nss}{\y@nss}{}{\xx@nss}{\tempy@nss}{}% \else\ifcurves% \curve(\x@nss, \y@nss, \xx@nss, \tempy@nss)% \else\ifpictIIe% \tempxxx@nss=\x@nss \advance\tempxxx@nss by -\xx@nss \divide\tempxxx@nss by 1000 \tempyyy@nss=\tempy@nss \advance\tempyyy@nss by -\y@nss \divide\tempyyy@nss by 1000 \xx@nss=-\xx@nss \advance\xx@nss by \x@nss \put(\x@nss,\y@nss){\line(-\tempxxx@nss, \tempyyy@nss){\xx@nss}} \fi\fi\fi% \advance\x@nss by -\xsize@nss \fi %}{ \else% \ifanygradient \ifnum\number\param@nss000>0 \typeout{struktex warning:}% \typeout{[...] not supplied without curves, emlines2, or pict2e}% \fi \put(\x@nss,\y@nss){\line(#1,-1){\xsize@nss}} \tempyy@nss=\xsize@nss \divide\tempyy@nss by #1 %} \fi% \ifanygradient \tempx@nss=\xsize@nss \divide\tempx@nss by 2 \divide\tempyy@nss by 2 \advance\x@nss by \tempx@nss \advance\y@nss by -\tempyy@nss \put(\x@nss,\y@nss){\makebox(\tempx@nss,\tempyy@nss){#3}} \advance\x@nss by -\tempx@nss \advance\y@nss by \tempyy@nss \xx@nss=\x@nss \yy@nss=\y@nss \tempx@nss=\xsize@nss \divide\tempx@nss by #2 \ifnum\number\param@nss000>0 \tempy@nss=\number\param@nss000% \else \tempy@nss=\xsize@nss \divide\tempy@nss by #1 \fi \condindent@nss=\tempy@nss \divide \condindent@nss by \tempxx@nss \advance\y@nss by -\tempy@nss \put(\x@nss,\y@nss)% {% \makebox(\tempx@nss,\tempy@nss)[lb]{\raise3pt\hbox{~#4}}% }% \ydepth@nss=1000000% \str@kt{\x@nss}{\y@nss}{\tempx@nss}% \dbgString@nss{Ende: \string\@case} \dbgCoord@nss[Ursprung]{\x@nss}{\y@nss} \dbgCount@nss[Breite]{\tempx@nss} } \def\switch{% \@ifnextchar [{\@switch}{\@switch[l]}% } \def\@switch[#1]#2{% \dbgString@nss{Beginn \string\@switch} \global\gy@nss=\y@nss\endgroup \tempyy@nss=\gy@nss \ifnum\tempyy@nss<\ydepth@nss \ydepth@nss=\tempyy@nss \fi \advance\x@nss by \tempx@nss \advance\tempy@nss by -\condindent@nss \put(\x@nss,\y@nss)% {\makebox(\tempx@nss,\tempy@nss)[#1b]{\raise3pt\hbox{~#2~}}} \str@kt{\x@nss}{\y@nss}{\tempx@nss} } \def\caseend{% \dbgString@nss{Ende: \string\caseend} \global\gy@nss=\y@nss\endgroup \tempyy@nss=\gy@nss \ifnum\tempyy@nss<\ydepth@nss \ydepth@nss=\tempyy@nss \fi \x@nss=\xx@nss \y@nss=\ydepth@nss \tempyy@nss=\yy@nss \advance\tempyy@nss by -\ydepth@nss \put(\x@nss,\y@nss){\framebox(\xsize@nss,\tempyy@nss){}} \tempxx@nss=\x@nss \dbgCount@nss[width?]{\xsize@nss} \loop \dbgString@nss{draw vertical line} \dbgCoord@nss[Ursprung]{\tempxx@nss}{\y@nss} \dbgCount@nss[Laenge]{\tempyy@nss} \advance\tempyy@nss by -\condindent@nss \advance\tempxx@nss by \tempx@nss \put(\tempxx@nss,\y@nss){\line(0,1){\tempyy@nss}} \xx@nss=\tempxx@nss \advance\xx@nss by -\x@nss \advance\xx@nss by \tempx@nss \advance\xx@nss by 100 \dbgCount@nss[loop control]{\xx@nss} \dbgCount@nss[compare to]{\xsize@nss} \ifnum \xx@nss<\xsize@nss \repeat } \def\inparallel{\let\next=\@inparallel\getoption} \def\@inparallel#1#2{% \dbgString@nss{Beginn \string\@inparallel} \tempyy@nss=\number\param@nss000% \dbgCoord@nss[Ursprung inparallel]{\x@nss}{\y@nss} \dbgMark@nss{\x@nss}{\y@nss} \tempxx@nss=\xsize@nss \advance\tempxx@nss by 1500% prevent rounding errors \divide\tempxx@nss by 3000% \dbgCount@nss[Number of dashes]{\tempxx@nss} \yy@nss=\y@nss\advance\yy@nss by -2000% \dbgCoord@nss[draw top dashed line, origin]{\x@nss}{\yy@nss} \dbgCount@nss[length based on]{\xsize@nss} \multiput(\x@nss,\yy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}% \advance\yy@nss by -2000% \multiput(\x@nss,\yy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}% \xx@nss=\x@nss% \advance\xx@nss by \xsize@nss% \divide\xsize@nss by #1% \tempx@nss=\xsize@nss\divide\tempx@nss by 6% \begingroup \y@nss=\yy@nss% \dbgCoord@nss[Ursprung Task 1]{\x@nss}{\y@nss} \set@nss{#2}{\tempx@nss}% \dbgCount@nss[optionale Hoehe der Task]{\tempyy@nss} \block@nss{\tempyy@nss}{0}% \tempyy@nss=\TextBoxHt@nss% \dbgCount@nss[Hoehe der Task]{\tempyy@nss} } \def\inparallelend{% \dbgString@nss{Beginn \string\@inparallelend} \dbgCoord@nss[Endkoordinate]{\x@nss}{\y@nss} \global\tempy@nss=\y@nss% \global\tempyy@nss=\tempyy@nss% \endgroup \begingroup% \dbgCoord@nss[left and right limits]{\x@nss}{\xx@nss} \dbgCount@nss[step size]{\xsize@nss} \tempx@nss=\xsize@nss% \divide\tempx@nss by 2% \advance\xx@nss by -\tempx@nss% \tempx@nss=\x@nss% \loop% \dbgString@nss{draw vertical line} \advance\tempx@nss by \xsize@nss% \dbgCoord@nss[Ursprung]{\tempx@nss}{\tempy@nss} \dbgCount@nss[Laenge]{\tempyy@nss} \put(\tempx@nss,\tempy@nss){\line(0,1){\tempyy@nss}}% \tempxx@nss=\tempx@nss% \advance\tempxx@nss by \xsize@nss% \dbgCount@nss[loop control]{\tempxx@nss} \dbgCount@nss[compare to]{\xx@nss} \ifnum \tempxx@nss<\xx@nss% \repeat \endgroup \dbgCoord@nss[draw bottom, origin]{\x@nss}{\tempy@nss} \multiput(\x@nss,\tempy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}% \advance\tempy@nss by -2000% \multiput(\x@nss,\tempy@nss)(3000, 0){\tempxx@nss}{\line(1,0){1500}}% \advance\tempy@nss by -2000% \dbgCount@nss{\tempyy@nss} \advance\tempyy@nss by 8000% \advance\xx@nss by -\x@nss% \dbgCoord@nss[Breite, Hoehe]{\xx@nss}{\tempyy@nss} \put(\x@nss,\tempy@nss){\framebox(\xx@nss,\tempyy@nss){}}% \xsize@nss=\xx@nss% \y@nss=\tempy@nss% \dbgCoord@nss[Endkoordinate inparallel]{\x@nss}{\y@nss} \dbgCount@nss[Breite]{\xsize@nss} \dbgString@nss{Ende \string\@inparallelend} } \def\task{\let\next=\@task\getoption} \def\@task#1{% \dbgString@nss{Beginn \string\@task} \advance\x@nss by \xsize@nss% \y@nss=\yy@nss% \dbgCoord@nss[Ursprung parallele Task]{\x@nss}{\y@nss} \set@nss{#1}{\tempx@nss}% \ifnum\number\param@nss000>\tempyy@nss% \tempyy@nss=\number\param@nss000% \fi% \dbgCount@nss[Hoehe parallele Task]{\tempyy@nss} \block@nss{\tempyy@nss}{0}% } \newbox\CenterBox@nss% \def\centernss{% \begin{trivlist}% \item[] \strut% \setbox\CenterBox@nss=\hbox% \bgroup% } \def\endcenternss{% \egroup% \strut\hfill\box\CenterBox@nss\hfill\strut% \end{trivlist}% } \def\CenterNssFile#1{% \begin{trivlist}% \item[] \setbox\CenterBox@nss=\hbox{\input{#1.nss}}% \strut\hfill\box\CenterBox@nss\hfill\strut% \end{trivlist}% } \let\centernssfile=\CenterNssFile \newcommand\assert{\let\next=\assert@nss\getoption}% \newcommand\assert@nss[1]{}% \ifthenelse{\boolean{verification}}{% \countdef\xsizeo@nss=232% \countdef\ydeptho@nss=233% \renewcommand{\assert@nss}[1]{% \tempx@nss=\xsize@nss\divide\tempx@nss by 6% \set@nss{#1}{\tempx@nss}\tempy@nss=\number\param@nss000% \assertblock@nss{\tempy@nss}{1}% } %% \newcommand{\assertblock@nss}[2]{% \tempy@nss=#1\TextBoxHt@nss=\ht\TextBox@nss% \advance\TextBoxHt@nss by\dp\TextBox@nss% \advance\TextBoxHt@nss by 2mm% \ifdim\TextBoxHt@nss<\tempy@nss\unitlength% \TextBoxHt@nss=\tempy@nss\unitlength% \fi% \TextBoxHt@nss=0.00536\TextBoxHt@nss% \ydepth@nss=\TextBoxHt@nss\advance\y@nss by-\ydepth@nss% \xsizeo@nss=\xsize@nss \tempx@nss=\x@nss \divide\xsizeo@nss by 2% \advance\tempx@nss by+\xsizeo@nss% \ydeptho@nss=\ydepth@nss \tempy@nss=\y@nss \divide\ydeptho@nss by 2% \advance\tempy@nss by+\ydeptho@nss% \ifx#21% \put(\x@nss,\y@nss)% {% \framebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}% }% \put(\tempx@nss,\tempy@nss){\oval(\xsize@nss,\ydepth@nss)}% \else% \ifx#20% \put(\x@nss,\y@nss)% {% \makebox(\xsize@nss,\ydepth@nss){\box\TextBox@nss}% }% \put(\tempx@nss,\tempy@nss){\oval(\xsize@nss,\ydeptho@nss)}% \else% \advance\y@nss by \ydepth@nss% \fi% \fi% } } {} % end of \ifthenelse{\boolean{verification}} \endinput %% %% End of file `struktex.sty'.