summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2006-04-10 20:04:00 +0200
committerHans Hagen <pragma@wxs.nl>2006-04-10 20:04:00 +0200
commit179243cbf50610eceed2704e4b3e4372d8462683 (patch)
tree57b2e6e35322fa0361a236e9fa965b6a71162a5a
parent6d33823d5817378ce39b53563438a533de0efbe7 (diff)
downloadcontext-179243cbf50610eceed2704e4b3e4372d8462683.tar.gz
stable 2006.04.10 20:04
-rw-r--r--scripts/context/perl/mptopdf.pl153
-rw-r--r--scripts/context/ruby/base/tex.rb41
-rw-r--r--tex/context/base/cont-new.tex23
-rw-r--r--tex/context/base/context.tex3
-rw-r--r--tex/context/base/core-mat.tex2
-rw-r--r--tex/context/base/core-ntb.tex40
-rw-r--r--tex/context/base/enco-def.tex33
-rw-r--r--tex/context/base/meta-ini.tex8
-rw-r--r--tex/context/base/regi-cyr.tex137
-rw-r--r--tex/context/base/regi-ini.tex4
-rw-r--r--tex/context/base/regi-iso-8858-1.tex154
-rw-r--r--tex/context/base/regi-iso-8858-2.tex124
-rw-r--r--tex/context/base/regi-iso-8859-1.tex157
-rw-r--r--tex/context/base/regi-iso-8859-15.tex247
-rw-r--r--tex/context/base/regi-iso-8859-2.tex155
-rw-r--r--tex/context/base/regi-iso-8859-7.tex242
-rw-r--r--tex/context/base/regi-syn.tex8
-rw-r--r--tex/context/base/sort-def.tex3
-rw-r--r--tex/context/base/x-newcml.tex454
-rw-r--r--tex/context/base/x-newmml.tex193
-rw-r--r--tex/context/base/x-newpml.tex19
-rw-r--r--tex/context/base/xtag-cml.tex1
-rw-r--r--tex/context/base/xtag-pml.tex3
-rw-r--r--tex/context/base/xtag-stk.tex57
-rw-r--r--tex/context/interface/keys-cz.xml2
-rw-r--r--tex/context/interface/keys-de.xml2
-rw-r--r--tex/context/interface/keys-en.xml2
-rw-r--r--tex/context/interface/keys-fr.xml2
-rw-r--r--tex/context/interface/keys-it.xml2
-rw-r--r--tex/context/interface/keys-nl.xml2
-rw-r--r--tex/context/interface/keys-ro.xml2
31 files changed, 1433 insertions, 842 deletions
diff --git a/scripts/context/perl/mptopdf.pl b/scripts/context/perl/mptopdf.pl
index 767d2d260..b5d4bc15d 100644
--- a/scripts/context/perl/mptopdf.pl
+++ b/scripts/context/perl/mptopdf.pl
@@ -37,91 +37,118 @@ my $PassOn = '' ;
"passon" => \$PassOn,
"latex" => \$Latex ) ;
-my $program = "MPtoPDF 1.3" ;
+my $program = "MPtoPDF 1.3.2" ;
my $pattern = "@ARGV" ; # was $ARGV[0]
+my $miktex = 0 ;
my $done = 0 ;
my $report = '' ;
my $texlatexswitch = " --tex=latex --format=latex " ;
my $mplatexswitch = " --tex=latex " ;
my $dosish = ($Config{'osname'} =~/^(ms)?dos|^os\/2|^mswin/i) ;
-my $miktex = ($ENV{"TEXSYSTEM"} =~ /miktex/io);
-my $escapeshell = ( ($ENV{'SHELL'}) && ($ENV{'SHELL'} =~ m/sh/i ));
+my $escapeshell = (($ENV{'SHELL'}) && ($ENV{'SHELL'} =~ m/sh/i ));
+
+if ($ENV{"TEXSYSTEM"}) {
+ $miktex = ($ENV{"TEXSYSTEM"} =~ /miktex/io) ;
+}
my @files ;
my $command = my $mpbin = '' ;
-sub CopyFile # agressive copy, works for open files like in gs
- { my ($From,$To) = @_ ;
- return unless open(INP,"<$From") ; binmode INP ;
- return unless open(OUT,">$To") ; binmode OUT ;
- while (<INP>) { print OUT $_ }
+# agressive copy, works for open files like in gs
+
+sub CopyFile {
+ my ($From,$To) = @_ ;
+ return unless open(INP,"<$From") ;
+ return unless open(OUT,">$To") ;
+ binmode INP ;
+ binmode OUT ;
+ while (<INP>) {
+ print OUT $_ ;
+ }
close (INP) ;
- close (OUT) }
-
-if (($pattern eq '')||($Help))
- { print "\n$program : provide MP output file (or pattern)\n" ;
- exit }
-elsif ($pattern =~ /\.mp$/io)
- { shift @ARGV ; my $rest = join(" ", @ARGV) ;
- if (open(INP,$pattern))
- { while (<INP>)
- { if (/(documentstyle|documentclass|begin\{document\})/io)
- { $Latex = 1 ; last } }
- close (INP) }
- if ($RawMP)
- { if ($Latex)
- { $rest .= " $mplatexswitch" }
+ close (OUT) ;
+}
+
+if (($pattern eq '')||($Help)) {
+ print "\n$program : provide MP output file (or pattern)\n" ;
+ exit ;
+} elsif ($pattern =~ /\.mp$/io) {
+ shift @ARGV ; my $rest = join(" ", @ARGV) ;
+ if (open(INP,$pattern)) {
+ while (<INP>) {
+ if (/(documentstyle|documentclass|begin\{document\})/io) {
+ $Latex = 1 ; last ;
+ }
+ }
+ close (INP) ;
+ }
+ if ($RawMP) {
+ if ($Latex) {
+ $rest .= " $mplatexswitch" ;
+ }
if ($MetaFun) {
$mpbin = 'mpost --progname=mpost --mem=metafun' ;
} else {
$mpbin = 'mpost --mem=mpost' ;
}
+ } else {
+ if ($Latex) {
+ $rest .= " $texlatexswitch" ;
+ }
+ $mpbin = 'texexec --mptex $PassOn' ;
}
- else
- { if ($Latex)
- { $rest .= " $texlatexswitch" }
- $mpbin = 'texexec --mptex $PassOn' }
+ print "\n$program : running '$command'" ;
my $error = system ("$mpbin $rest $pattern") ;
- if ($error)
- { print "\n$program : error while processing mp file\n" ; exit }
- else
- { $pattern =~ s/\.mp$//io ;
- @files = glob "$pattern.*" } }
-elsif (-e $pattern)
- { @files = ($pattern) }
-elsif ($pattern =~ /.\../o)
- { @files = glob "$pattern" }
-else
- { $pattern .= '.*' ;
- @files = glob "$pattern" }
-
-foreach my $file (@files)
- { $_ = $file ;
- if (s/\.(\d+|mps)$// && -e $file)
- { if ($miktex)
- { $command = "pdfetex -undump=mptopdf" }
- else
- { $command = "pdfetex -fmt=mptopdf -progname=context" }
- if ($dosish)
- { $command = "$command \\relax $file" }
- else
- { $command = "$command \\\\relax $file" }
+ if ($error) {
+ print "\n$program : error while processing mp file\n" ;
+ exit ;
+ } else {
+ $pattern =~ s/\.mp$//io ;
+ @files = glob "$pattern.*" ;
+ }
+} elsif (-e $pattern) {
+ @files = ($pattern) ;
+} elsif ($pattern =~ /.\../o) {
+ @files = glob "$pattern" ;
+} else {
+ $pattern .= '.*' ;
+ @files = glob "$pattern" ;
+}
+
+foreach my $file (@files) {
+ $_ = $file ;
+ if (s/\.(\d+|mps)$// && -e $file) {
+ if ($miktex) {
+ $command = "pdfetex -undump=mptopdf" ;
+ } else {
+ $command = "pdfetex -fmt=mptopdf -progname=context" ;
+ }
+ if ($dosish) {
+ $command = "$command \\relax $file" ;
+ } else {
+ $command = "$command \\\\relax $file" ;
+ }
system($command) ;
- # rename ("$_.pdf", "$_-$1.pdf") ;
- # if (-e "$_.pdf") { CopyFile ("$_.pdf", "$_-$1.pdf") }
my $pdfsrc = basename($_).".pdf";
rename ($pdfsrc, "$_-$1.pdf") ;
- if (-e $pdfsrc) { CopyFile ($pdfsrc, "$_-$1.pdf") }
- # end of patch
- if ($done) { $report .= " +" }
+ if (-e $pdfsrc) {
+ CopyFile ($pdfsrc, "$_-$1.pdf") ;
+ }
+ if ($done) {
+ $report .= " +" ;
+ }
$report .= " $_-$1.pdf" ;
- ++$done } }
+ ++$done ;
+ }
+}
-if ($report eq '')
- { $report = '*' }
+if ($report eq '') {
+ $report = '*' ;
+}
-if ($done)
- { print "\n$program : $pattern is converted to$report\n" }
-else
- { print "\n$program : no filename matches $pattern\n" }
+if ($done) {
+ print "\n$program : $pattern is converted to$report\n" ;
+} else {
+ print "\n$program : no filename matches $pattern\n" ;
+}
diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb
index 700150055..0d1e01b95 100644
--- a/scripts/context/ruby/base/tex.rb
+++ b/scripts/context/ruby/base/tex.rb
@@ -125,6 +125,7 @@ class TEX
'nomapfiles', 'local',
'arrange', 'noarrange',
'forcexml', 'foxet',
+'alpha', 'beta',
'mpyforce', 'forcempy',
'forcetexutil', 'texutil',
'globalfile', 'autopath',
@@ -447,6 +448,9 @@ class TEX
end
def makeformats
+
+ checktestversion
+
report("using search method '#{Kpse.searchmethod}'")
if getvariable('fast') then
report('using existing database')
@@ -1036,7 +1040,40 @@ class TEX
end
end
+ def checktestversion
+ #
+ # one can set TEXMFALPHA and TEXMFBETA for test versions
+ # but keep in mind that the format as well as the test files
+ # then need the --alpha or --beta flag
+ #
+ done, tree = false, ''
+ ['alpha', 'beta'].each do |what|
+ if getvariable(what) then
+ if ENV["TEXMF#{what.upcase}"] then
+ done, tree = true, ENV["TEXMF#{what.upcase}"]
+ elsif ENV["TEXMFLOCAL"] then
+ done, tree = true, File.join(File.dirname(ENV['TEXMFLOCAL']), "texmf-#{what}")
+ end
+ end
+ break if done
+ end
+ if done then
+ tree = tree.strip
+ ENV['TEXMFPROJECT'] = tree
+ report("using test tree '#{tree}'")
+ ['MP', 'MF', 'TX'].each do |ctx|
+ ENV['CTXDEV#{ctx}PATH'] = ''
+ end
+ unless (FileTest.file?(File.join(tree,'ls-r')) || FileTest.file?(File.join(tree,'ls-R'))) then
+ report("no ls-r/ls-R file for tree '#{tree}' (run: mktexlsr #{tree})")
+ end
+ end
+ # puts `kpsewhich --expand-path=$TEXMF`
+ # exit
+ end
+
def runtex(filename)
+checktestversion
texengine = validtexengine(getvariable('texengine'))
texformat = validtexformat(getarrayvariable('texformats').first)
progname = validprogname(getvariable('progname'))
@@ -1054,6 +1091,7 @@ class TEX
end
def runmp(filename,mpx=false)
+checktestversion
mpsengine = validmpsengine(getvariable('mpsengine'))
mpsformat = validmpsformat(getarrayvariable('mpsformats').first)
progname = validprogname(getvariable('progname'))
@@ -1070,6 +1108,7 @@ class TEX
end
def runtexmp(filename,filetype='')
+checktestversion
mpfile = File.suffixed(filename,filetype,'mp')
if File.atleast?(mpfile,25) then
# first run needed
@@ -1087,6 +1126,7 @@ class TEX
end
def runtexmpjob(filename,filetype='')
+checktestversion
mpfile = File.suffixed(filename,filetype,'mp')
if File.atleast?(mpfile,25) && (data = File.silentread(mpfile)) then
textranslation = if data =~ /^\%\s+translate.*?\=([\w\d\-]+)/io then $1 else '' end
@@ -1191,6 +1231,7 @@ class TEX
def processfile
takeprecautions
+ # checktestversion
report("using search method '#{Kpse.searchmethod}'") if getvariable('verbose')
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index 785955e4c..b94f54ce4 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2006.04.09 22:25}
+\newcontextversion{2006.04.10 20:04}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
@@ -26,6 +26,17 @@
\writestatus{\m!systems}{beware: some patches loaded from cont-new.tex}
+% todo
+%
+% \def\definelocation{\dodoubleargument\dodefinelocation}
+% \def\dodefinelocation[#1][#2]{\setvalue{loc:#1}{#2}}
+%
+% \definelocation[lt] [\v!left\v!top]
+% \definelocation[tl] [\v!left\v!top]
+% \definelocation[\v!top\v!left][\v!left\v!top]
+%
+% \def\getlocation#1{\executeifdefined{loc:#1}{#1}}
+
\def\convertencodedtokens{\stringifyencodedtokens}
% test case:
@@ -1462,16 +1473,6 @@
% documentation : \setupregister[alternative=a|b|A|B]
-\def\pushXMLmeaning#1%
- {\@EA\pushmacro\csname\@@XMLelement:#1/\endcsname
- \@EA\pushmacro\csname\@@XMLelement:#1\endcsname
- \@EA\pushmacro\csname\@@XMLelement:/#1\endcsname}
-
-\def\popXMLmeaning#1%
- {\@EA\popmacro\csname\@@XMLelement:#1/\endcsname
- \@EA\popmacro\csname\@@XMLelement:#1\endcsname
- \@EA\popmacro\csname\@@XMLelement:/#1\endcsname}
-
\def\defineXMLstore {\doquadrupleargument\dodefineXMLstore[\saveXMLasdata]}
\def\defineXMLgstore{\doquadrupleargument\dodefineXMLstore[\gsaveXMLasdata]}
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 4775af74c..30070c479 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -31,7 +31,7 @@
%D 2004.8.30 the low level interface is english. Watch out and adapt
%D your styles an modules.
-\def\contextversion{2006.04.09 22:25}
+\def\contextversion{2006.04.10 20:04}
%D For those who want to use this:
@@ -185,6 +185,7 @@
\input filt-ini.tex
\input hand-ini.tex
\input regi-ini.tex
+\input regi-syn.tex
\input lang-ini.tex
\input lang-ctx.tex
\input lang-dis.tex % after lang-ctx !
diff --git a/tex/context/base/core-mat.tex b/tex/context/base/core-mat.tex
index 139a25d3a..72c4eef79 100644
--- a/tex/context/base/core-mat.tex
+++ b/tex/context/base/core-mat.tex
@@ -300,7 +300,7 @@
{\def\leftdisplayskip{\zeropoint}%
\def\rightdisplayskip{\zeropoint}}%
% this was an experiment
- \doif{\formulaparameter\c!margin}% so we test first
+ \doifsomething{\formulaparameter\c!margin}% so we test first
{\dosetleftskipadaption{\formulaparameter\c!margin}%
\edef\leftdisplaymargin{\the\leftskipadaption}}% overloaded
\long\def\dostartformula##1{\bgroup\let\dostopformula\egroup}%
diff --git a/tex/context/base/core-ntb.tex b/tex/context/base/core-ntb.tex
index aa0436c32..cf42272e7 100644
--- a/tex/context/base/core-ntb.tex
+++ b/tex/context/base/core-ntb.tex
@@ -286,16 +286,26 @@
\setupTABLE[\v!row][\maximumrow][#1]}
\long\def\parseTD[#1][#2]#3\eTD % [#2] is dummy that kills spaces
- {\getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,\c!n=\currentcol,#1]%
- % goto first cell % NEW, n=cellnumber
+ {\getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,\c!n=\currentcol,\c!m=,#1]%
+ % goto first cell % NEW, n/m=cellnumber
\increment\currentcolpos
\doifvaluesomething{\@@tbl\c!n}
{\ifnum\getvalue{\@@tbl\c!n}=\currentcol\else
\scratchcounter\getvalue{\@@tbl\c!n}%
\advance\scratchcounter-\currentcol
\advance\scratchcounter\minusone
- \expanded{\parseTD[\c!nx=\the\scratchcounter][]}\eTD
- \getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,\c!n=\currentcol,#1]%
+ \ifnum\scratchcounter>\zerocount
+ \expanded{\parseTD[\c!nx=\the\scratchcounter,\c!n=,\c!m=,*sq=\v!no][]}\eTD
+ \fi
+ \getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,#1,\c!n=,\c!m=]%
+ \fi}%
+ \doifvaluesomething{\@@tbl\c!m}
+ {\ifnum\getvalue{\@@tbl\c!m}=\currentcol\else
+ \scratchcounter\getvalue{\@@tbl\c!m}%
+ \advance\scratchcounter-\currentcol
+ \advance\scratchcounter\minusone
+ \dorecurse\scratchcounter{\expanded{\parseTD[\c!n=,\c!m=][]}\eTD}%
+ \getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,#1,\c!n=,\c!m=]%
\fi}%
\doloop
{\increment\currentcol
@@ -326,6 +336,26 @@
\edef\celltag{{\maximumrow}{\currentcol}}%
\@EA\settbltxt\@EA\maximumrow\@EA\currentcol\@EA
{\@EA\handleTBLcell\celltag[#1]{#3}}}
+
+%D The usage of n and m:
+%D
+%D \startbuffer
+%D \bTABLE[width=3em]
+%D \bTR\bTD d1 \eTD\bTD[n=2] d2 \eTD\bTD[n=5] d5 \eTD\bTD[n=7] d7 \eTD\eTR
+%D \bTR\bTD f1 \eTD\bTD[n=4] f4 \eTD\bTD[n=5] f5 \eTD\bTD[n=7] f7 \eTD\eTR
+%D \eTABLE
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+%D
+%D \startbuffer
+%D \bTABLE[width=3em]
+%D \bTR\bTD d1 \eTD\bTD[m=2] d2 \eTD\bTD[m=5] d5 \eTD\bTD[m=7] d7 \eTD\eTR
+%D \bTR\bTD f1 \eTD\bTD[m=4] f4 \eTD\bTD[m=5] f5 \eTD\bTD[m=7] f7 \eTD\eTR
+%D \eTABLE
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
\long\def\parseTH[#1]#2\eTH
{\parseTD[#1,\c!color=\tbltblheadcolor,\c!style=\tbltblheadstyle,\c!aligncharacter=\v!no]#2\eTD}
@@ -1229,7 +1259,9 @@
\scratchdimen\gettblwid\colTBL\relax
\ifdim\wd\scratchbox>\scratchdimen
\ifsqueezeTBLspan
+\doifnotvalue{\@@tbl*sq}\v!no{%
\ifnum0\number\gettblcol{#1}{#2}>1\relax \settblspn\colTBL \fi
+}%
\fi
\doifelsetblspn\colTBL
\donothing{\settblwid\colTBL{\the\wd\scratchbox}}% auto set
diff --git a/tex/context/base/enco-def.tex b/tex/context/base/enco-def.tex
index 460be8f44..2f48550d2 100644
--- a/tex/context/base/enco-def.tex
+++ b/tex/context/base/enco-def.tex
@@ -697,13 +697,44 @@
\definecharacter cyrillicq {q}
\definecharacter cyrillicw {w}
+\definecharacter cyrillicGJE {\'\cyrillicG}
+\definecharacter cyrillicgje {\'\cyrillicg}
+\definecharacter cyrillicKJE {\'\cyrillicK}
+\definecharacter cyrillickje {\'\cyrillick}
+
\stopencoding
%D Hebrew:
\startencoding[default]
-\definecharacter hebrewAlef {'} \definecharacter hebrewBet {b} \definecharacter hebrewGimel {g} \definecharacter hebrewDalet {d} \definecharacter hebrewHe {h} \definecharacter hebrewVav {w} \definecharacter hebrewZayin {z} \definecharacter hebrewHet {\hstroke} \definecharacter hebrewTet {\tcedilla} \definecharacter hebrewYod {y} \definecharacter hebrewKaffinal {k} \definecharacter hebrewKaf {k} \definecharacter hebrewLamed {l} \definecharacter hebrewMemfinal {m} \definecharacter hebrewMem {m} \definecharacter hebrewNunfinal {n} \definecharacter hebrewNun {n} \definecharacter hebrewSamekh {s} \definecharacter hebrewAyin {\gdotaccent} \definecharacter hebrewPefinal {p} \definecharacter hebrewPe {p} \definecharacter hebrewTsadifinal {\scedilla} \definecharacter hebrewTsadi {\scedilla} \definecharacter hebrewQof {q} \definecharacter hebrewResh {r} \definecharacter hebrewShin {\scaron} \definecharacter hebrewTav {th}
+\definecharacter hebrewAlef {'}
+\definecharacter hebrewBet {b}
+\definecharacter hebrewGimel {g}
+\definecharacter hebrewDalet {d}
+\definecharacter hebrewHe {h}
+\definecharacter hebrewVav {w}
+\definecharacter hebrewZayin {z}
+\definecharacter hebrewHet {\hstroke}
+\definecharacter hebrewTet {\tcedilla}
+\definecharacter hebrewYod {y}
+\definecharacter hebrewKaffinal {k}
+\definecharacter hebrewKaf {k}
+\definecharacter hebrewLamed {l}
+\definecharacter hebrewMemfinal {m}
+\definecharacter hebrewMem {m}
+\definecharacter hebrewNunfinal {n}
+\definecharacter hebrewNun {n}
+\definecharacter hebrewSamekh {s}
+\definecharacter hebrewAyin {\gdotaccent}
+\definecharacter hebrewPefinal {p}
+\definecharacter hebrewPe {p}
+\definecharacter hebrewTsadifinal {\scedilla}
+\definecharacter hebrewTsadi {\scedilla}
+\definecharacter hebrewQof {q}
+\definecharacter hebrewResh {r}
+\definecharacter hebrewShin {\scaron}
+\definecharacter hebrewTav {th}
\stopencoding
diff --git a/tex/context/base/meta-ini.tex b/tex/context/base/meta-ini.tex
index 2fcd74718..f9e3cf3e2 100644
--- a/tex/context/base/meta-ini.tex
+++ b/tex/context/base/meta-ini.tex
@@ -1006,6 +1006,14 @@
_special_div_ := 1000\ifconditional\manyMPspecials0\fi ;
\to \MPextensions
+%D Needed:
+
+\prependtoks
+ \resetlanguagespecifics
+\to \everyMPgraphic
+
+% Done.
+
\protect \endinput
%D Experimental:
diff --git a/tex/context/base/regi-cyr.tex b/tex/context/base/regi-cyr.tex
index 134cc5728..1e84b9cba 100644
--- a/tex/context/base/regi-cyr.tex
+++ b/tex/context/base/regi-cyr.tex
@@ -11,10 +11,10 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-%D Here are input regimes for cyrillic encodings:
+%D Here are additional input regimes for cyrillic encodings others than cp1251
+%D and iso-8859-5:
%D
%D \startitemize
-%D \item windows
%D \item two variants of dos
%D \item three variants of koi-8 for *nix: russian,
%D ukrainian and mixed
@@ -24,139 +24,6 @@
%D Other, not so popular regimes, can be found in \type
%D {regi-cy2}.
-\startregime[cp1251]
-
-\defineactivetoken 192 {\cyrillicA}
-\defineactivetoken 193 {\cyrillicB}
-\defineactivetoken 194 {\cyrillicV}
-\defineactivetoken 195 {\cyrillicG}
-\defineactivetoken 196 {\cyrillicD}
-\defineactivetoken 197 {\cyrillicE}
-\defineactivetoken 198 {\cyrillicZH}
-\defineactivetoken 199 {\cyrillicZ}
-\defineactivetoken 200 {\cyrillicI}
-\defineactivetoken 201 {\cyrillicISHRT}
-\defineactivetoken 202 {\cyrillicK}
-\defineactivetoken 203 {\cyrillicL}
-\defineactivetoken 204 {\cyrillicM}
-\defineactivetoken 205 {\cyrillicN}
-\defineactivetoken 206 {\cyrillicO}
-\defineactivetoken 207 {\cyrillicP}
-\defineactivetoken 208 {\cyrillicR}
-\defineactivetoken 209 {\cyrillicS}
-\defineactivetoken 210 {\cyrillicT}
-\defineactivetoken 211 {\cyrillicU}
-\defineactivetoken 212 {\cyrillicF}
-\defineactivetoken 213 {\cyrillicH}
-\defineactivetoken 214 {\cyrillicC}
-\defineactivetoken 215 {\cyrillicCH}
-\defineactivetoken 216 {\cyrillicSH}
-\defineactivetoken 217 {\cyrillicSHCH}
-\defineactivetoken 218 {\cyrillicHRDSN}
-\defineactivetoken 219 {\cyrillicERY}
-\defineactivetoken 220 {\cyrillicSFTSN}
-\defineactivetoken 221 {\cyrillicEREV}
-\defineactivetoken 222 {\cyrillicYU}
-\defineactivetoken 223 {\cyrillicYA}
-\defineactivetoken 224 {\cyrillica}
-\defineactivetoken 225 {\cyrillicb}
-\defineactivetoken 226 {\cyrillicv}
-\defineactivetoken 227 {\cyrillicg}
-\defineactivetoken 228 {\cyrillicd}
-\defineactivetoken 229 {\cyrillice}
-\defineactivetoken 230 {\cyrilliczh}
-\defineactivetoken 231 {\cyrillicz}
-\defineactivetoken 232 {\cyrillici}
-\defineactivetoken 233 {\cyrillicishrt}
-\defineactivetoken 234 {\cyrillick}
-\defineactivetoken 235 {\cyrillicl}
-\defineactivetoken 236 {\cyrillicm}
-\defineactivetoken 237 {\cyrillicn}
-\defineactivetoken 238 {\cyrillico}
-\defineactivetoken 239 {\cyrillicp}
-\defineactivetoken 240 {\cyrillicr}
-\defineactivetoken 241 {\cyrillics}
-\defineactivetoken 242 {\cyrillict}
-\defineactivetoken 243 {\cyrillicu}
-\defineactivetoken 244 {\cyrillicf}
-\defineactivetoken 245 {\cyrillich}
-\defineactivetoken 246 {\cyrillicc}
-\defineactivetoken 247 {\cyrillicch}
-\defineactivetoken 248 {\cyrillicsh}
-\defineactivetoken 249 {\cyrillicshch}
-\defineactivetoken 250 {\cyrillichrdsn}
-\defineactivetoken 251 {\cyrillicery}
-\defineactivetoken 252 {\cyrillicsftsn}
-\defineactivetoken 253 {\cyrillicerev}
-\defineactivetoken 254 {\cyrillicyu}
-\defineactivetoken 255 {\cyrillicya}
-\defineactivetoken 128 {\cyrillicDJE}
-\defineactivetoken 129 {\'\cyrillicG}
-\defineactivetoken 130 {\lowerleftsingleninequote}
-\defineactivetoken 131 {\'\cyrillicg}
-\defineactivetoken 132 {\lowerleftdoubleninequote}
-\defineactivetoken 133 {\textellipsis}
-\defineactivetoken 134 {\textdag}
-\defineactivetoken 135 {\textddag}
-\defineactivetoken 136 {\texteuro}
-\defineactivetoken 137 {\perthousand}
-\defineactivetoken 138 {\cyrillicLJE}
-\defineactivetoken 139 {\leftsubguillemot}
-\defineactivetoken 140 {\cyrillicNJE}
-\defineactivetoken 141 {\'\cyrillicK}
-\defineactivetoken 142 {\cyrillicTSHE}
-\defineactivetoken 143 {\cyrillicDZHE}
-\defineactivetoken 144 {\cyrillicdje}
-\defineactivetoken 145 {\upperleftsinglesixquote}
-\defineactivetoken 146 {\upperrightsingleninequote}
-\defineactivetoken 147 {\upperleftdoublesixquote}
-\defineactivetoken 148 {\upperrightdoubleninequote}
-\defineactivetoken 149 {\textbullet}
-\defineactivetoken 150 {\endash}
-\defineactivetoken 151 {\emdash}
-\defineactivetoken 152 {\unknownchar}
-\defineactivetoken 153 {\trademark}
-\defineactivetoken 154 {\cyrilliclje}
-\defineactivetoken 155 {\rightsubguillemot}
-\defineactivetoken 156 {\cyrillicnje}
-\defineactivetoken 157 {\'\cyrillick}
-\defineactivetoken 158 {\cyrillictshe}
-\defineactivetoken 159 {\cyrillicdzhe}
-\defineactivetoken 160 {\nonbreakablespace}
-\defineactivetoken 161 {\cyrillicUSHRT}
-\defineactivetoken 162 {\cyrillicushrt}
-\defineactivetoken 163 {\cyrillicJE}
-\defineactivetoken 164 {\textcurrency}
-\defineactivetoken 165 {\cyrillicGUP}
-\defineactivetoken 166 {\textbrokenbar}
-\defineactivetoken 167 {\sectionmark}
-\defineactivetoken 168 {\cyrillicYO}
-\defineactivetoken 169 {\copyright}
-\defineactivetoken 170 {\cyrillicIE}
-\defineactivetoken 171 {\leftguillemot}
-\defineactivetoken 173 {\hyphen}
-\defineactivetoken 174 {\registered}
-\defineactivetoken 175 {\cyrillicYI}
-\defineactivetoken 176 {\textdegree}
-\defineactivetoken 178 {\cyrillicII}
-\defineactivetoken 179 {\cyrillicii}
-\defineactivetoken 180 {\cyrillicgup}
-\defineactivetoken 182 {\paragraphmark}
-\defineactivetoken 183 {\periodcentered}
-\defineactivetoken 184 {\cyrillicyo}
-\defineactivetoken 185 {\textnumero}
-\defineactivetoken 186 {\cyrillicie}
-\defineactivetoken 187 {\rightguillemot}
-\defineactivetoken 188 {\cyrillicje}
-\defineactivetoken 189 {\cyrillicDZE}
-\defineactivetoken 190 {\cyrillicdze}
-\defineactivetoken 191 {\cyrillicyi}
-\defineactivetoken 172 {\textlognot}
-\defineactivetoken 177 {\textpm}
-\defineactivetoken 181 {\textmu}
-
-\stopregime
-
\startregime[cp866]
\defineactivetoken 128 {\cyrillicA}
diff --git a/tex/context/base/regi-ini.tex b/tex/context/base/regi-ini.tex
index c13f054b9..679730d40 100644
--- a/tex/context/base/regi-ini.tex
+++ b/tex/context/base/regi-ini.tex
@@ -37,8 +37,8 @@
\protect
% \useregime[def,uni,ibm,win,il1,mac]
-\useregime[def,uni,iso-8858-1,iso-8858-2,cp1252,mac]
+% \useregime[def,uni,iso-8858-1,iso-8858-2,cp1252,mac]
-% will become: \useregime[def,uni] % rest runtime
+\useregime[def,uni,utf] % we load the rest runtime
\endinput
diff --git a/tex/context/base/regi-iso-8858-1.tex b/tex/context/base/regi-iso-8858-1.tex
deleted file mode 100644
index dedba4969..000000000
--- a/tex/context/base/regi-iso-8858-1.tex
+++ /dev/null
@@ -1,154 +0,0 @@
-%D \module
-%D [ file=regi-il1,
-%D version=2000.05.07,
-%D title=\CONTEXT\ Encoding Macros,
-%D subtitle=ISO Latin 1 keys,
-%D author={Daniel Flipo, Hans Hagen, Denis Roegel},
-%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-%D This module is not yet finished since some characters
-%D need to be mapped onto symbols, which is work in progress.
-
-\startregime [iso-8858-1]
-
-\defineactivetoken 180 {\textacute}
-\defineactivetoken 146 {\textacute} % also see 180
-\defineactivetoken 150 {\textbreve}
-\defineactivetoken 159 {\textcaron}
-\defineactivetoken 184 {\textcedilla}
-\defineactivetoken 147 {\textcircumflex}
-\defineactivetoken 168 {\textdiaeresis}
-\defineactivetoken 151 {\textdotaccent}
-\defineactivetoken 145 {\textgrave}
-\defineactivetoken 157 {\texthungarumlaut}
-\defineactivetoken 175 {\textmacron}
-\defineactivetoken 149 {\textmacron}
-\defineactivetoken 158 {\textogonek}
-\defineactivetoken 154 {\textring}
-\defineactivetoken 148 {\texttilde}
-
-\defineactivetoken 144 {\dotlessi}
-
-\defineactivetoken 162 {\textcent}
-\defineactivetoken 163 {\textsterling}
-\defineactivetoken 164 {\textcurrency}
-\defineactivetoken 165 {\textyen}
-
-\defineactivetoken 167 {\sectionmark}
-\defineactivetoken 182 {\paragraphmark}
-
-\defineactivetoken 171 {\ifvmode\leavevmode\fi\leftguillemot\prewordbreak}
-\defineactivetoken 187 {\prewordbreak\rightguillemot}
-
-\defineactivetoken 173 {\softhyphen}
-\defineactivetoken 160 {\nonbreakablespace} % ?
-
-\defineactivetoken 169 {\copyright}
-\defineactivetoken 174 {\registered}
-
-\defineactivetoken 185 {\onesuperior}
-\defineactivetoken 178 {\twosuperior}
-\defineactivetoken 179 {\threesuperior}
-
-\defineactivetoken 188 {\onequarter}
-\defineactivetoken 189 {\onehalf}
-\defineactivetoken 190 {\threequarters}
-
-%defineactivetoken 183 {\textperiodcentered}
-
-\defineactivetoken 166 {\textbrokenbar}
-\defineactivetoken 176 {\textdegree}
-\defineactivetoken 247 {\textdiv}
-\defineactivetoken 172 {\textlognot}
-\defineactivetoken 215 {\textmultiply}
-\defineactivetoken 181 {\textmu}
-\defineactivetoken 177 {\textpm}
-
-\defineactivetoken 254 {\thorn}
-\defineactivetoken 222 {\Thorn}
-
-\defineactivetoken 223 {\ssharp}
-
-\defineactivetoken 208 {\Eth}
-\defineactivetoken 240 {\eth}
-
-\defineactivetoken 198 {\AEligature}
-\defineactivetoken 230 {\aeligature}
-
-\defineactivetoken 225 {\aacute}
-\defineactivetoken 193 {\Aacute}
-\defineactivetoken 233 {\eacute}
-\defineactivetoken 201 {\Eacute}
-\defineactivetoken 237 {\iacute}
-\defineactivetoken 205 {\Iacute}
-\defineactivetoken 243 {\oacute}
-\defineactivetoken 211 {\Oacute}
-\defineactivetoken 250 {\uacute}
-\defineactivetoken 218 {\Uacute}
-\defineactivetoken 253 {\yacute}
-\defineactivetoken 221 {\Yacute}
-
-\defineactivetoken 231 {\ccedilla}
-\defineactivetoken 199 {\Ccedilla}
-
-\defineactivetoken 226 {\acircumflex}
-\defineactivetoken 194 {\Acircumflex}
-\defineactivetoken 234 {\ecircumflex}
-\defineactivetoken 202 {\Ecircumflex}
-\defineactivetoken 238 {\icircumflex}
-\defineactivetoken 206 {\Icircumflex}
-\defineactivetoken 244 {\ocircumflex}
-\defineactivetoken 212 {\Ocircumflex}
-\defineactivetoken 251 {\ucircumflex}
-\defineactivetoken 219 {\Ucircumflex}
-
-\defineactivetoken 228 {\adiaeresis}
-\defineactivetoken 196 {\Adiaeresis}
-\defineactivetoken 235 {\ediaeresis}
-\defineactivetoken 203 {\Ediaeresis}
-\defineactivetoken 239 {\idiaeresis}
-\defineactivetoken 207 {\Idiaeresis}
-\defineactivetoken 246 {\odiaeresis}
-\defineactivetoken 214 {\Odiaeresis}
-\defineactivetoken 252 {\udiaeresis}
-\defineactivetoken 220 {\Udiaeresis}
-\defineactivetoken 255 {\ydiaeresis}
-
-\defineactivetoken 224 {\agrave}
-\defineactivetoken 192 {\Agrave}
-\defineactivetoken 232 {\egrave}
-\defineactivetoken 200 {\Egrave}
-\defineactivetoken 236 {\igrave}
-\defineactivetoken 204 {\Igrave}
-\defineactivetoken 242 {\ograve}
-\defineactivetoken 210 {\Ograve}
-\defineactivetoken 249 {\ugrave}
-\defineactivetoken 217 {\Ugrave}
-
-\defineactivetoken 229 {\aring}
-\defineactivetoken 197 {\Aring}
-
-\defineactivetoken 248 {\ostroke}
-\defineactivetoken 216 {\Ostroke}
-
-\defineactivetoken 227 {\atilde}
-\defineactivetoken 195 {\Atilde}
-\defineactivetoken 241 {\ntilde}
-\defineactivetoken 209 {\Ntilde}
-\defineactivetoken 245 {\otilde}
-\defineactivetoken 213 {\Otilde}
-
-\stopregime
-
-\endinput
-
-% \defineactivetoken 186 {\textordmasculine}
-% \defineactivetoken 170 {\textordfeminine}
-
-% \defineactivetoken 161 {!`}
-% \defineactivetoken 191 {?`}
diff --git a/tex/context/base/regi-iso-8858-2.tex b/tex/context/base/regi-iso-8858-2.tex
deleted file mode 100644
index 7b6e2749a..000000000
--- a/tex/context/base/regi-iso-8858-2.tex
+++ /dev/null
@@ -1,124 +0,0 @@
-%D \module
-%D [ file=regi-lat,
-%D version=2005.07.20, % 1999.11.16
-%D title=\CONTEXT\ Encoding Macros,
-%D subtitle=Iso Latin 2,
-%D author={Mojca Miklavec \& Hans Hagen},
-%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-%D This file implements the ISO-8859-2 Central European character
-%D set.
-
-\startregime[iso-8858-2]
-
-\defineactivetoken 160 {\nonbreakablespace} %   00A0 NO-BREAK SPACE
-\defineactivetoken 161 {\Aogonek} % ¡ 0104 LATIN CAPITAL LETTER A WITH OGONEK
-\defineactivetoken 162 {\textbreve} % ¢ 02D8 BREVE
-\defineactivetoken 163 {\Lstroke} % £ 0141 LATIN CAPITAL LETTER L WITH STROKE
-\defineactivetoken 164 {\textcurrency} % ¤ 00A4 CURRENCY SIGN
-\defineactivetoken 165 {\Lcaron} % ¥ 013D LATIN CAPITAL LETTER L WITH CARON
-\defineactivetoken 166 {\Sacute} % ¦ 015A LATIN CAPITAL LETTER S WITH ACUTE
-\defineactivetoken 167 {\sectionmark} % § 00A7 SECTION SIGN
-\defineactivetoken 168 {\textdiaeresis} % ¨ 00A8 DIAERESIS
-\defineactivetoken 169 {\Scaron} % © 0160 LATIN CAPITAL LETTER S WITH CARON
-\defineactivetoken 170 {\Scedilla} % ª 015E LATIN CAPITAL LETTER S WITH CEDILLA
-\defineactivetoken 171 {\Tcaron} % « 0164 LATIN CAPITAL LETTER T WITH CARON
-\defineactivetoken 172 {\Zacute} % ¬ 0179 LATIN CAPITAL LETTER Z WITH ACUTE
-\defineactivetoken 173 {\softhyphen} % ­ 00AD SOFT HYPHEN
-\defineactivetoken 174 {\Zcaron} % ® 017D LATIN CAPITAL LETTER Z WITH CARON
-\defineactivetoken 175 {\Zdotaccent} % ¯ 017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
-
-\defineactivetoken 176 {\textdegree} % ° 00B0 DEGREE SIGN
-\defineactivetoken 177 {\aogonek} % ± 0105 LATIN SMALL LETTER A WITH OGONEK
-\defineactivetoken 178 {\textogonek} % ² 02DB OGONEK
-\defineactivetoken 179 {\lstroke} % ³ 0142 LATIN SMALL LETTER L WITH STROKE
-\defineactivetoken 180 {\textacute} % ´ 00B4 ACUTE ACCENT
-\defineactivetoken 181 {\lcaron} % µ 013E LATIN SMALL LETTER L WITH CARON
-\defineactivetoken 182 {\sacute} % ¶ 015B LATIN SMALL LETTER S WITH ACUTE
-\defineactivetoken 183 {\textcaron} % · 02C7 CARON
-\defineactivetoken 184 {\textcedilla} % ¸ 00B8 CEDILLA
-\defineactivetoken 185 {\scaron} % ¹ 0161 LATIN SMALL LETTER S WITH CARON
-\defineactivetoken 186 {\scedilla} % º 015F LATIN SMALL LETTER S WITH CEDILLA
-\defineactivetoken 187 {\tcaron} % » 0165 LATIN SMALL LETTER T WITH CARON
-\defineactivetoken 188 {\zacute} % ¼ 017A LATIN SMALL LETTER Z WITH ACUTE
-\defineactivetoken 189 {\texthungarumlaut} % ½ 02DD DOUBLE ACUTE ACCENT
-\defineactivetoken 190 {\zcaron} % ¾ 017E LATIN SMALL LETTER Z WITH CARON
-\defineactivetoken 191 {\zdotaccent} % ¿ 017C LATIN SMALL LETTER Z WITH DOT ABOVE
-
-\defineactivetoken 192 {\Racute} % À 0154 LATIN CAPITAL LETTER R WITH ACUTE
-\defineactivetoken 193 {\Aacute} % Á 00C1 LATIN CAPITAL LETTER A WITH ACUTE
-\defineactivetoken 194 {\Acircumflex} % Â 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-\defineactivetoken 195 {\Abreve} % Ã 0102 LATIN CAPITAL LETTER A WITH BREVE
-\defineactivetoken 196 {\Adiaeresis} % Ä 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
-\defineactivetoken 197 {\Lacute} % Å 0139 LATIN CAPITAL LETTER L WITH ACUTE
-\defineactivetoken 198 {\Cacute} % Æ 0106 LATIN CAPITAL LETTER C WITH ACUTE
-\defineactivetoken 199 {\Ccedilla} % Ç 00C7 LATIN CAPITAL LETTER C WITH CEDILLA
-\defineactivetoken 200 {\Ccaron} % È 010C LATIN CAPITAL LETTER C WITH CARON
-\defineactivetoken 201 {\Eacute} % É 00C9 LATIN CAPITAL LETTER E WITH ACUTE
-\defineactivetoken 202 {\Eogonek} % Ê 0118 LATIN CAPITAL LETTER E WITH OGONEK
-\defineactivetoken 203 {\Ediaeresis} % Ë 00CB LATIN CAPITAL LETTER E WITH DIAERESIS
-\defineactivetoken 204 {\Ecaron} % Ì 011A LATIN CAPITAL LETTER E WITH CARON
-\defineactivetoken 205 {\Iacute} % Í 00CD LATIN CAPITAL LETTER I WITH ACUTE
-\defineactivetoken 206 {\Icircumflex} % Î 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-\defineactivetoken 207 {\Dcaron} % Ï 010E LATIN CAPITAL LETTER D WITH CARON
-
-\defineactivetoken 208 {\Dstroke} % Ð 0110 LATIN CAPITAL LETTER D WITH STROKE
-\defineactivetoken 209 {\Nacute} % Ñ 0143 LATIN CAPITAL LETTER N WITH ACUTE
-\defineactivetoken 210 {\Ncaron} % Ò 0147 LATIN CAPITAL LETTER N WITH CARON
-\defineactivetoken 211 {\Oacute} % Ó 00D3 LATIN CAPITAL LETTER O WITH ACUTE
-\defineactivetoken 212 {\Ocircumflex} % Ô 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-\defineactivetoken 213 {\Ohungarumlaut} % Õ 0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-\defineactivetoken 214 {\Odiaeresis} % Ö 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
-\defineactivetoken 215 {\textmultiply} % × 00D7 MULTIPLICATION SIGN
-\defineactivetoken 216 {\Rcaron} % Ø 0158 LATIN CAPITAL LETTER R WITH CARON
-\defineactivetoken 217 {\Uring} % Ù 016E LATIN CAPITAL LETTER U WITH RING ABOVE
-\defineactivetoken 218 {\Uacute} % Ú 00DA LATIN CAPITAL LETTER U WITH ACUTE
-\defineactivetoken 219 {\Uhungarumlaut} % Û 0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-\defineactivetoken 220 {\Udiaeresis} % Ü 00DC LATIN CAPITAL LETTER U WITH DIAERESIS
-\defineactivetoken 221 {\Yacute} % Ý 00DD LATIN CAPITAL LETTER Y WITH ACUTE
-\defineactivetoken 222 {\Tcedilla} % Þ 0162 LATIN CAPITAL LETTER T WITH CEDILLA
-\defineactivetoken 223 {\ssharp} % ß 00DF LATIN SMALL LETTER SHARP S
-
-\defineactivetoken 224 {\racute} % à 0155 LATIN SMALL LETTER R WITH ACUTE
-\defineactivetoken 225 {\aacute} % á 00E1 LATIN SMALL LETTER A WITH ACUTE
-\defineactivetoken 226 {\acircumflex} % â 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
-\defineactivetoken 227 {\abreve} % ã 0103 LATIN SMALL LETTER A WITH BREVE
-\defineactivetoken 228 {\adiaeresis} % ä 00E4 LATIN SMALL LETTER A WITH DIAERESIS
-\defineactivetoken 229 {\lacute} % å 013A LATIN SMALL LETTER L WITH ACUTE
-\defineactivetoken 230 {\cacute} % æ 0107 LATIN SMALL LETTER C WITH ACUTE
-\defineactivetoken 231 {\ccedilla} % ç 00E7 LATIN SMALL LETTER C WITH CEDILLA
-\defineactivetoken 232 {\ccaron} % è 010D LATIN SMALL LETTER C WITH CARON
-\defineactivetoken 233 {\eacute} % é 00E9 LATIN SMALL LETTER E WITH ACUTE
-\defineactivetoken 234 {\eogonek} % ê 0119 LATIN SMALL LETTER E WITH OGONEK
-\defineactivetoken 235 {\ediaeresis} % ë 00EB LATIN SMALL LETTER E WITH DIAERESIS
-\defineactivetoken 236 {\ecaron} % ì 011B LATIN SMALL LETTER E WITH CARON
-\defineactivetoken 237 {\iacute} % í 00ED LATIN SMALL LETTER I WITH ACUTE
-\defineactivetoken 238 {\icircumflex} % î 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
-\defineactivetoken 239 {\dcaron} % ï 010F LATIN SMALL LETTER D WITH CARON
-
-\defineactivetoken 240 {\dstroke} % ð 0111 LATIN SMALL LETTER D WITH STROKE
-\defineactivetoken 241 {\nacute} % ñ 0144 LATIN SMALL LETTER N WITH ACUTE
-\defineactivetoken 242 {\ncaron} % ò 0148 LATIN SMALL LETTER N WITH CARON
-\defineactivetoken 243 {\oacute} % ó 00F3 LATIN SMALL LETTER O WITH ACUTE
-\defineactivetoken 244 {\ocircumflex} % ô 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
-\defineactivetoken 245 {\ohungarumlaut} % õ 0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
-\defineactivetoken 246 {\odiaeresis} % ö 00F6 LATIN SMALL LETTER O WITH DIAERESIS
-\defineactivetoken 247 {\textdiv} % ÷ 00F7 DIVISION SIGN
-\defineactivetoken 248 {\rcaron} % ø 0159 LATIN SMALL LETTER R WITH CARON
-\defineactivetoken 249 {\uring} % ù 016F LATIN SMALL LETTER U WITH RING ABOVE
-\defineactivetoken 250 {\uacute} % ú 00FA LATIN SMALL LETTER U WITH ACUTE
-\defineactivetoken 251 {\uhungarumlaut} % û 0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
-\defineactivetoken 252 {\udiaeresis} % ü 00FC LATIN SMALL LETTER U WITH DIAERESIS
-\defineactivetoken 253 {\yacute} % ý 00FD LATIN SMALL LETTER Y WITH ACUTE
-\defineactivetoken 254 {\tcedilla} % þ 0163 LATIN SMALL LETTER T WITH CEDILLA
-\defineactivetoken 255 {\textdotaccent} % ÿ 02D9 DOT ABOVE
-
-\stopregime
-
-\endinput
-
diff --git a/tex/context/base/regi-iso-8859-1.tex b/tex/context/base/regi-iso-8859-1.tex
new file mode 100644
index 000000000..27481686b
--- /dev/null
+++ b/tex/context/base/regi-iso-8859-1.tex
@@ -0,0 +1,157 @@
+%D \module
+%D [ file=regi-iso-8859-1,
+%D version=2006.04.10,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=iso-8859-1 (West European),
+%D author=script-generated,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Support for iso-8859-1/Latin1 input encoding (regime) for West European languages,
+%D see also cp1252 and iso-8859-15 (includes Euro).
+%D
+%D (Contributors to the original file: Daniel Flipo, Hans Hagen & Denis Roegel.)
+%D
+%D Usage:
+%D \type{\enableregime[iso-8859-1]} or
+%D \type{\enableregime[latin1]} or
+%D \type{\enableregime[il1]}
+
+
+\startregime[iso-8859-1]
+
+\defineactivetoken 128 {\unknownchar} % 0080 <control>
+\defineactivetoken 129 {\unknownchar} % 0081 <control>
+\defineactivetoken 130 {\unknownchar} % 0082 <control>
+\defineactivetoken 131 {\unknownchar} % 0083 <control>
+\defineactivetoken 132 {\unknownchar} % 0084 <control>
+\defineactivetoken 133 {\unknownchar} % 0085 <control>
+\defineactivetoken 134 {\unknownchar} % 0086 <control>
+\defineactivetoken 135 {\unknownchar} % 0087 <control>
+\defineactivetoken 136 {\unknownchar} % 0088 <control>
+\defineactivetoken 137 {\unknownchar} % 0089 <control>
+\defineactivetoken 138 {\unknownchar} % 008A <control>
+\defineactivetoken 139 {\unknownchar} % 008B <control>
+\defineactivetoken 140 {\unknownchar} % 008C <control>
+\defineactivetoken 141 {\unknownchar} % 008D <control>
+\defineactivetoken 142 {\unknownchar} % 008E <control>
+\defineactivetoken 143 {\unknownchar} % 008F <control>
+\defineactivetoken 144 {\unknownchar} % 0090 <control>
+\defineactivetoken 145 {\unknownchar} % 0091 <control>
+\defineactivetoken 146 {\unknownchar} % 0092 <control>
+\defineactivetoken 147 {\unknownchar} % 0093 <control>
+\defineactivetoken 148 {\unknownchar} % 0094 <control>
+\defineactivetoken 149 {\unknownchar} % 0095 <control>
+\defineactivetoken 150 {\unknownchar} % 0096 <control>
+\defineactivetoken 151 {\unknownchar} % 0097 <control>
+\defineactivetoken 152 {\unknownchar} % 0098 <control>
+\defineactivetoken 153 {\unknownchar} % 0099 <control>
+\defineactivetoken 154 {\unknownchar} % 009A <control>
+\defineactivetoken 155 {\unknownchar} % 009B <control>
+\defineactivetoken 156 {\unknownchar} % 009C <control>
+\defineactivetoken 157 {\unknownchar} % 009D <control>
+\defineactivetoken 158 {\unknownchar} % 009E <control>
+\defineactivetoken 159 {\unknownchar} % 009F <control>
+\defineactivetoken 160 {\nonbreakablespace} % 00A0 NO-BREAK SPACE
+\defineactivetoken 161 {\exclamdown} % 00A1 INVERTED EXCLAMATION MARK
+\defineactivetoken 162 {\textcent} % 00A2 CENT SIGN
+\defineactivetoken 163 {\textsterling} % 00A3 POUND SIGN
+\defineactivetoken 164 {\textcurrency} % 00A4 CURRENCY SIGN
+\defineactivetoken 165 {\textyen} % 00A5 YEN SIGN
+\defineactivetoken 166 {\textbrokenbar} % 00A6 BROKEN BAR
+\defineactivetoken 167 {\sectionmark} % 00A7 SECTION SIGN
+\defineactivetoken 168 {\textdiaeresis} % 00A8 DIAERESIS
+\defineactivetoken 169 {\copyright} % 00A9 COPYRIGHT SIGN
+\defineactivetoken 170 {\ordfeminine} % 00AA FEMININE ORDINAL INDICATOR
+\defineactivetoken 171 {\leftguillemot} % 00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 172 {\textlognot} % 00AC NOT SIGN
+\defineactivetoken 173 {\softhyphen} % 00AD SOFT HYPHEN
+\defineactivetoken 174 {\registered} % 00AE REGISTERED SIGN
+\defineactivetoken 175 {\textmacron} % 00AF MACRON
+\defineactivetoken 176 {\textdegree} % 00B0 DEGREE SIGN
+\defineactivetoken 177 {\textpm} % 00B1 PLUS-MINUS SIGN
+\defineactivetoken 178 {\twosuperior} % 00B2 SUPERSCRIPT TWO
+\defineactivetoken 179 {\threesuperior} % 00B3 SUPERSCRIPT THREE
+\defineactivetoken 180 {\textacute} % 00B4 ACUTE ACCENT
+\defineactivetoken 181 {\textmu} % 00B5 MICRO SIGN
+\defineactivetoken 182 {\paragraphmark} % 00B6 PILCROW SIGN
+\defineactivetoken 183 {\periodcentered} % 00B7 MIDDLE DOT
+\defineactivetoken 184 {\textcedilla} % 00B8 CEDILLA
+\defineactivetoken 185 {\onesuperior} % 00B9 SUPERSCRIPT ONE
+\defineactivetoken 186 {\ordmasculine} % 00BA MASCULINE ORDINAL INDICATOR
+\defineactivetoken 187 {\rightguillemot} % 00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 188 {\onequarter} % 00BC VULGAR FRACTION ONE QUARTER
+\defineactivetoken 189 {\onehalf} % 00BD VULGAR FRACTION ONE HALF
+\defineactivetoken 190 {\threequarter} % 00BE VULGAR FRACTION THREE QUARTERS
+\defineactivetoken 191 {\questiondown} % 00BF INVERTED QUESTION MARK
+\defineactivetoken 192 {\Agrave} % 00C0 LATIN CAPITAL LETTER A WITH GRAVE
+\defineactivetoken 193 {\Aacute} % 00C1 LATIN CAPITAL LETTER A WITH ACUTE
+\defineactivetoken 194 {\Acircumflex} % 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 195 {\Atilde} % 00C3 LATIN CAPITAL LETTER A WITH TILDE
+\defineactivetoken 196 {\Adiaeresis} % 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+\defineactivetoken 197 {\Aring} % 00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
+\defineactivetoken 198 {\AEligature} % 00C6 LATIN CAPITAL LETTER AE
+\defineactivetoken 199 {\Ccedilla} % 00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+\defineactivetoken 200 {\Egrave} % 00C8 LATIN CAPITAL LETTER E WITH GRAVE
+\defineactivetoken 201 {\Eacute} % 00C9 LATIN CAPITAL LETTER E WITH ACUTE
+\defineactivetoken 202 {\Ecircumflex} % 00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+\defineactivetoken 203 {\Ediaeresis} % 00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+\defineactivetoken 204 {\Igrave} % 00CC LATIN CAPITAL LETTER I WITH GRAVE
+\defineactivetoken 205 {\Iacute} % 00CD LATIN CAPITAL LETTER I WITH ACUTE
+\defineactivetoken 206 {\Icircumflex} % 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 207 {\Idiaeresis} % 00CF LATIN CAPITAL LETTER I WITH DIAERESIS
+\defineactivetoken 208 {\Eth} % 00D0 LATIN CAPITAL LETTER ETH
+\defineactivetoken 209 {\Ntilde} % 00D1 LATIN CAPITAL LETTER N WITH TILDE
+\defineactivetoken 210 {\Ograve} % 00D2 LATIN CAPITAL LETTER O WITH GRAVE
+\defineactivetoken 211 {\Oacute} % 00D3 LATIN CAPITAL LETTER O WITH ACUTE
+\defineactivetoken 212 {\Ocircumflex} % 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 213 {\Otilde} % 00D5 LATIN CAPITAL LETTER O WITH TILDE
+\defineactivetoken 214 {\Odiaeresis} % 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+\defineactivetoken 215 {\textmultiply} % 00D7 MULTIPLICATION SIGN
+\defineactivetoken 216 {\Ostroke} % 00D8 LATIN CAPITAL LETTER O WITH STROKE
+\defineactivetoken 217 {\Ugrave} % 00D9 LATIN CAPITAL LETTER U WITH GRAVE
+\defineactivetoken 218 {\Uacute} % 00DA LATIN CAPITAL LETTER U WITH ACUTE
+\defineactivetoken 219 {\Ucircumflex} % 00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+\defineactivetoken 220 {\Udiaeresis} % 00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+\defineactivetoken 221 {\Yacute} % 00DD LATIN CAPITAL LETTER Y WITH ACUTE
+\defineactivetoken 222 {\Thorn} % 00DE LATIN CAPITAL LETTER THORN
+\defineactivetoken 223 {\ssharp} % 00DF LATIN SMALL LETTER SHARP S
+\defineactivetoken 224 {\agrave} % 00E0 LATIN SMALL LETTER A WITH GRAVE
+\defineactivetoken 225 {\aacute} % 00E1 LATIN SMALL LETTER A WITH ACUTE
+\defineactivetoken 226 {\acircumflex} % 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 227 {\atilde} % 00E3 LATIN SMALL LETTER A WITH TILDE
+\defineactivetoken 228 {\adiaeresis} % 00E4 LATIN SMALL LETTER A WITH DIAERESIS
+\defineactivetoken 229 {\aring} % 00E5 LATIN SMALL LETTER A WITH RING ABOVE
+\defineactivetoken 230 {\aeligature} % 00E6 LATIN SMALL LETTER AE
+\defineactivetoken 231 {\ccedilla} % 00E7 LATIN SMALL LETTER C WITH CEDILLA
+\defineactivetoken 232 {\egrave} % 00E8 LATIN SMALL LETTER E WITH GRAVE
+\defineactivetoken 233 {\eacute} % 00E9 LATIN SMALL LETTER E WITH ACUTE
+\defineactivetoken 234 {\ecircumflex} % 00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+\defineactivetoken 235 {\ediaeresis} % 00EB LATIN SMALL LETTER E WITH DIAERESIS
+\defineactivetoken 236 {\igrave} % 00EC LATIN SMALL LETTER I WITH GRAVE
+\defineactivetoken 237 {\iacute} % 00ED LATIN SMALL LETTER I WITH ACUTE
+\defineactivetoken 238 {\icircumflex} % 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 239 {\idiaeresis} % 00EF LATIN SMALL LETTER I WITH DIAERESIS
+\defineactivetoken 240 {\eth} % 00F0 LATIN SMALL LETTER ETH
+\defineactivetoken 241 {\ntilde} % 00F1 LATIN SMALL LETTER N WITH TILDE
+\defineactivetoken 242 {\ograve} % 00F2 LATIN SMALL LETTER O WITH GRAVE
+\defineactivetoken 243 {\oacute} % 00F3 LATIN SMALL LETTER O WITH ACUTE
+\defineactivetoken 244 {\ocircumflex} % 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 245 {\otilde} % 00F5 LATIN SMALL LETTER O WITH TILDE
+\defineactivetoken 246 {\odiaeresis} % 00F6 LATIN SMALL LETTER O WITH DIAERESIS
+\defineactivetoken 247 {\textdiv} % 00F7 DIVISION SIGN
+\defineactivetoken 248 {\ostroke} % 00F8 LATIN SMALL LETTER O WITH STROKE
+\defineactivetoken 249 {\ugrave} % 00F9 LATIN SMALL LETTER U WITH GRAVE
+\defineactivetoken 250 {\uacute} % 00FA LATIN SMALL LETTER U WITH ACUTE
+\defineactivetoken 251 {\ucircumflex} % 00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
+\defineactivetoken 252 {\udiaeresis} % 00FC LATIN SMALL LETTER U WITH DIAERESIS
+\defineactivetoken 253 {\yacute} % 00FD LATIN SMALL LETTER Y WITH ACUTE
+\defineactivetoken 254 {\thorn} % 00FE LATIN SMALL LETTER THORN
+\defineactivetoken 255 {\ydiaeresis} % 00FF LATIN SMALL LETTER Y WITH DIAERESIS
+
+\stopregime
+
diff --git a/tex/context/base/regi-iso-8859-15.tex b/tex/context/base/regi-iso-8859-15.tex
index 387404e4b..3ab142470 100644
--- a/tex/context/base/regi-iso-8859-15.tex
+++ b/tex/context/base/regi-iso-8859-15.tex
@@ -1,9 +1,9 @@
%D \module
-%D [ file=regi-il9,
-%D version=2005.12.18,
+%D [ file=regi-iso-8859-15,
+%D version=2006.04.10,
%D title=\CONTEXT\ Encoding Macros,
-%D subtitle=ISO 8859-15 (latin-9),
-%D author={Taco Hoekwater},
+%D subtitle=iso-8859-15 (West European),
+%D author=script-generated,
%D date=\currentdate,
%D copyright=PRAGMA-ADE]
%C
@@ -11,108 +11,147 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-%D This module activates the ISO 8859-15 character set
-%D characters (western europe), such as ë and á.
+%D Support for iso-8859-15/Latin9 input encoding (regime) for West European languages,
+%D almost the same as iso-8859-1 with rarely used symbols (currency symbol,
+%D fractions, accents) replaced by Euro and some additional letters,
+%D see also cp1252.
+%D
+%D Usage:
+%D \type{\enableregime[iso-8859-9]} or
+%D \type{\enableregime[latin9]} or
+%D \type{\enableregime[il9]}
-\startregime [il9]
-\defineactivetoken 160 {\nonbreakablespace}
-\defineactivetoken 161 {\exclamdown}
-\defineactivetoken 162 {\textcent}
-\defineactivetoken 163 {\textsterling}
-\defineactivetoken 164 {\texteuro}
-\defineactivetoken 165 {\textyen}
-\defineactivetoken 166 {\Scaron}
-\defineactivetoken 167 {\sectionmark}
-\defineactivetoken 168 {\scaron}
-\defineactivetoken 169 {\copyright}
-\defineactivetoken 170 {\ordfeminine}
-\defineactivetoken 171 {\leftguillemot}
-\defineactivetoken 172 {\textlognot}
-\defineactivetoken 173 {\hyphen}
-\defineactivetoken 174 {\registered}
-\defineactivetoken 175 {\textmacron}
-\defineactivetoken 176 {\textdegree}
-\defineactivetoken 177 {\textpm}
-\defineactivetoken 178 {\twosuperior}
-\defineactivetoken 179 {\threesuperior}
-\defineactivetoken 180 {\Zcaron}
-\defineactivetoken 181 {\textmu}
-\defineactivetoken 182 {\paragraphmark}
-\defineactivetoken 183 {\periodcentered}
-\defineactivetoken 184 {\zcaron}
-\defineactivetoken 185 {\onesuperior}
-\defineactivetoken 186 {\ordmasculine}
-\defineactivetoken 187 {\rightguillemot}
-\defineactivetoken 188 {\OEligature}
-\defineactivetoken 189 {\oeligature}
-\defineactivetoken 190 {\Ydiaeresis}
-\defineactivetoken 191 {\questiondown}
-\defineactivetoken 192 {\Agrave}
-\defineactivetoken 193 {\Aacute}
-\defineactivetoken 194 {\Acircumflex}
-\defineactivetoken 195 {\Atilde}
-\defineactivetoken 196 {\Adiaeresis}
-\defineactivetoken 197 {\Aring}
-\defineactivetoken 198 {\AEligature}
-\defineactivetoken 199 {\Ccedilla}
-\defineactivetoken 200 {\Egrave}
-\defineactivetoken 201 {\Eacute}
-\defineactivetoken 202 {\Ecircumflex}
-\defineactivetoken 203 {\Ediaeresis}
-\defineactivetoken 204 {\Igrave}
-\defineactivetoken 205 {\Iacute}
-\defineactivetoken 206 {\Icircumflex}
-\defineactivetoken 207 {\Idiaeresis}
-\defineactivetoken 208 {\Eth}
-\defineactivetoken 209 {\Ntilde}
-\defineactivetoken 210 {\Ograve}
-\defineactivetoken 211 {\Oacute}
-\defineactivetoken 212 {\Ocircumflex}
-\defineactivetoken 213 {\Otilde}
-\defineactivetoken 214 {\Odiaeresis}
-\defineactivetoken 215 {\textmultiply}
-\defineactivetoken 216 {\Ostroke}
-\defineactivetoken 217 {\Ugrave}
-\defineactivetoken 218 {\Uacute}
-\defineactivetoken 219 {\Ucircumflex}
-\defineactivetoken 220 {\Udiaeresis}
-\defineactivetoken 221 {\Yacute}
-\defineactivetoken 222 {\Thorn}
-\defineactivetoken 223 {\ssharp}
-\defineactivetoken 224 {\agrave}
-\defineactivetoken 225 {\aacute}
-\defineactivetoken 226 {\acircumflex}
-\defineactivetoken 227 {\atilde}
-\defineactivetoken 228 {\adiaeresis}
-\defineactivetoken 229 {\aring}
-\defineactivetoken 230 {\aeligature}
-\defineactivetoken 231 {\ccedilla}
-\defineactivetoken 232 {\egrave}
-\defineactivetoken 233 {\eacute}
-\defineactivetoken 234 {\ecircumflex}
-\defineactivetoken 235 {\ediaeresis}
-\defineactivetoken 236 {\igrave}
-\defineactivetoken 237 {\iacute}
-\defineactivetoken 238 {\icircumflex}
-\defineactivetoken 239 {\idiaeresis}
-\defineactivetoken 240 {\eth}
-\defineactivetoken 241 {\ntilde}
-\defineactivetoken 242 {\ograve}
-\defineactivetoken 243 {\oacute}
-\defineactivetoken 244 {\ocircumflex}
-\defineactivetoken 245 {\otilde}
-\defineactivetoken 246 {\odiaeresis}
-\defineactivetoken 247 {\textdiv}
-\defineactivetoken 248 {\ostroke}
-\defineactivetoken 249 {\ugrave}
-\defineactivetoken 250 {\uacute}
-\defineactivetoken 251 {\ucircumflex}
-\defineactivetoken 252 {\udiaeresis}
-\defineactivetoken 253 {\yacute}
-\defineactivetoken 254 {\thorn}
-\defineactivetoken 255 {\ydiaeresis}
+\startregime[iso-8859-15]
+
+\defineactivetoken 128 {\unknownchar} % 0080 <control>
+\defineactivetoken 129 {\unknownchar} % 0081 <control>
+\defineactivetoken 130 {\unknownchar} % 0082 <control>
+\defineactivetoken 131 {\unknownchar} % 0083 <control>
+\defineactivetoken 132 {\unknownchar} % 0084 <control>
+\defineactivetoken 133 {\unknownchar} % 0085 <control>
+\defineactivetoken 134 {\unknownchar} % 0086 <control>
+\defineactivetoken 135 {\unknownchar} % 0087 <control>
+\defineactivetoken 136 {\unknownchar} % 0088 <control>
+\defineactivetoken 137 {\unknownchar} % 0089 <control>
+\defineactivetoken 138 {\unknownchar} % 008A <control>
+\defineactivetoken 139 {\unknownchar} % 008B <control>
+\defineactivetoken 140 {\unknownchar} % 008C <control>
+\defineactivetoken 141 {\unknownchar} % 008D <control>
+\defineactivetoken 142 {\unknownchar} % 008E <control>
+\defineactivetoken 143 {\unknownchar} % 008F <control>
+\defineactivetoken 144 {\unknownchar} % 0090 <control>
+\defineactivetoken 145 {\unknownchar} % 0091 <control>
+\defineactivetoken 146 {\unknownchar} % 0092 <control>
+\defineactivetoken 147 {\unknownchar} % 0093 <control>
+\defineactivetoken 148 {\unknownchar} % 0094 <control>
+\defineactivetoken 149 {\unknownchar} % 0095 <control>
+\defineactivetoken 150 {\unknownchar} % 0096 <control>
+\defineactivetoken 151 {\unknownchar} % 0097 <control>
+\defineactivetoken 152 {\unknownchar} % 0098 <control>
+\defineactivetoken 153 {\unknownchar} % 0099 <control>
+\defineactivetoken 154 {\unknownchar} % 009A <control>
+\defineactivetoken 155 {\unknownchar} % 009B <control>
+\defineactivetoken 156 {\unknownchar} % 009C <control>
+\defineactivetoken 157 {\unknownchar} % 009D <control>
+\defineactivetoken 158 {\unknownchar} % 009E <control>
+\defineactivetoken 159 {\unknownchar} % 009F <control>
+\defineactivetoken 160 {\nonbreakablespace} % 00A0 NO-BREAK SPACE
+\defineactivetoken 161 {\exclamdown} % 00A1 INVERTED EXCLAMATION MARK
+\defineactivetoken 162 {\textcent} % 00A2 CENT SIGN
+\defineactivetoken 163 {\textsterling} % 00A3 POUND SIGN
+\defineactivetoken 164 {\texteuro} % 20AC EURO SIGN
+\defineactivetoken 165 {\textyen} % 00A5 YEN SIGN
+\defineactivetoken 166 {\Scaron} % 0160 LATIN CAPITAL LETTER S WITH CARON
+\defineactivetoken 167 {\sectionmark} % 00A7 SECTION SIGN
+\defineactivetoken 168 {\scaron} % 0161 LATIN SMALL LETTER S WITH CARON
+\defineactivetoken 169 {\copyright} % 00A9 COPYRIGHT SIGN
+\defineactivetoken 170 {\ordfeminine} % 00AA FEMININE ORDINAL INDICATOR
+\defineactivetoken 171 {\leftguillemot} % 00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 172 {\textlognot} % 00AC NOT SIGN
+\defineactivetoken 173 {\softhyphen} % 00AD SOFT HYPHEN
+\defineactivetoken 174 {\registered} % 00AE REGISTERED SIGN
+\defineactivetoken 175 {\textmacron} % 00AF MACRON
+\defineactivetoken 176 {\textdegree} % 00B0 DEGREE SIGN
+\defineactivetoken 177 {\textpm} % 00B1 PLUS-MINUS SIGN
+\defineactivetoken 178 {\twosuperior} % 00B2 SUPERSCRIPT TWO
+\defineactivetoken 179 {\threesuperior} % 00B3 SUPERSCRIPT THREE
+\defineactivetoken 180 {\Zcaron} % 017D LATIN CAPITAL LETTER Z WITH CARON
+\defineactivetoken 181 {\textmu} % 00B5 MICRO SIGN
+\defineactivetoken 182 {\paragraphmark} % 00B6 PILCROW SIGN
+\defineactivetoken 183 {\periodcentered} % 00B7 MIDDLE DOT
+\defineactivetoken 184 {\zcaron} % 017E LATIN SMALL LETTER Z WITH CARON
+\defineactivetoken 185 {\onesuperior} % 00B9 SUPERSCRIPT ONE
+\defineactivetoken 186 {\ordmasculine} % 00BA MASCULINE ORDINAL INDICATOR
+\defineactivetoken 187 {\rightguillemot} % 00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 188 {\OEligature} % 0152 LATIN CAPITAL LIGATURE OE
+\defineactivetoken 189 {\oeligature} % 0153 LATIN SMALL LIGATURE OE
+\defineactivetoken 190 {\Ydiaeresis} % 0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
+\defineactivetoken 191 {\questiondown} % 00BF INVERTED QUESTION MARK
+\defineactivetoken 192 {\Agrave} % 00C0 LATIN CAPITAL LETTER A WITH GRAVE
+\defineactivetoken 193 {\Aacute} % 00C1 LATIN CAPITAL LETTER A WITH ACUTE
+\defineactivetoken 194 {\Acircumflex} % 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 195 {\Atilde} % 00C3 LATIN CAPITAL LETTER A WITH TILDE
+\defineactivetoken 196 {\Adiaeresis} % 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+\defineactivetoken 197 {\Aring} % 00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
+\defineactivetoken 198 {\AEligature} % 00C6 LATIN CAPITAL LETTER AE
+\defineactivetoken 199 {\Ccedilla} % 00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+\defineactivetoken 200 {\Egrave} % 00C8 LATIN CAPITAL LETTER E WITH GRAVE
+\defineactivetoken 201 {\Eacute} % 00C9 LATIN CAPITAL LETTER E WITH ACUTE
+\defineactivetoken 202 {\Ecircumflex} % 00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+\defineactivetoken 203 {\Ediaeresis} % 00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+\defineactivetoken 204 {\Igrave} % 00CC LATIN CAPITAL LETTER I WITH GRAVE
+\defineactivetoken 205 {\Iacute} % 00CD LATIN CAPITAL LETTER I WITH ACUTE
+\defineactivetoken 206 {\Icircumflex} % 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 207 {\Idiaeresis} % 00CF LATIN CAPITAL LETTER I WITH DIAERESIS
+\defineactivetoken 208 {\Eth} % 00D0 LATIN CAPITAL LETTER ETH
+\defineactivetoken 209 {\Ntilde} % 00D1 LATIN CAPITAL LETTER N WITH TILDE
+\defineactivetoken 210 {\Ograve} % 00D2 LATIN CAPITAL LETTER O WITH GRAVE
+\defineactivetoken 211 {\Oacute} % 00D3 LATIN CAPITAL LETTER O WITH ACUTE
+\defineactivetoken 212 {\Ocircumflex} % 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 213 {\Otilde} % 00D5 LATIN CAPITAL LETTER O WITH TILDE
+\defineactivetoken 214 {\Odiaeresis} % 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+\defineactivetoken 215 {\textmultiply} % 00D7 MULTIPLICATION SIGN
+\defineactivetoken 216 {\Ostroke} % 00D8 LATIN CAPITAL LETTER O WITH STROKE
+\defineactivetoken 217 {\Ugrave} % 00D9 LATIN CAPITAL LETTER U WITH GRAVE
+\defineactivetoken 218 {\Uacute} % 00DA LATIN CAPITAL LETTER U WITH ACUTE
+\defineactivetoken 219 {\Ucircumflex} % 00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+\defineactivetoken 220 {\Udiaeresis} % 00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+\defineactivetoken 221 {\Yacute} % 00DD LATIN CAPITAL LETTER Y WITH ACUTE
+\defineactivetoken 222 {\Thorn} % 00DE LATIN CAPITAL LETTER THORN
+\defineactivetoken 223 {\ssharp} % 00DF LATIN SMALL LETTER SHARP S
+\defineactivetoken 224 {\agrave} % 00E0 LATIN SMALL LETTER A WITH GRAVE
+\defineactivetoken 225 {\aacute} % 00E1 LATIN SMALL LETTER A WITH ACUTE
+\defineactivetoken 226 {\acircumflex} % 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 227 {\atilde} % 00E3 LATIN SMALL LETTER A WITH TILDE
+\defineactivetoken 228 {\adiaeresis} % 00E4 LATIN SMALL LETTER A WITH DIAERESIS
+\defineactivetoken 229 {\aring} % 00E5 LATIN SMALL LETTER A WITH RING ABOVE
+\defineactivetoken 230 {\aeligature} % 00E6 LATIN SMALL LETTER AE
+\defineactivetoken 231 {\ccedilla} % 00E7 LATIN SMALL LETTER C WITH CEDILLA
+\defineactivetoken 232 {\egrave} % 00E8 LATIN SMALL LETTER E WITH GRAVE
+\defineactivetoken 233 {\eacute} % 00E9 LATIN SMALL LETTER E WITH ACUTE
+\defineactivetoken 234 {\ecircumflex} % 00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+\defineactivetoken 235 {\ediaeresis} % 00EB LATIN SMALL LETTER E WITH DIAERESIS
+\defineactivetoken 236 {\igrave} % 00EC LATIN SMALL LETTER I WITH GRAVE
+\defineactivetoken 237 {\iacute} % 00ED LATIN SMALL LETTER I WITH ACUTE
+\defineactivetoken 238 {\icircumflex} % 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 239 {\idiaeresis} % 00EF LATIN SMALL LETTER I WITH DIAERESIS
+\defineactivetoken 240 {\eth} % 00F0 LATIN SMALL LETTER ETH
+\defineactivetoken 241 {\ntilde} % 00F1 LATIN SMALL LETTER N WITH TILDE
+\defineactivetoken 242 {\ograve} % 00F2 LATIN SMALL LETTER O WITH GRAVE
+\defineactivetoken 243 {\oacute} % 00F3 LATIN SMALL LETTER O WITH ACUTE
+\defineactivetoken 244 {\ocircumflex} % 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 245 {\otilde} % 00F5 LATIN SMALL LETTER O WITH TILDE
+\defineactivetoken 246 {\odiaeresis} % 00F6 LATIN SMALL LETTER O WITH DIAERESIS
+\defineactivetoken 247 {\textdiv} % 00F7 DIVISION SIGN
+\defineactivetoken 248 {\ostroke} % 00F8 LATIN SMALL LETTER O WITH STROKE
+\defineactivetoken 249 {\ugrave} % 00F9 LATIN SMALL LETTER U WITH GRAVE
+\defineactivetoken 250 {\uacute} % 00FA LATIN SMALL LETTER U WITH ACUTE
+\defineactivetoken 251 {\ucircumflex} % 00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
+\defineactivetoken 252 {\udiaeresis} % 00FC LATIN SMALL LETTER U WITH DIAERESIS
+\defineactivetoken 253 {\yacute} % 00FD LATIN SMALL LETTER Y WITH ACUTE
+\defineactivetoken 254 {\thorn} % 00FE LATIN SMALL LETTER THORN
+\defineactivetoken 255 {\ydiaeresis} % 00FF LATIN SMALL LETTER Y WITH DIAERESIS
\stopregime
-\endinput
diff --git a/tex/context/base/regi-iso-8859-2.tex b/tex/context/base/regi-iso-8859-2.tex
new file mode 100644
index 000000000..cc14c4ec3
--- /dev/null
+++ b/tex/context/base/regi-iso-8859-2.tex
@@ -0,0 +1,155 @@
+%D \module
+%D [ file=regi-iso-8859-2,
+%D version=2006.04.10,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=iso-8859-2 (East European),
+%D author=script-generated,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Support for iso-8859-2/Latin2 input encoding (regime) for Central European languages,
+%D see also cp1250.
+%D
+%D Usage:
+%D \type{\enableregime[iso-8859-2]} or
+%D \type{\enableregime[latin2]} or
+%D \type{\enableregime[il2]}
+
+
+\startregime[iso-8859-2]
+
+\defineactivetoken 128 {\unknownchar} % 0080 <control>
+\defineactivetoken 129 {\unknownchar} % 0081 <control>
+\defineactivetoken 130 {\unknownchar} % 0082 <control>
+\defineactivetoken 131 {\unknownchar} % 0083 <control>
+\defineactivetoken 132 {\unknownchar} % 0084 <control>
+\defineactivetoken 133 {\unknownchar} % 0085 <control>
+\defineactivetoken 134 {\unknownchar} % 0086 <control>
+\defineactivetoken 135 {\unknownchar} % 0087 <control>
+\defineactivetoken 136 {\unknownchar} % 0088 <control>
+\defineactivetoken 137 {\unknownchar} % 0089 <control>
+\defineactivetoken 138 {\unknownchar} % 008A <control>
+\defineactivetoken 139 {\unknownchar} % 008B <control>
+\defineactivetoken 140 {\unknownchar} % 008C <control>
+\defineactivetoken 141 {\unknownchar} % 008D <control>
+\defineactivetoken 142 {\unknownchar} % 008E <control>
+\defineactivetoken 143 {\unknownchar} % 008F <control>
+\defineactivetoken 144 {\unknownchar} % 0090 <control>
+\defineactivetoken 145 {\unknownchar} % 0091 <control>
+\defineactivetoken 146 {\unknownchar} % 0092 <control>
+\defineactivetoken 147 {\unknownchar} % 0093 <control>
+\defineactivetoken 148 {\unknownchar} % 0094 <control>
+\defineactivetoken 149 {\unknownchar} % 0095 <control>
+\defineactivetoken 150 {\unknownchar} % 0096 <control>
+\defineactivetoken 151 {\unknownchar} % 0097 <control>
+\defineactivetoken 152 {\unknownchar} % 0098 <control>
+\defineactivetoken 153 {\unknownchar} % 0099 <control>
+\defineactivetoken 154 {\unknownchar} % 009A <control>
+\defineactivetoken 155 {\unknownchar} % 009B <control>
+\defineactivetoken 156 {\unknownchar} % 009C <control>
+\defineactivetoken 157 {\unknownchar} % 009D <control>
+\defineactivetoken 158 {\unknownchar} % 009E <control>
+\defineactivetoken 159 {\unknownchar} % 009F <control>
+\defineactivetoken 160 {\nonbreakablespace} % 00A0 NO-BREAK SPACE
+\defineactivetoken 161 {\Aogonek} % 0104 LATIN CAPITAL LETTER A WITH OGONEK
+\defineactivetoken 162 {\textbreve} % 02D8 BREVE
+\defineactivetoken 163 {\Lstroke} % 0141 LATIN CAPITAL LETTER L WITH STROKE
+\defineactivetoken 164 {\textcurrency} % 00A4 CURRENCY SIGN
+\defineactivetoken 165 {\Lcaron} % 013D LATIN CAPITAL LETTER L WITH CARON
+\defineactivetoken 166 {\Sacute} % 015A LATIN CAPITAL LETTER S WITH ACUTE
+\defineactivetoken 167 {\sectionmark} % 00A7 SECTION SIGN
+\defineactivetoken 168 {\textdiaeresis} % 00A8 DIAERESIS
+\defineactivetoken 169 {\Scaron} % 0160 LATIN CAPITAL LETTER S WITH CARON
+\defineactivetoken 170 {\Scedilla} % 015E LATIN CAPITAL LETTER S WITH CEDILLA
+\defineactivetoken 171 {\Tcaron} % 0164 LATIN CAPITAL LETTER T WITH CARON
+\defineactivetoken 172 {\Zacute} % 0179 LATIN CAPITAL LETTER Z WITH ACUTE
+\defineactivetoken 173 {\softhyphen} % 00AD SOFT HYPHEN
+\defineactivetoken 174 {\Zcaron} % 017D LATIN CAPITAL LETTER Z WITH CARON
+\defineactivetoken 175 {\Zdotaccent} % 017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
+\defineactivetoken 176 {\textdegree} % 00B0 DEGREE SIGN
+\defineactivetoken 177 {\aogonek} % 0105 LATIN SMALL LETTER A WITH OGONEK
+\defineactivetoken 178 {\textogonek} % 02DB OGONEK
+\defineactivetoken 179 {\lstroke} % 0142 LATIN SMALL LETTER L WITH STROKE
+\defineactivetoken 180 {\textacute} % 00B4 ACUTE ACCENT
+\defineactivetoken 181 {\lcaron} % 013E LATIN SMALL LETTER L WITH CARON
+\defineactivetoken 182 {\sacute} % 015B LATIN SMALL LETTER S WITH ACUTE
+\defineactivetoken 183 {\textcaron} % 02C7 CARON
+\defineactivetoken 184 {\textcedilla} % 00B8 CEDILLA
+\defineactivetoken 185 {\scaron} % 0161 LATIN SMALL LETTER S WITH CARON
+\defineactivetoken 186 {\scedilla} % 015F LATIN SMALL LETTER S WITH CEDILLA
+\defineactivetoken 187 {\tcaron} % 0165 LATIN SMALL LETTER T WITH CARON
+\defineactivetoken 188 {\zacute} % 017A LATIN SMALL LETTER Z WITH ACUTE
+\defineactivetoken 189 {\texthungarumlaut} % 02DD DOUBLE ACUTE ACCENT
+\defineactivetoken 190 {\zcaron} % 017E LATIN SMALL LETTER Z WITH CARON
+\defineactivetoken 191 {\zdotaccent} % 017C LATIN SMALL LETTER Z WITH DOT ABOVE
+\defineactivetoken 192 {\Racute} % 0154 LATIN CAPITAL LETTER R WITH ACUTE
+\defineactivetoken 193 {\Aacute} % 00C1 LATIN CAPITAL LETTER A WITH ACUTE
+\defineactivetoken 194 {\Acircumflex} % 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 195 {\Abreve} % 0102 LATIN CAPITAL LETTER A WITH BREVE
+\defineactivetoken 196 {\Adiaeresis} % 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+\defineactivetoken 197 {\Lacute} % 0139 LATIN CAPITAL LETTER L WITH ACUTE
+\defineactivetoken 198 {\Cacute} % 0106 LATIN CAPITAL LETTER C WITH ACUTE
+\defineactivetoken 199 {\Ccedilla} % 00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+\defineactivetoken 200 {\Ccaron} % 010C LATIN CAPITAL LETTER C WITH CARON
+\defineactivetoken 201 {\Eacute} % 00C9 LATIN CAPITAL LETTER E WITH ACUTE
+\defineactivetoken 202 {\Eogonek} % 0118 LATIN CAPITAL LETTER E WITH OGONEK
+\defineactivetoken 203 {\Ediaeresis} % 00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+\defineactivetoken 204 {\Ecaron} % 011A LATIN CAPITAL LETTER E WITH CARON
+\defineactivetoken 205 {\Iacute} % 00CD LATIN CAPITAL LETTER I WITH ACUTE
+\defineactivetoken 206 {\Icircumflex} % 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 207 {\Dcaron} % 010E LATIN CAPITAL LETTER D WITH CARON
+\defineactivetoken 208 {\Dstroke} % 0110 LATIN CAPITAL LETTER D WITH STROKE
+\defineactivetoken 209 {\Nacute} % 0143 LATIN CAPITAL LETTER N WITH ACUTE
+\defineactivetoken 210 {\Ncaron} % 0147 LATIN CAPITAL LETTER N WITH CARON
+\defineactivetoken 211 {\Oacute} % 00D3 LATIN CAPITAL LETTER O WITH ACUTE
+\defineactivetoken 212 {\Ocircumflex} % 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 213 {\Ohungarumlaut} % 0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+\defineactivetoken 214 {\Odiaeresis} % 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+\defineactivetoken 215 {\textmultiply} % 00D7 MULTIPLICATION SIGN
+\defineactivetoken 216 {\Rcaron} % 0158 LATIN CAPITAL LETTER R WITH CARON
+\defineactivetoken 217 {\Uring} % 016E LATIN CAPITAL LETTER U WITH RING ABOVE
+\defineactivetoken 218 {\Uacute} % 00DA LATIN CAPITAL LETTER U WITH ACUTE
+\defineactivetoken 219 {\Uhungarumlaut} % 0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+\defineactivetoken 220 {\Udiaeresis} % 00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+\defineactivetoken 221 {\Yacute} % 00DD LATIN CAPITAL LETTER Y WITH ACUTE
+\defineactivetoken 222 {\Tcedilla} % 0162 LATIN CAPITAL LETTER T WITH CEDILLA
+\defineactivetoken 223 {\ssharp} % 00DF LATIN SMALL LETTER SHARP S
+\defineactivetoken 224 {\racute} % 0155 LATIN SMALL LETTER R WITH ACUTE
+\defineactivetoken 225 {\aacute} % 00E1 LATIN SMALL LETTER A WITH ACUTE
+\defineactivetoken 226 {\acircumflex} % 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 227 {\abreve} % 0103 LATIN SMALL LETTER A WITH BREVE
+\defineactivetoken 228 {\adiaeresis} % 00E4 LATIN SMALL LETTER A WITH DIAERESIS
+\defineactivetoken 229 {\lacute} % 013A LATIN SMALL LETTER L WITH ACUTE
+\defineactivetoken 230 {\cacute} % 0107 LATIN SMALL LETTER C WITH ACUTE
+\defineactivetoken 231 {\ccedilla} % 00E7 LATIN SMALL LETTER C WITH CEDILLA
+\defineactivetoken 232 {\ccaron} % 010D LATIN SMALL LETTER C WITH CARON
+\defineactivetoken 233 {\eacute} % 00E9 LATIN SMALL LETTER E WITH ACUTE
+\defineactivetoken 234 {\eogonek} % 0119 LATIN SMALL LETTER E WITH OGONEK
+\defineactivetoken 235 {\ediaeresis} % 00EB LATIN SMALL LETTER E WITH DIAERESIS
+\defineactivetoken 236 {\ecaron} % 011B LATIN SMALL LETTER E WITH CARON
+\defineactivetoken 237 {\iacute} % 00ED LATIN SMALL LETTER I WITH ACUTE
+\defineactivetoken 238 {\icircumflex} % 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 239 {\dcaron} % 010F LATIN SMALL LETTER D WITH CARON
+\defineactivetoken 240 {\dstroke} % 0111 LATIN SMALL LETTER D WITH STROKE
+\defineactivetoken 241 {\nacute} % 0144 LATIN SMALL LETTER N WITH ACUTE
+\defineactivetoken 242 {\ncaron} % 0148 LATIN SMALL LETTER N WITH CARON
+\defineactivetoken 243 {\oacute} % 00F3 LATIN SMALL LETTER O WITH ACUTE
+\defineactivetoken 244 {\ocircumflex} % 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 245 {\ohungarumlaut} % 0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
+\defineactivetoken 246 {\odiaeresis} % 00F6 LATIN SMALL LETTER O WITH DIAERESIS
+\defineactivetoken 247 {\textdiv} % 00F7 DIVISION SIGN
+\defineactivetoken 248 {\rcaron} % 0159 LATIN SMALL LETTER R WITH CARON
+\defineactivetoken 249 {\uring} % 016F LATIN SMALL LETTER U WITH RING ABOVE
+\defineactivetoken 250 {\uacute} % 00FA LATIN SMALL LETTER U WITH ACUTE
+\defineactivetoken 251 {\uhungarumlaut} % 0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
+\defineactivetoken 252 {\udiaeresis} % 00FC LATIN SMALL LETTER U WITH DIAERESIS
+\defineactivetoken 253 {\yacute} % 00FD LATIN SMALL LETTER Y WITH ACUTE
+\defineactivetoken 254 {\tcedilla} % 0163 LATIN SMALL LETTER T WITH CEDILLA
+\defineactivetoken 255 {\textdotaccent} % 02D9 DOT ABOVE
+
+\stopregime
+
diff --git a/tex/context/base/regi-iso-8859-7.tex b/tex/context/base/regi-iso-8859-7.tex
index 7cd4b6a30..aa1e2e321 100644
--- a/tex/context/base/regi-iso-8859-7.tex
+++ b/tex/context/base/regi-iso-8859-7.tex
@@ -1,9 +1,9 @@
%D \module
-%D [ file=regi-grk,
-%D version=2003.03.01,
+%D [ file=regi-iso-8859-7,
+%D version=2006.04.10,
%D title=\CONTEXT\ Encoding Macros,
-%D subtitle=Greek,
-%D author=Apostolos Syropoulos,
+%D subtitle=iso-8859-7 (Greek),
+%D author=script-generated,
%D date=\currentdate,
%D copyright=PRAGMA-ADE]
%C
@@ -11,107 +11,145 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\startregime[iso-8859-7]
-
-%
-% Uppercase Greek letters
-%
-
-\defineactivetoken 193 {\greekAlpha}
-\defineactivetoken 194 {\greekBeta}
-\defineactivetoken 195 {\greekGamma}
-\defineactivetoken 196 {\greekDelta}
-\defineactivetoken 197 {\greekEpsilon}
-\defineactivetoken 198 {\greekZeta}
-\defineactivetoken 199 {\greekEta}
-\defineactivetoken 200 {\greekTheta}
-\defineactivetoken 201 {\greekIota}
-\defineactivetoken 202 {\greekKappa}
-\defineactivetoken 203 {\greekLambda}
-\defineactivetoken 204 {\greekMu}
-\defineactivetoken 205 {\greekNu}
-\defineactivetoken 206 {\greekXi}
-\defineactivetoken 207 {\greekOmicron}
-\defineactivetoken 208 {\greekPi}
-\defineactivetoken 209 {\greekRho}
-\defineactivetoken 211 {\greekSigma}
-\defineactivetoken 212 {\greekTau}
-\defineactivetoken 213 {\greekUpsilon}
-\defineactivetoken 214 {\greekPhi}
-\defineactivetoken 215 {\greekChi}
-\defineactivetoken 216 {\greekPsi}
-\defineactivetoken 217 {\greekOmega}
-
-%
-% Lowercase Greek letters
-%
-
-\defineactivetoken 225 {\greekalpha}
-\defineactivetoken 226 {\greekbeta}
-\defineactivetoken 227 {\greekgamma}
-\defineactivetoken 228 {\greekdelta}
-\defineactivetoken 229 {\greekepsilon}
-\defineactivetoken 230 {\greekzeta}
-\defineactivetoken 231 {\greeketa}
-\defineactivetoken 232 {\greektheta}
-\defineactivetoken 233 {\greekiota}
-\defineactivetoken 234 {\greekkappa}
-\defineactivetoken 235 {\greeklambda}
-\defineactivetoken 236 {\greekmu}
-\defineactivetoken 237 {\greeknu}
-\defineactivetoken 238 {\greekxi}
-\defineactivetoken 239 {\greekomicron}
-\defineactivetoken 240 {\greekpi}
-\defineactivetoken 241 {\greekrho}
-\defineactivetoken 242 {\greekfinalsigma}
-\defineactivetoken 243 {\greeksigma}
-\defineactivetoken 244 {\greektau}
-\defineactivetoken 245 {\greekupsilon}
-\defineactivetoken 246 {\greekphi}
-\defineactivetoken 247 {\greekchi}
-\defineactivetoken 248 {\greekpsi}
-\defineactivetoken 249 {\greekomega}
+%D Support for iso-8859-7 input encoding (regime) for Greek,
+%D see also cp1253.
+%D
+%D (Contributor to the original file: Apostolos Syropoulos.)
+%D
+%D Usage:
+%D \type{\enableregime[iso-8859-7]} or
+%D \type{\enableregime[grk]}
-%
-% Accented Uppercase Greek letters
-%
-\defineactivetoken 182 {\greekAlphatonos}
-\defineactivetoken 184 {\greekEpsilontonos}
-\defineactivetoken 185 {\greekEtatonos}
-\defineactivetoken 186 {\greekIotatonos}
-\defineactivetoken 188 {\greekOmicrontonos}
-\defineactivetoken 190 {\greekUpsilontonos}
-\defineactivetoken 191 {\greekOmegatonos}
-\defineactivetoken 218 {\greekIotadialytika}
-\defineactivetoken 219 {\greekUpsilondialytika}
-
-%
-% Accented Lowercase Greek letters
-%
-
-\defineactivetoken 220 {\greekalphatonos}
-\defineactivetoken 221 {\greekepsilontonos}
-\defineactivetoken 222 {\greeketatonos}
-\defineactivetoken 223 {\greekiotatonos}
-\defineactivetoken 252 {\greekomicrontonos}
-\defineactivetoken 253 {\greekupsilontonos}
-\defineactivetoken 254 {\greekomegatonos}
-\defineactivetoken 250 {\greekiotadialytika}
-\defineactivetoken 251 {\greekupsilondialytika}
-\defineactivetoken 192 {\greekiotadialytikatonos}
-\defineactivetoken 224 {\greekupsilondialytikatonos}
-
-%
-% Miscellaneous Greek symbols
-%
+\startregime[iso-8859-7]
-\defineactivetoken 171 {\greekleftquot}
-\defineactivetoken 187 {\greekrightquot}
-\defineactivetoken 180 {\greektonos}
-\defineactivetoken 181 {\greekdialytikatonos}
-\defineactivetoken 162 {\greekapostrophos}
+\defineactivetoken 128 {\unknownchar} % 0080 <control>
+\defineactivetoken 129 {\unknownchar} % 0081 <control>
+\defineactivetoken 130 {\unknownchar} % 0082 <control>
+\defineactivetoken 131 {\unknownchar} % 0083 <control>
+\defineactivetoken 132 {\unknownchar} % 0084 <control>
+\defineactivetoken 133 {\unknownchar} % 0085 <control>
+\defineactivetoken 134 {\unknownchar} % 0086 <control>
+\defineactivetoken 135 {\unknownchar} % 0087 <control>
+\defineactivetoken 136 {\unknownchar} % 0088 <control>
+\defineactivetoken 137 {\unknownchar} % 0089 <control>
+\defineactivetoken 138 {\unknownchar} % 008A <control>
+\defineactivetoken 139 {\unknownchar} % 008B <control>
+\defineactivetoken 140 {\unknownchar} % 008C <control>
+\defineactivetoken 141 {\unknownchar} % 008D <control>
+\defineactivetoken 142 {\unknownchar} % 008E <control>
+\defineactivetoken 143 {\unknownchar} % 008F <control>
+\defineactivetoken 144 {\unknownchar} % 0090 <control>
+\defineactivetoken 145 {\unknownchar} % 0091 <control>
+\defineactivetoken 146 {\unknownchar} % 0092 <control>
+\defineactivetoken 147 {\unknownchar} % 0093 <control>
+\defineactivetoken 148 {\unknownchar} % 0094 <control>
+\defineactivetoken 149 {\unknownchar} % 0095 <control>
+\defineactivetoken 150 {\unknownchar} % 0096 <control>
+\defineactivetoken 151 {\unknownchar} % 0097 <control>
+\defineactivetoken 152 {\unknownchar} % 0098 <control>
+\defineactivetoken 153 {\unknownchar} % 0099 <control>
+\defineactivetoken 154 {\unknownchar} % 009A <control>
+\defineactivetoken 155 {\unknownchar} % 009B <control>
+\defineactivetoken 156 {\unknownchar} % 009C <control>
+\defineactivetoken 157 {\unknownchar} % 009D <control>
+\defineactivetoken 158 {\unknownchar} % 009E <control>
+\defineactivetoken 159 {\unknownchar} % 009F <control>
+\defineactivetoken 160 {\nonbreakablespace} % 00A0 NO-BREAK SPACE
+\defineactivetoken 161 {\quoteleft} % 2018 LEFT SINGLE QUOTATION MARK
+\defineactivetoken 162 {\quoteright} % 2019 RIGHT SINGLE QUOTATION MARK
+\defineactivetoken 163 {\textsterling} % 00A3 POUND SIGN
+\defineactivetoken 164 {\texteuro} % 20AC EURO SIGN
+\defineactivetoken 165 {\?} % 20AF DRACHMA SIGN
+\defineactivetoken 166 {\textbrokenbar} % 00A6 BROKEN BAR
+\defineactivetoken 167 {\sectionmark} % 00A7 SECTION SIGN
+\defineactivetoken 168 {\textdiaeresis} % 00A8 DIAERESIS
+\defineactivetoken 169 {\copyright} % 00A9 COPYRIGHT SIGN
+\defineactivetoken 170 {\?} % 037A GREEK YPOGEGRAMMENI
+\defineactivetoken 171 {\leftguillemot} % 00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 172 {\textlognot} % 00AC NOT SIGN
+\defineactivetoken 173 {\softhyphen} % 00AD SOFT HYPHEN
+\defineactivetoken 175 {\texthorizontalbar} % 2015 HORIZONTAL BAR
+\defineactivetoken 176 {\textdegree} % 00B0 DEGREE SIGN
+\defineactivetoken 177 {\textpm} % 00B1 PLUS-MINUS SIGN
+\defineactivetoken 178 {\twosuperior} % 00B2 SUPERSCRIPT TWO
+\defineactivetoken 179 {\threesuperior} % 00B3 SUPERSCRIPT THREE
+\defineactivetoken 180 {\greektonos} % 0384 GREEK TONOS
+\defineactivetoken 181 {\greekdialytikatonos} % 0385 GREEK DIALYTIKA TONOS
+\defineactivetoken 182 {\greekAlphatonos} % 0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
+\defineactivetoken 183 {\periodcentered} % 00B7 MIDDLE DOT
+\defineactivetoken 184 {\greekEpsilontonos} % 0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
+\defineactivetoken 185 {\greekEtatonos} % 0389 GREEK CAPITAL LETTER ETA WITH TONOS
+\defineactivetoken 186 {\greekIotatonos} % 038A GREEK CAPITAL LETTER IOTA WITH TONOS
+\defineactivetoken 187 {\rightguillemot} % 00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+\defineactivetoken 188 {\greekOmicrontonos} % 038C GREEK CAPITAL LETTER OMICRON WITH TONOS
+\defineactivetoken 189 {\onehalf} % 00BD VULGAR FRACTION ONE HALF
+\defineactivetoken 190 {\greekUpsilontonos} % 038E GREEK CAPITAL LETTER UPSILON WITH TONOS
+\defineactivetoken 191 {\greekOmegatonos} % 038F GREEK CAPITAL LETTER OMEGA WITH TONOS
+\defineactivetoken 192 {\greekiotadialytikatonos} % 0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+\defineactivetoken 193 {\greekAlpha} % 0391 GREEK CAPITAL LETTER ALPHA
+\defineactivetoken 194 {\greekBeta} % 0392 GREEK CAPITAL LETTER BETA
+\defineactivetoken 195 {\greekGamma} % 0393 GREEK CAPITAL LETTER GAMMA
+\defineactivetoken 196 {\greekDelta} % 0394 GREEK CAPITAL LETTER DELTA
+\defineactivetoken 197 {\greekEpsilon} % 0395 GREEK CAPITAL LETTER EPSILON
+\defineactivetoken 198 {\greekZeta} % 0396 GREEK CAPITAL LETTER ZETA
+\defineactivetoken 199 {\greekEta} % 0397 GREEK CAPITAL LETTER ETA
+\defineactivetoken 200 {\greekTheta} % 0398 GREEK CAPITAL LETTER THETA
+\defineactivetoken 201 {\greekIota} % 0399 GREEK CAPITAL LETTER IOTA
+\defineactivetoken 202 {\greekKappa} % 039A GREEK CAPITAL LETTER KAPPA
+\defineactivetoken 203 {\greekLambda} % 039B GREEK CAPITAL LETTER LAMDA
+\defineactivetoken 204 {\greekMu} % 039C GREEK CAPITAL LETTER MU
+\defineactivetoken 205 {\greekNu} % 039D GREEK CAPITAL LETTER NU
+\defineactivetoken 206 {\greekXi} % 039E GREEK CAPITAL LETTER XI
+\defineactivetoken 207 {\greekOmicron} % 039F GREEK CAPITAL LETTER OMICRON
+\defineactivetoken 208 {\greekPi} % 03A0 GREEK CAPITAL LETTER PI
+\defineactivetoken 209 {\greekRho} % 03A1 GREEK CAPITAL LETTER RHO
+\defineactivetoken 210 {\unknownchar} % <undefined>
+\defineactivetoken 211 {\greekSigma} % 03A3 GREEK CAPITAL LETTER SIGMA
+\defineactivetoken 212 {\greekTau} % 03A4 GREEK CAPITAL LETTER TAU
+\defineactivetoken 213 {\greekUpsilon} % 03A5 GREEK CAPITAL LETTER UPSILON
+\defineactivetoken 214 {\greekPhi} % 03A6 GREEK CAPITAL LETTER PHI
+\defineactivetoken 215 {\greekChi} % 03A7 GREEK CAPITAL LETTER CHI
+\defineactivetoken 216 {\greekPsi} % 03A8 GREEK CAPITAL LETTER PSI
+\defineactivetoken 217 {\greekOmega} % 03A9 GREEK CAPITAL LETTER OMEGA
+\defineactivetoken 218 {\greekIotadialytika} % 03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+\defineactivetoken 219 {\greekUpsilondialytika} % 03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+\defineactivetoken 220 {\greekalphatonos} % 03AC GREEK SMALL LETTER ALPHA WITH TONOS
+\defineactivetoken 221 {\greekepsilontonos} % 03AD GREEK SMALL LETTER EPSILON WITH TONOS
+\defineactivetoken 222 {\greeketatonos} % 03AE GREEK SMALL LETTER ETA WITH TONOS
+\defineactivetoken 223 {\greekiotatonos} % 03AF GREEK SMALL LETTER IOTA WITH TONOS
+\defineactivetoken 224 {\greekupsilondialytikatonos} % 03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+\defineactivetoken 225 {\greekalpha} % 03B1 GREEK SMALL LETTER ALPHA
+\defineactivetoken 226 {\greekbeta} % 03B2 GREEK SMALL LETTER BETA
+\defineactivetoken 227 {\greekgamma} % 03B3 GREEK SMALL LETTER GAMMA
+\defineactivetoken 228 {\greekdelta} % 03B4 GREEK SMALL LETTER DELTA
+\defineactivetoken 229 {\greekepsilon} % 03B5 GREEK SMALL LETTER EPSILON
+\defineactivetoken 230 {\greekzeta} % 03B6 GREEK SMALL LETTER ZETA
+\defineactivetoken 231 {\greeketa} % 03B7 GREEK SMALL LETTER ETA
+\defineactivetoken 232 {\greektheta} % 03B8 GREEK SMALL LETTER THETA
+\defineactivetoken 233 {\greekiota} % 03B9 GREEK SMALL LETTER IOTA
+\defineactivetoken 234 {\greekkappa} % 03BA GREEK SMALL LETTER KAPPA
+\defineactivetoken 235 {\greeklambda} % 03BB GREEK SMALL LETTER LAMDA
+\defineactivetoken 236 {\greekmu} % 03BC GREEK SMALL LETTER MU
+\defineactivetoken 237 {\greeknu} % 03BD GREEK SMALL LETTER NU
+\defineactivetoken 238 {\greekxi} % 03BE GREEK SMALL LETTER XI
+\defineactivetoken 239 {\greekomicron} % 03BF GREEK SMALL LETTER OMICRON
+\defineactivetoken 240 {\greekpi} % 03C0 GREEK SMALL LETTER PI
+\defineactivetoken 241 {\greekrho} % 03C1 GREEK SMALL LETTER RHO
+\defineactivetoken 242 {\greekfinalsigma} % 03C2 GREEK SMALL LETTER FINAL SIGMA
+\defineactivetoken 243 {\greeksigma} % 03C3 GREEK SMALL LETTER SIGMA
+\defineactivetoken 244 {\greektau} % 03C4 GREEK SMALL LETTER TAU
+\defineactivetoken 245 {\greekupsilon} % 03C5 GREEK SMALL LETTER UPSILON
+\defineactivetoken 246 {\greekphi} % 03C6 GREEK SMALL LETTER PHI
+\defineactivetoken 247 {\greekchi} % 03C7 GREEK SMALL LETTER CHI
+\defineactivetoken 248 {\greekpsi} % 03C8 GREEK SMALL LETTER PSI
+\defineactivetoken 249 {\greekomega} % 03C9 GREEK SMALL LETTER OMEGA
+\defineactivetoken 250 {\greekiotadialytika} % 03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA
+\defineactivetoken 251 {\greekupsilondiaeresis} % 03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+\defineactivetoken 252 {\greekomicrontonos} % 03CC GREEK SMALL LETTER OMICRON WITH TONOS
+\defineactivetoken 253 {\greekupsilontonos} % 03CD GREEK SMALL LETTER UPSILON WITH TONOS
+\defineactivetoken 254 {\greekomegatonos} % 03CE GREEK SMALL LETTER OMEGA WITH TONOS
+\defineactivetoken 255 {\unknownchar} % <undefined>
\stopregime
-\endinput
diff --git a/tex/context/base/regi-syn.tex b/tex/context/base/regi-syn.tex
index 53f03f5a3..324ccf62b 100644
--- a/tex/context/base/regi-syn.tex
+++ b/tex/context/base/regi-syn.tex
@@ -55,14 +55,8 @@
% for historical reasons / compatibility
\defineregimesynonym [windows] [cp1252]
-\defineregimesynonym [win] [cp1252]
\defineregimesynonym [grk] [iso-8859-7]
-
-% todo: regi-cyp has more in it
-%
-% some day mojca will figure out regi-cyp which has
-% multiple variants in it
-
\defineregimesynonym [iso88595] [iso-8859-5]
\protect \endinput
+
diff --git a/tex/context/base/sort-def.tex b/tex/context/base/sort-def.tex
index e2496f196..10dc31b14 100644
--- a/tex/context/base/sort-def.tex
+++ b/tex/context/base/sort-def.tex
@@ -31,6 +31,9 @@
\exportsortexpansion{eth} {}
\exportsortexpansion{Eth} {}
+\exportsortexpansion{dj} {dstroke}
+\exportsortexpansion{Dj} {Dstroke}
+
\exportsortexpansion{Acircumflex} {}
\exportsortexpansion{acircumflex} {}
\exportsortexpansion{Ccircumflex} {}
diff --git a/tex/context/base/x-newcml.tex b/tex/context/base/x-newcml.tex
new file mode 100644
index 000000000..1c2b8f53e
--- /dev/null
+++ b/tex/context/base/x-newcml.tex
@@ -0,0 +1,454 @@
+%D \module
+%D [ file=x-newmml,
+%D version=2006.04.09, % reimplementation
+%D title=\CONTEXT\ XML Modules,
+%D subtitle=ChemML renderer,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This used to be an xtag filter using remapping but the
+%D following is nore in sync with the new mathml methods.
+
+\writestatus{loading}{Context XML Macros (chem ml)}
+
+\unprotect
+
+\def\setupCMLappearance[#1]{\dodoubleargument\getparameters[@@CML#1]}
+
+\defineXMLdirective [chemml] \setupCMLappearance
+
+\defineXMLargument [chem] \automathematics % \rm
+\defineXMLargument [ichem] \inlinemathematics % \rm
+\defineXMLargument [dchem] \displaymathematics % \rm
+
+\def\doifnotXMLparzero#1#2#3%
+ {\ifcase\XMLpar{#1}{#2}{0}\else#3{\XMLpar{#1}{#2}{0}}\fi}
+
+\defineXMLargument [caption] \doCMLcaption
+
+\let\CMLtopcaption\empty
+\let\CMLbotcaption\empty
+
+\chardef\CMLcaptionmode\plusone
+
+\def\doCMLcaption#1%
+ {\ifcase\CMLcaptionmode
+ % can't happen
+ \or
+ \def\CMLbotcaption{#1}%
+ \chardef\CMLcaptionmode\plustwo
+ \or
+ \def\CMLtopcaption{#1}%
+ \chardef\CMLcaptionmode\plusthree
+ \fi}
+
+\def\resetCMLcaption
+ {\let\CMLtopcaption\empty
+ \let\CMLbotcaption\empty
+ \chardef\CMLcaptionmode\plusone}
+
+\resetCMLcaption
+
+\def\doCMLtext#1%
+ {\ifx\CMLtopcaption\empty
+ \setbox0\null
+ \else
+ \setbox0\hbox{\txx\setstrut\strut\ignorespaces\CMLtopcaption\unskip}%
+ \fi
+ \setbox2\hbox{\ignorespaces\strut#1\unskip}%
+ \ifx\CMLbotcaption\empty
+ \setbox4\null
+ \else
+ \setbox4\hbox{\txx\setstrut\strut\ignorespaces\CMLbotcaption\unskip}%
+ \fi
+ \scratchdimen=\wd2\advance\scratchdimen-.5em
+ \ifdim\wd0>\scratchdimen
+ \setbox0\hbox spread .5em{\hss\box0\hss}%
+ \fi
+ \ifdim\wd4>\scratchdimen
+ \setbox4\hbox spread .5em{\hss\box4\hss}%
+ \fi
+ \setbox6=\vbox
+ {\offinterlineskip\halign{\hss##\hss\cr\copy0\cr\copy2\cr\copy4\cr}}%
+ \hbox{\lower\ht4\hbox{\lower\dp2\box6}}}
+
+\def\CMLscript#1%
+ {$\scriptscriptstyle\ignorespaces#1\unskip$}
+
+% \startsetups cml:flush:all
+% \ignorespaces
+% \XMLallnamed{atom,bond,singlebond,doublebond,triplebond}
+% \removeunwantedspaces
+% \stopsetups
+
+\newcounter\currentCMLatom
+\newcounter\nofCMLatoms
+
+\defineXMLenvironmentsave
+ [atom]
+ [n=0,weight=0,protons=0,charge=0]
+ {\directsetup{cml:atom:start}}
+ {\directsetup{cml:atom:stop}}
+
+\startsetups cml:atom:start
+ \removeunwantedspaces
+\stopsetups
+
+\startsetups cml:atom:stop
+ \increment\currentCMLatom
+ \resetCMLcaption
+ \doCMLtext {
+ \bgroup
+ \lohi {
+ \doifnotXMLparzero{atom}{protons}\CMLscript
+ } {
+ \doifnotXMLparzero{atom}{weight}\CMLscript
+ }
+ \ignorespaces
+ \XMLflush{atom}
+ \removeunwantedspaces
+ \lohi {
+ \doifnotXMLparzero{atom}{n}\CMLscript
+ } {
+ \ifnum\nofCMLatoms=\currentCMLatom\relax
+ \doifnotXMLparzero{ion}{charge}\CMLscript
+ \else
+ \doifnotXMLparzero{atom}{charge}\CMLscript
+ \fi
+ }
+ \egroup
+ }
+ \ignorespaces
+\stopsetups
+
+\defineXMLnested % why not environment
+ [molecule]
+ [n=0]
+ {\directsetup{cml:molecule:start}}
+ {\directsetup{cml:molecule:stop}}
+
+\startsetups cml:molecule:start
+ \removeunwantedspaces
+ \begingroup
+ \startsavingXMLelements
+\ignorespaces
+\stopsetups
+
+\startsetups cml:molecule:stop
+\removeunwantedspaces
+ \stopsavingXMLelements
+ \resetCMLcaption
+ \XMLfirstnamed{caption}
+ \doCMLtext {
+ \newcounter\currentCMLatom
+ \newcounter\nofCMLatoms
+ \doifnotXMLparzero{molecule}{n}\firstofoneargument
+ \ignorespaces
+ \XMLallnamed{atom,ion,bond,singlebond,doublebond,triplebond}
+ \removeunwantedspaces
+ }
+ \endgroup
+ \ignorespaces
+\stopsetups
+
+\setupCMLappearance [ion] [\c!alternative=\v!a]
+
+\defineXMLnested
+ [ion]
+ [n=0,charge=0]
+ {\directsetup{cml:ion:start}}
+ {\directsetup{cml:ion:stop}}
+
+\startsetups cml:ion:start
+ \begingroup
+ \startsavingXMLelements
+\ignorespaces
+\stopsetups
+
+\startsetups cml:ion:stop
+\removeunwantedspaces
+ \stopsavingXMLelements
+ \resetCMLcaption
+ \XMLfirstnamed{caption}
+ \doCMLtext {
+ \newcounter\currentCMLatom
+ \newcounter\nofCMLatoms
+ \doifnotXMLparzero{ion}{n}\firstofoneargument
+ \doifelse\@@CMLionalternative\v!b {
+ [\ignorespaces
+ \XMLallnamed{atom,bond,singlebond,doublebond,triplebond}
+ \removeunwantedspaces]
+ \high {
+ \doifnotXMLparzero{ion}{charge}\CMLscript
+ }
+ } {
+ \countXMLnamedstack{atom}
+ \edef\nofCMLatoms{\the\scratchcounter}% todo: \nofXMLchildren
+ \ignorespaces
+ \XMLallnamed{atom,bond,singlebond,doublebond,triplebond}
+ \removeunwantedspaces
+ }
+ }
+ \endgroup
+ \ignorespaces
+\stopsetups
+
+\let\doCMLsymbol\gobbleoneargument
+\let\doCMLarrow \gobblethreearguments
+
+\defineXMLenvironment
+ [reaction]
+ {\directsetup{cml:reaction:start}}
+ {\directsetup{cml:reaction:stop}}
+
+\startsetups cml:reaction:start
+ \begingroup
+ \let\doCMLsymbol\dodoCMLsymbol
+ \let\doCMLarrow \dodoCMLarrow
+\stopsetups
+
+\startsetups cml:reaction:stop
+ \endgroup
+\stopsetups
+
+\defineXMLcommand [plus] {\doCMLsymbol{+}}
+\defineXMLcommand [minus] {\doCMLsymbol{-}}
+\defineXMLcommand [equal] {\doCMLsymbol{=}}
+
+\def\dodoCMLsymbol#1%
+ {\removeunwantedspaces\quad
+ \mathop{#1}%
+ \quad\kern\zeropoint\ignorespaces}
+
+\defineXMLcommand [gives] {\resetCMLcaption\doCMLgives}
+\defineXMLcommand [equilibrium] {\resetCMLcaption\doCMLequilibrium}
+\defineXMLcommand [mesomeric] {\resetCMLcaption\doCMLmesomeric}
+
+\def\dodoCMLarrow#1%
+ {\removeunwantedspaces\quad
+ \doCMLtext{$\vcenter{\offinterlineskip\halign{##\cr\hskip3em\cr#1\cr}}$}%
+ \quad\kern\zeropoint\ignorespaces}
+
+\def\doCMLgives
+ {\doCMLarrow{\rightarrowfill}}
+
+\def\doCMLequilibrium
+ {\doCMLarrow{\rightarrowfill\cr\noalign{\nointerlineskip}\leftarrowfill}}
+
+\def\doCMLmesomeric
+ {\doCMLarrow{$\leftarrow\hskip-1em$\rightarrowfill}}
+
+\defineXMLcommand [bond] [n=1] \doCMLbond
+\defineXMLcommand [singlebond] [n=1] \doCMLsinglebond
+\defineXMLcommand [doublebond] [n=1] \doCMLdoublebond
+\defineXMLcommand [triplebond] [n=1] \doCMLtriplebond
+
+\def\doCMLbond
+ {\ifcase\XMLop{n}\relax
+ \doCMLsinglebond
+ \or
+ \doCMLdoublebond
+ \or
+ \doCMLtriplebond
+ \fi}
+
+\def\doCMLbond
+ {\removeunwantedspaces
+ \hrule \!!width \hsize \!!height .1ex\relax % .4pt
+ \ignorespaces}
+
+\def\dodoCMLbond#1#2#3%
+ {\removeunwantedspaces
+ \begingroup
+ \setbox\scratchbox\hbox{$M$}%
+ \vbox to \ht\scratchbox
+ {\hsize\wd\scratchbox
+ \vskip.1\wd\scratchbox
+ #1\vfill#2\vfill#3%
+ \vskip.1\wd\scratchbox}%
+ \endgroup
+ \ignorespaces}
+
+\def\doCMLsinglebond{\dodoCMLbond\relax \doCMLbond\relax }
+\def\doCMLdoublebond{\dodoCMLbond\doCMLbond\relax \doCMLbond}
+\def\doCMLtriplebond{\dodoCMLbond\doCMLbond\doCMLbond\doCMLbond}
+
+% extensions (uses m-chemic, which thenneeds to be loaded)
+
+% <dchem>
+% <structure>
+% <component>
+% <graphic>SIX,B</graphic>
+% <graphic>R135</graphic>
+% </component>
+% <component>
+% <graphic>R246</graphic>
+% </component>
+% <component>
+% <graphic>RZ</graphic>
+% <text>A,B,C,D,E,F</text>
+% </component>
+% <component>
+% <graphic>Z</graphic>
+% <oxidation n="3">A</oxidation>
+% <annotation location="tl">
+% <text>B</text>
+% <caption>x</caption>
+% </annotation>
+% <oxidation n="3" sign="+">C</oxidation>
+% <text>D,E,F</text>
+% </component>
+% </structure>
+% <structure>
+% <component>
+% <graphic>SIX,B</graphic>
+% <graphic>r135</graphic>
+% </component>
+% <component>
+% <graphic>R246</graphic>
+% </component>
+% <component>
+% <graphic>RZ</graphic>
+% <text>A,B,C,D,E,F</text>
+% </component>
+% </structure>
+% </dchem>
+
+\ifx\XMLttoks \undefined \newtoks \XMLttoks \fi
+\ifx\XMLgtoks \undefined \newtoks \XMLgtoks \fi
+
+\ifx\startchemical\undefined
+ \def\startchemical {\hbox{module chemic is not loaded}}
+ \let\stopchemical {}
+ \def\chemical[#1][#2]{}
+\fi
+
+\defineXMLenvironment
+ [structure]
+ {\startchemical
+ \ignorespaces}
+ {\removeunwantedspaces
+ \stopchemical}
+
+\defineXMLenvironment
+ [component]
+ {\global\XMLgtoks\emptytoks
+ \global\XMLttoks\emptytoks
+ \defineXMLargument[graphic]{\dogetCMLgraphic}%
+ \defineXMLargument[text] {\dogetCMLtext}%
+ \ignorespaces}
+ {\removeunwantedspaces
+ \expanded{\chemical[\the\XMLgtoks][\the\XMLttoks]}%
+ \ignorespaces}
+
+\def\dogetCMLgraphic#1%
+ {\doifelsenothing{\the\XMLgtoks}
+ {\uppercase{\doglobal\appendtoks #1\to\XMLgtoks}}
+ {\uppercase{\doglobal\appendtoks,#1\to\XMLgtoks}}%
+ \ignorespaces}
+
+\def\dogetCMLtext#1%
+ {\doifelsenothing{\the\XMLttoks}
+ {\uppercase{\doglobal\appendtoks #1\to\XMLttoks}}
+ {\uppercase{\doglobal\appendtoks,#1\to\XMLttoks}}%
+ \ignorespaces}
+
+\defineXMLargument
+ [oxidation]
+ [sign=,n=1]
+ {\doCMLoxidation}
+
+\def\doCMLoxidation#1%
+ {\expanded{\dogetCMLtext{\noexpand\chemicaloxidation{\XMLop{cml}}{\XMLop{n}}{#1}}}%
+ \ignorespaces}
+
+% \defineXMLenvironment
+% [annotation]
+% [location=]
+% {\defineXMLsave[text]%
+% \defineXMLsave[caption]}
+% {\removeunwantedspaces
+% \processaction
+% [\XMLpar{annotation}{location}{r}]
+% [ t=>\dodoCMLannotation\chemicaltop,
+% b=>\dodoCMLannotation\chemicalbottom,
+% l=>\dodoCMLannotation\chemicalleft,
+% r=>\dodoCMLannotation\chemicalright,
+% lc=>\dodoCMLannotation\chemicalleftcentered,
+% rc=>\dodoCMLannotation\chemicalrightcentered,
+% tl=>\dodoCMLannotation\chemicaltopleft,
+% bl=>\dodoCMLannotation\chemicalbottomleft,
+% tr=>\dodoCMLannotation\chemicaltopright,
+% br=>\dodoCMLannotation\chemicalbottomright,
+% lt=>\dodoCMLannotation\chemicallefttop,
+% lb=>\dodoCMLannotation\chemicalleftbottom,
+% rt=>\dodoCMLannotation\chemicalrighttop,
+% rb=>\dodoCMLannotation\chemicalrightbottom,
+% x=>\dodoCMLannotation\chemicaltighttext,
+% sl=>\dodoCMLannotation\chemicalsmashedleft,
+% sm=>\dodoCMLannotation\chemicalsmashedmiddle,
+% sr=>\dodoCMLannotation\chemicalsmashedright]%
+% \ignorespaces}
+
+% todo: generic mapper t -> top etc
+
+\mapXMLvalue {cml:a:l} {t} {\dodoCMLannotation\chemicaltop}
+\mapXMLvalue {cml:a:l} {b} {\dodoCMLannotation\chemicalbottom}
+\mapXMLvalue {cml:a:l} {l} {\dodoCMLannotation\chemicalleft}
+\mapXMLvalue {cml:a:l} {r} {\dodoCMLannotation\chemicalright}
+\mapXMLvalue {cml:a:l} {lc} {\dodoCMLannotation\chemicalleftcentered}
+\mapXMLvalue {cml:a:l} {rc} {\dodoCMLannotation\chemicalrightcentered}
+\mapXMLvalue {cml:a:l} {tl} {\dodoCMLannotation\chemicaltopleft}
+\mapXMLvalue {cml:a:l} {bl} {\dodoCMLannotation\chemicalbottomleft}
+\mapXMLvalue {cml:a:l} {tr} {\dodoCMLannotation\chemicaltopright}
+\mapXMLvalue {cml:a:l} {br} {\dodoCMLannotation\chemicalbottomright}
+\mapXMLvalue {cml:a:l} {lt} {\dodoCMLannotation\chemicallefttop}
+\mapXMLvalue {cml:a:l} {lb} {\dodoCMLannotation\chemicalleftbottom}
+\mapXMLvalue {cml:a:l} {rt} {\dodoCMLannotation\chemicalrighttop}
+\mapXMLvalue {cml:a:l} {rb} {\dodoCMLannotation\chemicalrightbottom}
+\mapXMLvalue {cml:a:l} {x} {\dodoCMLannotation\chemicaltighttext}
+\mapXMLvalue {cml:a:l} {sl} {\dodoCMLannotation\chemicalsmashedleft}
+\mapXMLvalue {cml:a:l} {sm} {\dodoCMLannotation\chemicalsmashedmiddle}
+\mapXMLvalue {cml:a:l} {sr} {\dodoCMLannotation\chemicalsmashedright}
+
+% \mapXMLvalue {cml:a:l} {cl} {\dodoCMLannotation\chemicalleftcentered}
+% \mapXMLvalue {cml:a:l} {cr} {\dodoCMLannotation\chemicalrightcentered}
+% \mapXMLvalue {cml:a:l} {lt} {\dodoCMLannotation\chemicaltopleft}
+% \mapXMLvalue {cml:a:l} {lb} {\dodoCMLannotation\chemicalbottomleft}
+% \mapXMLvalue {cml:a:l} {rt} {\dodoCMLannotation\chemicaltopright}
+% \mapXMLvalue {cml:a:l} {rb} {\dodoCMLannotation\chemicalbottomright}
+% \mapXMLvalue {cml:a:l} {tl} {\dodoCMLannotation\chemicallefttop}
+% \mapXMLvalue {cml:a:l} {bl} {\dodoCMLannotation\chemicalleftbottom}
+% \mapXMLvalue {cml:a:l} {tr} {\dodoCMLannotation\chemicalrighttop}
+% \mapXMLvalue {cml:a:l} {br} {\dodoCMLannotation\chemicalrightbottom}
+% \mapXMLvalue {cml:a:l} {ls} {\dodoCMLannotation\chemicalsmashedleft}
+% \mapXMLvalue {cml:a:l} {ms} {\dodoCMLannotation\chemicalsmashedmiddle}
+% \mapXMLvalue {cml:a:l} {rs} {\dodoCMLannotation\chemicalsmashedright}
+
+\defineXMLenvironment
+ [annotation]
+ [location=]
+ {\pushXMLmeaning{text}%
+ \pushXMLmeaning{caption}%
+ \defineXMLsave[text]%
+ \defineXMLsave[caption]}
+ {\removeunwantedspaces
+ \XMLval{cml:a:l}{\XMLpar{annotation}{location}{r}}{\XMLflush{text}}%
+ \popXMLmeaning{text}%
+ \popXMLmeaning{caption}%
+ \ignorespaces}
+
+\def\dodoCMLannotation#1%
+ {\expanded{\dogetCMLtext{\noexpand#1{\XMLflush{caption}}{\XMLflush{text}}}}}
+
+\defineXMLenvironment
+ [forever]
+ {\left[}
+ {\right]}
+
+\protect \endinput
diff --git a/tex/context/base/x-newmml.tex b/tex/context/base/x-newmml.tex
index bf51a336e..5bc4c324a 100644
--- a/tex/context/base/x-newmml.tex
+++ b/tex/context/base/x-newmml.tex
@@ -130,63 +130,22 @@
\stopXMLmapping
-% already generalized
-
-\def\MMCallnamed#1%
- {\dorecurse\XMLstacklevel
- {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}}
- {\getXMLstackdata\recurselevel}}}
-
-\def\defMMCfirstnamed#1#2% \cs list
- {\dorecurse\XMLstacklevel
- {\expanded{\doifinset{\getXMLstackname\recurselevel}{#2}}
- {\defXMLstackdata#1\recurselevel\exitloop}}}
-
-\def\defMMCfirstnamedtext#1#2% \cs list
- {\dorecurse\XMLstacklevel
- {\expanded{\doifinset{\getXMLstackname\recurselevel}{#2}}
- {\edef#1{\getXMLstacktext\recurselevel}\exitloop}}}
-
-\def\MMCfirstnamed#1%
- {\dorecurse\XMLstacklevel
- {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}}
- {\getXMLstackdata\recurselevel\exitloop}}}
-
-\def\MMCnotnamed#1%
- {\dorecurse\XMLstacklevel
- {\expanded{\doifnotinset{\getXMLstackname\recurselevel}{#1}}
- {\getXMLstackdata\recurselevel\exitloop}}}
-
-\let\MMCstackposition\!!zerocount
-
-\def\MMCdoifelsefound#1%
- {\!!doneafalse
- \let\MMCstackposition\!!zerocount
- \dorecurse\XMLstacklevel
- {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}}
- {\let\MMCstackposition\recurselevel\!!doneatrue\exitloop}}%
- \if!!donea
- \expandafter\firstoftwoarguments
- \else
- \expandafter\secondoftwoarguments
- \fi}
-
%D Auxiliary MathML macros: (to be generalized)
\def\doifelseMMCfunction
{\begingroup
- \MMCdoifelsefound{fn}
+ \XMLdoifonstackelse{fn}
{\donetrue}
- {\MMCdoifelsefound{apply}
- {\defMMCfirstnamedtext\ascii{apply}%
+ {\XMLdoifonstackelse{apply}
+ {\defXMLfirstnamedtext\ascii{apply}%
\startsavingXMLelements % best use a substack so that we donnot need to \edef
\ascii
\stopsavingXMLelements}
{}%
- \MMCdoifelsefound{fn}
+ \XMLdoifonstackelse{fn}
{\donetrue}
{\defineXMLsave[ci][type=]%
- \MMCfirstnamed{ci}%
+ \XMLfirstnamed{ci}%
\doifelse{\XMLpar{ci}{type}{}}{fn}
{\donetrue}
{\donefalse}}}%
@@ -690,8 +649,8 @@
{\directsetup{mmc:condition:stop}}
\startsetups mmc:condition:start
-% \MMCdoifelsefound{bvar} {
-% \MMCfirstnamed{bvar}\mid
+% \XMLdoifonstackelse{bvar} {
+% \XMLfirstnamed{bvar}\mid
% } { }
\begingroup
\startsavingXMLelements
@@ -754,10 +713,10 @@
\ifnum\scratchcounter>\plusone
\left(\flushXMLnamedstackwith\plusone{bvar}\MMLccomma\right)
\else
- \MMCfirstnamed{bvar}
+ \XMLfirstnamed{bvar}
\fi
\getXMLentity{mapsto}
- \MMCfirstnamed{apply,reln,ci,cn}
+ \XMLfirstnamed{apply,reln,ci,cn}
}
\endgroup
\stopsetups
@@ -994,14 +953,14 @@
\setupMMLappearance[root][\c!symbol=\v!yes]
\startsetups mmc:root
- \MMCdoifelsefound {degree} {
+ \XMLdoifonstackelse {degree} {
\root
- \doifnot\@@MMLrootsymbol\v!no{\MMLcreset\MMCfirstnamed{degree}}
+ \doifnot\@@MMLrootsymbol\v!no{\MMLcreset\XMLfirstnamed{degree}}
\of
} {
\sqrt
}
- {\MMLcreset\MMCfirstnamed{apply,reln,ci,cn}}
+ {\MMLcreset\XMLfirstnamed{apply,reln,ci,cn}}
\stopsetups
% gcd
@@ -1039,10 +998,10 @@
\startsetups mmc:forall-exists
_{\flushXMLnamedstackwith\plustwo{bvar}\MMLccomma}
- \MMCdoifelsefound {condition} {
+ \XMLdoifonstackelse {condition} {
\getXMLentity{ThickSpace}
\begingroup
- \MMCfirstnamed{condition}
+ \XMLfirstnamed{condition}
\endgroup
\countXMLnamedstack {apply,reln,ci,cn}
\ifcase\scratchcounter
@@ -1061,7 +1020,7 @@
\right.
\fi
} {
- :\MMCfirstnamed{apply,reln,ci,cn}
+ :\XMLfirstnamed{apply,reln,ci,cn}
}
\stopsetups
@@ -1159,19 +1118,19 @@
\startsetups mmc:int
\MMLcreset
- \MMCdoifelsefound{domainofapplication} {
- \int\doMMLlimits{int}_{\MMCfirstnamed{domainofapplication}}\relax
+ \XMLdoifonstackelse{domainofapplication} {
+ \int\doMMLlimits{int}_{\XMLfirstnamed{domainofapplication}}\relax
} {
- \MMCdoifelsefound{condition} {
- \int\doMMLlimits{int}_{\MMCfirstnamed{condition}}\relax
+ \XMLdoifonstackelse{condition} {
+ \int\doMMLlimits{int}_{\XMLfirstnamed{condition}}\relax
} {
- \MMCdoifelsefound{lowlimit} {
+ \XMLdoifonstackelse{lowlimit} {
\int\doMMLlimits{int}
- _{\MMCfirstnamed{lowlimit}}
- ^{\MMCfirstnamed{uplimit}}
+ _{\XMLfirstnamed{lowlimit}}
+ ^{\XMLfirstnamed{uplimit}}
} {
% funny, why do we have lowlimit/uplimit then
- \MMCdoifelsefound{interval} {
+ \XMLdoifonstackelse{interval} {
\begingroup
\startlocalsetups mmc:interval:start %
\begingroup
@@ -1185,7 +1144,7 @@
\stoplocalsetups
\globallet\MMLfirstelement \empty
\globallet\MMLsecondelement\empty
- \MMCfirstnamed{interval}
+ \XMLfirstnamed{interval}
\endgroup
\int\doMMLlimits{int}
_{\MMLfirstelement}
@@ -1197,21 +1156,21 @@
}
}
\MMLcreset
- \MMCdoifelsefound{apply} {
+ \XMLdoifonstackelse{apply} {
\doifelseMMCfunction {
- \MMCfirstnamed{apply}
+ \XMLfirstnamed{apply}
} {
% if there are too many () now, we need to be more clever
- \left(\MMCfirstnamed{apply}\right)
+ \left(\XMLfirstnamed{apply}\right)
}
} {
- \MMCfirstnamed{ci}
+ \XMLfirstnamed{ci}
}
- \MMCdoifelsefound{bvar} {
+ \XMLdoifonstackelse{bvar} {
\,% \getXMLentity{ThinSpace}%
% {\MMLrm\getXMLentity{mathematicald}}
\mfunction{\getXMLentity{mathematicald}}
- \MMCfirstnamed{bvar}
+ \XMLfirstnamed{bvar}
} {
% nothing
}
@@ -1224,9 +1183,9 @@
\startsetups mmc:diff
\MMLcreset
- \MMCdoifelsefound{bvar} {
+ \XMLdoifonstackelse{bvar} {
\frac {
- \MMCdoifelsefound{degree} {
+ \XMLdoifonstackelse{degree} {
\collectXMLnamedstack{degree}\empty
} {
\collectXMLnamedstacknamed{bvar}{degree}+
@@ -1237,13 +1196,13 @@
\mfunction{\getXMLentity{mathematicald}}
^{\the\XMLRtoks}
\doif\@@MMLdifflocation\v!top {
- \MMCdoifelsefound{ci} {
- \MMCfirstnamed{ci}
+ \XMLdoifonstackelse{ci} {
+ \XMLfirstnamed{ci}
} {
% \doifelseMMCfunction {
- \MMLcreset\MMCfirstnamed{apply}
+ \MMLcreset\XMLfirstnamed{apply}
% } {
-% \left(\MMLcreset\MMCfirstnamed{apply}\right)
+% \left(\MMLcreset\XMLfirstnamed{apply}\right)
% }
}
}
@@ -1254,14 +1213,14 @@
\mfunction{\getXMLentity{mathematicald}}
\begingroup
\defineXMLsave[degree]
- \MMCfirstnamed{bvar}
+ \XMLfirstnamed{bvar}
\doifXMLdata{degree} {
^{\XMLflush{degree}}
}
\endgroup
}
\doifnot\@@MMLdifflocation\v!top {
- \left(\MMLcreset\MMCfirstnamed{apply,ci}\right)
+ \left(\MMLcreset\XMLfirstnamed{apply,ci}\right)
}
} {
\flushXMLstackfrom\plustwo^\prime
@@ -1269,18 +1228,18 @@
\stopsetups
\startsetups mmc:partialdiff
- \MMCdoifelsefound{list} {
+ \XMLdoifonstackelse{list} {
\getXMLentity{capitaldifferentiald}_{
\begingroup
\setfalse\MMLlistdelimiters
- \MMCallnamed{list}
+ \XMLallnamed{list}
\endgroup
}
- \MMCfirstnamed{apply,reln,ci,cn}
+ \XMLfirstnamed{apply,reln,ci,cn}
} {
- \MMCdoifelsefound{bvar} {
+ \XMLdoifonstackelse{bvar} {
\frac {
- \MMCdoifelsefound{degree} {
+ \XMLdoifonstackelse{degree} {
\collectXMLnamedstack{degree}\empty
} {
\collectXMLnamedstacknamed{bvar}{degree}+
@@ -1289,15 +1248,15 @@
% \let\MMLcDEGREE\gobbletwoarguments
% \doifelseMMCfunction\MMLcreset\donothing
\MMLcreset
- \MMCfirstnamed{apply,reln,ci,cn}
+ \XMLfirstnamed{apply,reln,ci,cn}
} {
\defineXMLnested[bvar]
{\directsetup{mmc:bvar:diff:start}}
{\directsetup{mmc:bvar:diff:stop}}
- \MMCfirstnamed{bvar}
+ \XMLfirstnamed{bvar}
}
} {
- \MMCfirstnamed{apply,reln,ci,cn}
+ \XMLfirstnamed{apply,reln,ci,cn}
}
}
\stopsetups
@@ -1309,9 +1268,9 @@
\startsetups mmc:bvar:diff:stop
\stopsavingXMLelements
- \getXMLentity{differentiald}\MMCfirstnamed{apply,reln,ci,cn}
- \MMCdoifelsefound{degree} {
- ^{\MMCfirstnamed{degree}}
+ \getXMLentity{differentiald}\XMLfirstnamed{apply,reln,ci,cn}
+ \XMLdoifonstackelse{degree} {
+ ^{\XMLfirstnamed{degree}}
} {
% nothing
}
@@ -1362,8 +1321,8 @@
\startsetups mmc:set:stop
\stopsavingXMLelements
- \MMCdoifelsefound{condition} {
- \left\{\MMCfirstnamed{bvar}\,\middle\vert\,\MMCfirstnamed{condition}\right\}
+ \XMLdoifonstackelse{condition} {
+ \left\{\XMLfirstnamed{bvar}\,\middle\vert\,\XMLfirstnamed{condition}\right\}
} {
\left\{\flushXMLstackwith\plusone\MMLccomma\right\}
}
@@ -1421,22 +1380,22 @@
\halign{$\scriptstyle\hss##\hss$\cr#1\crcr}}}
\def\MMLcSUMandPRODUCT#1#2%
- {\MMCdoifelsefound{condition,bvar,lowlimit}
+ {\XMLdoifonstackelse{condition,bvar,lowlimit}
{\def\MMLcSUMlow
- {_{\MMCdoifelsefound{condition}
+ {_{\XMLdoifonstackelse{condition}
{\collectXMLnamedstack{condition}{\crcr}%
\stackMMLsubscripts{\the\XMLRtoks}}
- {\MMCdoifelsefound{bvar}
- {\MMCfirstnamed{bvar}%
- \MMCdoifelsefound{lowlimit}{=}{}}%
+ {\XMLdoifonstackelse{bvar}
+ {\XMLfirstnamed{bvar}%
+ \XMLdoifonstackelse{lowlimit}{=}{}}%
{}%
- \MMCfirstnamed{lowlimit}}}}}
+ \XMLfirstnamed{lowlimit}}}}}
{\let\MMLcSUMlow\empty}%
- \MMCdoifelsefound{uplimit}
- {\def\MMLcSUMup{^{\MMCfirstnamed{uplimit}}}}
+ \XMLdoifonstackelse{uplimit}
+ {\def\MMLcSUMup{^{\XMLfirstnamed{uplimit}}}}
{\let\MMLcSUMup\empty}%
\MMLcreset#2\doMMLlimits{#1}\MMLcSUMup\MMLcSUMlow
- \MMLcreset\MMCfirstnamed{apply,ci}}
+ \MMLcreset\XMLfirstnamed{apply,ci}}
\defineXMLcommand [limit] {\directsetup{mmc:limit}}
@@ -1446,17 +1405,17 @@
\MMLcreset \lim
\doMMLlimits{limit}_{
\MMLcreset
- \MMCdoifelsefound {condition} {
- \MMCfirstnamed{condition}
+ \XMLdoifonstackelse {condition} {
+ \XMLfirstnamed{condition}
} {
- \MMCdoifelsefound {bvar} {
- \MMCfirstnamed{bvar}\rightarrow
+ \XMLdoifonstackelse {bvar} {
+ \XMLfirstnamed{bvar}\rightarrow
} {
}
- \MMCfirstnamed{lowlimit}
+ \XMLfirstnamed{lowlimit}
}
}
- \MMCfirstnamed{apply}
+ \XMLfirstnamed{apply}
\stopsetups
\defineXMLcommand [tendsto] [type=default] {\directsetup{mmc:tendsto}}
@@ -1481,17 +1440,17 @@
\setupMMLappearance[log][\c!location=\v!right]
\startsetups mmc:exp
- \getXMLentity{exponentiale}^{\MMCfirstnamed{apply,reln,ci,cn}}
+ \getXMLentity{exponentiale}^{\XMLfirstnamed{apply,reln,ci,cn}}
\stopsetups
\startsetups mmc:log
- \MMCdoifelsefound {logbase} {
+ \XMLdoifonstackelse {logbase} {
\doifelse\@@MMLloglocation\v!left {
- \mathop{{}^{{\defineXMLprocess[logbase]\MMCfirstnamed{logbase}}}
+ \mathop{{}^{{\defineXMLprocess[logbase]\XMLfirstnamed{logbase}}}
\getXMLentity{NegThinSpace}
\getXMLentity{log}}
} {
- \getXMLentity{log}_{{\defineXMLprocess[logbase]\MMCfirstnamed{logbase}}}
+ \getXMLentity{log}_{{\defineXMLprocess[logbase]\XMLfirstnamed{logbase}}}
}
} {
\getXMLentity{log}
@@ -1516,9 +1475,9 @@
\defineXMLprocess [momentabout]
\startsetups mmc:moment
- \left\langle\MMCfirstnamed{apply,reln,ci,cn}^{\MMCfirstnamed{degree}}\right\rangle
- \MMCdoifelsefound{momentabout} {
- _{\MMCfirstnamed{momentabout}}
+ \left\langle\XMLfirstnamed{apply,reln,ci,cn}^{\XMLfirstnamed{degree}}\right\rangle
+ \XMLdoifonstackelse{momentabout} {
+ _{\XMLfirstnamed{momentabout}}
} {
}
\stopsetups
@@ -1633,7 +1592,7 @@
\startsetups mmc:semantics:stop
\stopsavingXMLelements
- \MMCdoifelsefound {annotation} {
+ \XMLdoifonstackelse {annotation} {
\flushXMLnamedstackwith\plusone{annotation}\empty
} {
\flushXMLnamedstackwith\plusone{apply}\empty
@@ -1713,8 +1672,8 @@
%
% best is to grab the apply (independent of order), (*1*), so:
%
- \MMCdoifelsefound {apply} {
- \doifelseMMCfunctioninapply \MMCstackposition \MMLcfunctionlist \donefalse \donetrue
+ \XMLdoifonstackelse {apply} {
+ \doifelseMMCfunctioninapply \XMLstackposition \MMLcfunctionlist \donefalse \donetrue
} {
\donefalse
}
diff --git a/tex/context/base/x-newpml.tex b/tex/context/base/x-newpml.tex
index e22aa3392..30b520610 100644
--- a/tex/context/base/x-newpml.tex
+++ b/tex/context/base/x-newpml.tex
@@ -1,5 +1,5 @@
%D \module
-%D [ file=xtag-pmu,
+%D [ file=xtag-pml,
%D version=2001.06.10,
%D title=\CONTEXT\ XML Support,
%D subtitle=Units,
@@ -13,6 +13,8 @@
\writestatus{loading}{Context XML Macros (units)}
+\usemodule[newmml]
+
%D Quick and dirty in||line units:
%D
%D \startbuffer
@@ -75,10 +77,16 @@
\defineXMLargument [iphys] \inlinemathematics
\defineXMLargument [dphys] \displaymathematics
-\defineXMLenvironment
- [unit]
- {\ignorespaces}
- {\removeunwantedspaces}
+\defineXMLcommand [unit] {\directsetup{pml:unit}}
+
+\startsetups pml:unit
+ \flushXMLstackwith\plustwo\relax
+\stopsetups
+
+% \defineXMLenvironment
+% [unit]
+% {\ignorespaces}
+% {\removeunwantedspaces}
\defineXMLsingular
[unit]
@@ -131,6 +139,7 @@
\defineXMLsingular [Day] {\handlePMLunit\Day}
\defineXMLsingular [Hour] {\handlePMLunit\Hour}
\defineXMLsingular [Min] {\handlePMLunit\Min}
+\defineXMLsingular [Minute] {\handlePMLunit\Min}
\defineXMLsingular [Second] {\handlePMLunit\Sec}
\defineXMLsingular [Rad] {\handlePMLunit\Rad}
\defineXMLsingular [Deg] {\handlePMLunit\Deg}
diff --git a/tex/context/base/xtag-cml.tex b/tex/context/base/xtag-cml.tex
index ab80a94ec..493d9eff3 100644
--- a/tex/context/base/xtag-cml.tex
+++ b/tex/context/base/xtag-cml.tex
@@ -95,7 +95,6 @@
{\getXMLarguments{cml-a}{n="0" weight="0" protons="0" charge="0" #1}%
\increment\currentCMLatom
\resetCMLcaption
- %\processXMLRchild{caption}{#2}% not here
\someCMLtext
{\bgroup
\lohi
diff --git a/tex/context/base/xtag-pml.tex b/tex/context/base/xtag-pml.tex
index 3300c97ac..b11d3d68d 100644
--- a/tex/context/base/xtag-pml.tex
+++ b/tex/context/base/xtag-pml.tex
@@ -13,7 +13,8 @@
\writestatus{loading}{Context XML Macros (phys ml)}
-%D This filter runs on top of the mathml and units modules.
+%D This is a reimplmentation of the old filter. This module
+%D runs on top of the mathml and units modules.
\useXMLfilter[mml,mmp,mmc]
diff --git a/tex/context/base/xtag-stk.tex b/tex/context/base/xtag-stk.tex
index 1d596766b..32b2b87df 100644
--- a/tex/context/base/xtag-stk.tex
+++ b/tex/context/base/xtag-stk.tex
@@ -33,7 +33,7 @@
\def\resetXMLelements
{\XMLstacklevel\zerocount}
-\def\startsavingXMLelements
+\def\startsavingXMLelements % maybe something with \ignorespaces \\removeunwantedspaces
{\XMLstacklevel\zerocount
\let\normalexecuteXMLelement\executeXMLelement
\def\executeXMLelement{\csname\@@XMLelement:\@@xmlstack\ifcase\kindofXMLelement\or\or\or/\fi\endcsname}}
@@ -117,7 +117,7 @@
{\ifnum\recurselevel>#1\relax#3\fi
\getXMLstackdata\recurselevel}}}
-\def\countXMLnamedstack#1%
+\def\countXMLnamedstack#1% todo: \nofXMLchildren ! ! ! ! !
{\scratchcounter\zerocount
\dorecurse\XMLstacklevel
{\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}}
@@ -179,4 +179,57 @@
\advance\XMLstacklevel\minusone
\exitloop}}}
+%D BEWARE: these names may change (get stack in the name)
+
+\def\XMLallnamed#1%
+ {\dorecurse\XMLstacklevel
+ {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}}
+ {\getXMLstackdata\recurselevel}}}
+
+\def\defXMLfirstnamed#1#2% \cs list
+ {\dorecurse\XMLstacklevel
+ {\expanded{\doifinset{\getXMLstackname\recurselevel}{#2}}
+ {\defXMLstackdata#1\recurselevel\exitloop}}}
+
+\def\defXMLfirstnamedtext#1#2% \cs list
+ {\dorecurse\XMLstacklevel
+ {\expanded{\doifinset{\getXMLstackname\recurselevel}{#2}}
+ {\edef#1{\getXMLstacktext\recurselevel}\exitloop}}}
+
+\def\XMLfirstnamed#1%
+ {\dorecurse\XMLstacklevel
+ {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}}
+ {\getXMLstackdata\recurselevel\exitloop}}}
+
+\def\XMLnotnamed#1%
+ {\dorecurse\XMLstacklevel
+ {\expanded{\doifnotinset{\getXMLstackname\recurselevel}{#1}}
+ {\getXMLstackdata\recurselevel\exitloop}}}
+
+\let\XMLstackposition\!!zerocount
+
+\def\XMLdoifonstackelse#1% was \XMLdoifelsefound
+ {\!!doneafalse
+ \let\XMLstackposition\!!zerocount
+ \dorecurse\XMLstacklevel
+ {\expanded{\doifinset{\getXMLstackname\recurselevel}{#1}}
+ {\let\XMLstackposition\recurselevel\!!doneatrue\exitloop}}%
+ \if!!donea
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+%D Handy:
+
+\def\pushXMLmeaning#1% or [#1]
+ {\@EA\pushmacro\csname\@@XMLelement:#1/\endcsname
+ \@EA\pushmacro\csname\@@XMLelement:#1\endcsname
+ \@EA\pushmacro\csname\@@XMLelement:/#1\endcsname}
+
+\def\popXMLmeaning#1% or [#1]
+ {\@EA\popmacro\csname\@@XMLelement:#1/\endcsname
+ \@EA\popmacro\csname\@@XMLelement:#1\endcsname
+ \@EA\popmacro\csname\@@XMLelement:/#1\endcsname}
+
\protect \endinput
diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml
index 170443c9a..e96a0f735 100644
--- a/tex/context/interface/keys-cz.xml
+++ b/tex/context/interface/keys-cz.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2006.04.09 22:25">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2006.04.10 20:04">
<cd:variables>
<cd:variable name="one" value="jedna"/>
diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml
index e983e83c5..a07f285e1 100644
--- a/tex/context/interface/keys-de.xml
+++ b/tex/context/interface/keys-de.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2006.04.09 22:25">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2006.04.10 20:04">
<cd:variables>
<cd:variable name="one" value="eins"/>
diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml
index 2f59d58ff..eadd51069 100644
--- a/tex/context/interface/keys-en.xml
+++ b/tex/context/interface/keys-en.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2006.04.09 22:25">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2006.04.10 20:04">
<cd:variables>
<cd:variable name="one" value="one"/>
diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml
index ea2c5ba33..9cb988b7f 100644
--- a/tex/context/interface/keys-fr.xml
+++ b/tex/context/interface/keys-fr.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="fr" version="2006.04.09 22:25">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="fr" version="2006.04.10 20:04">
<cd:variables>
<cd:variable name="one" value="un"/>
diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml
index b5f2ba8fc..da2cb1a59 100644
--- a/tex/context/interface/keys-it.xml
+++ b/tex/context/interface/keys-it.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2006.04.09 22:25">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2006.04.10 20:04">
<cd:variables>
<cd:variable name="one" value="uno"/>
diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml
index 426a1d3ca..871166538 100644
--- a/tex/context/interface/keys-nl.xml
+++ b/tex/context/interface/keys-nl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2006.04.09 22:25">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2006.04.10 20:04">
<cd:variables>
<cd:variable name="one" value="een"/>
diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml
index b3dac45de..41066c585 100644
--- a/tex/context/interface/keys-ro.xml
+++ b/tex/context/interface/keys-ro.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2006.04.09 22:25">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2006.04.10 20:04">
<cd:variables>
<cd:variable name="one" value="unu"/>