From b6f05180d27bb8e4cb3e570633f16185eba987fe Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Mon, 14 Sep 2009 12:39:00 +0200
Subject: beta 2009.09.14 12:39

---
 tex/context/base/bibl-tra.mkiv    |   3 +-
 tex/context/base/char-def.lua     | 214 +++++++++++++++++++-------------------
 tex/context/base/math-ini.mkiv    |  28 ++---
 tex/context/base/math-noa.lua     |  31 ++++++
 tex/context/base/mult-de.tex      |   1 +
 tex/context/base/mult-def.lua     |  10 ++
 tex/context/base/mult-en.tex      |   1 +
 tex/context/base/mult-fr.tex      |   1 +
 tex/context/base/mult-it.tex      |   1 +
 tex/context/base/mult-nl.tex      |   1 +
 tex/context/base/mult-ro.tex      |   1 +
 tex/context/base/prop-mis.mkiv    |   2 +-
 tex/context/base/strc-itm.mkii    |  33 +++---
 tex/context/base/strc-lst.lua     |   2 +
 tex/context/base/strc-not.mkii    |  32 ++++++
 tex/context/base/x-mathml.lua     |  93 +++++++++--------
 tex/context/interface/keys-cs.xml |   1 +
 tex/context/interface/keys-de.xml |   1 +
 tex/context/interface/keys-en.xml |   1 +
 tex/context/interface/keys-fr.xml |   1 +
 tex/context/interface/keys-it.xml |   1 +
 tex/context/interface/keys-nl.xml |   1 +
 tex/context/interface/keys-pe.xml |   1 +
 tex/context/interface/keys-ro.xml |   1 +
 24 files changed, 276 insertions(+), 186 deletions(-)

(limited to 'tex')

