Zhaopeng Xing schrieb:
Hi,

Does anyone know how to describe algorithm procedures in similar way as LaTeX algorithmic and algorithm packages? I tried to search it on wiki but found nothing. Thanks.

--
Zhaopeng XING

Tinbergen Institute
------------------------------------------------------------------------

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________
Hello,

I once tried to copy the LaTeX environment to ConTeXt. And this is, what came out of it: *t-algorithmic.tex* It works for me, but i'm open to new and better implementations...

richard rascher-friesenhausen

--

==============================================================================
Dr. Richard Rascher-Friesenhausen
Hochschule Bremerhaven, Studiengang Medizintechnik
An der Karlstadt 8
27568 Bremerhaven

und

MeVis Research GmbH
Universitaetsallee 29
D-28359 Bremen

Amtsgericht Bremen, HRB 16222
Geschäftsführer: Prof. Dr. Heinz-Otto Peitgen

email: [EMAIL PROTECTED], [EMAIL PROTECTED]
www  : http://www.mevis-research.de/, http://www.hs-bremerhaven.de/
fon  : +49 - 421 - 218 7707 (mevis)
fax  : +49 - 421 - 218 4236 (mevis)
==============================================================================

% output=pdf
%=======================================================================
% begin of file *t-algorithmic.tex*
%=======================================================================
% [EMAIL PROTECTED] (c) 2003, 2004, 2005

%D \module
%D   [       file=algorithmic.tex,
%D        version=2005.02.12,
%D          title=Environments for algorithms,
%D         author=richard rascher friesenhausen,
%D           date=\currentdate,
%D      [EMAIL PROTECTED]

%D algorithmic defs
\definefloat[algorithm][algorithms]
\setupfloat[algorithm][location=middle]
\setuplabeltext[de][algorithm={Algorithmus\,}]

\define[1]\Algorithm{%
\startframedtext[frame=off,%leftframe=on,%bottomframe=on,
                 framecolor=darkyellow,
                 background=screen,offset=none]
%  \setuplinenumbering[location=intext]
%  \startlinenumbering 
    #1 
%  \stoplinenumbering
\stopframedtext
}

%D names
\def\algorithmicend{{\bf end}}
\def\algorithmicif{{\bf if}}
\def\algorithmicthen{{\bf then}}
\def\algorithmicelse{{\bf else}}
\def\algorithmicelseif{\algorithmicelse\algorithmicif}
\def\algorithmicendif{\algorithmicend{\bf.}\algorithmicif}

\def\algorithmicfor{{\bf for}}
\def\algorithmicendfor{\algorithmicend{\bf.}\algorithmicfor}
\def\algorithmicforall{{\bf for all}}
\def\algorithmicdo{{\bf do}}

\def\algorithmicwhile{{\bf while}}
\def\algorithmicendwhile{\algorithmicend{\bf.}\algorithmicwhile}

\def\algorithmicrepeat{{\bf repeat}}
\def\algorithmicuntil{{\bf until}}

%D macros
\newdimen\algorithmicindent \algorithmicindent=0cm
\newdimen\algorithmicskip   \algorithmicskip=.5cm
\newcount\algorithmicline   \algorithmicline=0
\def\startIF{\advance\algorithmicindent by  \algorithmicskip}
\def\stopIF {\advance\algorithmicindent by -\algorithmicskip}

\let\startFOR=\startIF
\let\stopFOR =\stopIF

\let\startWHILE=\startIF
\let\stopWHILE =\stopIF

\let\startREPEAT=\startIF
\let\stopREPEAT =\stopIF

\def\algorithmiclineintro{%
  \inframed[width=.5cm,frame=off,offset=none,
            background=color,backgroundcolor=darkyellow]
    {\strut\hfill\color[black]{\the\algorithmicline}\,}\quad
  \hskip\algorithmicindent%
}
%D if then elseif else endif
\def\IF#1{%
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro
    \algorithmicif\ #1\ \algorithmicthen
  }\par
  \startIF
}
\def\ENDIF{%
  \stopIF
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro
%  \the\algorithmicline\ \hskip\algorithmicindent%
    \algorithmicendif
  }\par
}
\def\ELSE{%
  \stopIF
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro
%  \the\algorithmicline\ \hskip\algorithmicindent%
    \algorithmicelse
  }\par
  \startIF
}

\def\ELSEIF#1{%
  \stopIF
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro  
    \algorithmicelseif\ #1\ \algorithmicthen
  }\par
  \startIF
}

