summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2018-01-17 13:51:05 +0100
committerContext Git Mirror Bot <phg42.2a@gmail.com>2018-01-17 13:51:05 +0100
commit84591a31c39887dbf582df5d535f1de1a115fd62 (patch)
tree1c4613a1c79db3cdfb41b977c64e993492fbdd88 /tex
parenta16cd078a5cc00d7c789093b5209b6f8d2dfdb1a (diff)
downloadcontext-84591a31c39887dbf582df5d535f1de1a115fd62.tar.gz
2018-01-17 13:16:00
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-fr.mkii5
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/grph-inc.mkiv18
-rw-r--r--tex/context/base/mkiv/luat-mac.lua24
-rw-r--r--tex/context/base/mkiv/lxml-ini.lua30
-rw-r--r--tex/context/base/mkiv/lxml-ini.mkiv15
-rw-r--r--tex/context/base/mkiv/lxml-tex.lua476
-rw-r--r--tex/context/base/mkiv/math-ali.mkiv41
-rw-r--r--tex/context/base/mkiv/meta-ini.mkiv12
-rw-r--r--tex/context/base/mkiv/meta-pdh.mkiv4
-rw-r--r--tex/context/base/mkiv/mtx-context-meaning.tex8
-rw-r--r--tex/context/base/mkiv/mult-aux.mkiv4
-rw-r--r--tex/context/base/mkiv/pack-com.mkiv10
-rw-r--r--tex/context/base/mkiv/spac-ver.mkiv2
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin25775 -> 25581 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin250728 -> 250148 bytes
-rw-r--r--tex/context/base/mkiv/strc-flt.mkvi5
-rw-r--r--tex/context/base/mkiv/strc-not.mkvi25
-rw-r--r--tex/context/base/mkiv/supp-vis.mkiv8
-rw-r--r--tex/context/base/mkiv/syst-aux.mkiv20
-rw-r--r--tex/context/base/mkiv/type-ini.mkvi2
-rw-r--r--tex/context/interface/mkii/keys-fr.xml5
-rw-r--r--tex/context/interface/mkiv/context-en.xml83
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin846466 -> 847129 bytes
-rw-r--r--tex/context/interface/mkiv/i-formula.xml4
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin60776 -> 60776 bytes
-rw-r--r--tex/context/interface/mkiv/i-xml.xml53
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
31 files changed, 555 insertions, 309 deletions
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
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 60dc11947..5715fe76e 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files 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
@@ -3099,25 +3098,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
%D A raw and dirty alternative for \type {\getparameters}; no
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 @@
<cd:variable name='norepeat' value='norepeat'/>
<cd:variable name='normal' value='normal'/>
<cd:variable name='nospacing' value='sansespacement'/>
+ <cd:variable name='nostopper' value='nostopper'/>
<cd:variable name='not' value='pas'/>
<cd:variable name='notation' value='notation'/>
<cd:variable name='note' value='note'/>
@@ -1010,6 +1011,7 @@
<cd:constant name='numberset' value='numberset'/>
<cd:constant name='numberstarter' value='numberstarter'/>
<cd:constant name='numberstopper' value='numberstopper'/>
+ <cd:constant name='numberstrut' value='numberstrut'/>
<cd:constant name='numberstyle' value='stylenumero'/>
<cd:constant name='numberwidth' value='numberwidth'/>
<cd:constant name='nx' value='nx'/>
@@ -1178,7 +1180,9 @@
<cd:constant name='source' value='origine'/>
<cd:constant name='space' value='espace'/>
<cd:constant name='spaceafter' value='espaceapres'/>
+ <cd:constant name='spaceafterside' value='spaceafterside'/>
<cd:constant name='spacebefore' value='espaceavant'/>
+ <cd:constant name='spacebeforeside' value='spacebeforeside'/>
<cd:constant name='spaceinbetween' value='spaceinbetween'/>
<cd:constant name='spacing' value='espacement'/>
<cd:constant name='specification' value='specification'/>
@@ -1243,6 +1247,7 @@
<cd:constant name='titledistance' value='distancetitre'/>
<cd:constant name='titleleft' value='titleleft'/>
<cd:constant name='titleright' value='titleright'/>
+ <cd:constant name='titlestrut' value='titlestrut'/>
<cd:constant name='titlestyle' value='styletitre'/>
<cd:constant name='to' value='vers'/>
<cd:constant name='toffset' value='toffset'/>
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 @@
<cd:command category="mathematics" file="strc-mat" level="system" name="placecurrentformulanumber"/>
<cd:command category="mathematics" file="strc-mat" level="document" name="alignhere" scope="formula"/>
<cd:command category="mathematics" file="strc-mat" level="document" name="breakhere" scope="formula"/>
+ <cd:command category="mathematics" file="strc-mat.mkiv" level="document" name="splitformula" type="environment"/>
</cd:interface>
<cd:interface file="i-fraction.xml">
<cd:command category="mathematics" file="math-frc.mkiv" level="style" name="definemathfraction">
@@ -45189,6 +45190,19 @@
</cd:keywords>
</cd:arguments>
</cd:command>
+ <cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlsetatt">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:node"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
<cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlattdef">
<cd:arguments>
<cd:keywords delimiters="braces">
@@ -45226,6 +45240,22 @@
</cd:keywords>
</cd:arguments>
</cd:command>
+ <cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlsetattribute">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:node"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:lpath"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
<cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlattributedef">
<cd:arguments>
<cd:keywords delimiters="braces">
@@ -45265,6 +45295,59 @@
</cd:keywords>
</cd:arguments>
</cd:command>
+ <cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlpar">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:node"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+ <cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlsetpar">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:node"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+ <cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlparam">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:node"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:lpath"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+ <cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmlsetparam">
+ <cd:arguments>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:node"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:lpath"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords delimiters="braces">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+ </cd:command>
+ <cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmllastpar"/>
<cd:command category="xml" file="lxml-ini.mkiv" level="style" name="xmldirectives">
<cd:arguments>
<cd:keywords delimiters="braces">
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index a5ba5a662..7e2e1b944 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files 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 @@
<cd:command name="breakhere" scope="formula" level="document" category="mathematics" file="strc-mat"/>
-</cd:interface> \ No newline at end of file
+ <cd:command name="splitformula" type="environment" level="document" category="mathematics" file="strc-mat.mkiv"/>
+
+</cd:interface>
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index b4431ff9f..7c54b4af0 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files 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 @@
</cd:arguments>
</cd:command>
+ <cd:command name="xmlsetatt" level="style" category="xml" file="lxml-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
<cd:command name="xmlattdef" level="style" category="xml" file="lxml-ini.mkiv">
<cd:arguments>
<cd:resolve name="argument-node"/>
@@ -392,6 +400,15 @@
</cd:arguments>
</cd:command>
+ <cd:command name="xmlsetattribute" level="style" category="xml" file="lxml-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
<cd:command name="xmlattributedef" level="style" category="xml" file="lxml-ini.mkiv">
<cd:arguments>
<cd:resolve name="argument-node"/>
@@ -416,6 +433,40 @@
</cd:arguments>
</cd:command>
+ <cd:command name="xmlpar" level="style" category="xml" file="lxml-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsetpar" level="style" category="xml" file="lxml-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlparam" level="style" category="xml" file="lxml-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-name"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmlsetparam" level="style" category="xml" file="lxml-ini.mkiv">
+ <cd:arguments>
+ <cd:resolve name="argument-node"/>
+ <cd:resolve name="argument-lpath"/>
+ <cd:resolve name="argument-name"/>
+ <cd:resolve name="argument-text"/>
+ </cd:arguments>
+ </cd:command>
+
+ <cd:command name="xmllastpar" level="style" category="xml" file="lxml-ini.mkiv"/>
+
<cd:command name="xmldirectives" level="style" category="xml" file="lxml-ini.mkiv">
<cd:arguments>
<cd:resolve name="argument-node"/>
@@ -852,4 +903,4 @@
</cd:arguments>
</cd:command>
-</cd:interface> \ No newline at end of file
+</cd:interface>
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