diff --git a/tex/context/base/bibl-tra.mkiv b/tex/context/base/bibl-tra.mkiv
index 485d93fb7..4dff006b5 100644
--- a/tex/context/base/bibl-tra.mkiv
+++ b/tex/context/base/bibl-tra.mkiv
@@ -787,8 +787,7 @@
   {\dobeginoflist
    \the\initializebibdefinitions
    \edef\currentlist{pubs}%
-%    \doif{\listparameter\c!criterium}\v!cite{\setuplist[pubs][\c!criterium=\v!here]}%
-   \doif{\listparameter\c!criterium}\v!cite{\setuplist[pubs][\c!criterium=\v!previous]}%
+   \doif{\listparameter\c!criterium}\v!cite{\setuplist[pubs][\c!criterium=\v!here]}%
    \ctxlua{bibtex.hacks.reset(\number\bibtexoncemode)}%
    \placestructurelist{pubs}{\listparameter\c!criterium}{\listparameter\c!number}% only collects
    \ctxlua{bibtex.hacks.flush("\@@pbsorttype")}%
diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua
index 6256852fb..005c41075 100644
--- a/tex/context/base/char-def.lua
+++ b/tex/context/base/char-def.lua
@@ -8711,6 +8711,8 @@ characters.data={
   description="GREEK CAPITAL LETTER ALPHA",
   direction="l",
   lccode=0x03B1,
+  mathclass="variable",
+  mathname="Alpha",
   linebreak="al",
   unicodeslot=0x0391,
  },
@@ -8722,6 +8724,8 @@ characters.data={
   description="GREEK CAPITAL LETTER BETA",
   direction="l",
   lccode=0x03B2,
+  mathclass="variable",
+  mathname="Beta",
   linebreak="al",
   unicodeslot=0x0392,
  },
@@ -8732,6 +8736,8 @@ characters.data={
   contextname="greekGamma",
   description="GREEK CAPITAL LETTER GAMMA",
   direction="l",
+  mathclass="variable",
+  mathname="Gamma",
   lccode=0x03B3,
   linebreak="al",
   unicodeslot=0x0393,
@@ -8742,6 +8748,8 @@ characters.data={
   contextname="greekDelta",
   description="GREEK CAPITAL LETTER DELTA",
   direction="l",
+  mathclass="variable",
+  mathname="Delta",
   lccode=0x03B4,
   linebreak="al",
   unicodeslot=0x0394,
@@ -8753,6 +8761,8 @@ characters.data={
   contextname="greekEpsilon",
   description="GREEK CAPITAL LETTER EPSILON",
   direction="l",
+  mathclass="variable",
+  mathname="Epsilon",
   lccode=0x03B5,
   linebreak="al",
   unicodeslot=0x0395,
@@ -8764,6 +8774,8 @@ characters.data={
   contextname="greekZeta",
   description="GREEK CAPITAL LETTER ZETA",
   direction="l",
+  mathclass="variable",
+  mathname="Zeta",
   lccode=0x03B6,
   linebreak="al",
   unicodeslot=0x0396,
@@ -8775,6 +8787,8 @@ characters.data={
   contextname="greekEta",
   description="GREEK CAPITAL LETTER ETA",
   direction="l",
+  mathclass="variable",
+  mathname="Eta",
   lccode=0x03B7,
   linebreak="al",
   unicodeslot=0x0397,
@@ -8786,6 +8800,8 @@ characters.data={
   contextname="greekTheta",
   description="GREEK CAPITAL LETTER THETA",
   direction="l",
+  mathclass="variable",
+  mathname="Theta",
   lccode=0x03B8,
   linebreak="al",
   unicodeslot=0x0398,
@@ -8797,6 +8813,8 @@ characters.data={
   contextname="greekIota",
   description="GREEK CAPITAL LETTER IOTA",
   direction="l",
+  mathclass="variable",
+  mathname="Iota",
   lccode=0x03B9,
   linebreak="al",
   unicodeslot=0x0399,
@@ -8808,6 +8826,8 @@ characters.data={
   contextname="greekKappa",
   description="GREEK CAPITAL LETTER KAPPA",
   direction="l",
+  mathclass="variable",
+  mathname="Kappa",
   lccode=0x03BA,
   linebreak="al",
   unicodeslot=0x039A,
@@ -8819,6 +8839,8 @@ characters.data={
   contextname="greekLambda",
   description="GREEK CAPITAL LETTER LAMDA",
   direction="l",
+  mathclass="variable",
+  mathname="Lambda",
   lccode=0x03BB,
   linebreak="al",
   unicodeslot=0x039B,
@@ -8830,6 +8852,8 @@ characters.data={
   contextname="greekMu",
   description="GREEK CAPITAL LETTER MU",
   direction="l",
+  mathclass="variable",
+  mathname="Mu",
   lccode=0x03BC,
   linebreak="al",
   unicodeslot=0x039C,
@@ -8841,6 +8865,8 @@ characters.data={
   contextname="greekNu",
   description="GREEK CAPITAL LETTER NU",
   direction="l",
+  mathclass="variable",
+  mathname="Nu",
   lccode=0x03BD,
   linebreak="al",
   unicodeslot=0x039D,
@@ -8852,6 +8878,8 @@ characters.data={
   contextname="greekXi",
   description="GREEK CAPITAL LETTER XI",
   direction="l",
+  mathclass="variable",
+  mathname="Xi",
   lccode=0x03BE,
   linebreak="al",
   unicodeslot=0x039E,
@@ -8863,6 +8891,8 @@ characters.data={
   contextname="greekOmicron",
   description="GREEK CAPITAL LETTER OMICRON",
   direction="l",
+  mathclass="variable",
+  mathname="Omicron",
   lccode=0x03BF,
   linebreak="al",
   unicodeslot=0x039F,
@@ -8874,6 +8904,8 @@ characters.data={
   contextname="greekPi",
   description="GREEK CAPITAL LETTER PI",
   direction="l",
+  mathclass="variable",
+  mathname="Pi",
   lccode=0x03C0,
   linebreak="al",
   unicodeslot=0x03A0,
@@ -8885,6 +8917,8 @@ characters.data={
   contextname="greekRho",
   description="GREEK CAPITAL LETTER RHO",
   direction="l",
+  mathclass="variable",
+  mathname="Rho",
   lccode=0x03C1,
   linebreak="al",
   unicodeslot=0x03A1,
@@ -8896,6 +8930,8 @@ characters.data={
   contextname="greekSigma",
   description="GREEK CAPITAL LETTER SIGMA",
   direction="l",
+  mathclass="variable",
+  mathname="Sigma",
   lccode=0x03C3,
   linebreak="al",
   unicodeslot=0x03A3,
@@ -8907,6 +8943,8 @@ characters.data={
   contextname="greekTau",
   description="GREEK CAPITAL LETTER TAU",
   direction="l",
+  mathclass="variable",
+  mathname="Tau",
   lccode=0x03C4,
   linebreak="al",
   unicodeslot=0x03A4,
@@ -8918,6 +8956,8 @@ characters.data={
   contextname="greekUpsilon",
   description="GREEK CAPITAL LETTER UPSILON",
   direction="l",
+  mathclass="variable",
+  mathname="Upsilon",
   lccode=0x03C5,
   linebreak="al",
   unicodeslot=0x03A5,
@@ -8929,6 +8969,8 @@ characters.data={
   contextname="greekPhi",
   description="GREEK CAPITAL LETTER PHI",
   direction="l",
+  mathclass="variable",
+  mathname="Phi",
   lccode=0x03C6,
   linebreak="al",
   unicodeslot=0x03A6,
@@ -8940,6 +8982,8 @@ characters.data={
   contextname="greekChi",
   description="GREEK CAPITAL LETTER CHI",
   direction="l",
+  mathclass="variable",
+  mathname="Chi",
   lccode=0x03C7,
   linebreak="al",
   unicodeslot=0x03A7,
@@ -8951,6 +8995,8 @@ characters.data={
   contextname="greekPsi",
   description="GREEK CAPITAL LETTER PSI",
   direction="l",
+  mathclass="variable",
+  mathname="Psi",
   lccode=0x03C8,
   linebreak="al",
   unicodeslot=0x03A8,
@@ -8961,6 +9007,8 @@ characters.data={
   contextname="greekOmega",
   description="GREEK CAPITAL LETTER OMEGA",
   direction="l",
+  mathclass="variable",
+  mathname="Omega",
   lccode=0x03C9,
   linebreak="al",
   unicodeslot=0x03A9,
@@ -9056,6 +9104,8 @@ characters.data={
   description="GREEK SMALL LETTER ALPHA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="alpha",
   uccode=0x0391,
   unicodeslot=0x03B1,
  },
@@ -9067,6 +9117,8 @@ characters.data={
   description="GREEK SMALL LETTER BETA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="beta",
   uccode=0x0392,
   unicodeslot=0x03B2,
  },
@@ -9078,6 +9130,8 @@ characters.data={
   description="GREEK SMALL LETTER GAMMA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="gamma",
   uccode=0x0393,
   unicodeslot=0x03B3,
  },
@@ -9089,6 +9143,8 @@ characters.data={
   description="GREEK SMALL LETTER DELTA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="delta",
   uccode=0x0394,
   unicodeslot=0x03B4,
  },
@@ -9100,6 +9156,8 @@ characters.data={
   description="GREEK SMALL LETTER EPSILON",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="varepsilon",
   uccode=0x0395,
   unicodeslot=0x03B5,
  },
@@ -9111,6 +9169,8 @@ characters.data={
   description="GREEK SMALL LETTER ZETA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="zeta",
   uccode=0x0396,
   unicodeslot=0x03B6,
  },
@@ -9122,6 +9182,8 @@ characters.data={
   description="GREEK SMALL LETTER ETA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="eta",
   uccode=0x0397,
   unicodeslot=0x03B7,
  },
@@ -9133,6 +9195,8 @@ characters.data={
   description="GREEK SMALL LETTER THETA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="theta",
   uccode=0x0398,
   unicodeslot=0x03B8,
  },
@@ -9144,6 +9208,8 @@ characters.data={
   description="GREEK SMALL LETTER IOTA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="iota",
   uccode=0x0399,
   unicodeslot=0x03B9,
  },
@@ -9155,6 +9221,8 @@ characters.data={
   description="GREEK SMALL LETTER KAPPA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="kappa",
   uccode=0x039A,
   unicodeslot=0x03BA,
  },
@@ -9166,6 +9234,8 @@ characters.data={
   description="GREEK SMALL LETTER LAMDA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="lambda",
   uccode=0x039B,
   unicodeslot=0x03BB,
  },
@@ -9176,6 +9246,8 @@ characters.data={
   description="GREEK SMALL LETTER MU",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="mu",
   uccode=0x039C,
   unicodeslot=0x03BC,
  },
@@ -9187,6 +9259,8 @@ characters.data={
   description="GREEK SMALL LETTER NU",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="nu",
   uccode=0x039D,
   unicodeslot=0x03BD,
  },
@@ -9198,6 +9272,8 @@ characters.data={
   description="GREEK SMALL LETTER XI",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="xi",
   uccode=0x039E,
   unicodeslot=0x03BE,
  },
@@ -9209,6 +9285,8 @@ characters.data={
   description="GREEK SMALL LETTER OMICRON",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="omicron",
   uccode=0x039F,
   unicodeslot=0x03BF,
  },
@@ -9220,6 +9298,8 @@ characters.data={
   description="GREEK SMALL LETTER PI",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="pi",
   uccode=0x03A0,
   unicodeslot=0x03C0,
  },
@@ -9231,6 +9311,8 @@ characters.data={
   description="GREEK SMALL LETTER RHO",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="rho",
   uccode=0x03A1,
   unicodeslot=0x03C1,
  },
@@ -9241,6 +9323,8 @@ characters.data={
   description="GREEK SMALL LETTER FINAL SIGMA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="varsigma",
   uccode=0x03A3,
   unicodeslot=0x03C2,
  },
@@ -9252,6 +9336,8 @@ characters.data={
   description="GREEK SMALL LETTER SIGMA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="sigma",
   uccode=0x03A3,
   unicodeslot=0x03C3,
  },
@@ -9263,6 +9349,8 @@ characters.data={
   description="GREEK SMALL LETTER TAU",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="tau",
   uccode=0x03A4,
   unicodeslot=0x03C4,
  },
@@ -9274,6 +9362,8 @@ characters.data={
   description="GREEK SMALL LETTER UPSILON",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="upsilon",
   uccode=0x03A5,
   unicodeslot=0x03C5,
  },
@@ -9285,6 +9375,8 @@ characters.data={
   description="GREEK SMALL LETTER PHI",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="varphi",
   uccode=0x03A6,
   unicodeslot=0x03C6,
  },
@@ -9296,6 +9388,8 @@ characters.data={
   description="GREEK SMALL LETTER CHI",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="chi",
   uccode=0x03A7,
   unicodeslot=0x03C7,
  },
@@ -9307,6 +9401,8 @@ characters.data={
   description="GREEK SMALL LETTER PSI",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="psi",
   uccode=0x03A8,
   unicodeslot=0x03C8,
  },
@@ -9318,6 +9414,8 @@ characters.data={
   description="GREEK SMALL LETTER OMEGA",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="omega",
   uccode=0x03A9,
   unicodeslot=0x03C9,
  },
@@ -9397,6 +9495,8 @@ characters.data={
   description="GREEK THETA SYMBOL",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="varTheta",
   specials={ "compat", 0x03B8 },
   uccode=0x0398,
   unicodeslot=0x03D1,
@@ -9434,6 +9534,8 @@ characters.data={
   direction="l",
   linebreak="al",
   specials={ "compat", 0x03C6 },
+  mathclass="variable",
+  mathname="phi",
   uccode=0x03A6,
   unicodeslot=0x03D5,
  },
@@ -9444,6 +9546,8 @@ characters.data={
   description="GREEK PI SYMBOL",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="varpi",
   specials={ "compat", 0x03C0 },
   uccode=0x03A0,
   unicodeslot=0x03D6,
@@ -9707,6 +9811,8 @@ characters.data={
   description="GREEK LUNATE EPSILON SYMBOL",
   direction="l",
   linebreak="al",
+  mathclass="variable",
+  mathname="epsilon",
   specials={ "compat", 0x03B5 },
   uccode=0x0395,
   unicodeslot=0x03F5,
@@ -131210,8 +131316,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL ALPHA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Alpha",
   specials={ "font", 0x0391 },
   unicodeslot=0x1D6E2,
  },
@@ -131220,8 +131324,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL BETA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Beta",
   specials={ "font", 0x0392 },
   unicodeslot=0x1D6E3,
  },
@@ -131230,8 +131332,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL GAMMA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Gamma",
   specials={ "font", 0x0393 },
   unicodeslot=0x1D6E4,
  },
@@ -131240,8 +131340,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL DELTA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Delta",
   specials={ "font", 0x0394 },
   unicodeslot=0x1D6E5,
  },
@@ -131250,8 +131348,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL EPSILON",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Epsilon",
   specials={ "font", 0x0395 },
   unicodeslot=0x1D6E6,
  },
@@ -131260,8 +131356,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL ZETA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Zeta",
   specials={ "font", 0x0396 },
   unicodeslot=0x1D6E7,
  },
@@ -131270,8 +131364,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL ETA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Eta",
   specials={ "font", 0x0397 },
   unicodeslot=0x1D6E8,
  },
@@ -131280,8 +131372,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL THETA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Theta",
   specials={ "font", 0x0398 },
   unicodeslot=0x1D6E9,
  },
@@ -131290,8 +131380,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL IOTA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Iota",
   specials={ "font", 0x0399 },
   unicodeslot=0x1D6EA,
  },
@@ -131300,8 +131388,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL KAPPA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Kappa",
   specials={ "font", 0x039A },
   unicodeslot=0x1D6EB,
  },
@@ -131310,8 +131396,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL LAMDA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Lambda",
   specials={ "font", 0x039B },
   unicodeslot=0x1D6EC,
  },
@@ -131320,8 +131404,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL MU",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Mu",
   specials={ "font", 0x039C },
   unicodeslot=0x1D6ED,
  },
@@ -131330,8 +131412,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL NU",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Nu",
   specials={ "font", 0x039D },
   unicodeslot=0x1D6EE,
  },
@@ -131340,8 +131420,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL XI",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Xi",
   specials={ "font", 0x039E },
   unicodeslot=0x1D6EF,
  },
@@ -131350,8 +131428,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL OMICRON",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Omicron",
   specials={ "font", 0x039F },
   unicodeslot=0x1D6F0,
  },
@@ -131360,8 +131436,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL PI",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Pi",
   specials={ "font", 0x03A0 },
   unicodeslot=0x1D6F1,
  },
@@ -131370,8 +131444,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL RHO",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Rho",
   specials={ "font", 0x03A1 },
   unicodeslot=0x1D6F2,
  },
@@ -131380,8 +131452,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL THETA SYMBOL",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="varTheta",
   specials={ "font", 0x03F4 },
   unicodeslot=0x1D6F3,
  },
@@ -131390,8 +131460,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL SIGMA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Sigma",
   specials={ "font", 0x03A3 },
   unicodeslot=0x1D6F4,
  },
@@ -131400,8 +131468,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL TAU",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Tau",
   specials={ "font", 0x03A4 },
   unicodeslot=0x1D6F5,
  },
@@ -131410,8 +131476,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL UPSILON",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Upsilon",
   specials={ "font", 0x03A5 },
   unicodeslot=0x1D6F6,
  },
@@ -131420,8 +131484,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL PHI",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Phi",
   specials={ "font", 0x03A6 },
   unicodeslot=0x1D6F7,
  },
@@ -131430,8 +131492,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL CHI",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Chi",
   specials={ "font", 0x03A7 },
   unicodeslot=0x1D6F8,
  },
@@ -131440,8 +131500,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL PSI",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Psi",
   specials={ "font", 0x03A8 },
   unicodeslot=0x1D6F9,
  },
@@ -131450,8 +131508,6 @@ characters.data={
   description="MATHEMATICAL ITALIC CAPITAL OMEGA",
   direction="l",
   linebreak="al",
-  mathclass="variable",
-  mathname="Omega",
   specials={ "font", 0x03A9 },
   unicodeslot=0x1D6FA,
  },
@@ -131470,8 +131526,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL ALPHA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="alpha",
   specials={ "font", 0x03B1 },
   unicodeslot=0x1D6FC,
  },
@@ -131480,8 +131534,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL BETA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="beta",
   specials={ "font", 0x03B2 },
   unicodeslot=0x1D6FD,
  },
