From 84591a31c39887dbf582df5d535f1de1a115fd62 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 17 Jan 2018 13:51:05 +0100 Subject: 2018-01-17 13:16:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-fr.mkii | 5 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/grph-inc.mkiv | 18 +- tex/context/base/mkiv/luat-mac.lua | 24 +- tex/context/base/mkiv/lxml-ini.lua | 30 +- tex/context/base/mkiv/lxml-ini.mkiv | 15 +- tex/context/base/mkiv/lxml-tex.lua | 476 ++++++++++++--------- tex/context/base/mkiv/math-ali.mkiv | 41 +- tex/context/base/mkiv/meta-ini.mkiv | 12 - tex/context/base/mkiv/meta-pdh.mkiv | 4 +- tex/context/base/mkiv/mtx-context-meaning.tex | 8 +- tex/context/base/mkiv/mult-aux.mkiv | 4 +- tex/context/base/mkiv/pack-com.mkiv | 10 +- tex/context/base/mkiv/spac-ver.mkiv | 2 - tex/context/base/mkiv/status-files.pdf | Bin 25775 -> 25581 bytes tex/context/base/mkiv/status-lua.pdf | Bin 250728 -> 250148 bytes tex/context/base/mkiv/strc-flt.mkvi | 5 - tex/context/base/mkiv/strc-not.mkvi | 25 +- tex/context/base/mkiv/supp-vis.mkiv | 8 +- tex/context/base/mkiv/syst-aux.mkiv | 20 - tex/context/base/mkiv/type-ini.mkvi | 2 +- tex/context/interface/mkii/keys-fr.xml | 5 + tex/context/interface/mkiv/context-en.xml | 83 ++++ tex/context/interface/mkiv/i-context.pdf | Bin 846466 -> 847129 bytes tex/context/interface/mkiv/i-formula.xml | 4 +- tex/context/interface/mkiv/i-readme.pdf | Bin 60776 -> 60776 bytes tex/context/interface/mkiv/i-xml.xml | 53 ++- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 31 files changed, 555 insertions(+), 309 deletions(-) (limited to 'tex') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 15910dcf9..2ca1104be 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2018.01.14 15:55} +\newcontextversion{2018.01.17 13:06} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 4a48e5d24..5e3c46a5f 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2018.01.14 15:55} +\edef\contextversion{2018.01.17 13:06} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-fr.mkii b/tex/context/base/mkii/mult-fr.mkii index 926b52f7b..a744a1a53 100644 --- a/tex/context/base/mkii/mult-fr.mkii +++ b/tex/context/base/mkii/mult-fr.mkii @@ -376,6 +376,7 @@ \setinterfacevariable{norepeat}{norepeat} \setinterfacevariable{normal}{normal} \setinterfacevariable{nospacing}{sansespacement} +\setinterfacevariable{nostopper}{nostopper} \setinterfacevariable{not}{pas} \setinterfacevariable{notation}{notation} \setinterfacevariable{note}{note} @@ -1004,6 +1005,7 @@ \setinterfaceconstant{numberset}{numberset} \setinterfaceconstant{numberstarter}{numberstarter} \setinterfaceconstant{numberstopper}{numberstopper} +\setinterfaceconstant{numberstrut}{numberstrut} \setinterfaceconstant{numberstyle}{stylenumero} \setinterfaceconstant{numberwidth}{numberwidth} \setinterfaceconstant{nx}{nx} @@ -1172,7 +1174,9 @@ \setinterfaceconstant{source}{origine} \setinterfaceconstant{space}{espace} \setinterfaceconstant{spaceafter}{espaceapres} +\setinterfaceconstant{spaceafterside}{spaceafterside} \setinterfaceconstant{spacebefore}{espaceavant} +\setinterfaceconstant{spacebeforeside}{spacebeforeside} \setinterfaceconstant{spaceinbetween}{spaceinbetween} \setinterfaceconstant{spacing}{espacement} \setinterfaceconstant{specification}{specification} @@ -1237,6 +1241,7 @@ \setinterfaceconstant{titledistance}{distancetitre} \setinterfaceconstant{titleleft}{titleleft} \setinterfaceconstant{titleright}{titleright} +\setinterfaceconstant{titlestrut}{titlestrut} \setinterfaceconstant{titlestyle}{styletitre} \setinterfaceconstant{to}{vers} \setinterfaceconstant{toffset}{toffset} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index cd2bb382b..431e378c8 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2018.01.14 15:55} +\newcontextversion{2018.01.17 13:06} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index f9958698d..cac8be0c6 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -41,7 +41,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2018.01.14 15:55} +\edef\contextversion{2018.01.17 13:06} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mkiv/grph-inc.mkiv b/tex/context/base/mkiv/grph-inc.mkiv index a44d81e15..677883fbb 100644 --- a/tex/context/base/mkiv/grph-inc.mkiv +++ b/tex/context/base/mkiv/grph-inc.mkiv @@ -872,18 +872,28 @@ [\v!inline] [\c!height=\lineheight] -\defineexternalfigure +\definemeasure [\v!combination] - [\c!width=\dimexpr(% - \textwidth-\effectiveleftskip-\effectiverightskip + [(\textwidth + -\effectiveleftskip + -\effectiverightskip -\numexpr\combinationparameter\c!nx-\plusone\relax\dimexpr\combinationparameter\c!distance\relax - )/\combinationparameter\c!nx\relax] + )/\combinationparameter\c!nx] + +\defineexternalfigure + [\v!combination] + [\c!width=\measure{\v!combination}] % \startcombination[nx=2,ny=1] % {\externalfigure[dummy][combination]} {} % {\externalfigure[dummy][combination]} {} % \stopcombination +% \startcombination[nx=2,ny=1] +% {\externalfigure[dummy][width=\measure{combination}]} {} +% {\externalfigure[dummy][width=\measure{combination}]} {} +% \stopcombination + % \startcombination[nx=2,ny=2] % {\externalfigure[dummy][combination]} {} % {\externalfigure[dummy][combination]} {} diff --git a/tex/context/base/mkiv/luat-mac.lua b/tex/context/base/mkiv/luat-mac.lua index 3f1fe6751..44630b194 100644 --- a/tex/context/base/mkiv/luat-mac.lua +++ b/tex/context/base/mkiv/luat-mac.lua @@ -215,9 +215,9 @@ end -- if filename and filesuffix(filename) == "mkvi" or lpegmatch(checker,str) == "mkvi" then -- local oldsize = #str -- str = lpegmatch(parser,str,1,true) or str --- pushtarget("log") +-- pushtarget("logfile") -- report_macros("processed mkvi file %a, delta %s",filename,oldsize-#str) --- poptarget("log") +-- poptarget() -- end -- return str -- end @@ -231,9 +231,9 @@ local processors = { } function processors.mkvi(str,filename) local oldsize = #str str = lpegmatch(parser,str,1,true) or str - pushtarget("log") + pushtarget("logfile") report_macros("processed mkvi file %a, delta %s",filename,oldsize-#str) - poptarget("log") + poptarget() return str end @@ -246,9 +246,9 @@ function processors.mkix(str,filename) -- we could intercept earlier so that cac end local oldsize = #str str = convertlmxstring(str,document.variables,false) or str - pushtarget("log") + pushtarget("logfile") report_macros("processed mkix file %a, delta %s",filename,oldsize-#str) - poptarget("log") + poptarget() return str end @@ -262,9 +262,9 @@ function processors.mkxi(str,filename) local oldsize = #str str = convertlmxstring(str,document.variables,false) or str str = lpegmatch(parser,str,1,true) or str - pushtarget("log") + pushtarget("logfile") report_macros("processed mkxi file %a, delta %s",filename,oldsize-#str) - poptarget("log") + poptarget() return str end @@ -283,9 +283,9 @@ function macros.processmkvi(str,filename) if filename and filesuffix(filename) == "mkvi" or lpegmatch(checker,str) == "mkvi" then local oldsize = #str str = lpegmatch(parser,str,1,true) or str - pushtarget("log") + pushtarget("logfile") report_macros("processed mkvi file %a, delta %s",filename,oldsize-#str) - poptarget("log") + poptarget() end return str end @@ -313,9 +313,9 @@ if resolvers.schemes then io.savedata(cachename,str) else local result = lpegmatch(parser,str,1,true) or str - pushtarget("log") + pushtarget("logfile") report_macros("processed scheme %a, delta %s",filename,#str-#result) - poptarget("log") + poptarget() io.savedata(cachename,result) end end diff --git a/tex/context/base/mkiv/lxml-ini.lua b/tex/context/base/mkiv/lxml-ini.lua index 6b22caf26..f7f882cee 100644 --- a/tex/context/base/mkiv/lxml-ini.lua +++ b/tex/context/base/mkiv/lxml-ini.lua @@ -39,19 +39,15 @@ implement { name = "xmldoifelseselfempty", actions = lxml.doifelseempty, arg --------- { name = "xmlcontent", actions = lxml.content, arguments = "string" } --------- { name = "xmlflushstripped", actions = lxml.strip, arguments = { "string", true } } + implement { name = "xmlall", actions = lxml.all, arguments = { "string", "string" } } -implement { name = "xmllastmatch", actions = lxml.lastmatch } -implement { name = "xmlpushmatch", actions = lxml.pushmatch } -implement { name = "xmlpopmatch", actions = lxml.popmatch } implement { name = "xmlatt", actions = lxml.att, arguments = { "string", "string" } } -implement { name = "xmllastatt", actions = lxml.lastatt } implement { name = "xmlattdef", actions = lxml.att, arguments = { "string", "string", "string" } } implement { name = "xmlattribute", actions = lxml.attribute, arguments = { "string", "string", "string" } } implement { name = "xmlattributedef", actions = lxml.attribute, arguments = { "string", "string", "string", "string" } } -implement { name = "xmlpath", actions = lxml.path, arguments = { "string", "'/'" } } +implement { name = "xmlbadinclusions", actions = lxml.badinclusions, arguments = "string" } implement { name = "xmlchainatt", actions = lxml.chainattribute, arguments = { "string", "'/'", "string" } } implement { name = "xmlchainattdef", actions = lxml.chainattribute, arguments = { "string", "'/'", "string", "string" } } -implement { name = "xmlrefatt", actions = lxml.refatt, arguments = { "string", "string" } } implement { name = "xmlchecknamespace", actions = xml.checknamespace, arguments = { "lxmlid", "string", "string" } } implement { name = "xmlcommand", actions = lxml.command, arguments = { "string", "string", "string" } } implement { name = "xmlconcat", actions = lxml.concat, arguments = { "string", "string", "string" } } -- \detokenize{#3} @@ -71,17 +67,21 @@ implement { name = "xmlfirst", actions = lxml.first, arg implement { name = "xmlflush", actions = lxml.flush, arguments = "string" } implement { name = "xmlflushcontext", actions = lxml.context, arguments = "string" } implement { name = "xmlflushlinewise", actions = lxml.flushlinewise, arguments = "string" } +implement { name = "xmlflushpure", actions = lxml.pure, arguments = "string" } implement { name = "xmlflushspacewise", actions = lxml.flushspacewise, arguments = "string" } +implement { name = "xmlflushtext", actions = lxml.text, arguments = "string" } implement { name = "xmlfunction", actions = lxml.applyfunction, arguments = { "string", "string" } } implement { name = "xmlinclude", actions = lxml.include, arguments = { "string", "string", "string", true } } implement { name = "xmlincludeoptions", actions = lxml.include, arguments = { "string", "string", "string", "string" } } implement { name = "xmlinclusion", actions = lxml.inclusion, arguments = "string" } implement { name = "xmlinclusionbase", actions = lxml.inclusion, arguments = { "string", false, true } } implement { name = "xmlinclusions", actions = lxml.inclusions, arguments = "string" } -implement { name = "xmlbadinclusions", actions = lxml.badinclusions, arguments = "string" } implement { name = "xmlindex", actions = lxml.index, arguments = { "string", "string", "string" } } -- can be integer but now we can alias implement { name = "xmlinlineverbatim", actions = lxml.inlineverbatim, arguments = "string" } implement { name = "xmllast", actions = lxml.last, arguments = { "string", "string" } } +implement { name = "xmllastatt", actions = lxml.lastatt } +implement { name = "xmllastmatch", actions = lxml.lastmatch } +implement { name = "xmllastpar", actions = lxml.lastpar } implement { name = "xmlload", actions = lxml.load, arguments = { "string", "string", "string" } } implement { name = "xmlloadbuffer", actions = lxml.loadbuffer, arguments = { "string", "string", "string" } } implement { name = "xmlloaddata", actions = lxml.loaddata, arguments = { "string", "string", "string" } } @@ -91,13 +91,24 @@ implement { name = "xmlmatch", actions = lxml.match, arg implement { name = "xmlname", actions = lxml.name, arguments = "string" } implement { name = "xmlnamespace", actions = lxml.namespace, arguments = "string" } implement { name = "xmlnonspace", actions = lxml.nonspace, arguments = { "string", "string" } } +implement { name = "xmlpar", actions = lxml.par, arguments = { "string", "string" } } +implement { name = "xmlparam", actions = lxml.param, arguments = { "string", "string", "string" } } +implement { name = "xmlpath", actions = lxml.path, arguments = { "string", "'/'" } } +implement { name = "xmlpopmatch", actions = lxml.popmatch } implement { name = "xmlpos", actions = lxml.pos, arguments = "string" } +implement { name = "xmlpure", actions = lxml.pure, arguments = { "string", "string" } } +implement { name = "xmlpushmatch", actions = lxml.pushmatch } implement { name = "xmlraw", actions = lxml.raw, arguments = { "string", "string" } } implement { name = "xmlrawtex", actions = lxml.rawtex, arguments = { "string", "string" } } +implement { name = "xmlrefatt", actions = lxml.refatt, arguments = { "string", "string" } } implement { name = "xmlregisterns", actions = xml.registerns, arguments = { "string", "string" } } implement { name = "xmlremapname", actions = xml.remapname, arguments = { "lxmlid", "string","string","string" } } implement { name = "xmlremapnamespace", actions = xml.renamespace, arguments = { "lxmlid", "string", "string" } } implement { name = "xmlsave", actions = lxml.save, arguments = { "string", "string" } } +implement { name = "xmlsetatt", actions = lxml.setatt, arguments = { "string", "string", "string" } } +implement { name = "xmlsetattribute", actions = lxml.setattribute, arguments = { "string", "string", "string", "string" } } +implement { name = "xmlsetpar", actions = lxml.setpar, arguments = { "string", "string", "string" } } +implement { name = "xmlsetparam", actions = lxml.setparam, arguments = { "string", "string", "string", "string" } } implement { name = "xmlsetsetup", actions = lxml.setsetup, arguments = { "string", "string", "string" } } implement { name = "xmlsnippet", actions = lxml.snippet, arguments = { "string", "string" } } implement { name = "xmlstrip", actions = lxml.strip, arguments = { "string", "string" } } @@ -107,12 +118,9 @@ implement { name = "xmlstripped", actions = lxml.stripped, arg implement { name = "xmlstrippednolines", actions = lxml.stripped, arguments = { "string", "string", true } } implement { name = "xmltag", actions = lxml.tag, arguments = "string" } implement { name = "xmltext", actions = lxml.text, arguments = { "string", "string" } } -implement { name = "xmlpure", actions = lxml.pure, arguments = { "string", "string" } } -implement { name = "xmlflushtext", actions = lxml.text, arguments = "string" } -implement { name = "xmlflushpure", actions = lxml.pure, arguments = "string" } implement { name = "xmltobuffer", actions = lxml.tobuffer, arguments = { "string", "string", "string" } } -implement { name = "xmltobufferverbose", actions = lxml.tobuffer, arguments = { "string", "string", "string", true, true } } implement { name = "xmltobuffertextonly", actions = lxml.tobuffer, arguments = { "string", "string", "string", false } } +implement { name = "xmltobufferverbose", actions = lxml.tobuffer, arguments = { "string", "string", "string", true, true } } implement { name = "xmltofile", actions = lxml.tofile, arguments = { "string", "string", "string" } } implement { name = "xmltoparameters", actions = lxml.toparameters, arguments = "string" } implement { name = "xmlverbatim", actions = lxml.verbatim, arguments = "string" } diff --git a/tex/context/base/mkiv/lxml-ini.mkiv b/tex/context/base/mkiv/lxml-ini.mkiv index ef00316f0..6f64e545b 100644 --- a/tex/context/base/mkiv/lxml-ini.mkiv +++ b/tex/context/base/mkiv/lxml-ini.mkiv @@ -49,6 +49,7 @@ \let\xmlattdef \clf_xmlattdef \let\xmlattribute \clf_xmlattribute \let\xmlattributedef \clf_xmlattributedef +\let\xmlbadinclusions \clf_xmlbadinclusions \let\xmlchainatt \clf_xmlchainatt \let\xmlchainattdef \clf_xmlchainattdef \let\xmlchecknamespace \clf_xmlchecknamespace @@ -77,30 +78,36 @@ \let\xmlinclusion \clf_xmlinclusion \let\xmlinclusionbase \clf_xmlinclusionbase \let\xmlinclusions \clf_xmlinclusions -\let\xmlbadinclusions \clf_xmlbadinclusions \let\xmlindex \clf_xmlindex \let\xmlinlineverbatim \clf_xmlinlineverbatim \let\xmllast \clf_xmllast \let\xmllastatt \clf_xmllastatt \let\xmllastmatch \clf_xmllastmatch -\let\xmlpushmatch \clf_xmlpushmatch -\let\xmlpopmatch \clf_xmlpopmatch +\let\xmllastpar \clf_xmllastpar \let\xmlloaddirectives \clf_xmlloaddirectives \let\xmlmain \clf_xmlmain \let\xmlmatch \clf_xmlmatch \let\xmlname \clf_xmlname \let\xmlnamespace \clf_xmlnamespace \let\xmlnonspace \clf_xmlnonspace +\let\xmlpar \clf_xmlpar +\let\xmlparam \clf_xmlparam \let\xmlpath \clf_xmlpath +\let\xmlpopmatch \clf_xmlpopmatch \let\xmlpos \clf_xmlpos \let\xmlposition \clf_xmlindex \let\xmlpure \clf_xmlpure +\let\xmlpushmatch \clf_xmlpushmatch \let\xmlraw \clf_xmlraw \let\xmlrefatt \clf_xmlrefatt \let\xmlregisterns \clf_xmlregisterns % document \let\xmlremapname \clf_xmlremapname % element \let\xmlremapnamespace \clf_xmlremapnamespace % document \let\xmlsave \clf_xmlsave +\let\xmlsetatt \clf_xmlsetatt +\let\xmlsetattribute \clf_xmlsetattribute +\let\xmlsetpar \clf_xmlsetpar +\let\xmlsetparam \clf_xmlsetparam \let\xmlsetsetup \clf_xmlsetsetup \let\xmlsnippet \clf_xmlsnippet \let\xmlstrip \clf_xmlstrip @@ -111,8 +118,8 @@ \let\xmltag \clf_xmltag \let\xmltext \clf_xmltext \let\xmltobuffer \clf_xmltobuffer % id pattern name -\let\xmltobufferverbose \clf_xmltobufferverbose % id pattern name \let\xmltobuffertextonly \clf_xmltobuffertextonly % id pattern name +\let\xmltobufferverbose \clf_xmltobufferverbose % id pattern name \let\xmltofile \clf_xmltofile % id pattern filename \let\xmltoparameters \clf_xmltoparameters \let\xmlverbatim \clf_xmlverbatim diff --git a/tex/context/base/mkiv/lxml-tex.lua b/tex/context/base/mkiv/lxml-tex.lua index 5223fb8c9..736df7ce2 100644 --- a/tex/context/base/mkiv/lxml-tex.lua +++ b/tex/context/base/mkiv/lxml-tex.lua @@ -1516,6 +1516,18 @@ local function attribute(collected,a,default) end end +local function parameter(collected,p,default) + if collected and #collected > 0 then + local pa = collected[1].pa + local str = (pa and pa[p]) or default + if str and str ~= "" then + contextsprint(notcatcodes,str) + end + elseif default then + contextsprint(notcatcodes,default) + end +end + local function chainattribute(collected,arguments,default) -- todo: optional levels if collected and #collected > 0 then local e = collected[1] @@ -1672,6 +1684,8 @@ texfinalizers.reverse = reverse texfinalizers.count = count texfinalizers.command = command texfinalizers.attribute = attribute +texfinalizers.param = parameter +texfinalizers.parameter = parameter texfinalizers.text = text texfinalizers.stripped = stripped texfinalizers.lower = lower @@ -1806,6 +1820,15 @@ function lxml.attribute(id,pattern,a,default) end end +function lxml.parameter(id,pattern,p,default) + local collected = xmlapplylpath(getid(id),pattern) + if collected then + parameter(collected,p,default) + end +end + +lxml.param = lxml.parameter + function lxml.raw(id,pattern) -- the content, untouched by commands local collected = (pattern and xmlapplylpath(getid(id),pattern)) or getid(id) if collected and #collected > 0 then @@ -1910,45 +1933,6 @@ function lxml.pos(id) contextsprint(ctxcatcodes,e and e.ni or 0) end --- function lxml.att(id,a,default) --- local root = getid(id) --- if root then --- local at = root.at --- local str = (at and at[a]) or default --- if str and str ~= "" then --- contextsprint(notcatcodes,str) --- end --- elseif default then --- contextsprint(notcatcodes,default) --- end --- end --- --- no need for an assignment so: - --- function lxml.att(id,a,default) --- local e = getid(id) --- if e then --- local at = e.at --- if at then --- -- normally always true --- local str = at[a] --- if not str then --- if default and default ~= "" then --- contextsprint(notcatcodes,default) --- end --- elseif str ~= "" then --- contextsprint(notcatcodes,str) --- else --- -- explicit empty is valid --- end --- elseif default and default ~= "" then --- contextsprint(notcatcodes,default) --- end --- elseif default and default ~= "" then --- contextsprint(notcatcodes,default) --- end --- end - do local att @@ -2006,6 +1990,45 @@ do end +do + + local par + + function lxml.par(id,p,default) + local e = getid(id) + if e then + local pa = e.pa + if pa then + -- normally always true + par = pa[p] + if not par then + if default and default ~= "" then + par = default + contextsprint(notcatcodes,default) + end + elseif par ~= "" then + contextsprint(notcatcodes,par) + else + -- explicit empty is valid + end + elseif default and default ~= "" then + par = default + contextsprint(notcatcodes,default) + end + elseif default and default ~= "" then + par = default + contextsprint(notcatcodes,default) + else + par = "" + end + end + + function lxml.lastpar() + contextsprint(notcatcodes,par) + end + +end + function lxml.name(id) local e = getid(id) if e then @@ -2115,33 +2138,37 @@ end -- testers -local found, empty = xml.found, xml.empty +do -local doif, doifnot, doifelse = commands.doif, commands.doifnot, commands.doifelse + local found, empty = xml.found, xml.empty -function lxml.doif (id,pattern) doif (found(getid(id),pattern)) end -function lxml.doifnot (id,pattern) doifnot (found(getid(id),pattern)) end -function lxml.doifelse (id,pattern) doifelse(found(getid(id),pattern)) end -function lxml.doiftext (id,pattern) doif (not empty(getid(id),pattern)) end -function lxml.doifnottext (id,pattern) doifnot (not empty(getid(id),pattern)) end -function lxml.doifelsetext (id,pattern) doifelse(not empty(getid(id),pattern)) end + local doif, doifnot, doifelse = commands.doif, commands.doifnot, commands.doifelse --- special case: "*" and "" -> self else lpath lookup + function lxml.doif (id,pattern) doif (found(getid(id),pattern)) end + function lxml.doifnot (id,pattern) doifnot (found(getid(id),pattern)) end + function lxml.doifelse (id,pattern) doifelse(found(getid(id),pattern)) end + function lxml.doiftext (id,pattern) doif (not empty(getid(id),pattern)) end + function lxml.doifnottext (id,pattern) doifnot (not empty(getid(id),pattern)) end + function lxml.doifelsetext (id,pattern) doifelse(not empty(getid(id),pattern)) end -local function checkedempty(id,pattern) - local e = getid(id) - if not pattern or pattern == "" then - local dt = e.dt - local nt = #dt - return (nt == 0) or (nt == 1 and dt[1] == "") - else - return empty(getid(id),pattern) + -- special case: "*" and "" -> self else lpath lookup + + local function checkedempty(id,pattern) + local e = getid(id) + if not pattern or pattern == "" then + local dt = e.dt + local nt = #dt + return (nt == 0) or (nt == 1 and dt[1] == "") + else + return empty(getid(id),pattern) + end end -end -function lxml.doifempty (id,pattern) doif (checkedempty(id,pattern)) end -function lxml.doifnotempty (id,pattern) doifnot (checkedempty(id,pattern)) end -function lxml.doifelseempty(id,pattern) doifelse(checkedempty(id,pattern)) end + function lxml.doifempty (id,pattern) doif (checkedempty(id,pattern)) end + function lxml.doifnotempty (id,pattern) doifnot (checkedempty(id,pattern)) end + function lxml.doifelseempty(id,pattern) doifelse(checkedempty(id,pattern)) end + +end -- status info @@ -2295,145 +2322,139 @@ function lxml.tobuffer(id,pattern,name,unescaped,contentonly) end end +-- parameters --- relatively new: +function lxml.setatt(id,name,value) + local e = getid(id) + if e then + local a = e.at + if a then + a[name] = value + else + e.at = { [name] = value } + end + end +end -local permitted = nil -local ctx_xmlinjector = context.xmlinjector +function lxml.setpar(id,name,value) + local e = getid(id) + if e then + local p = e.pa + if p then + p[name] = value + else + e.pa = { [name] = value } + end + end +end + +function lxml.setattribute(id,pattern,name,value) + local collected = xmlapplylpath(getid(id),pattern) + if collected then + for i=1,#collected do + setatt(collected[i],name,value) + end + end +end -xml.pihandlers["injector"] = function(category,rest,e) - local options = options_to_array(rest) - local action = options[1] - if not action then - return +function lxml.setparameter(id,pattern,name,value) + local collected = xmlapplylpath(getid(id),pattern) + if collected then + for i=1,#collected do + setpar(collected[i],name,value) + end end - local n = #options - if n > 1 then - local category = options[2] - if category == "*" then - ctx_xmlinjector(action) - elseif permitted then - if n == 2 then - if permitted[category] then - ctx_xmlinjector(action) - end - else - for i=2,n do - local category = options[i] - if category == "*" or permitted[category] then +end + +lxml.setparam = lxml.setparameter + +-- relatively new: + +do + + local permitted = nil + local ctx_xmlinjector = context.xmlinjector + + xml.pihandlers["injector"] = function(category,rest,e) + local options = options_to_array(rest) + local action = options[1] + if not action then + return + end + local n = #options + if n > 1 then + local category = options[2] + if category == "*" then + ctx_xmlinjector(action) + elseif permitted then + if n == 2 then + if permitted[category] then ctx_xmlinjector(action) - return + end + else + for i=2,n do + local category = options[i] + if category == "*" or permitted[category] then + ctx_xmlinjector(action) + return + end end end end + else + ctx_xmlinjector(action) end - else - ctx_xmlinjector(action) end -end -local pattern = P("context-") * C((1-patterns.whitespace)^1) * C(P(1)^1) + local pattern = P("context-") * C((1-patterns.whitespace)^1) * C(P(1)^1) -function lxml.applyselectors(id) - local root = getid(id) - local function filter(e) - local dt = e.dt - if not dt then - report_lxml("error in selector, no data in %a",e.tg or "?") - return - end - local ndt = #dt - local done = false - local i = 1 - while i <= ndt do - local dti = dt[i] - if type(dti) == "table" then - if dti.tg == "@pi@" then - local text = dti.dt[1] - local what, rest = lpegmatch(pattern,text) - if what == "select" then - local categories = options_to_hash(rest) - if categories["begin"] then - local okay = false - if permitted then - for k, v in next, permitted do - if categories[k] then - okay = k - break + function lxml.applyselectors(id) + local root = getid(id) + local function filter(e) + local dt = e.dt + if not dt then + report_lxml("error in selector, no data in %a",e.tg or "?") + return + end + local ndt = #dt + local done = false + local i = 1 + while i <= ndt do + local dti = dt[i] + if type(dti) == "table" then + if dti.tg == "@pi@" then + local text = dti.dt[1] + local what, rest = lpegmatch(pattern,text) + if what == "select" then + local categories = options_to_hash(rest) + if categories["begin"] then + local okay = false + if permitted then + for k, v in next, permitted do + if categories[k] then + okay = k + break + end end end - end - if okay then - if trace_selectors then - report_lxml("accepting selector: %s",okay) - end - else - categories.begin = false - if trace_selectors then - report_lxml("rejecting selector: % t",sortedkeys(categories)) - end - end - for j=i,ndt do - local dtj = dt[j] - if type(dtj) == "table" then - local tg = dtj.tg - if tg == "@pi@" then - local text = dtj.dt[1] - local what, rest = lpegmatch(pattern,text) - if what == "select" then - local categories = options_to_hash(rest) - if categories["end"] then - i = j - break - else - -- error - end - end - elseif not okay then - dtj.tg = "@cm@" + if okay then + if trace_selectors then + report_lxml("accepting selector: %s",okay) end else --- dt[j] = "" -- okay ? - end - end - end - elseif what == "include" then - local categories = options_to_hash(rest) - if categories["begin"] then - local okay = false - if permitted then - for k, v in next, permitted do - if categories[k] then - okay = k - break + categories.begin = false + if trace_selectors then + report_lxml("rejecting selector: % t",sortedkeys(categories)) end end - end - if okay then - if trace_selectors then - report_lxml("accepting include: %s",okay) - end - else - categories.begin = false - if trace_selectors then - report_lxml("rejecting include: % t",sortedkeys(categories)) - end - end - if okay then for j=i,ndt do local dtj = dt[j] if type(dtj) == "table" then local tg = dtj.tg - if tg == "@cm@" then - local content = dtj.dt[1] - local element = root and xml.toelement(content,root) - dt[j] = element - element.__p__ = dt -- needs checking - done = true - elseif tg == "@pi@" then + if tg == "@pi@" then local text = dtj.dt[1] local what, rest = lpegmatch(pattern,text) - if what == "include" then + if what == "select" then local categories = options_to_hash(rest) if categories["end"] then i = j @@ -2442,48 +2463,103 @@ function lxml.applyselectors(id) -- error end end + elseif not okay then + dtj.tg = "@cm@" + end + else + -- dt[j] = "" -- okay ? + end + end + end + elseif what == "include" then + local categories = options_to_hash(rest) + if categories["begin"] then + local okay = false + if permitted then + for k, v in next, permitted do + if categories[k] then + okay = k + break + end + end + end + if okay then + if trace_selectors then + report_lxml("accepting include: %s",okay) + end + else + categories.begin = false + if trace_selectors then + report_lxml("rejecting include: % t",sortedkeys(categories)) + end + end + if okay then + for j=i,ndt do + local dtj = dt[j] + if type(dtj) == "table" then + local tg = dtj.tg + if tg == "@cm@" then + local content = dtj.dt[1] + local element = root and xml.toelement(content,root) + dt[j] = element + element.__p__ = dt -- needs checking + done = true + elseif tg == "@pi@" then + local text = dtj.dt[1] + local what, rest = lpegmatch(pattern,text) + if what == "include" then + local categories = options_to_hash(rest) + if categories["end"] then + i = j + break + else + -- error + end + end + end end end end end + elseif dti then + filter(dti) end - elseif dti then - filter(dti) + end + if done then + -- probably not needed + xml.reindex(dt) end end - if done then - -- probably not needed - xml.reindex(dt) - end + i = i + 1 end - i = i + 1 end + xmlwithelements(root,filter) end - xmlwithelements(root,filter) -end -function xml.setinjectors(set) - local s = settings_to_set(set) - if permitted then - for k, v in next, s do - permitted[k] = true + function xml.setinjectors(set) + local s = settings_to_set(set) + if permitted then + for k, v in next, s do + permitted[k] = true + end + else + permitted = s end - else - permitted = s end -end -function xml.resetinjectors(set) - if permitted and set and set ~= "" then - local s = settings_to_set(set) - for k, v in next, s do - if v then - permitted[k] = nil + function xml.resetinjectors(set) + if permitted and set and set ~= "" then + local s = settings_to_set(set) + for k, v in next, s do + if v then + permitted[k] = nil + end end + else + permitted = nil end - else - permitted = nil end + end implement { diff --git a/tex/context/base/mkiv/math-ali.mkiv b/tex/context/base/mkiv/math-ali.mkiv index 6e2972615..4de35723b 100644 --- a/tex/context/base/mkiv/math-ali.mkiv +++ b/tex/context/base/mkiv/math-ali.mkiv @@ -430,10 +430,13 @@ {\ifmmode \let\stopalign\align_math_normal_stop % cannot be an unexpanded def ... lookahead in align \expandafter\align_math_normal_start + \else\ifinformula + \let\stopalign\align_math_normal_stop + \doubleexpandafter\align_math_normal_start \else \let\stopalign\align_text_normal_stop - \expandafter\align_text_normal_start - \fi} + \doubleexpandafter\align_text_normal_start + \fi\fi} \let\stopalign\relax @@ -441,10 +444,13 @@ {\ifmmode \let\stopalignment\align_math_normal_stop % cannot be an unexpanded def ... lookahead in align \expandafter\align_math_normal_start + \else\ifinformula + \let\stopalignment\align_math_normal_stop % cannot be an unexpanded def ... lookahead in align + \doubleexpandafter\align_math_normal_start \else \let\stopalignment\align_text_normal_stop - \expandafter\align_text_normal_start - \fi} + \doubleexpandafter\align_text_normal_start + \fi\fi} \let\stopalignment\relax @@ -1307,10 +1313,12 @@ {\setvalue{\??mathinnerstart#1}{#2}% \setvalue{\??mathinnerstop #1}{#3}} -\newif\iftracemath +\installtextracker + {formulas.boxes} + {\let\math_hbox\ruledhbox} + {\let\math_hbox\hbox} -\def\math_hbox - {\iftracemath\ruledhbox\else\hbox\fi} +\let\math_hbox\hbox \newconstant\mathraggedstatus % normal left center right \newconstant\mathnumberstatus % nothing normal shift_right @@ -1793,7 +1801,24 @@ \setupmathematics [\c!textdistance=\zeropoint] -%D For documentation, see \type {math-mkiv.tex}. +%D This is an experiment. No fancy spacing and alignments here. If we ever +%D go that route it might result in incompatible rendering. + +\unexpanded\def\startsplitformula + {\ifhmode + \par + \fi + \begingroup + \beforedisplayspace + % subset of \everydisplay: + \attribute \mathmodeattribute \plusone + \settrue \indisplaymath + % end of subset + \informulatrue} + +\unexpanded\def\stopsplitformula + {\afterdisplayspace + \endgroup} \protect \endinput diff --git a/tex/context/base/mkiv/meta-ini.mkiv b/tex/context/base/mkiv/meta-ini.mkiv index f9e69b7e1..5fc89e2f6 100644 --- a/tex/context/base/mkiv/meta-ini.mkiv +++ b/tex/context/base/mkiv/meta-ini.mkiv @@ -254,7 +254,6 @@ {\begingroup \meta_enable_include \the\everyMPgraphic - %\setMPrandomseed % this has to change \edef\p_initializations{\MPinstanceparameter\s!initializations}% \ifx\p_initializations\v!yes \settrue \c_meta_include_initializations @@ -327,17 +326,6 @@ \meta_process_graphic{input "#1" ;}% \endgroup} -% \newif\ifsetMPrandomseed \setMPrandomseedtrue % false by default -% -% \let\theMPrandomseed\empty -% -% \def\setMPrandomseed -% {\ifsetMPrandomseed -% \def\theMPrandomseed{randomseed:=\mprandomnumber;}% -% \else -% \let\theMPrandomseed\empty -% \fi} - %D Calling up previously defined graphics. % \def\includeMPgraphic#1% gets expanded ! diff --git a/tex/context/base/mkiv/meta-pdh.mkiv b/tex/context/base/mkiv/meta-pdh.mkiv index 9f726e6f9..f9eff73ca 100644 --- a/tex/context/base/mkiv/meta-pdh.mkiv +++ b/tex/context/base/mkiv/meta-pdh.mkiv @@ -268,8 +268,8 @@ %D {0.001} is the first path and \type {0.010} the tenth. Since %D \METAPOST strips trailing zeros, we have to padd the string. -\newif\ifMPcmykcolors -\newif\ifMPspotcolors +% \newif\ifMPcmykcolors +% \newif\ifMPspotcolors %D Specials: diff --git a/tex/context/base/mkiv/mtx-context-meaning.tex b/tex/context/base/mkiv/mtx-context-meaning.tex index 88ca21759..c65ec7f46 100644 --- a/tex/context/base/mkiv/mtx-context-meaning.tex +++ b/tex/context/base/mkiv/mtx-context-meaning.tex @@ -20,6 +20,8 @@ % example: context --extra=meaning --pattern=*paper* % context --extra=meaning setuplayout % context --extra=meaning setup_layout +% context --extra=meaning --once --noconsole --nostatistics setuplayout +% mtxrun --silent --script context --extra=meaning --once --noconsole --nostatistics setuplayout % % end help @@ -29,9 +31,11 @@ [dejavu] \def\showmeaning#1% - {\writestatus{meaning}{\strippedcsname#1}% + {\ctxlua{logs.pushtarget("both")}% + \writestatus{meaning}{\strippedcsname#1}% \writestring{}% - \writestring{\expandafter\meaning\begincsname#1\endcsname}} + \writestring{\expandafter\meaning\begincsname#1\endcsname}% + \ctxlua{logs.poptarget()}} \starttext diff --git a/tex/context/base/mkiv/mult-aux.mkiv b/tex/context/base/mkiv/mult-aux.mkiv index 35b3fb189..66745360a 100644 --- a/tex/context/base/mkiv/mult-aux.mkiv +++ b/tex/context/base/mkiv/mult-aux.mkiv @@ -29,7 +29,9 @@ \unprotect -\edef\??empty{\Uchar25} \letvalue{\Uchar25}\empty % cancel: dec:24 hex:18 +\edef\??empty{\Uchar25} \letvalue{\Uchar25}\empty % cancel: dec:24 hex:18 + +%edef\s!parent{\Uchar29} \letvalue{\Uchar29}\empty % + inlining  is ugly, a tiny bit faster, but neglectable on a run %D \starttyping %D \unprotect diff --git a/tex/context/base/mkiv/pack-com.mkiv b/tex/context/base/mkiv/pack-com.mkiv index 0f5fa1f0c..59354208e 100644 --- a/tex/context/base/mkiv/pack-com.mkiv +++ b/tex/context/base/mkiv/pack-com.mkiv @@ -276,6 +276,8 @@ \unexpanded\def\pack_combinations_start_indeed[#1*#2*#3]% {\global\c_pack_combinations_x#1\relax \global\c_pack_combinations_y#2\relax + \setexpandedcombinationparameter\c!nx{\the\c_pack_combinations_x}% in case we access it + \setexpandedcombinationparameter\c!ny{\the\c_pack_combinations_y}% in case we access it \pack_combinations_check_x_y \dotagcombination \global\setbox\b_pack_combinations_captions\emptybox @@ -795,25 +797,25 @@ \pairedboxparameter\c!inbetween \box\b_pack_pairedboxes_second} -\setvalue{\??pairedboxalign \v!left}% 0 +\setvalue{\??pairedboxalign\v!left}% 0 {\let\pack_pairedboxes_align_l\relax \let\pack_pairedboxes_align_r\hss \let\pack_pairedboxes_align_t\relax \let\pack_pairedboxes_align_b\relax} -\setvalue{\??pairedboxalign \v!right}% 1 +\setvalue{\??pairedboxalign\v!right}% 1 {\let\pack_pairedboxes_align_l\hss \let\pack_pairedboxes_align_r\relax \let\pack_pairedboxes_align_t\relax \let\pack_pairedboxes_align_b\relax} -\setvalue{\??pairedboxalign \v!high}% 2 +\setvalue{\??pairedboxalign\v!high}% 2 {\let\pack_pairedboxes_align_l\relax \let\pack_pairedboxes_align_r\relax \let\pack_pairedboxes_align_t\relax \let\pack_pairedboxes_align_b\vss} -\setvalue{\??pairedboxalign \v!low}% 3 +\setvalue{\??pairedboxalign\v!low}% 3 {\let\pack_pairedboxes_align_l\relax \let\pack_pairedboxes_align_r\relax \let\pack_pairedboxes_align_t\vss diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv index c529322e1..1e173f5e8 100644 --- a/tex/context/base/mkiv/spac-ver.mkiv +++ b/tex/context/base/mkiv/spac-ver.mkiv @@ -1373,8 +1373,6 @@ \global\let\restoreinterlinepenalty\spac_penalties_restore \fi} -\newif\ifgridsnapping % to be sure - \def\defaultdisplaywidowpenalty {50} \def\defaultwidowpenalty {2000} % was: 1000 \def\defaultclubpenalty {2000} % was: 800 diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index b04345260..9091299a5 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 60dc11947..5715fe76e 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/strc-flt.mkvi b/tex/context/base/mkiv/strc-flt.mkvi index 4f7d93645..2d085b62b 100644 --- a/tex/context/base/mkiv/strc-flt.mkvi +++ b/tex/context/base/mkiv/strc-flt.mkvi @@ -361,11 +361,6 @@ \endgroup \doifsomething{\floatcaptionparameter\c!spaceafter}{\blank[\floatcaptionparameter\c!spaceafter]}} -% \newif\iftracecaptions -% -% \def\settracedcaptionbox -% {\iftracecaptions\setbox\b_strc_floats_caption\ruledhbox{\box\b_strc_floats_caption}\fi} - % \definefloat [figure-1] [figure] % \definefloat [figure-2] [figure] % \setupfloat [figure-1] [location=left,leftmargin=10mm] diff --git a/tex/context/base/mkiv/strc-not.mkvi b/tex/context/base/mkiv/strc-not.mkvi index a1c44bce8..8952f0e9c 100644 --- a/tex/context/base/mkiv/strc-not.mkvi +++ b/tex/context/base/mkiv/strc-not.mkvi @@ -1381,23 +1381,30 @@ \penalty\zerocount % otherwise no split in columns, maybe just always (tex just adds it to accumulated) \fi} - \appendtoks \strc_notes_set_penalties - \forgetall + \forgetall % again \strc_notes_set_bodyfont \redoconvertfont % to undo \undo calls in in headings etc \splittopskip\strutht % not actually needed here \splitmaxdepth\strutdp % not actually needed here - % brrr -% \leftmargindistance \noteparameter\c!margindistance -% \rightmargindistance\leftmargindistance -% \ifnum\noteparameter\c!n=\zerocount % no ifcase new 31-07-99 ; always ? -% \doifnotinset{\noteparameter\c!width}{\v!fit,\v!broad}\setnotehsize % ? -% \fi + % not: +% \leftmargindistance \noteparameter\c!margindistance +% \rightmargindistance\leftmargindistance +% \ifnum\noteparameter\c!n=\zerocount % no ifcase new 31-07-99 ; always ? +% \doifnotinset{\noteparameter\c!width}{\v!fit,\v!broad}\setnotehsize % ? +% \fi + % \to \everyinsidenoteinsert -\appendtoks % only needed when columns +% maybe but better use [scope=local] here +% +% \appendtoks +% \setfalse\inhibitmargindata +% \to \everyinsidenoteinsert + +\appendtoks + % only needed when columns (could be three \set...) \setsimplecolumnshsize[\c!distance=\noteparameter\c!columndistance,\c!n=\noteparameter\c!n,\c!width=\noteparameter\c!width]% \to \everyinsidenoteinsert diff --git a/tex/context/base/mkiv/supp-vis.mkiv b/tex/context/base/mkiv/supp-vis.mkiv index 4fa50ebe5..23dfcb5fa 100644 --- a/tex/context/base/mkiv/supp-vis.mkiv +++ b/tex/context/base/mkiv/supp-vis.mkiv @@ -710,7 +710,7 @@ \newdimen\testrulewidth \testrulewidth=\boxrulewidth \newif\ifvisiblestretch \visiblestretchfalse - + %D \macros %D {ruledhss, %D ruledhfil,ruledhfilneg, @@ -894,7 +894,7 @@ \unexpanded\def\ruledvfill {\doruledvfiller\normalvfill \normalvfillneg{-12}} \unexpanded\def\ruledvfilneg {\doruledvfiller\normalvfilneg \normalvfil {8}} \unexpanded\def\ruledvfillneg{\doruledvfiller\normalvfillneg\normalvfill {16}} - + %D \macros %D {ruledhskip} %D @@ -1403,7 +1403,7 @@ \unexpanded\def\ruledvglue {\bgroup \afterassignment\supp_visualizers_vglue_indeed\scratchskip=} - + %D \macros %D {ruledmkern,ruledmskip} %D @@ -1698,8 +1698,6 @@ %D For those who want to manipulate the visual cues in detail, %D we have grouped them. -\newif\ifshowingcomposition % see later why we need this - \unexpanded\def\showfils {\showingcompositiontrue \let\hss \ruledhss diff --git a/tex/context/base/mkiv/syst-aux.mkiv b/tex/context/base/mkiv/syst-aux.mkiv index 55015b43f..efd964ac4 100644 --- a/tex/context/base/mkiv/syst-aux.mkiv +++ b/tex/context/base/mkiv/syst-aux.mkiv @@ -181,7 +181,6 @@ %D These are not needed any more now that we have wide screens (and bytes come %D cheap). - \let\@EA \singleexpandafter \let\@EAEAEA \doubleexpandafter \let\@EAEAEAEAEAEA\tripleexpandafter @@ -3098,25 +3097,6 @@ \let\immediatemessage\clf_immediatemessage % {} mandate -%D \macros -%D {debuggerinfo} -%D -%D For debugging purposes we can enhance macros with the -%D next alternative. Here \type{debuggerinfo} stands for both -%D a macro accepting two arguments and a boolean (in fact a -%D few macro's too). - -% \newif\ifdebuggerinfo -% -% \unexpanded\def\debuggerinfo#1#2% -% {\ifdebuggerinfo -% \writestatus{debugger}{#1:: #2}% -% \fi} -% -% \ifdefined\writestatus \else \let\writestatus\normalwritestatus \fi - -% % % % % % % % % % % % % % % % % % % % % % % % - %D \macros %D {rawgetparameters} %D diff --git a/tex/context/base/mkiv/type-ini.mkvi b/tex/context/base/mkiv/type-ini.mkvi index 9e6e13c9b..2ac3ee207 100644 --- a/tex/context/base/mkiv/type-ini.mkvi +++ b/tex/context/base/mkiv/type-ini.mkvi @@ -258,7 +258,7 @@ \def\font_typescripts_synonym_define[#name][#synonym]% {\ifsecondargument\setevalue{\??typescriptsynonyms#name}{#synonym}\fi} -\def\truetypescript#name% recursove so no \lastnamedcs +\def\truetypescript#name% recursive so no \lastnamedcs {\ifcsname\??typescriptsynonyms#name\endcsname %\expandafter\truetypescript\csname\??typescriptsynonyms#name\endcsname \expandafter\truetypescript\lastnamedcs diff --git a/tex/context/interface/mkii/keys-fr.xml b/tex/context/interface/mkii/keys-fr.xml index 2b2256d46..36d875232 100644 --- a/tex/context/interface/mkii/keys-fr.xml +++ b/tex/context/interface/mkii/keys-fr.xml @@ -379,6 +379,7 @@ + @@ -1010,6 +1011,7 @@ + @@ -1178,7 +1180,9 @@ + + @@ -1243,6 +1247,7 @@ + diff --git a/tex/context/interface/mkiv/context-en.xml b/tex/context/interface/mkiv/context-en.xml index 48fcac906..a097626db 100644 --- a/tex/context/interface/mkiv/context-en.xml +++ b/tex/context/interface/mkiv/context-en.xml @@ -13312,6 +13312,7 @@ + @@ -45189,6 +45190,19 @@ + + + + + + + + + + + + + @@ -45226,6 +45240,22 @@ + + + + + + + + + + + + + + + + @@ -45265,6 +45295,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf index a5ba5a662..7e2e1b944 100644 Binary files a/tex/context/interface/mkiv/i-context.pdf and b/tex/context/interface/mkiv/i-context.pdf differ diff --git a/tex/context/interface/mkiv/i-formula.xml b/tex/context/interface/mkiv/i-formula.xml index a6208fe4a..07127a629 100644 --- a/tex/context/interface/mkiv/i-formula.xml +++ b/tex/context/interface/mkiv/i-formula.xml @@ -324,4 +324,6 @@ - \ No newline at end of file + + + diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf index b4431ff9f..7c54b4af0 100644 Binary files a/tex/context/interface/mkiv/i-readme.pdf and b/tex/context/interface/mkiv/i-readme.pdf differ diff --git a/tex/context/interface/mkiv/i-xml.xml b/tex/context/interface/mkiv/i-xml.xml index 9acd4038c..d09913f7c 100644 --- a/tex/context/interface/mkiv/i-xml.xml +++ b/tex/context/interface/mkiv/i-xml.xml @@ -367,6 +367,14 @@ + + + + + + + + @@ -392,6 +400,15 @@ + + + + + + + + + @@ -416,6 +433,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -852,4 +903,4 @@ - \ No newline at end of file + diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 37e2dbfc5..b1e0036a7 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 01/14/18 15:55:33 +-- merge date : 01/17/18 13:06:36 do -- begin closure to overcome local limits and interference -- cgit v1.2.3