diff options
author | Karl Berry <karl@freefriends.org> | 2010-09-22 23:34:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-09-22 23:34:49 +0000 |
commit | 4e4bb5b0b9eb71dbc88b140b9bfe43026324b79f (patch) | |
tree | cec03b97ab34eacd61a679abbc80d02fa8975188 /Master/texmf-dist/tex/latex/struktex/struktex.sty | |
parent | a00a7b047313bab600673186a730290a60224e3f (diff) |
struktex v133 (22sep10)
git-svn-id: svn://tug.org/texlive/trunk@19845 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/struktex/struktex.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/struktex/struktex.sty | 113 |
1 files changed, 100 insertions, 13 deletions
diff --git a/Master/texmf-dist/tex/latex/struktex/struktex.sty b/Master/texmf-dist/tex/latex/struktex/struktex.sty index d78fff5c349..31b44fa89f3 100644 --- a/Master/texmf-dist/tex/latex/struktex/struktex.sty +++ b/Master/texmf-dist/tex/latex/struktex/struktex.sty @@ -17,42 +17,64 @@ %% %% Please address error reports and any problems in case of UNCHANGED versions %% to -%% j.hoffmann@fh-aachen.de -\NeedsTeXFormat{LaTeX2e}[1999/12/01] -{% +%% j.hoffmann_(at)_fh-aachen.de +\NeedsTeXFormat{LaTeX2e}[1999/12/01]{% \def\@svn@ $#1Date: #2-#3-#4 #5$$#6Revision: #7$ {% \ProvidesPackage{struktex}[#2/#3/#4 v#7 Nassi Shneiderman Charts (Jobst Hoffmann)]} - \@svn@ $Date: 2010-06-25 13:00:22 +0200 (Fr, 25 Jun 2010) $$Revision: 101 $ % + \@svn@ $Date: 2010-09-21 21:32:08 +0200 (Di, 21 Sep 2010) $$Revision: 133 $ % } %% \RequirePackage{ifthen} \RequirePackage{struktxf} \RequirePackage{struktxp} +\newcommand{\dbgString@nss}[1]{\typeout{===> dbg String:\space#1}} +\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 \newboolean{curves} \newboolean{emlines} \newboolean{pictIIe} \newboolean{anygradient} -\DeclareOption{curves}% -{% +\DeclareOption{curves}{% \setboolean{anygradient}{true} \setboolean{curves}{true} \setboolean{emlines}{false} \setboolean{pictIIe}{false} } -\DeclareOption{emlines}% -{% +\DeclareOption{emlines}{% \setboolean{anygradient}{true} \setboolean{curves}{false} \setboolean{emlines}{true} \setboolean{pictIIe}{false} } -\DeclareOption{pict2e}% -{% +\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}% {% @@ -76,7 +98,7 @@ \let\ifdraft@nss\iffalse \let\iffinal@nss\iftrue } -\ProcessOptions +\ProcessOptions*\relax \ifcurves% \RequirePackage{curves} \else\ifemlines @@ -173,32 +195,47 @@ \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} \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% } \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}% @@ -211,8 +248,7 @@ \advance\y@nss by \ydepth@nss% \fi\fi% } -\def\declarationtitle{\ifnum\language=\languageNGerman Speicherplatz bereitstellen: - \else providing memory space\fi} +\def\declarationtitle{\declarationtitlename@nss} \newlength{\descriptionindent} \setlength{\descriptionindent}{1.5em} \newlength{\descriptionwidth} \setlength{\descriptionwidth}{40pt} \newlength{\descriptionsep} \setlength{\descriptionsep}{\tabcolsep} @@ -255,10 +291,15 @@ \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% @@ -313,6 +354,7 @@ \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% @@ -430,11 +472,14 @@ \xx@nss=\x@nss\advance\xx@nss by \tempx@nss% \put(\xx@nss,\y@nss){\makebox(\tempxx@nss,\tempyy@nss){#5}}% \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% @@ -455,6 +500,7 @@ \y@nss=\ydepth@nss% \fi% \fi% + \dbgString@nss{Ende \string\ifend@nss} } \def\forever{\let\next=\@forever\getoption} \def\@forever{ @@ -486,6 +532,7 @@ \let\dfrend\foreverend \def\while{\let\next=\@while\getoption} \def\@while#1{% + \dbgString@nss{Beginn \string\@while} \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} @@ -498,6 +545,7 @@ \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 @@ -516,6 +564,7 @@ {\box\TextBox@nss}}} \def\case{\let\next=\@case\getoption} \def\@case#1#2#3#4{% + \dbgString@nss{Beginn \string\@case} \tempxx@nss=\number#2% \ifanygradient% %{% @@ -623,11 +672,15 @@ }% \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 @@ -640,6 +693,7 @@ \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 @@ -651,7 +705,11 @@ \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}} @@ -659,16 +717,24 @@ \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}}% @@ -678,45 +744,66 @@ \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% |