diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:00:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:00:33 +0000 |
commit | 092017c515db38de4f282ae593042c0818fea981 (patch) | |
tree | 3826495bd05eeb640a37776dc1cc1b8fa97f4f47 /Master | |
parent | 218e5aa5c754eca52b6715002273da0b763126cb (diff) |
newalg
git-svn-id: svn://tug.org/texlive/trunk@1134 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/tex/latex/newalg/newalg.sty | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/newalg/newalg.sty b/Master/texmf-dist/tex/latex/newalg/newalg.sty new file mode 100644 index 00000000000..40f100e712a --- /dev/null +++ b/Master/texmf-dist/tex/latex/newalg/newalg.sty @@ -0,0 +1,148 @@ +%% +%% This is file `newalg.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% newalg.dtx (with options: `package') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% You are *not* allowed to modify this file. +%% +%% You are *not* allowed to distribute this file. +%% For distribution of the original source see +%% the terms for copying and modification in the file newalg.dtx. +%% +\NeedsTeXFormat{LaTeX2e}[1994/06/01] +\ProvidesPackage{newalg}[1994/12/15 Format code algorithms nicely] + +\newbox\algstack +\newbox\algtab +\newcount\algline +\newtoks\alga +\newtoks\algb + +\newif\ifalgisenv + +\def\alglpsh#1\to#2{\alga={#1\\}\algb=\expandafter{#2} + \global\edef#2{\the\alga\the\algb}} +\def\alglpop#1\to#2{\ifx\empty#1\def#2{} + \else\global\expandafter\algllop#1\algllop#1#2\fi} +\def\algllop#1\\#2\algllop#3#4{\def#3{#2}\def#4{#1}} +\def\algltop#1\to#2{\ifx\empty#1\def\#2{}\else + \expandafter\alglttop#1\alglttop#2\fi} +\def\alglttop#1\\#2\alglttop#3{\def#3{#1}} +\def\algckenv#1{\algltop\alglenv\to\algenv + \def\algarg{#1} + \ifx \algarg\algenv \algisenvtrue \else \algisenvfalse \fi} + +\def\algsol{\global\advance\algline by 1 + \the\algline&\hbox\bgroup\copy\algtab$\ignorespaces} +\def\algeol{$\egroup\cr\algsol} +\def\algpush{\global\setbox\algstack\hbox{\unhbox\algstack\box\algtab}} +\def\algpop{\global\setbox\algstack\hbox{\unhbox\algstack + \global\setbox\algtab\lastbox}} +\def\algset{$\egroup\setbox0=\lastbox\algpush + \global\setbox\algtab\hbox to \wd0{}\hbox\bgroup\unhbox0$} +\def\algorithm#1#2{\bgroup + \let\\=\algeol + \let\==\leftarrow + \let\IF=\algIF + \let\RETURN=\algRETURN + \let\ELSE=\algELSE + \let\endIF=\endalgIF + \let\ERROR=\algERROR + \let\NIL=\algNIL + \let\WHILE=\algWHILE + \let\endWHILE=\endalgWHILE + \let\FOR=\algFOR + \let\endFOR=\endalgFOR + \let\CALL=\algCALL + \let\text=\algtext + \let\TO=\algTO + \let\EACH=\algEACH + \let\SWITCH=\algSWITCH + \let\item=\algitem + \let\endSWITCH=\endalgSWITCH + \let\DEFAULT=\algDEFAULT + \let\REPEAT=\algREPEAT + \let\UNTIL=\endalgREPEAT + \let\endREPEAT=\UNTIL + \let\IN=\algIN + \let\begin=\algbegin + \let\end=\algend + \let\endalgorithm=\algalmostend + \global\setbox\algtab\null + \global\setbox\algstack\null + \global\algline=0 + \def\alglenv{algorithm\\} + \halign\bgroup\space\hfill##&\quad##\hss \cr + \omit\CALL{#1}$(#2)$\span\omit\hfill \cr + \algsol} +\def\algalmostend{$\egroup\cr\egroup\egroup\strut\end{algorithm}} +\def\algkey#1{\mbox{\bf #1\ }} +\def\algIF#1{\algkey{if}\algset#1 \\ + \algkey{then}\algset} +\def\algELSE{\algckenv{IF} + \ifalgisenv + \algpop \\ + {\setbox0\hbox{\algkey{then}} + \hbox to \wd0{\algkey{else}\hfill}} + \algset + \else + \PackageError{newalg} + {\string\ELSE\space is only allowed in the IF environment} + {You have an \protect\ELSE\space command without a \string\begin{IF}} + \fi} +\def\endalgIF{\algpop\algpop} +\def\algERROR#1{\algkey{error}\mbox{``#1''}} +\def\algRETURN{\algkey{return}} +\def\algconst#1{\mbox{\sc #1}} +\def\algNIL{\algconst{nil}} +\def\algWHILE#1{\algkey{while}#1 \\ + \indent\algkey{do}\algset} +\def\endalgWHILE{\algpop} +\def\algCALL#1{\mbox{\sc #1}} +\def\algFOR#1{\algkey{for}#1 \\ + \indent\algkey{do}\algset} +\def\endalgFOR{\algpop} +\def\algtext#1{\mbox{ #1 }} +\def\algTO{\algkey{ to}} +\def\algEACH{\algkey{ each}} +\def\algSWITCH{\algkey{switch}\algpush} +\def\algitem#1{\algckenv{SWITCH} + \ifalgisenv + \algpop \\ + \quad\algkey{case}\algset #1: + \else + \PackageError{newalg} + {\string\item\space can only be used in a SWITCH environment} + {You have an item that is not inside of the correct environment} + \fi} +\def\endalgSWITCH{\algpop} +\def\algDEFAULT{\algkey{default}} +\def\algREPEAT#1{ + \algkey{repeat}\algset\\} +\def\endalgREPEAT{\algpop \\ + \quad\algkey{until}} +\def\algIN{\algkey{ in}} +\def\algbegin#1{\alglpsh#1\to\alglenv + \csname #1\endcsname} +\def\algend#1{\alglpop\alglenv\to\algenv + \def\algarg{#1} + \ifx \algarg\algenv + \relax + \else + \PackageError{newalg} + {\string\begin{\algenv}\space ended by \string\end{\algarg}} + {We are confused. Try to return now} + \fi + \csname end#1\endcsname +} + +\endinput +%% +%% End of file `newalg.sty'. |