@@ -131490,8 +131542,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL GAMMA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="gamma",
   specials={ "font", 0x03B3 },
   unicodeslot=0x1D6FE,
  },
@@ -131500,8 +131550,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL DELTA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="delta",
   specials={ "font", 0x03B4 },
   unicodeslot=0x1D6FF,
  },
@@ -131510,8 +131558,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL EPSILON",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="varepsilon",
   specials={ "font", 0x03B5 },
   unicodeslot=0x1D700,
  },
@@ -131520,8 +131566,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL ZETA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="zeta",
   specials={ "font", 0x03B6 },
   unicodeslot=0x1D701,
  },
@@ -131530,8 +131574,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL ETA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="eta",
   specials={ "font", 0x03B7 },
   unicodeslot=0x1D702,
  },
@@ -131540,8 +131582,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL THETA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="theta",
   specials={ "font", 0x03B8 },
   unicodeslot=0x1D703,
  },
@@ -131550,8 +131590,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL IOTA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="iota",
   specials={ "font", 0x03B9 },
   unicodeslot=0x1D704,
  },
@@ -131560,8 +131598,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL KAPPA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="kappa",
   specials={ "font", 0x03BA },
   unicodeslot=0x1D705,
  },
@@ -131570,8 +131606,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL LAMDA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="lambda",
   specials={ "font", 0x03BB },
   unicodeslot=0x1D706,
  },
