summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-13 00:00:33 +0000
committerKarl Berry <karl@freefriends.org>2006-01-13 00:00:33 +0000
commit092017c515db38de4f282ae593042c0818fea981 (patch)
tree3826495bd05eeb640a37776dc1cc1b8fa97f4f47 /Master/texmf-dist/tex/latex
parent218e5aa5c754eca52b6715002273da0b763126cb (diff)
newalg
git-svn-id: svn://tug.org/texlive/trunk@1134 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/newalg/newalg.sty148
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'.