summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/struktex/struktex.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-09-22 23:34:49 +0000
committerKarl Berry <karl@freefriends.org>2010-09-22 23:34:49 +0000
commit4e4bb5b0b9eb71dbc88b140b9bfe43026324b79f (patch)
treecec03b97ab34eacd61a679abbc80d02fa8975188 /Master/texmf-dist/tex/latex/struktex/struktex.sty
parenta00a7b047313bab600673186a730290a60224e3f (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.sty113
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%