@@ -131580,8 +131614,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL MU",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="mu",
   specials={ "font", 0x03BC },
   unicodeslot=0x1D707,
  },
@@ -131590,8 +131622,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL NU",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="nu",
   specials={ "font", 0x03BD },
   unicodeslot=0x1D708,
  },
@@ -131600,8 +131630,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL XI",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="xi",
   specials={ "font", 0x03BE },
   unicodeslot=0x1D709,
  },
@@ -131610,8 +131638,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL OMICRON",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="omicron",
   specials={ "font", 0x03BF },
   unicodeslot=0x1D70A,
  },
@@ -131620,8 +131646,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL PI",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="pi",
   specials={ "font", 0x03C0 },
   unicodeslot=0x1D70B,
  },
@@ -131630,8 +131654,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL RHO",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="rho",
   specials={ "font", 0x03C1 },
   unicodeslot=0x1D70C,
  },
@@ -131640,8 +131662,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL FINAL SIGMA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="varsigma",
   specials={ "font", 0x03C2 },
   unicodeslot=0x1D70D,
  },
@@ -131650,8 +131670,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL SIGMA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="sigma",
   specials={ "font", 0x03C3 },
   unicodeslot=0x1D70E,
  },
@@ -131660,8 +131678,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL TAU",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="tau",
   specials={ "font", 0x03C4 },
   unicodeslot=0x1D70F,
  },
@@ -131670,8 +131686,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL UPSILON",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="upsilon",
   specials={ "font", 0x03C5 },
   unicodeslot=0x1D710,
  },
@@ -131680,8 +131694,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL PHI",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="varphi",
   specials={ "font", 0x03C6 },
   unicodeslot=0x1D711,
  },
@@ -131690,8 +131702,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL CHI",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="chi",
   specials={ "font", 0x03C7 },
   unicodeslot=0x1D712,
  },
@@ -131700,8 +131710,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL PSI",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="psi",
   specials={ "font", 0x03C8 },
   unicodeslot=0x1D713,
  },
@@ -131710,8 +131718,6 @@ characters.data={
   description="MATHEMATICAL ITALIC SMALL OMEGA",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="omega",
   specials={ "font", 0x03C9 },
   unicodeslot=0x1D714,
  },
@@ -131728,8 +131734,6 @@ characters.data={
   description="MATHEMATICAL ITALIC EPSILON SYMBOL",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="epsilon",
   specials={ "font", 0x03F5 },
   unicodeslot=0x1D716,
  },
@@ -131758,8 +131762,6 @@ characters.data={
   description="MATHEMATICAL ITALIC PHI SYMBOL",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="phi",
   specials={ "font", 0x03D5 },
   unicodeslot=0x1D719,
  },
