summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.mkii (renamed from Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.tex)110
-rw-r--r--Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.mkiv312
2 files changed, 387 insertions, 35 deletions
diff --git a/Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.tex b/Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.mkii
index 91d23fa4dbe..95cd7a26401 100644
--- a/Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.tex
+++ b/Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.mkii
@@ -1,19 +1,37 @@
%D \module
-%D [ file=t-algorithmic,
-%D version=2009.04.21,
-%D title=\CONTEXT\ User Module,
-%D subtitle=Algorithms,
-%D author=Wolfgang Schuster,
-%D date=\currentdate,
-%D copyright=Wolfgang Schuster,
-%D email=schuster.wolfgang@googlemail.com,
-%D license=Public Domain]
+%D [ file=t-algorithmic,
+%D version=2012.06.22,
+%D title=\CONTEXT\ User Module,
+%D subtitle=Algorithms,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Wolfgang Schuster,
+%D email=schuster.wolfgang@googlemail.com,
+%D license=GNU General Public License]
+
+%C Copyright (C) 2010 Wolfgang Schuster
+%C
+%C This program is free software: you can redistribute it and/or modify
+%C it under the terms of the GNU General Public License as published by
+%C the Free Software Foundation, either version 3 of the License, or
+%C any later version.
+%C
+%C This program is distributed in the hope that it will be useful,
+%C but WITHOUT ANY WARRANTY; without even the implied warranty of
+%C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%C GNU General Public License for more details.
+%C
+%C You should have received a copy of the GNU General Public License
+%C along with this program. If not, see <http://www.gnu.org/licenses/>.
\writestatus{loading}{Context User Module / Algorithms}
\unprotect
-\def\????al{@@@@al} % ALgorithmic
+\def\????algorithmic{@@@@algorithmic}
+
+\def\algorithmicparameter#1%
+ {\csname\ifcsname\????algorithmic#1\endcsname\????algorithmic#1\else\s!empty\fi\endcsname}
\def\startalgorithmic
{\bgroup
@@ -23,39 +41,37 @@
{\iffirstargument
\setupalgorithmic[#1]%
\fi
- \def\algorithmiccommands##1%
- {\uppercase{\expandafter\let\csname##1\expandafter\endcsname}\csname algorithmic!##1\endcsname}%
- \processcommacommand[\algorithmic!list!commands]\algorithmiccommands
- \@@@@albefore
+ \the\everyalgorithmic
+ \doifsomething{\algorithmicparameter\c!spacebefore}{\blank[\algorithmicparameter\c!spacebefore]}%
+ \algorithmicparameter\c!before
\setupwhitespace[\v!none]%
- \doadaptleftskip\@@@@almargin
- \doif\@@@@alnumbering\v!line
+ \doadaptleftskip{\algorithmicparameter\c!margin}%
+ \doif{\algorithmicparameter\c!numbering}\v!yes
{\setuplinenumbering
- [\c!start=\@@@@alstart,
- \c!stop=\@@@@alstop,
- \c!step=\@@@@alstep]%
+ [\c!start=\algorithmicparameter\c!start,
+ \c!stop=\algorithmicparameter\c!stop,
+ \c!step=\algorithmicparameter\c!step]%
\startlinenumbering}}
\def\stopalgorithmic
{\par
- \doif\@@@@alnumbering\v!line\stoplinenumbering
- \@@@@alafter
+ \doif{\algorithmicparameter\c!numbering}\v!yes\stoplinenumbering
+ \algorithmicparameter\c!after
+ \doifsomething{\algorithmicparameter\c!spaceafter}{\blank[\algorithmicparameter\c!spaceafter]}%
\egroup}
\def\setupalgorithmic
- {\dodoubleargument\getparameters[\????al]}
+ {\dodoubleargument\getparameters[\????algorithmic]}
% Commands
-\def\algorithmic!list!commands
- {state,if,else,elsif,endif,for,forall,endfor,while,endwhile,repeat,%
- until,loop,endloop,require,ensure,return,true,false,print,comment}
+\newtoks\everyalgorithmic
\def\startsubalgorithmic
- {\par\doadaptleftskip\@@@@alwidth}
+ {\par\doadaptleftskip{\algorithmicparameter\c!width}}
\def\stopsubalgorithmic
- {\par\doadaptleftskip{-\@@@@alwidth}}
+ {\par\doadaptleftskip{-\algorithmicparameter\c!width}}
\def\algorithmic!state {\par}
\def\algorithmic!if #1{\par\algorithmicif\ #1 \algorithmicthen\startsubalgorithmic}
@@ -79,6 +95,30 @@
\def\algorithmic!print {\par\algorithmicprint\space}
\def\algorithmic!comment {\algorithmiccomment}
+\appendtoks
+ \let\STATE \algorithmic!state
+ \let\IF \algorithmic!if
+ \let\ELSE \algorithmic!else
+ \let\ELSIF \algorithmic!elsif
+ \let\ENDIF \algorithmic!endif
+ \let\FOR \algorithmic!for
+ \let\FORALL \algorithmic!forall
+ \let\ENDFOR \algorithmic!endfor
+ \let\WHILE \algorithmic!while
+ \let\ENDWHILE\algorithmic!endwhile
+ \let\REPEAT \algorithmic!repeat
+ \let\UNTIL \algorithmic!until
+ \let\LOOP \algorithmic!loop
+ \let\ENDLOOP \algorithmic!endloop
+ \let\REQUIRE \algorithmic!require
+ \let\ENSURE \algorithmic!ensure
+ \let\RETURN \algorithmic!return
+ \let\TRUE \algorithmic!true
+ \let\FALSE \algorithmic!false
+ \let\PRINT \algorithmic!print
+ \let\COMMENT \algorithmic!comment
+\to \everyalgorithmic
+
% I should make this multilingual
\def\algorithmicrequire {{\bf Require:}}
@@ -108,13 +148,13 @@
% Default values
\setupalgorithmic
- [\c!numbering=\v!no,
- \c!start=1,
- \c!stop=,
- \c!step=1,
- \c!width=1em,
- \c!margin=1em,
- \c!before=\blank,
- \c!after=\blank]
+ [ \c!numbering=\v!no,
+ \c!start=1,
+ \c!stop=,
+ \c!step=1,
+ \c!width=1em,
+ \c!margin=1em,
+ \c!spacebefore=\v!line,
+ \c!spaceafter=\v!line]
\protect \endinput
diff --git a/Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.mkiv b/Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.mkiv
new file mode 100644
index 00000000000..6a985e5ac4e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/third/algorithmic/t-algorithmic.mkiv
@@ -0,0 +1,312 @@
+%D \module
+%D [ file=t-algorithmic,
+%D version=2012.12.18,
+%D title=\CONTEXT\ User Module,
+%D subtitle=Algorithms,
+%D author=Wolfgang Schuster,
+%D date=\currentdate,
+%D copyright=Wolfgang Schuster,
+%D email=schuster.wolfgang@googlemail.com,
+%D license=GNU General Public License]
+
+%C Copyright (C) 2010 Wolfgang Schuster
+%C
+%C This program is free software: you can redistribute it and/or modify
+%C it under the terms of the GNU General Public License as published by
+%C the Free Software Foundation, either version 3 of the License, or
+%C any later version.
+%C
+%C This program is distributed in the hope that it will be useful,
+%C but WITHOUT ANY WARRANTY; without even the implied warranty of
+%C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%C GNU General Public License for more details.
+%C
+%C You should have received a copy of the GNU General Public License
+%C along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+% begin info
+%
+% title : algorithmic
+% comment : context port of the algorithmic package for latex
+% status : final
+%
+% end info
+
+\writestatus{loading}{Context User Module / Algorithms}
+
+\unprotect
+
+\startinterface all
+ \setinterfaceconstant {labelstyle} {labelstyle}
+ \setinterfaceconstant {labelcolor} {labelcolor}
+\stopinterface
+
+\startinterface all
+ \setinterfacevariable {algorithmic} {algorithmic}
+\stopinterface
+
+\installnamespace {algorithmic}
+\installcommandhandler \????algorithmic {algorithmic} \????algorithmic
+
+\appendtoks
+ \setuevalue{\e!start\currentalgorithmic}{\algorithmic_start[\currentalgorithmic]}%
+ \setuevalue{\e!stop \currentalgorithmic}{\algorithmic_stop }%
+\to \everydefinealgorithmic
+
+\appendtoks
+ \definelinenumbering[\currentalgorithmic]%
+\to \everydefinealgorithmic
+
+\appendtoks
+ \setuplinenumbering
+ [\currentalgorithmic]
+ [\c!conversion=\algorithmicparameter\c!conversion,
+ \c!start=\algorithmicparameter\c!start,
+ \c!step=\algorithmicparameter\c!step,
+ \c!method=\algorithmicparameter\c!method,
+ \c!continue=\algorithmicparameter\c!continue,
+ \c!location=\algorithmicparameter\c!location,
+ \c!style=\algorithmicparameter\c!numberstyle,
+ \c!color=\algorithmicparameter\c!numbercolor,
+ \c!width=\algorithmicparameter\c!numberwidth,
+ \c!align=\algorithmicparameter\c!align]%
+\to \everysetupalgorithmic
+
+\unexpanded\def\algorithmic_start[#1]%
+ {\begingroup
+ \edef\currentalgorithmic{#1}%
+ \dosingleempty\algorithmic_start_indeed}
+
+\def\algorithmic_start_indeed[#1]%
+ {\iffirstargument
+ \setupcurrentalgorithmic[#1]%
+ \fi
+ \the\t_algorithmic_commands
+ \usealgorithmicstyleandcolor\c!style\c!color
+ \doifsomething{\algorithmicparameter\c!spacebefore}{\blank[\algorithmicparameter\c!spacebefore]}%
+ \algorithmicparameter\c!before
+ \setupwhitespace[\v!none]%
+ \doadaptleftskip{\algorithmicparameter\c!margin}%
+ \doif{\algorithmicparameter\c!numbering}\v!yes\startlinenumbering}
+
+\unexpanded\def\algorithmic_stop
+ {\par
+ \doif{\algorithmicparameter\c!numbering}\v!yes\stoplinenumbering
+ \algorithmicparameter\c!after
+ \doifsomething{\algorithmicparameter\c!spaceafter}{\blank[\algorithmicparameter\c!spaceafter]}%
+ \endgroup}
+
+% Commands
+
+\def\algorithmic_begsub
+ {\par\doadaptleftskip{\algorithmicparameter\c!width}}
+
+\def\algorithmic_endsub
+ {\par\doadaptleftskip{-\algorithmicparameter\c!width}}
+
+\def\algorithmic_label#1%
+ {\begingroup
+ \usealgorithmicstyleandcolor\c!labelstyle\c!labelcolor
+ \algorithmictext{#1}%
+ \endgroup}
+
+\starttexdefinition algorithmic_state
+ \par
+\stoptexdefinition
+
+\starttexdefinition algorithmic_if #1
+ \par
+ \algorithmic_label{if} #1 \algorithmic_label{then}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_else
+ \algorithmic_endsub
+ \algorithmic_label{else}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_elsif #1
+ \algorithmic_endsub
+ \algorithmic_label{elsif} #1 \algorithmic_label{then}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_endif
+ \algorithmic_endsub
+ \algorithmic_label{endif}
+\stoptexdefinition
+
+\starttexdefinition algorithmic_for #1
+ \par
+ \algorithmic_label{for} #1 \algorithmic_label{do}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_forall #1
+ \par
+ \algorithmic_label{forall} #1 \algorithmic_label{do}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_endfor
+ \algorithmic_endsub
+ \algorithmic_label{endfor}
+\stoptexdefinition
+
+\starttexdefinition algorithmic_while #1
+ \par
+ \algorithmic_label{while} #1 \algorithmic_label{do}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_endwhile
+ \algorithmic_endsub
+ \algorithmic_label{endwhile}
+\stoptexdefinition
+
+\starttexdefinition algorithmic_repeat
+ \par
+ \algorithmic_label{repeat}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_until #1
+ \algorithmic_endsub
+ \algorithmic_label{until} #1
+\stoptexdefinition
+
+\starttexdefinition algorithmic_loop
+ \par
+ \algorithmic_label{loop}
+ \algorithmic_begsub
+\stoptexdefinition
+
+\starttexdefinition algorithmic_endloop
+ \algorithmic_endsub
+ \algorithmic_label{endloop}
+\stoptexdefinition
+
+\starttexdefinition algorithmic_require
+ \par
+ \algorithmic_label{require}
+ \space
+\stoptexdefinition
+
+\starttexdefinition algorithmic_ensure
+ \par
+ \algorithmic_label{ensure}
+ \space
+\stoptexdefinition
+
+\starttexdefinition algorithmic_return
+ \par
+ \algorithmic_label{return}
+ \space
+\stoptexdefinition
+
+\starttexdefinition algorithmic_true
+ \algorithmic_label{true}
+\stoptexdefinition
+
+\starttexdefinition algorithmic_false
+ \algorithmic_label{false}
+\stoptexdefinition
+
+\starttexdefinition algorithmic_print
+ \par
+ \algorithmic_label{print}
+ \space
+\stoptexdefinition
+
+\starttexdefinition algorithmic_comment #1
+ \textbraceleft
+ #1
+ \textbraceright
+\stoptexdefinition
+
+% The commands in the environment are all uppercase, the connection
+% between them and their defintion happens here.
+
+\newtoks\t_algorithmic_commands
+
+\def\algorithmic_define
+ {\dodoubleargument\algorithmic_define_indeed}
+
+\def\algorithmic_define_indeed[#1][#2]%
+ {\appendtoks\letvalue{#1}#2\to\t_algorithmic_commands}
+
+\algorithmic_define [STATE] [\algorithmic_state ]
+\algorithmic_define [IF] [\algorithmic_if ]
+\algorithmic_define [ELSE] [\algorithmic_else ]
+\algorithmic_define [ELSIF] [\algorithmic_elsif ]
+\algorithmic_define [ENDIF] [\algorithmic_endif ]
+\algorithmic_define [FOR] [\algorithmic_for ]
+\algorithmic_define [FORALL] [\algorithmic_forall ]
+\algorithmic_define [ENDFOR] [\algorithmic_endfor ]
+\algorithmic_define [WHILE] [\algorithmic_while ]
+\algorithmic_define [ENDWHILE] [\algorithmic_endwhile]
+\algorithmic_define [REPEAT] [\algorithmic_repeat ]
+\algorithmic_define [UNTIL] [\algorithmic_until ]
+\algorithmic_define [LOOP] [\algorithmic_loop ]
+\algorithmic_define [ENDLOOP] [\algorithmic_endloop ]
+\algorithmic_define [REQUIRE] [\algorithmic_require ]
+\algorithmic_define [ENSURE] [\algorithmic_ensure ]
+\algorithmic_define [RETURN] [\algorithmic_return ]
+\algorithmic_define [TRUE] [\algorithmic_true ]
+\algorithmic_define [FALSE] [\algorithmic_false ]
+\algorithmic_define [PRINT] [\algorithmic_print ]
+\algorithmic_define [COMMENT] [\algorithmic_comment ]
+
+% Labels
+
+\definelabelclass[algorithmic]
+
+\setupalgorithmictext[\s!en][require=Require:]
+\setupalgorithmictext[\s!en][ensure=Ensure:]
+\setupalgorithmictext[\s!en][end=end]
+\setupalgorithmictext[\s!en][if=if]
+\setupalgorithmictext[\s!en][then=then]
+\setupalgorithmictext[\s!en][else=else]
+\setupalgorithmictext[\s!en][elsif=else if]
+\setupalgorithmictext[\s!en][endif=end if]
+\setupalgorithmictext[\s!en][for=for]
+\setupalgorithmictext[\s!en][forall=for all]
+\setupalgorithmictext[\s!en][do=do]
+\setupalgorithmictext[\s!en][endfor=end for]
+\setupalgorithmictext[\s!en][while=while]
+\setupalgorithmictext[\s!en][endwhile=end while]
+\setupalgorithmictext[\s!en][loop=loop]
+\setupalgorithmictext[\s!en][endloop=end loop]
+\setupalgorithmictext[\s!en][repeat=repeat]
+\setupalgorithmictext[\s!en][until=until]
+\setupalgorithmictext[\s!en][print=print]
+\setupalgorithmictext[\s!en][return=return]
+\setupalgorithmictext[\s!en][true=true]
+\setupalgorithmictext[\s!en][false=false]
+
+% Default values
+
+\definealgorithmic[\v!algorithmic]
+
+\setupalgorithmic
+ [ \c!numbering=\v!no, % linenumbering
+ \c!conversion=\v!numbers, % linenumbering
+ \c!start=1, % linenumbering
+ \c!step=1, % linenumbering
+ \c!method=\v!first, % linenumbering
+ \c!continue=\v!no, % linenumbering
+ \c!location=\v!left, % linenumbering
+ \c!numberstyle=, % linenumbering
+ \c!numbercolor=, % linenumbering
+ \c!numberwidth=2em, % linenumbering
+ \c!align=\v!auto, % linenumbering
+ \c!width=1em,
+ \c!margin=1em,
+ \c!labelstyle=\v!bold,
+ \c!before=,
+ \c!after=,
+ \c!spacebefore=\v!line,
+ \c!spaceafter=\v!line]
+
+\protect \endinput