%D for forall do endfor
\def\FOR#1{%
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro
    \algorithmicfor\ #1\ \algorithmicdo
  }\par
  \startFOR
}
\def\FORALL#1{%
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro
    \algorithmicforall\ #1\ \algorithmicdo
  }\par
  \startFOR
}
\def\ENDFOR{%
  \stopFOR
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro
    \algorithmicendfor
  }\par
}

%D while do endwhile
\def\WHILE#1{%
  \advance\algorithmicline by 1
  \the\algorithmicline\ \hskip\algorithmicindent%
  \algorithmicwhile\ #1\ \algorithmicdo\par
  \startWHILE
}
\def\ENDWHILE{%
  \stopWHILE
  \advance\algorithmicline by 1
  \the\algorithmicline\ \hskip\algorithmicindent%
  \algorithmicendwhile\par
}

%D repeat until
\def\REPEAT{%
  \advance\algorithmicline by 1
  \hskip\algorithmicindent%
  \algorithmicrepeat\par
  \startREPEAT
}
\def\UNTIL#1{%
  \stopREPEAT
  \advance\algorithmicline by 1
  \the\algorithmicline\ \hskip\algorithmicindent%
  \algorithmicuntil\ #1\par
}

%D loop endloop

%D others
\def\STATE#1{%
  \advance\algorithmicline by 1
  \hbox{%
    \algorithmiclineintro
    #1
  }\par
}
  

\def\INPUT#1{%
  \hskip\algorithmicindent%
  \inframed[frame=off,width=broad,offset=1pt, %bottomframe=on,
            background=color,backgroundcolor=darkyellow]%
    {{\bf Input:}\ #1\hfill}\par}
\def\OUTPUT#1{%
  \hskip\algorithmicindent%
  \inframed[frame=off,width=broad,offset=1pt,%topframe=on,
            background=color,backgroundcolor=darkyellow]%
    {{\bf Output:}\ #1\hfill}\par}

\def\REQUIRE#1{%
  \hskip\algorithmicindent%
  \inframed[frame=off,width=broad,strut=yes,offset=0pt,
            background=color,backgroundcolor=darkyellow]
    {{\bf Require:}\ #1\hfill}\par
}
\def\ENSURE#1{%
  \hskip\algorithmicindent%
  \inframed[frame=off,width=broad,offset=1pt,
            background=color,backgroundcolor=darkyellow]%
    {{\bf Ensure:}\ #1\hfill}\par
}
\def\INVARIANT#1{%
  \hskip\algorithmicindent%
  \inframed[frame=off,width=broad,offset=none,
            background=color,backgroundcolor=darkyellow]%
    {{\bf Invariant:}\ #1\hfill}\par
}

\doifnotmode{demo}{\endinput}
%C======================================================================
%D
%D Some tests.
%D
%=======================================================================
\setupcolors[state=start]
%=======================================================================
\starttext
%=======================================================================
\startbuffer
\IF{$x=0$}
  \STATE{do it}
\ELSE
  \STATE{don't do it}
\ENDIF
\stopbuffer
\placealgorithm{ein Algorithmus}\Algorithm{\getbuffer}

\startbuffer
\FORALL{$x\in R$}
  \STATE{do it}
\ENDFOR
\stopbuffer
\placealgorithm{ein Algorithmus}\Algorithm{\getbuffer}

\startbuffer
  \INPUT{$n$ ganze Zahlen}
  \REQUIRE{$n>0$}
  \STATE{Lese $n$ Zahlen in das Feld $a_0,\ldots,a_{n-1}$ ein.}
  \FORALL{$i=0,1,\ldots,n-1$}
    \STATE{Suche das kleinste Element aus $a_i, \ldots, a_{n-1}$.}
    \STATE{Nehme an, es steht in $a_{\min}$.}
    \STATE{Vertausche $a_i$ mit $a_{\min}$.}
  \ENDFOR 
  \ENSURE{$a_0\le a_1\le \ldots\le a_{n-1}$}
  \OUTPUT{Sortierte Liste $a$ von ganzen Zahlen}
\stopbuffer
\placealgorithm{ein Algorithmus}{\setupbodyfont[10pt]\Algorithm{\getbuffer}}

\startbuffer
\IF{$i>0$}
  \STATE{$i$ ist gr\"osser als $0$}
  \FOR{$j=0,1,2$}
    \STATE{z\"ahlen...}
  \ENDFOR
\ELSEIF{$i=0$}
  \STATE{$i$ ist gleich $0$}
\ELSE
  \STATE{mmmhhh...}
\ENDIF
\stopbuffer
\placealgorithm{ein Algorithmus}\Algorithm{\getbuffer}

%=======================================================================
\stoptext
%=======================================================================
%=======================================================================
% end of file *t-algorithmic.tex*
%=======================================================================
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to