@@ -131768,7 +131770,7 @@ characters.data={
   description="MATHEMATICAL ITALIC RHO SYMBOL",
   direction="l",
   linebreak="al",
-  mathclass="default",
+  mathclass="variable",
   mathname="varrho",
   specials={ "font", 0x03F1 },
   unicodeslot=0x1D71A,
@@ -131778,8 +131780,6 @@ characters.data={
   description="MATHEMATICAL ITALIC PI SYMBOL",
   direction="l",
   linebreak="al",
-  mathclass="default",
-  mathname="varpi",
   specials={ "font", 0x03D6 },
   unicodeslot=0x1D71B,
  },
diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv
index c7db680e5..0d01b0e7a 100644
--- a/tex/context/base/math-ini.mkiv
+++ b/tex/context/base/math-ini.mkiv
@@ -449,32 +449,24 @@
 
 % [lc uc] normal (upright) = 2, italic = 3, none = 0/1
 
-\setevalue{\??mo:greek:\v!normal :\v!normal }{\dosetattribute  {mathgreek}{22}}
-\setevalue{\??mo:greek:\v!normal :\v!italic }{\dosetattribute  {mathgreek}{23}}
-\setevalue{\??mo:greek:\v!normal :\v!default}{\dosetattribute  {mathgreek}{21}}
+\setevalue{\??mo:greek:\v!normal :\v!normal}{\dosetattribute  {mathgreek}{22}}
+\setevalue{\??mo:greek:\v!normal :\v!italic}{\dosetattribute  {mathgreek}{23}}
+\setevalue{\??mo:greek:\v!normal :\v!none  }{\dosetattribute  {mathgreek}{21}}
 
-\setevalue{\??mo:greek:\v!italic :\v!normal }{\dosetattribute  {mathgreek}{32}}
-\setevalue{\??mo:greek:\v!italic :\v!italic }{\dosetattribute  {mathgreek}{33}}
-\setevalue{\??mo:greek:\v!italic :\v!default}{\dosetattribute  {mathgreek}{31}}
+\setevalue{\??mo:greek:\v!italic :\v!normal}{\dosetattribute  {mathgreek}{32}}
+\setevalue{\??mo:greek:\v!italic :\v!italic}{\dosetattribute  {mathgreek}{33}}
+\setevalue{\??mo:greek:\v!italic :\v!none  }{\dosetattribute  {mathgreek}{31}}
 
-\setevalue{\??mo:greek:\v!default:\v!normal }{\dosetattribute  {mathgreek}{12}}
-\setevalue{\??mo:greek:\v!default:\v!italic }{\dosetattribute  {mathgreek}{13}}
-\setevalue{\??mo:greek:\v!default:\v!default}{\doresetattribute{mathgreek}}
-
-% bonus:
-
-\setevalue{\??mo:greek:\v!normal :\v!none   }{\dosetattribute  {mathgreek}{21}}
-\setevalue{\??mo:greek:\v!italic :\v!none   }{\dosetattribute  {mathgreek}{31}}
-\setevalue{\??mo:greek:\v!none   :\v!normal }{\dosetattribute  {mathgreek}{12}}
-\setevalue{\??mo:greek:\v!none   :\v!italic }{\dosetattribute  {mathgreek}{13}}
-\setevalue{\??mo:greek:\v!none   :\v!none   }{\doresetattribute{mathgreek}}
+\setevalue{\??mo:greek:\v!none   :\v!normal}{\dosetattribute  {mathgreek}{12}}
+\setevalue{\??mo:greek:\v!none   :\v!italic}{\dosetattribute  {mathgreek}{13}}
+\setevalue{\??mo:greek:\v!none   :\v!none  }{\doresetattribute{mathgreek}}
 
 \appendtoks
     \csname\??mo:greek:\@@molcgreek:\@@moucgreek\endcsname
 \to \everymathematics
 
 \setupmathematics
-  [lcgreek=\v!none,
+  [lcgreek=\v!italic,
    ucgreek=\v!none]
 
 %D \macros
diff --git a/tex/context/base/math-noa.lua b/tex/context/base/math-noa.lua
index 7a2a60e84..b226444a4 100644
--- a/tex/context/base/math-noa.lua
+++ b/tex/context/base/math-noa.lua
@@ -152,6 +152,33 @@ end
 local remap_alphabets = mathematics.remap_alphabets
 local fcs = fonts.color.set
 
+-- we can have a global famdata == fonts.famdata and chrdata == fonts.chrdata
+
+--~ This does not work out well, as there are no fallbacks. Ok, we could
+--~ define a poor mans simplify mechanism.
+--~
+--~ local function checked(pointer)
+--~     local char = pointer.char
+--~     local fam = pointer.fam
+--~     local id = font_of_family(fam)
+--~     local tfmdata = fontdata[id]
+--~     local tc = tfmdata and tfmdata.characters
+--~     if not tc[char] then
+--~         local specials = characters.data[char].specials
+--~         if specials and (specials[1] == "char" or specials[1] == "font") then
+--~             newchar = specials[#specials]
+--~             if trace_remapping then
+--~                 report_remap("fallback",id,char,newchar)
+--~             end
+--~             if trace_analyzing then
+--~                 fcs(pointer,"font:isol")
+--~             end
+--~             pointer.char = newchar
+--~             return true
+--~         end
+--~     end
+--~ end
+
 noads.processors.relocate[math_char] = function(pointer)
     local g = has_attribute(pointer,mathgreek) or 0
     local a = has_attribute(pointer,mathalphabet) or 0
@@ -180,7 +207,11 @@ noads.processors.relocate[math_char] = function(pointer)
             elseif trace_remapping then
                 report_remap("char",id,char,newchar," fails")
             end
+        else
+            -- return checked(pointer)
         end
+    else
+        -- return checked(pointer)
     end
     if trace_analyzing then
         fcs(pointer,"font:medi")
diff --git a/tex/context/base/mult-de.tex b/tex/context/base/mult-de.tex
index a18cad987..d5a1a400a 100644
--- a/tex/context/base/mult-de.tex
+++ b/tex/context/base/mult-de.tex
@@ -935,6 +935,7 @@
 \setinterfaceconstant{textlayer}{textlayer}
 \setinterfaceconstant{textmargin}{textmargin}
 \setinterfaceconstant{textmethod}{textmethod}
+\setinterfaceconstant{textoverprint}{textoverprint}
 \setinterfaceconstant{textseparator}{textseparator}
 \setinterfaceconstant{textsize}{textgroesse}
 \setinterfaceconstant{textstate}{textstatus}
diff --git a/tex/context/base/mult-def.lua b/tex/context/base/mult-def.lua
index c1678f68d..4ec4b154f 100644
--- a/tex/context/base/mult-def.lua
+++ b/tex/context/base/mult-def.lua
@@ -9156,6 +9156,16 @@ return {
    ["pe"]="overprint",
    ["ro"]="overprint",
   },
+  ["textoverprint"]={
+   ["cs"]="textoverprint",
+   ["de"]="textoverprint",
+   ["en"]="textoverprint",
+   ["fr"]="textoverprint",
+   ["it"]="textoverprint",
+   ["nl"]="textoverprint",
+   ["pe"]="textoverprint",
+   ["ro"]="textoverprint",
+  },
   ["ownnumber"]={
    ["cs"]="vlastnicislo",
    ["de"]="eigenenummer",
diff --git a/tex/context/base/mult-en.tex b/tex/context/base/mult-en.tex
index 8d4ab2919..2298668ee 100644
--- a/tex/context/base/mult-en.tex
+++ b/tex/context/base/mult-en.tex
@@ -935,6 +935,7 @@
 \setinterfaceconstant{textlayer}{textlayer}
 \setinterfaceconstant{textmargin}{textmargin}
 \setinterfaceconstant{textmethod}{textmethod}
+\setinterfaceconstant{textoverprint}{textoverprint}
 \setinterfaceconstant{textseparator}{textseparator}
 \setinterfaceconstant{textsize}{textsize}
 \setinterfaceconstant{textstate}{textstate}
diff --git a/tex/context/base/mult-fr.tex b/tex/context/base/mult-fr.tex
index 850e086db..9c0c725d6 100644
--- a/tex/context/base/mult-fr.tex
+++ b/tex/context/base/mult-fr.tex
@@ -935,6 +935,7 @@
 \setinterfaceconstant{textlayer}{calquetexte}
 \setinterfaceconstant{textmargin}{margetexte}
 \setinterfaceconstant{textmethod}{textmethod}
+\setinterfaceconstant{textoverprint}{textoverprint}
 \setinterfaceconstant{textseparator}{separateurtexte}
 \setinterfaceconstant{textsize}{tailletexte}
 \setinterfaceconstant{textstate}{etattexte}
diff --git a/tex/context/base/mult-it.tex b/tex/context/base/mult-it.tex
index 65c407282..9d42da744 100644
--- a/tex/context/base/mult-it.tex
+++ b/tex/context/base/mult-it.tex
@@ -935,6 +935,7 @@
 \setinterfaceconstant{textlayer}{textlayer}
 \setinterfaceconstant{textmargin}{textmargin}
 \setinterfaceconstant{textmethod}{textmethod}
+\setinterfaceconstant{textoverprint}{textoverprint}
 \setinterfaceconstant{textseparator}{separatoretesto}
 \setinterfaceconstant{textsize}{dimensionetesto}
 \setinterfaceconstant{textstate}{statotesto}
diff --git a/tex/context/base/mult-nl.tex b/tex/context/base/mult-nl.tex
index 50e1bbf6f..07b0ab070 100644
--- a/tex/context/base/mult-nl.tex
+++ b/tex/context/base/mult-nl.tex
@@ -935,6 +935,7 @@
 \setinterfaceconstant{textlayer}{tekstlaag}
 \setinterfaceconstant{textmargin}{tekstmarge}
 \setinterfaceconstant{textmethod}{tekstmethode}
+\setinterfaceconstant{textoverprint}{textoverprint}
 \setinterfaceconstant{textseparator}{tekstscheider}
 \setinterfaceconstant{textsize}{tekstformaat}
 \setinterfaceconstant{textstate}{tekststatus}
diff --git a/tex/context/base/mult-ro.tex b/tex/context/base/mult-ro.tex
index a17963bcb..c79e64d0f 100644
--- a/tex/context/base/mult-ro.tex
+++ b/tex/context/base/mult-ro.tex
@@ -935,6 +935,7 @@
 \setinterfaceconstant{textlayer}{textlayer}
 \setinterfaceconstant{textmargin}{textmargin}
 \setinterfaceconstant{textmethod}{textmethod}
+\setinterfaceconstant{textoverprint}{textoverprint}
 \setinterfaceconstant{textseparator}{separatortext}
 \setinterfaceconstant{textsize}{dimensiunetext}
 \setinterfaceconstant{textstate}{staretext}
diff --git a/tex/context/base/prop-mis.mkiv b/tex/context/base/prop-mis.mkiv
index 623b10f13..0d52097ed 100644
--- a/tex/context/base/prop-mis.mkiv
+++ b/tex/context/base/prop-mis.mkiv
@@ -54,7 +54,7 @@
 \def\startoverprintproperty{\dotriggeroverprint\v!overprint}
 \def\stopoverprintproperty {\dotriggeroverprint\v!knockout }
 
-%D Negative cum suis.\def\dotriggeroverprint#1{\csname(os:#1)\endcsname}
+%D Negative cum suis.
 
 \definepropertyhandler \v!negative {\dotriggernegative\v!negative}
 \definepropertyhandler \v!positive {\dotriggernegative\v!positive}
diff --git a/tex/context/base/strc-itm.mkii b/tex/context/base/strc-itm.mkii
index d0afd13c8..1de63c7c3 100644
--- a/tex/context/base/strc-itm.mkii
+++ b/tex/context/base/strc-itm.mkii
@@ -409,23 +409,22 @@
    \fi\fi}
 
 \def\setitemlevel#1%
-  {\ifnum\currentitemlevel>\zerocount
-     \settrue\firstlistitem
-     %
-     \expanded{\setitemparameter{\currentitemlevel}{\c!start}{1}}%
-     \doifinset{0}{#1}{\setitemparameter\currentitemlevel\c!start{0}}%
-     \setcounter{\@@itemcounter\currentitemlevel}{0}%
-     \doifelsenothing{\getitemparameter\currentitemlevel\c!start}
-       {\def\currentitemoffset{1}}
-       {\def\currentitemoffset{\getitemparameter\currentitemlevel\c!start}%
-        \letitemparameter\currentitemlevel\c!start\empty}%
-     %
-     \def\tempnumber
-       {\countervalue{\@@itemcounter\currentitemlevel}}%
-     \doifelse{\getitemparameter\currentitemlevel\c!placestopper}\v!yes
-       {\def\tempsymbol{\getitemparameter\currentitemlevel\c!stopper}}
-       {\let\tempsymbol\empty}%
-   \fi}
+ {\ifnum\currentitemlevel>\zerocount
+    \settrue\firstlistitem
+    % \expanded{\setitemparameter{\currentitemlevel}{\c!start}{1}}% ***
+    \doifinset{0}{#1}{\setitemparameter\currentitemlevel\c!start{0}}% ***
+    \setcounter{\@@itemcounter\currentitemlevel}{\the\numexpr\getitemparameter\currentitemlevel\c!start-1\relax}% ***
+    \doifelsenothing{\getitemparameter\currentitemlevel\c!start}
+      {\def\currentitemoffset{1}}
+      {\def\currentitemoffset{\getitemparameter\currentitemlevel\c!start}%
+       \letitemparameter\currentitemlevel\c!start\empty}%
+    \def\tempnumber
+      {\countervalue{\@@itemcounter\currentitemlevel}}%
+    \doifelse{\getitemparameter\currentitemlevel\c!placestopper}\v!yes
+      {\def\tempsymbol{\getitemparameter\currentitemlevel\c!stopper}}
+      {\let\tempsymbol\empty}%
+  \fi}
+
 
 \def\actualitemnumber
   {\ifconditional\reverselistitem
diff --git a/tex/context/base/strc-lst.lua b/tex/context/base/strc-lst.lua
index c29069121..64788e40e 100644
--- a/tex/context/base/strc-lst.lua
+++ b/tex/context/base/strc-lst.lua
@@ -198,6 +198,7 @@ local function filter_collected(names, criterium, number, collected)
             end
         end
     elseif criterium == variables.here then
+        -- this is qquite dirty ... as cnumbers is not sparse we can misuse #cnumbers
         if depth == 0 then
             return filter_collected(names,variables.intro,number,collected)
         else
@@ -210,6 +211,7 @@ local function filter_collected(names, criterium, number, collected)
                         local cnumbers = sectionnumber.numbers
                         local metadata = v.metadata
                         if cnumbers then
+print(#cnumbers, depth, table.concat(cnumbers))
                             if metadata and not metadata.nolist and (all or hash[metadata.name or false]) and #cnumbers >= depth then
                                 local ok = true
                                 for d=1,depth do
diff --git a/tex/context/base/strc-not.mkii b/tex/context/base/strc-not.mkii
index 40e06c9a4..f6fae3378 100644
--- a/tex/context/base/strc-not.mkii
+++ b/tex/context/base/strc-not.mkii
@@ -589,6 +589,38 @@
        \donothing
    \fi}
 
+% maybe some day
+%
+% \newconditional\tracemovednotes
+% \def\domovednote#1#2%
+%   {\iflocation
+%      \doshowmovednote{#1}{#2}%
+%    \else\ifconditional\tracemovednotes
+%      \doshowtracednote{#1}{#2}%
+%    \fi\fi}
+% \def\doshowmovednote#1#2%
+%   {\doifreferencefoundelse{\s!fnt:t:\number\internalnotereference}
+%      {\let\savedrealreference\currentrealreference
+%       \doifreferencefoundelse{\s!fnt:f:\number\internalnotereference}
+%         {\ifnum\savedrealreference<\currentrealreference\relax
+%            \symbol[#1]%
+%          \else\ifnum\savedrealreference>\currentrealreference\relax
+%            \symbol[#2]%
+%          \fi\fi}
+%         \donothing}
+%      \donothing}
+% \def\doshowtracednote#1#2%
+%   {\doifreferencefoundelse{\s!fnt:t:\number\internalnotereference}
+%      {\let\savedrealreference\currentrealreference
+%       \doifreferencefoundelse{\s!fnt:f:\number\internalnotereference}
+%         {\ifnum\savedrealreference<\currentrealreference\relax
+%            \writestatus{NOTE}{forward note reference on real page \currentrealreference}%
+%          \else\ifnum\savedrealreference>\currentrealreference\relax
+%            \writestatus{NOTE}{backward note reference on real page \currentrealreference}%
+%          \fi\fi}
+%         \donothing}
+%      \donothing}
+
 \def\dodonote
   {\ifnotesenabled
      \iftrialtypesetting
diff --git a/tex/context/base/x-mathml.lua b/tex/context/base/x-mathml.lua
index b4b7ca9e1..46f7248c6 100644
--- a/tex/context/base/x-mathml.lua
+++ b/tex/context/base/x-mathml.lua
@@ -19,6 +19,8 @@ local utffind   = utf.find
 local xmlsprint = xml.sprint
 local xmlcprint = xml.cprint
 
+local ctxcatcodes = tex.ctxcatcodes
+
 local utfcharacters, utfvalues = string.utfcharacters, string.utfvalues
 
 -- an alternative is to remap to private codes, where we can have
@@ -449,11 +451,11 @@ function xml.functions.remapopenmath(r,d,k)
 end
 
 function lxml.mml.checked_operator(str)
-    texsprint(tex.ctxcatcodes,(utf.gsub(str,".",o_replacements)))
+    texsprint(ctxcatcodes,(utf.gsub(str,".",o_replacements)))
 end
 
 function lxml.mml.stripped(str)
-    tex.sprint(tex.ctxcatcodes,str:strip())
+    tex.sprint(ctxcatcodes,str:strip())
 end
 
 function lxml.mml.mn(id,pattern)
@@ -462,7 +464,7 @@ function lxml.mml.mn(id,pattern)
     local str = xml.content(lxml.id(id),pattern) or ""
     -- str = str:gsub("^%s*(.-)%s*$","%1")
     str = str:gsub("(%s+)",utfchar(0x205F)) -- medspace e.g.: twenty one (nbsp is not seen)
-    texsprint(tex.ctxcatcodes,(str:gsub(".",n_replacements)))
+    texsprint(ctxcatcodes,(str:gsub(".",n_replacements)))
 end
 
 function characters.remapentity(chr,slot)
@@ -471,7 +473,7 @@ end
 
 function lxml.mml.mo(id,pattern)
     local str = xml.content(lxml.id(id),pattern) or ""
-    texsprint(tex.ctxcatcodes,(utf.gsub(str,".",o_replacements)))
+    texsprint(ctxcatcodes,(utf.gsub(str,".",o_replacements)))
 end
 
 function lxml.mml.mi(id,pattern)
@@ -479,9 +481,9 @@ function lxml.mml.mi(id,pattern)
     -- str = str:gsub("^%s*(.-)%s*$","%1")
     local rep = i_replacements[str]
     if rep then
-        texsprint(tex.ctxcatcodes,rep)
+        texsprint(ctxcatcodes,rep)
     else
-        texsprint(tex.ctxcatcodes,(str:gsub(".",i_replacements)))
+        texsprint(ctxcatcodes,(str:gsub(".",i_replacements)))
     end
 end
 
@@ -500,14 +502,14 @@ function lxml.mml.mfenced(id,pattern) -- multiple separators
     id = lxml.id(id)
     local left, right, separators = id.at.open or "(", id.at.close or ")", id.at.separators or ","
     local l, r = l_replacements[left], r_replacements[right]
-    texsprint(tex.ctxcatcodes,"\\enabledelimiter")
+    texsprint(ctxcatcodes,"\\enabledelimiter")
     if l then
-        texsprint(tex.ctxcatcodes,l_replacements[left] or o_replacements[left] or "")
+        texsprint(ctxcatcodes,l_replacements[left] or o_replacements[left] or "")
     else
-        texsprint(tex.ctxcatcodes,o_replacements["@l"])
-        texsprint(tex.ctxcatcodes,left)
+        texsprint(ctxcatcodes,o_replacements["@l"])
+        texsprint(ctxcatcodes,left)
     end
-    texsprint(tex.ctxcatcodes,"\\disabledelimiter")
+    texsprint(ctxcatcodes,"\\disabledelimiter")
     local n = xml.count(id,pattern)
     if n == 0 then
         -- skip
@@ -531,36 +533,36 @@ function lxml.mml.mfenced(id,pattern) -- multiple separators
                 elseif m == "}" then
                     m = "\\}"
                 end
-                texsprint(tex.ctxcatcodes,m)
+                texsprint(ctxcatcodes,m)
             end
         end
     end
-    texsprint(tex.ctxcatcodes,"\\enabledelimiter")
+    texsprint(ctxcatcodes,"\\enabledelimiter")
     if r then
-        texsprint(tex.ctxcatcodes,r_replacements[right] or o_replacements[right] or "")
+        texsprint(ctxcatcodes,r_replacements[right] or o_replacements[right] or "")
     else
-        texsprint(tex.ctxcatcodes,right)
-        texsprint(tex.ctxcatcodes,o_replacements["@r"])
+        texsprint(ctxcatcodes,right)
+        texsprint(ctxcatcodes,o_replacements["@r"])
     end
-    texsprint(tex.ctxcatcodes,"\\disabledelimiter")
+    texsprint(ctxcatcodes,"\\disabledelimiter")
 end
 
 local function flush(e,tag,toggle)
- -- texsprint(tex.ctxcatcodes,(toggle and "^{") or "_{")
+ -- texsprint(ctxcatcodes,(toggle and "^{") or "_{")
     if toggle then
-        texsprint(tex.ctxcatcodes,"^{")
+        texsprint(ctxcatcodes,"^{")
     else
-        texsprint(tex.ctxcatcodes,"_{")
+        texsprint(ctxcatcodes,"_{")
     end
     if tag == "none" then
-        texsprint(tex.ctxcatcodes,"{}")
+        texsprint(ctxcatcodes,"{}")
     else
         xmlsprint(e.dt)
     end
     if not toggle then
-        texsprint(tex.ctxcatcodes,"}")
+        texsprint(ctxcatcodes,"}")
     else
-        texsprint(tex.ctxcatcodes,"}{}")
+        texsprint(ctxcatcodes,"}{}")
     end
     return not toggle
 end
@@ -573,7 +575,7 @@ function lxml.mml.mmultiscripts(id)
         local e = d[k]
         local tag = e.tg
         if tag == "mprescripts" then
-            texsprint(tex.ctxcatcodes,"{}")
+            texsprint(ctxcatcodes,"{}")
             done = true
         elseif done then
             toggle = flush(e,tag,toggle)
@@ -654,7 +656,7 @@ function lxml.mml.mcolumn(root)
             collect(m,dk)
         end
     end
-    tex.sprint(tex.ctxcatcodes,"\\halign\\bgroup\\hss$#$&$#$\\cr")
+    tex.sprint(ctxcatcodes,"\\halign\\bgroup\\hss$#$&$#$\\cr")
     for i=1,#matrix do
         local m = matrix[i]
         local mline = true
@@ -665,7 +667,7 @@ function lxml.mml.mcolumn(root)
             end
         end
         if mline then
-            tex.sprint(tex.ctxcatcodes,"\\noalign{\\obeydepth\\nointerlineskip}")
+            tex.sprint(ctxcatcodes,"\\noalign{\\obeydepth\\nointerlineskip}")
         end
         for j=1,#m do
             local mm = m[j]
@@ -701,14 +703,14 @@ function lxml.mml.mcolumn(root)
                 chr = "\\mmlmcolumndigitspace" -- utfchar(0x2007)
             end
             if j == numbers + 1 then
-                tex.sprint(tex.ctxcatcodes,"&")
+                tex.sprint(ctxcatcodes,"&")
             end
             local nchr = n_replacements[chr]
-            tex.sprint(tex.ctxcatcodes,nchr or chr)
+            tex.sprint(ctxcatcodes,nchr or chr)
         end
-        tex.sprint(tex.ctxcatcodes,"\\crcr")
+        tex.sprint(ctxcatcodes,"\\crcr")
     end
-    tex.sprint(tex.ctxcatcodes,"\\egroup")
+    tex.sprint(ctxcatcodes,"\\egroup")
 end
 
 local spacesplitter = lpeg.Ct(lpeg.splitat(" "))
@@ -728,11 +730,11 @@ function lxml.mml.mtable(root)
     local framespacing = at.framespacing or "0pt"
     local framespacing = at.framespacing or "-\\ruledlinewidth" -- make this an option
 
---~ function texsprint(a,b) print(b) end
-
-    texsprint(tex.ctxcatcodes, format("\\bTABLE[frame=%s,offset=%s]",frametypes[frame or "none"] or "off",framespacing))
+    texsprint(ctxcatcodes, format("\\bTABLE[frame=%s,offset=%s]",frametypes[frame or "none"] or "off",framespacing))
+--~ context.bTABLE { frame = frametypes[frame or "none"] or "off", offset = framespacing }
     for r, d, k in xml.elements(root,"/(mml:mtr|mml:mlabeledtr)") do
-        texsprint(tex.ctxcatcodes,"\\bTR")
+        texsprint(ctxcatcodes,"\\bTR")
+--~ context.bTR()
         local dk = d[k]
         local at = dk.at
         local col = 0
@@ -751,19 +753,28 @@ function lxml.mml.mtable(root)
                 local cra = rowalignments   [at.rowalign    or (rowaligns    and rowaligns   [col]) or rra or "center"] or "lohi"
                 local cca = columnalignments[at.columnalign or (columnaligns and columnaligns[col]) or rca or "center"] or "middle"
                 local cfr = frametypes      [at.frame       or (frames       and frames      [col]) or rfr or "none"  ] or "off"
-                texsprint(tex.ctxcatcodes,format("\\bTD[align={%s,%s},frame=%s,nx=%s,ny=%s]$\\ignorespaces",cra,cca,cfr,columnspan,rowspan))
+                texsprint(ctxcatcodes,format("\\bTD[align={%s,%s},frame=%s,nx=%s,ny=%s]$\\ignorespaces",cra,cca,cfr,columnspan,rowspan))
+--~ texfprint("\\bTD[align={%s,%s},frame=%s,nx=%s,ny=%s]$\\ignorespaces",cra,cca,cfr,columnspan,rowspan)
+--~ context.bTD { align = format("{%s,%s}",cra,cca), frame = cfr, nx = columnspan, ny = rowspan }
+--~ context.bmath()
+--~ context.ignorespaces()
                 xmlcprint(dk)
-                texsprint(tex.ctxcatcodes,"\\removeunwantedspaces$\\eTD") -- $
+                texsprint(ctxcatcodes,"\\removeunwantedspaces$\\eTD") -- $
+--~ context.emath()
+--~ context.removeunwantedspaces()
+--~ context.eTD()
             end
         end
 --~         if dk.tg == "mlabeledtr" then
---~             texsprint(tex.ctxcatcodes,"\\bTD")
+--~             texsprint(ctxcatcodes,"\\bTD")
 --~             xmlcprint(xml.first(dk,"/!mml:mtd"))
---~             texsprint(tex.ctxcatcodes,"\\eTD")
+--~             texsprint(ctxcatcodes,"\\eTD")
 --~         end
-        texsprint(tex.ctxcatcodes,"\\eTR")
+        texsprint(ctxcatcodes,"\\eTR")
+--~ context.eTR()
     end
-    texsprint(tex.ctxcatcodes, "\\eTABLE")
+    texsprint(ctxcatcodes, "\\eTABLE")
+--~ context.eTABLE()
 end
 
 function lxml.mml.csymbol(root)
@@ -773,7 +784,7 @@ function lxml.mml.csymbol(root)
     local full = hash.original or ""
     local base = hash.path or ""
     local text = string.strip(xml.content(root) or "")
-    texsprint(tex.ctxcatcodes,format("\\mmlapplycsymbol{%s}{%s}{%s}{%s}",full,base,encoding,text))
+    texsprint(ctxcatcodes,format("\\mmlapplycsymbol{%s}{%s}{%s}{%s}",full,base,encoding,text))
 end
 
 function lxml.mml.menclosepattern(root)
diff --git a/tex/context/interface/keys-cs.xml b/tex/context/interface/keys-cs.xml
index 0eefedb9c..2e2e896f9 100644
--- a/tex/context/interface/keys-cs.xml
+++ b/tex/context/interface/keys-cs.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='textlayer'/>
 		<cd:constant name='textmargin' value='textmargin'/>
 		<cd:constant name='textmethod' value='textmethod'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='oddelovactextu'/>
 		<cd:constant name='textsize' value='velikosttextu'/>
 		<cd:constant name='textstate' value='statustextu'/>
diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml
index 65e5c05b6..c968ef5a7 100644
--- a/tex/context/interface/keys-de.xml
+++ b/tex/context/interface/keys-de.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='textlayer'/>
 		<cd:constant name='textmargin' value='textmargin'/>
 		<cd:constant name='textmethod' value='textmethod'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='textseparator'/>
 		<cd:constant name='textsize' value='textgroesse'/>
 		<cd:constant name='textstate' value='textstatus'/>
diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml
index d2183128b..4f47eba5c 100644
--- a/tex/context/interface/keys-en.xml
+++ b/tex/context/interface/keys-en.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='textlayer'/>
 		<cd:constant name='textmargin' value='textmargin'/>
 		<cd:constant name='textmethod' value='textmethod'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='textseparator'/>
 		<cd:constant name='textsize' value='textsize'/>
 		<cd:constant name='textstate' value='textstate'/>
diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml
index a59a47f6e..eeb9dd0b7 100644
--- a/tex/context/interface/keys-fr.xml
+++ b/tex/context/interface/keys-fr.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='calquetexte'/>
 		<cd:constant name='textmargin' value='margetexte'/>
 		<cd:constant name='textmethod' value='textmethod'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='separateurtexte'/>
 		<cd:constant name='textsize' value='tailletexte'/>
 		<cd:constant name='textstate' value='etattexte'/>
diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml
index e3907e16c..393fee324 100644
--- a/tex/context/interface/keys-it.xml
+++ b/tex/context/interface/keys-it.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='textlayer'/>
 		<cd:constant name='textmargin' value='textmargin'/>
 		<cd:constant name='textmethod' value='textmethod'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='separatoretesto'/>
 		<cd:constant name='textsize' value='dimensionetesto'/>
 		<cd:constant name='textstate' value='statotesto'/>
diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml
index 8f217ffbb..5847ec9d8 100644
--- a/tex/context/interface/keys-nl.xml
+++ b/tex/context/interface/keys-nl.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='tekstlaag'/>
 		<cd:constant name='textmargin' value='tekstmarge'/>
 		<cd:constant name='textmethod' value='tekstmethode'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='tekstscheider'/>
 		<cd:constant name='textsize' value='tekstformaat'/>
 		<cd:constant name='textstate' value='tekststatus'/>
diff --git a/tex/context/interface/keys-pe.xml b/tex/context/interface/keys-pe.xml
index 11c8447bd..396435277 100644
--- a/tex/context/interface/keys-pe.xml
+++ b/tex/context/interface/keys-pe.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='لایه‌متن'/>
 		<cd:constant name='textmargin' value='حاشیه‌متن'/>
 		<cd:constant name='textmethod' value='روش‌متن'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='جداکننده‌متن'/>
 		<cd:constant name='textsize' value='اندازه‌متن'/>
 		<cd:constant name='textstate' value='وضعیت‌متن'/>
diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml
index f8448fa53..7218a29cf 100644
--- a/tex/context/interface/keys-ro.xml
+++ b/tex/context/interface/keys-ro.xml
@@ -941,6 +941,7 @@
 		<cd:constant name='textlayer' value='textlayer'/>
 		<cd:constant name='textmargin' value='textmargin'/>
 		<cd:constant name='textmethod' value='textmethod'/>
+		<cd:constant name='textoverprint' value='textoverprint'/>
 		<cd:constant name='textseparator' value='separatortext'/>
 		<cd:constant name='textsize' value='dimensiunetext'/>
 		<cd:constant name='textstate' value='staretext'/>
-- 
cgit v1.2.3