diff options
author | Hans Hagen <pragma@wxs.nl> | 2018-04-04 01:35:49 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2018-04-04 01:35:49 +0200 |
commit | 67b9965fe473d18f13ed4c40f1e4e008eb870322 (patch) | |
tree | 1fc107ceb55ed3f7dd6872fd3a2d304aeba684f7 | |
parent | 15ab7c153a96a9befc4e2c1774e701f3c941cc2d (diff) | |
download | context-67b9965fe473d18f13ed4c40f1e4e008eb870322.tar.gz |
2018-04-04 00:59:00
43 files changed, 395 insertions, 145 deletions
diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf Binary files differindex 76108aa59..dc3b916a8 100644 --- a/doc/context/documents/general/qrcs/setup-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf Binary files differindex 958c189ec..9c7678654 100644 --- a/doc/context/documents/general/qrcs/setup-de.pdf +++ b/doc/context/documents/general/qrcs/setup-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf Binary files differindex 6ff801846..39538aa7b 100644 --- a/doc/context/documents/general/qrcs/setup-en.pdf +++ b/doc/context/documents/general/qrcs/setup-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf Binary files differindex 195cd6411..99c12ebd6 100644 --- a/doc/context/documents/general/qrcs/setup-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf Binary files differindex 900b697dd..c687c7e39 100644 --- a/doc/context/documents/general/qrcs/setup-it.pdf +++ b/doc/context/documents/general/qrcs/setup-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf Binary files differindex 2b1369ae7..f5bd52a9f 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf Binary files differindex cabb087fb..274daaf89 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-de.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf Binary files differindex 33331d9e4..3aab7cf71 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-en.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf Binary files differindex 0dbd7a847..b32744159 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf Binary files differindex 9d59690de..309929f72 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-it.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf Binary files differindex ca4ac5581..c6bb58d3c 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf Binary files differindex 50d22528f..a43f56921 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf Binary files differindex ed1eeec04..ce5340b15 100644 --- a/doc/context/documents/general/qrcs/setup-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf Binary files differindex c1530f75d..63b27bf7a 100644 --- a/doc/context/documents/general/qrcs/setup-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-ro.pdf diff --git a/doc/context/sources/general/manuals/publications/publications-quick-example.tex b/doc/context/sources/general/manuals/publications/publications-quick-example.tex index 14f70960f..06d5bd527 100644 --- a/doc/context/sources/general/manuals/publications/publications-quick-example.tex +++ b/doc/context/sources/general/manuals/publications/publications-quick-example.tex @@ -1,16 +1,21 @@ \usebtxdataset[mkiv-publications.bib] + \starttext -\startbodymatter -a citation: \cite[article,book] -\stopbodymatter +% \startbodymatter +a citation: \citation[article,book] +% \stopbodymatter + +\enabletrackers[publ*] -\startbackmatter - \startchapter[title=Bibliography] +% \startbackmatter +% \startchapter[title=Bibliography] \placelistofpublications - \stopchapter -\stopbackmatter +% \stopchapter +% \stopbackmatter + +% \ctxlua{inspect(publications.datasets.default.luadata)} \stoptext diff --git a/metapost/context/base/mpiv/mp-tool.mpiv b/metapost/context/base/mpiv/mp-tool.mpiv index 36d6f1743..75706e09b 100644 --- a/metapost/context/base/mpiv/mp-tool.mpiv +++ b/metapost/context/base/mpiv/mp-tool.mpiv @@ -1716,7 +1716,7 @@ def mfun_with_arrow_picture (text t) = for i within mfun_arrow_picture : if istextext(i) : draw i - else : + else : mfun_arrow_count := mfun_arrow_count + 1 ; mfun_arrow_path := pathpart i ; t diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 91528360a..0f4767d91 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -6101,7 +6101,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-str"] = package.loaded["util-str"] or true --- original size: 38699, stripped down to: 22142 +-- original size: 38734, stripped down to: 22142 if not modules then modules={} end modules ['util-str']={ version=1.001, @@ -6913,7 +6913,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 27665, stripped down to: 17051 +-- original size: 27741, stripped down to: 17085 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -7051,15 +7051,16 @@ function table.tocsv(t,specification) fields=sortedkeys(t[1]) end local separator=specification.separator or "," + local noffields=#fields if specification.preamble==true then - for f=1,#fields do + for f=1,noffields do r[f]=lpegmatch(escape,tostring(fields[f])) end result[1]=concat(r,separator) end for i=1,#t do local ti=t[i] - for f=1,#fields do + for f=1,noffields do local field=ti[fields[f]] if type(field)=="string" then r[f]=lpegmatch(escape,field) @@ -7076,30 +7077,31 @@ function table.tocsv(t,specification) end local nspaces=utilities.strings.newrepeater(" ") local function toxml(t,d,result,step) + local r=#result for k,v in sortedpairs(t) do local s=nspaces[d] local tk=type(k) local tv=type(v) if tv=="table" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>"](s,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</entry>"](s,k) + r=r+1 result[r]=formatters["%s</entry>"](s,k) else - result[#result+1]=formatters["%s<%s>"](s,k) + r=r+1 result[r]=formatters["%s<%s>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</%s>"](s,k) + r=r+1 result[r]=formatters["%s</%s>"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%S</%s>"](s,k,v,k) end end end @@ -12113,7 +12115,7 @@ do -- create closure to overcome 200 locals limit package.loaded["lxml-tab"] = package.loaded["lxml-tab"] or true --- original size: 59638, stripped down to: 37936 +-- original size: 60383, stripped down to: 38562 if not modules then modules={} end modules ['lxml-tab']={ version=1.001, @@ -12122,7 +12124,7 @@ if not modules then modules={} end modules ['lxml-tab']={ copyright="PRAGMA ADE / ConTeXt Development Team", license="see context related readme files" } -local trace_entities=false trackers .register("xml.entities",function(v) trace_entities=v end) +local trace_entities=false trackers.register("xml.entities",function(v) trace_entities=v end) local report_xml=logs and logs.reporter("xml","core") or function(...) print(string.format(...)) end if lpeg.setmaxstack then lpeg.setmaxstack(1000) end xml=xml or {} @@ -12870,6 +12872,25 @@ local function publicentity(k,v,n) end entities[k]=v end +local function entityfile(pattern,k,v,n) + if n then + local okay,data + if resolvers then + okay,data=resolvers.loadbinfile(n) + else + data=io.loaddata(n) + okay=data and data~="" + end + if okay then + if trace_entities then + report_xml("loading public entities %a as %a from %a",k,v,n) + end + lpegmatch(pattern,data) + return + end + end + report_xml("ignoring public entities %a as %a from %a",k,v,n) +end local function install(spacenewline,spacing,anything) local anyentitycontent=(1-open-semicolon-space-close-ampersand)^0 local hexentitycontent=R("AF","af","09")^1 @@ -12921,6 +12942,9 @@ local function install(spacenewline,spacing,anything) local publicentitytype=(doctypename*somespace*P("PUBLIC")*somespace*value)/publicentity local systementitytype=(doctypename*somespace*P("SYSTEM")*somespace*value*somespace*P("NDATA")*somespace*doctypename)/systementity local entitydoctype=optionalspace*P("<!ENTITY")*somespace*(systementitytype+publicentitytype+normalentitytype+weirdentitytype)*optionalspace*close + local publicentityfile=(doctypename*somespace*P("PUBLIC")*somespace*value*(somespace*value)^0)/function(...) + entityfile(entitydoctype,...) + end local function weirdresolve(s) lpegmatch(entitydoctype,parameters[s]) end @@ -12934,7 +12958,8 @@ local function install(spacenewline,spacing,anything) local publicdoctype=doctypename*somespace*P("PUBLIC")*somespace*value*somespace*value*somespace*doctypeset local systemdoctype=doctypename*somespace*P("SYSTEM")*somespace*value*somespace*doctypeset local simpledoctype=(anything-close)^1 - local somedoctype=C((somespace*(publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) + local somedoctype=C((somespace*( +publicentityfile+publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) local instruction=(spacing*begininstruction*someinstruction*endinstruction)/function(...) add_special("@pi@",...) end local comment=(spacing*begincomment*somecomment*endcomment )/function(...) add_special("@cm@",...) end local cdata=(spacing*begincdata*somecdata*endcdata )/function(...) add_special("@cd@",...) end @@ -21321,8 +21346,8 @@ end -- of closure -- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 877106 --- stripped bytes : 317575 +-- original bytes : 877962 +-- stripped bytes : 317771 -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 91528360a..0f4767d91 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -6101,7 +6101,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-str"] = package.loaded["util-str"] or true --- original size: 38699, stripped down to: 22142 +-- original size: 38734, stripped down to: 22142 if not modules then modules={} end modules ['util-str']={ version=1.001, @@ -6913,7 +6913,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 27665, stripped down to: 17051 +-- original size: 27741, stripped down to: 17085 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -7051,15 +7051,16 @@ function table.tocsv(t,specification) fields=sortedkeys(t[1]) end local separator=specification.separator or "," + local noffields=#fields if specification.preamble==true then - for f=1,#fields do + for f=1,noffields do r[f]=lpegmatch(escape,tostring(fields[f])) end result[1]=concat(r,separator) end for i=1,#t do local ti=t[i] - for f=1,#fields do + for f=1,noffields do local field=ti[fields[f]] if type(field)=="string" then r[f]=lpegmatch(escape,field) @@ -7076,30 +7077,31 @@ function table.tocsv(t,specification) end local nspaces=utilities.strings.newrepeater(" ") local function toxml(t,d,result,step) + local r=#result for k,v in sortedpairs(t) do local s=nspaces[d] local tk=type(k) local tv=type(v) if tv=="table" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>"](s,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</entry>"](s,k) + r=r+1 result[r]=formatters["%s</entry>"](s,k) else - result[#result+1]=formatters["%s<%s>"](s,k) + r=r+1 result[r]=formatters["%s<%s>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</%s>"](s,k) + r=r+1 result[r]=formatters["%s</%s>"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%S</%s>"](s,k,v,k) end end end @@ -12113,7 +12115,7 @@ do -- create closure to overcome 200 locals limit package.loaded["lxml-tab"] = package.loaded["lxml-tab"] or true --- original size: 59638, stripped down to: 37936 +-- original size: 60383, stripped down to: 38562 if not modules then modules={} end modules ['lxml-tab']={ version=1.001, @@ -12122,7 +12124,7 @@ if not modules then modules={} end modules ['lxml-tab']={ copyright="PRAGMA ADE / ConTeXt Development Team", license="see context related readme files" } -local trace_entities=false trackers .register("xml.entities",function(v) trace_entities=v end) +local trace_entities=false trackers.register("xml.entities",function(v) trace_entities=v end) local report_xml=logs and logs.reporter("xml","core") or function(...) print(string.format(...)) end if lpeg.setmaxstack then lpeg.setmaxstack(1000) end xml=xml or {} @@ -12870,6 +12872,25 @@ local function publicentity(k,v,n) end entities[k]=v end +local function entityfile(pattern,k,v,n) + if n then + local okay,data + if resolvers then + okay,data=resolvers.loadbinfile(n) + else + data=io.loaddata(n) + okay=data and data~="" + end + if okay then + if trace_entities then + report_xml("loading public entities %a as %a from %a",k,v,n) + end + lpegmatch(pattern,data) + return + end + end + report_xml("ignoring public entities %a as %a from %a",k,v,n) +end local function install(spacenewline,spacing,anything) local anyentitycontent=(1-open-semicolon-space-close-ampersand)^0 local hexentitycontent=R("AF","af","09")^1 @@ -12921,6 +12942,9 @@ local function install(spacenewline,spacing,anything) local publicentitytype=(doctypename*somespace*P("PUBLIC")*somespace*value)/publicentity local systementitytype=(doctypename*somespace*P("SYSTEM")*somespace*value*somespace*P("NDATA")*somespace*doctypename)/systementity local entitydoctype=optionalspace*P("<!ENTITY")*somespace*(systementitytype+publicentitytype+normalentitytype+weirdentitytype)*optionalspace*close + local publicentityfile=(doctypename*somespace*P("PUBLIC")*somespace*value*(somespace*value)^0)/function(...) + entityfile(entitydoctype,...) + end local function weirdresolve(s) lpegmatch(entitydoctype,parameters[s]) end @@ -12934,7 +12958,8 @@ local function install(spacenewline,spacing,anything) local publicdoctype=doctypename*somespace*P("PUBLIC")*somespace*value*somespace*value*somespace*doctypeset local systemdoctype=doctypename*somespace*P("SYSTEM")*somespace*value*somespace*doctypeset local simpledoctype=(anything-close)^1 - local somedoctype=C((somespace*(publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) + local somedoctype=C((somespace*( +publicentityfile+publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) local instruction=(spacing*begininstruction*someinstruction*endinstruction)/function(...) add_special("@pi@",...) end local comment=(spacing*begincomment*somecomment*endcomment )/function(...) add_special("@cm@",...) end local cdata=(spacing*begincdata*somecdata*endcdata )/function(...) add_special("@cd@",...) end @@ -21321,8 +21346,8 @@ end -- of closure -- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 877106 --- stripped bytes : 317575 +-- original bytes : 877962 +-- stripped bytes : 317771 -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 91528360a..0f4767d91 100644 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -6101,7 +6101,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-str"] = package.loaded["util-str"] or true --- original size: 38699, stripped down to: 22142 +-- original size: 38734, stripped down to: 22142 if not modules then modules={} end modules ['util-str']={ version=1.001, @@ -6913,7 +6913,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 27665, stripped down to: 17051 +-- original size: 27741, stripped down to: 17085 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -7051,15 +7051,16 @@ function table.tocsv(t,specification) fields=sortedkeys(t[1]) end local separator=specification.separator or "," + local noffields=#fields if specification.preamble==true then - for f=1,#fields do + for f=1,noffields do r[f]=lpegmatch(escape,tostring(fields[f])) end result[1]=concat(r,separator) end for i=1,#t do local ti=t[i] - for f=1,#fields do + for f=1,noffields do local field=ti[fields[f]] if type(field)=="string" then r[f]=lpegmatch(escape,field) @@ -7076,30 +7077,31 @@ function table.tocsv(t,specification) end local nspaces=utilities.strings.newrepeater(" ") local function toxml(t,d,result,step) + local r=#result for k,v in sortedpairs(t) do local s=nspaces[d] local tk=type(k) local tv=type(v) if tv=="table" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>"](s,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</entry>"](s,k) + r=r+1 result[r]=formatters["%s</entry>"](s,k) else - result[#result+1]=formatters["%s<%s>"](s,k) + r=r+1 result[r]=formatters["%s<%s>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</%s>"](s,k) + r=r+1 result[r]=formatters["%s</%s>"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%S</%s>"](s,k,v,k) end end end @@ -12113,7 +12115,7 @@ do -- create closure to overcome 200 locals limit package.loaded["lxml-tab"] = package.loaded["lxml-tab"] or true --- original size: 59638, stripped down to: 37936 +-- original size: 60383, stripped down to: 38562 if not modules then modules={} end modules ['lxml-tab']={ version=1.001, @@ -12122,7 +12124,7 @@ if not modules then modules={} end modules ['lxml-tab']={ copyright="PRAGMA ADE / ConTeXt Development Team", license="see context related readme files" } -local trace_entities=false trackers .register("xml.entities",function(v) trace_entities=v end) +local trace_entities=false trackers.register("xml.entities",function(v) trace_entities=v end) local report_xml=logs and logs.reporter("xml","core") or function(...) print(string.format(...)) end if lpeg.setmaxstack then lpeg.setmaxstack(1000) end xml=xml or {} @@ -12870,6 +12872,25 @@ local function publicentity(k,v,n) end entities[k]=v end +local function entityfile(pattern,k,v,n) + if n then + local okay,data + if resolvers then + okay,data=resolvers.loadbinfile(n) + else + data=io.loaddata(n) + okay=data and data~="" + end + if okay then + if trace_entities then + report_xml("loading public entities %a as %a from %a",k,v,n) + end + lpegmatch(pattern,data) + return + end + end + report_xml("ignoring public entities %a as %a from %a",k,v,n) +end local function install(spacenewline,spacing,anything) local anyentitycontent=(1-open-semicolon-space-close-ampersand)^0 local hexentitycontent=R("AF","af","09")^1 @@ -12921,6 +12942,9 @@ local function install(spacenewline,spacing,anything) local publicentitytype=(doctypename*somespace*P("PUBLIC")*somespace*value)/publicentity local systementitytype=(doctypename*somespace*P("SYSTEM")*somespace*value*somespace*P("NDATA")*somespace*doctypename)/systementity local entitydoctype=optionalspace*P("<!ENTITY")*somespace*(systementitytype+publicentitytype+normalentitytype+weirdentitytype)*optionalspace*close + local publicentityfile=(doctypename*somespace*P("PUBLIC")*somespace*value*(somespace*value)^0)/function(...) + entityfile(entitydoctype,...) + end local function weirdresolve(s) lpegmatch(entitydoctype,parameters[s]) end @@ -12934,7 +12958,8 @@ local function install(spacenewline,spacing,anything) local publicdoctype=doctypename*somespace*P("PUBLIC")*somespace*value*somespace*value*somespace*doctypeset local systemdoctype=doctypename*somespace*P("SYSTEM")*somespace*value*somespace*doctypeset local simpledoctype=(anything-close)^1 - local somedoctype=C((somespace*(publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) + local somedoctype=C((somespace*( +publicentityfile+publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) local instruction=(spacing*begininstruction*someinstruction*endinstruction)/function(...) add_special("@pi@",...) end local comment=(spacing*begincomment*somecomment*endcomment )/function(...) add_special("@cm@",...) end local cdata=(spacing*begincdata*somecdata*endcdata )/function(...) add_special("@cd@",...) end @@ -21321,8 +21346,8 @@ end -- of closure -- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 877106 --- stripped bytes : 317575 +-- original bytes : 877962 +-- stripped bytes : 317771 -- end library merge diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua index 91528360a..0f4767d91 100644 --- a/scripts/context/stubs/win64/mtxrun.lua +++ b/scripts/context/stubs/win64/mtxrun.lua @@ -6101,7 +6101,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-str"] = package.loaded["util-str"] or true --- original size: 38699, stripped down to: 22142 +-- original size: 38734, stripped down to: 22142 if not modules then modules={} end modules ['util-str']={ version=1.001, @@ -6913,7 +6913,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 27665, stripped down to: 17051 +-- original size: 27741, stripped down to: 17085 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -7051,15 +7051,16 @@ function table.tocsv(t,specification) fields=sortedkeys(t[1]) end local separator=specification.separator or "," + local noffields=#fields if specification.preamble==true then - for f=1,#fields do + for f=1,noffields do r[f]=lpegmatch(escape,tostring(fields[f])) end result[1]=concat(r,separator) end for i=1,#t do local ti=t[i] - for f=1,#fields do + for f=1,noffields do local field=ti[fields[f]] if type(field)=="string" then r[f]=lpegmatch(escape,field) @@ -7076,30 +7077,31 @@ function table.tocsv(t,specification) end local nspaces=utilities.strings.newrepeater(" ") local function toxml(t,d,result,step) + local r=#result for k,v in sortedpairs(t) do local s=nspaces[d] local tk=type(k) local tv=type(v) if tv=="table" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>"](s,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</entry>"](s,k) + r=r+1 result[r]=formatters["%s</entry>"](s,k) else - result[#result+1]=formatters["%s<%s>"](s,k) + r=r+1 result[r]=formatters["%s<%s>"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s</%s>"](s,k) + r=r+1 result[r]=formatters["%s</%s>"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!</%s>"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S</%s>"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%S</%s>"](s,k,v,k) end end end @@ -12113,7 +12115,7 @@ do -- create closure to overcome 200 locals limit package.loaded["lxml-tab"] = package.loaded["lxml-tab"] or true --- original size: 59638, stripped down to: 37936 +-- original size: 60383, stripped down to: 38562 if not modules then modules={} end modules ['lxml-tab']={ version=1.001, @@ -12122,7 +12124,7 @@ if not modules then modules={} end modules ['lxml-tab']={ copyright="PRAGMA ADE / ConTeXt Development Team", license="see context related readme files" } -local trace_entities=false trackers .register("xml.entities",function(v) trace_entities=v end) +local trace_entities=false trackers.register("xml.entities",function(v) trace_entities=v end) local report_xml=logs and logs.reporter("xml","core") or function(...) print(string.format(...)) end if lpeg.setmaxstack then lpeg.setmaxstack(1000) end xml=xml or {} @@ -12870,6 +12872,25 @@ local function publicentity(k,v,n) end entities[k]=v end +local function entityfile(pattern,k,v,n) + if n then + local okay,data + if resolvers then + okay,data=resolvers.loadbinfile(n) + else + data=io.loaddata(n) + okay=data and data~="" + end + if okay then + if trace_entities then + report_xml("loading public entities %a as %a from %a",k,v,n) + end + lpegmatch(pattern,data) + return + end + end + report_xml("ignoring public entities %a as %a from %a",k,v,n) +end local function install(spacenewline,spacing,anything) local anyentitycontent=(1-open-semicolon-space-close-ampersand)^0 local hexentitycontent=R("AF","af","09")^1 @@ -12921,6 +12942,9 @@ local function install(spacenewline,spacing,anything) local publicentitytype=(doctypename*somespace*P("PUBLIC")*somespace*value)/publicentity local systementitytype=(doctypename*somespace*P("SYSTEM")*somespace*value*somespace*P("NDATA")*somespace*doctypename)/systementity local entitydoctype=optionalspace*P("<!ENTITY")*somespace*(systementitytype+publicentitytype+normalentitytype+weirdentitytype)*optionalspace*close + local publicentityfile=(doctypename*somespace*P("PUBLIC")*somespace*value*(somespace*value)^0)/function(...) + entityfile(entitydoctype,...) + end local function weirdresolve(s) lpegmatch(entitydoctype,parameters[s]) end @@ -12934,7 +12958,8 @@ local function install(spacenewline,spacing,anything) local publicdoctype=doctypename*somespace*P("PUBLIC")*somespace*value*somespace*value*somespace*doctypeset local systemdoctype=doctypename*somespace*P("SYSTEM")*somespace*value*somespace*doctypeset local simpledoctype=(anything-close)^1 - local somedoctype=C((somespace*(publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) + local somedoctype=C((somespace*( +publicentityfile+publicdoctype+systemdoctype+definitiondoctype+simpledoctype)*optionalspace)^0) local instruction=(spacing*begininstruction*someinstruction*endinstruction)/function(...) add_special("@pi@",...) end local comment=(spacing*begincomment*somecomment*endcomment )/function(...) add_special("@cm@",...) end local cdata=(spacing*begincdata*somecdata*endcdata )/function(...) add_special("@cd@",...) end @@ -21321,8 +21346,8 @@ end -- of closure -- used libraries : l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua util-lib.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 877106 --- stripped bytes : 317575 +-- original bytes : 877962 +-- stripped bytes : 317771 -- end library merge diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 082e39ee4..494992502 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.04.02 15:43} +\newcontextversion{2018.04.04 00:51} %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 4e087c1c8..293866194 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.04.02 15:43} +\edef\contextversion{2018.04.04 00:51} %D For those who want to use this: diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index c705c3afc..9cb893260 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.04.02 15:43} +\newcontextversion{2018.04.04 00:51} %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 2adc6b3ee..9a52cfe78 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -42,7 +42,7 @@ %D has to match \type {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2018.04.02 15:43} +\edef\contextversion{2018.04.04 00:51} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mkiv/font-ini.mkvi b/tex/context/base/mkiv/font-ini.mkvi index ee20d7b32..693182919 100644 --- a/tex/context/base/mkiv/font-ini.mkvi +++ b/tex/context/base/mkiv/font-ini.mkvi @@ -2510,14 +2510,32 @@ % \popmacro\fontclass % \ifx\fontclass\empty\else\setupbodyfont\relax\fi} +% \unexpanded\def\usebodyfont[#1]% +% {\pushmacro\fontclass +% \font_helpers_set_font\zerocount{#1}% +% \popmacro\fontclass +% \ifx\fontclass\empty \else +% \font_basics_setupbodyfont_nop +% \fi} + \unexpanded\def\usebodyfont[#1]% - {\pushmacro\fontclass - \font_helpers_set_font\zerocount{#1}% - \popmacro\fontclass - \ifx\fontclass\empty \else - \font_basics_setupbodyfont_nop + {\ifx\fontclass\empty + \setupbodyfont[#1]% + \else + \switchtobodyfont[#1]% + \fullrestoreglobalbodyfont \fi} +\unexpanded\def\showbodyfontstate + {\dontleavehmode + \start + \infofont + [fontclass: \fontclass,\space + fontbody: \fontbody ,\space + fontface: \fontface ,\space + fontsize: \fontsize ]% + \stop} + %D Handy for manuals: %D The \type {\tochar} commmand takes a specification: diff --git a/tex/context/base/mkiv/lxml-tab.lua b/tex/context/base/mkiv/lxml-tab.lua index 8d4be58ab..1ef83c47d 100644 --- a/tex/context/base/mkiv/lxml-tab.lua +++ b/tex/context/base/mkiv/lxml-tab.lua @@ -14,7 +14,7 @@ if not modules then modules = { } end modules ['lxml-tab'] = { -- maybe when letter -> utf, else name .. then we need an option to the serializer .. a bit -- of work so we delay this till we cleanup -local trace_entities = false trackers .register("xml.entities", function(v) trace_entities = v end) +local trace_entities = false trackers.register("xml.entities", function(v) trace_entities = v end) local report_xml = logs and logs.reporter("xml","core") or function(...) print(string.format(...)) end @@ -968,6 +968,25 @@ local function publicentity(k,v,n) end entities[k] = v end +local function entityfile(pattern,k,v,n) + if n then + local okay, data + if resolvers then + okay, data = resolvers.loadbinfile(n) + else + data = io.loaddata(n) + okay = data and data ~= "" + end + if okay then + if trace_entities then + report_xml("loading public entities %a as %a from %a",k,v,n) + end + lpegmatch(pattern,data) + return + end + end + report_xml("ignoring public entities %a as %a from %a",k,v,n) +end local function install(spacenewline,spacing,anything) @@ -1003,7 +1022,7 @@ local function install(spacenewline,spacing,anything) local attribute = (somespace * name * optionalspace * equal * optionalspace * attributevalue) / add_attribute --- local attributes = (attribute + somespace^-1 * (((1-endofattributes)^1)/attribute_specification_error))^0 + -- local attributes = (attribute + somespace^-1 * (((1-endofattributes)^1)/attribute_specification_error))^0 local attributes = (attribute + somespace^-1 * (((anything-endofattributes)^1)/attribute_specification_error))^0 local parsedtext = text_parsed -- / add_text @@ -1041,10 +1060,15 @@ local function install(spacenewline,spacing,anything) local weirdentitytype = P("%") * (somespace * doctypename * somespace * value) / weirdentity local normalentitytype = (doctypename * somespace * value) / normalentity - local publicentitytype = (doctypename * somespace * P("PUBLIC") * somespace * value)/publicentity + local publicentitytype = (doctypename * somespace * P("PUBLIC") * somespace * value) / publicentity + local systementitytype = (doctypename * somespace * P("SYSTEM") * somespace * value * somespace * P("NDATA") * somespace * doctypename)/systementity local entitydoctype = optionalspace * P("<!ENTITY") * somespace * (systementitytype + publicentitytype + normalentitytype + weirdentitytype) * optionalspace * close + local publicentityfile = (doctypename * somespace * P("PUBLIC") * somespace * value * (somespace * value)^0) / function(...) + entityfile(entitydoctype,...) + end + local function weirdresolve(s) lpegmatch(entitydoctype,parameters[s]) end @@ -1065,7 +1089,11 @@ local function install(spacenewline,spacing,anything) local publicdoctype = doctypename * somespace * P("PUBLIC") * somespace * value * somespace * value * somespace * doctypeset local systemdoctype = doctypename * somespace * P("SYSTEM") * somespace * value * somespace * doctypeset local simpledoctype = (anything-close)^1 -- * balanced^0 - local somedoctype = C((somespace * (publicdoctype + systemdoctype + definitiondoctype + simpledoctype) * optionalspace)^0) + local somedoctype = C((somespace * ( + +publicentityfile + + + publicdoctype + systemdoctype + definitiondoctype + simpledoctype) * optionalspace)^0) local instruction = (spacing * begininstruction * someinstruction * endinstruction) / function(...) add_special("@pi@",...) end local comment = (spacing * begincomment * somecomment * endcomment ) / function(...) add_special("@cm@",...) end @@ -1294,7 +1322,7 @@ a filename or a file handle.</p> function xml.load(filename,settings) local data = "" if type(filename) == "string" then - -- local data = io.loaddata(filename) - -todo: check type in io.loaddata + -- local data = io.loaddata(filename) -- todo: check type in io.loaddata local f = io.open(filename,'r') -- why not 'rb' if f then data = f:read("*all") -- io.readall(f) ... only makes sense for large files diff --git a/tex/context/base/mkiv/meta-imp-txt.mkiv b/tex/context/base/mkiv/meta-imp-txt.mkiv index 56da9229d..e9660b3a7 100644 --- a/tex/context/base/mkiv/meta-imp-txt.mkiv +++ b/tex/context/base/mkiv/meta-imp-txt.mkiv @@ -287,7 +287,6 @@ \dontcomplain \setbox\scratchbox\hbox{\addff{mp:tp}#2}% \ctxlua{mp.follow_initialize(\number\scratchbox)}% - \stopluacode \startMPcode \includeMPgraphic{followtokens} ; mfun_follow_draw(\number#1) ; @@ -295,8 +294,8 @@ \ctxlua{mp.follow_reset()}% \egroup} -\unexpanded\def\followtokens {\dofollowtokens1} -\unexpanded\def\followtokenscentered{\dofollowtokens0} +\unexpanded\def\followtokens {\dofollowtokens\plusone} +\unexpanded\def\followtokenscentered{\dofollowtokens\zerocount} % stretched variant: % diff --git a/tex/context/base/mkiv/page-inf.mkiv b/tex/context/base/mkiv/page-inf.mkiv index f60977e0c..2064f9f25 100644 --- a/tex/context/base/mkiv/page-inf.mkiv +++ b/tex/context/base/mkiv/page-inf.mkiv @@ -13,7 +13,7 @@ \writestatus{loading}{ConTeXt Page Macros / Tracing Info} -% this needs a real cleanup .. will be a more detailed list +% This needs a real cleanup .. will be a more detailed list. \unprotect @@ -23,6 +23,7 @@ \newtoks\everysetupversion \let\currentversioninfo\empty +\let\currentversiontext\empty \unexpanded\def\setupversion {\dosingleargument\page_info_setup} @@ -33,8 +34,13 @@ \def\page_info_setup[#1]% {\the\everyresetversion - \ifcsname\??layoutinfo#1\endcsname - \edef\currentversioninfo{#1}% + \doifelseassignment{#1}% + {\getdummyparameters[\c!alternative=,\c!text=,#1]% + \edef\currentversioninfo{\dummyparameter\c!alternative}% + \edef\currentversiontext{\dummyparameter\c!text}}% + {\edef\currentversioninfo{#1}% + \let \currentversiontext\empty}% + \ifcsname\??layoutinfo\currentversioninfo\endcsname \let\page_info_add_to_box\page_info_add_to_box_indeed \else \let\currentversioninfo\empty @@ -43,33 +49,46 @@ \the\everysetupversion} \unexpanded\def\page_info_place_info % at the bottom of the page - {\csname\??layoutinfo\currentversioninfo\endcsname} + {\begincsname\??layoutinfo\currentversioninfo\endcsname} \unexpanded\def\installversioninfo#1#2% {\setvalue{\??layoutinfo#1}{#2}} \unexpanded\def\includeversioninfo#1% - {\csname\??layoutinfo#1\endcsname} + {\begincsname\??layoutinfo#1\endcsname} + +\installversioninfo\v!final + {\let\currentversioninfo\empty + \let\page_info_add_to_box\gobbleoneargument} \installversioninfo\v!concept {\vskip6\points \hbox to \makeupwidth {\infofont - \v!concept:\space\currentdate + \rlap{\v!concept:\space\currentdate}% \hss - \page_adapts_status_info}} + \currentversiontext + \hss + \llap{\page_adapts_status_info}}} \installversioninfo\v!file {\vskip6\points \hbox to \makeupwidth {\infofont - \getmessage\m!system{27}:\space\currentdate\space + \getmessage\m!system{27}:\space\currentdate\quad \donefalse - \ifx\currentproject \empty \else \space\v!project :\space\currentproject \space \donetrue \fi - \ifx\currentproduct \empty \else \space\v!product :\space\currentproduct \space \donetrue \fi - \ifx\currentcomponent\empty \else \space\v!component:\space\currentcomponent\space \donetrue \fi - \ifdone \else \space\v!file :\space\jobname \space \fi + \doif\currentproject\currentproduct{\doif\currentproduct\currentcomponent\donetrue}% + \ifdone + \donefalse + \else + \ifx\currentproject \empty \else \space\v!project :\space\currentproject \space \donetrue \fi + \ifx\currentproduct \empty \else \space\v!product :\space\currentproduct \space \donetrue \fi + \ifx\currentcomponent\empty \else \space\v!component:\space\currentcomponent\space \donetrue \fi + \fi + \ifdone \else \space\v!file :\space\jobname \space \fi \hss + \currentversiontext + \quad \page_adapts_status_info}} \installversioninfo\v!temporary diff --git a/tex/context/base/mkiv/page-one.mkiv b/tex/context/base/mkiv/page-one.mkiv index 35233247b..348c301fc 100644 --- a/tex/context/base/mkiv/page-one.mkiv +++ b/tex/context/base/mkiv/page-one.mkiv @@ -481,28 +481,68 @@ #1{\box\floatbox}% \doifinset\v!tall\floatlocationmethod\page_sides_flush_floats_after_par} -\def\page_one_place_float_left {\page_one_place_float_side_indeed\page_sides_process_float_left\presetindentation} -\def\page_one_place_float_right {\page_one_place_float_side_indeed\page_sides_process_float_right} -\def\page_one_place_float_leftmargin {\page_one_place_float_side_indeed\page_sides_process_float_leftmargin} -\def\page_one_place_float_rightmargin{\page_one_place_float_side_indeed\page_sides_process_float_rightmargin} -\def\page_one_place_float_leftedge {\page_one_place_float_side_indeed\page_sides_process_float_leftedge} -\def\page_one_place_float_rightedge {\page_one_place_float_side_indeed\page_sides_process_float_rightedge} -\def\page_one_place_float_inmargin {\page_one_place_float_side_indeed\page_sides_process_float_cutspace} -\def\page_one_place_float_backspace {\page_one_place_float_side_indeed\page_sides_process_float_backspace} -\def\page_one_place_float_cutspace {\page_one_place_float_side_indeed\page_sides_process_float_cutspace} - -%def\page_one_place_float_margin {\page_one_place_float_side_indeed\page_sides_process_float_margin\nonoindentation} % wil be overloaded -\def\page_one_place_float_margin {\page_margin_blocks_process_float} +\def\page_one_place_float_left + {\page_one_place_float_side_indeed + \page_sides_process_float_left + \presetindentation} + +\def\page_one_place_float_right + {\page_one_place_float_side_indeed + \page_sides_process_float_right} + +\def\page_one_place_float_margin + {\page_margin_blocks_process_float + \nonoindentation} % new, due to popular request + +\def\page_one_place_float_leftmargin + {\page_one_place_float_side_indeed + \page_sides_process_float_leftmargin + \nonoindentation} % new, due to popular request + +\def\page_one_place_float_rightmargin + {\page_one_place_float_side_indeed + \page_sides_process_float_rightmargin + \nonoindentation} % new, due to popular request + +\def\page_one_place_float_leftedge + {\page_one_place_float_side_indeed + \page_sides_process_float_leftedge} + +\def\page_one_place_float_rightedge + {\page_one_place_float_side_indeed + \page_sides_process_float_rightedge} + +\def\page_one_place_float_inmargin + {\page_one_place_float_side_indeed + \page_sides_process_float_cutspace} + +\def\page_one_place_float_backspace + {\page_one_place_float_side_indeed + \page_sides_process_float_backspace} + +\def\page_one_place_float_cutspace + {\page_one_place_float_side_indeed + \page_sides_process_float_cutspace} \def\page_one_place_float_page {\page_floats_save_page_float \s!page \floatlocationmethod} \def\page_one_place_float_leftpage {\page_floats_save_page_float \s!leftpage \floatlocationmethod} \def\page_one_place_float_rightpage {\page_floats_save_page_float \s!rightpage\floatlocationmethod} \def\page_one_place_float_somewhere {\page_floats_save_somewhere_float\s!somewhere\floatlocationmethod} -\def\page_one_place_float_here {\page_one_place_float_otherwise_here} -\def\page_one_place_float_auto {\page_one_place_float_otherwise} -\def\page_one_place_float_top {\page_one_place_float_otherwise\nonoindentation} -\def\page_one_place_float_bottom {\page_one_place_float_otherwise} +\def\page_one_place_float_here + {\page_one_place_float_otherwise_here} + +\def\page_one_place_float_auto + {\page_one_place_float_otherwise + \nonoindentation} % new, due to popular request + +\def\page_one_place_float_top + {\page_one_place_float_otherwise + \nonoindentation} + +\def\page_one_place_float_bottom + {\page_one_place_float_otherwise + \nonoindentation} % new, due to popular request \def\page_one_place_float_otherwise {\doifelseinset\v!here\floatlocationmethod diff --git a/tex/context/base/mkiv/page-sid.mkiv b/tex/context/base/mkiv/page-sid.mkiv index a0fb63ca2..6f5d9f357 100644 --- a/tex/context/base/mkiv/page-sid.mkiv +++ b/tex/context/base/mkiv/page-sid.mkiv @@ -32,6 +32,7 @@ %D Earth, sophisticated Massive Attack video clips, impressive Davie504 movies %D and so on). +\newdimen \d_page_sides_margin \newdimen \d_page_sides_height % includes the topskip \newdimen \d_page_sides_width \newdimen \d_page_sides_hsize @@ -113,7 +114,7 @@ \or % high \or % low \or % fit - \global\d_strc_floats_margin\zeropoint + \global\d_page_sides_margin\zeropoint \fi} \def\page_sides_apply_horizontal_shift @@ -668,7 +669,7 @@ \else\ifnum\c_page_sides_float_type>\plusfive \global\d_page_sides_width\zeropoint \else - \global\d_page_sides_width\dimexpr\wd\floatbox+\d_strc_floats_margin\relax + \global\d_page_sides_width\dimexpr\wd\floatbox+\d_page_sides_margin\relax \fi\fi \ifdim\d_page_sides_width<\zeropoint \global\d_page_sides_width\zeropoint diff --git a/tex/context/base/mkiv/publ-ini.lua b/tex/context/base/mkiv/publ-ini.lua index 8497b190f..9dfeda168 100644 --- a/tex/context/base/mkiv/publ-ini.lua +++ b/tex/context/base/mkiv/publ-ini.lua @@ -2325,13 +2325,13 @@ do implement { name = "btxflushlistentry", - arguments = "2 strings", + arguments = { "string", "integer" }, actions = lists.flushentry, } implement { name = "btxflushlisttag", - arguments = "2 strings", + arguments = { "string", "integer" }, actions = lists.flushtag, } diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex aa6ed92ea..74e8e3e8a 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 70204080a..a2f2ee28b 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/strc-flt.mkvi b/tex/context/base/mkiv/strc-flt.mkvi index 69881037e..632c67686 100644 --- a/tex/context/base/mkiv/strc-flt.mkvi +++ b/tex/context/base/mkiv/strc-flt.mkvi @@ -148,7 +148,7 @@ \c!textmethod=\ifgridsnapping2\else0\fi, % 0=raw 1=safe (.99pg) 2=tight (-1pt) % THIS WILL CHANGE \c!sidemethod=\ifgridsnapping2\else1\fi, % 0=raw 1=safe (.99pg) 2=tight (-1pt) % THIS WILL CHANGE \c!indentnext=\v!no, - \c!margin=1\emwidth, + \c!margin=\emwidth, \c!method=1, \c!cache=\v!yes, % when no, then intermediate flush \c!leftmargin=\zeropoint, % displacement in 'normal floats' @@ -734,7 +734,6 @@ % nicer is a bunch of states and one loop that sets those states -\newdimen\d_strc_floats_margin \newdimen\d_strc_floats_top \newdimen\d_strc_floats_bottom @@ -776,13 +775,13 @@ \global\c_page_sides_tolerance \zerocount \global\c_page_sides_skipmode \zerocount \global\c_strc_floats_rotation \zerocount - \global\d_strc_floats_margin \rootfloatparameter\c!margin - \global\d_page_sides_leftshift \floatparameter \c!leftmargindistance - \global\d_page_sides_rightshift \floatparameter \c!rightmargindistance - \global\d_page_sides_topoffset \floatparameter \c!topoffset - \global\d_page_sides_bottomoffset\floatparameter \c!bottomoffset - \global\c_page_sides_method \floatparameter \c!sidemethod - \global\c_page_one_float_method \floatparameter \c!textmethod + \global\d_page_sides_margin \floatparameter\c!margin + \global\d_page_sides_leftshift \floatparameter\c!leftmargindistance + \global\d_page_sides_rightshift \floatparameter\c!rightmargindistance + \global\d_page_sides_topoffset \floatparameter\c!topoffset + \global\d_page_sides_bottomoffset\floatparameter\c!bottomoffset + \global\c_page_sides_method \floatparameter\c!sidemethod + \global\c_page_one_float_method \floatparameter\c!textmethod \global\c_page_floats_n_of_top \rootfloatparameter\c!ntop \global\c_page_floats_n_of_bottom\rootfloatparameter\c!nbottom \ifconditional\c_strc_floats_par_float diff --git a/tex/context/base/mkiv/type-set.mkiv b/tex/context/base/mkiv/type-set.mkiv index 1ef137d39..1763de687 100644 --- a/tex/context/base/mkiv/type-set.mkiv +++ b/tex/context/base/mkiv/type-set.mkiv @@ -57,6 +57,9 @@ \fi +\definefilesynonym [type-imp-latin-modern.mkiv] [type-imp-latinmodern.mkiv] +\definefilesynonym [type-imp-modern-latin.mkiv] [type-imp-modernlatin.mkiv] + \definefilesynonym [type-imp-lucida.mkiv] [type-imp-lucida-typeone.mkiv] \definefilesynonym [type-imp-lucidaot.mkiv] [type-imp-lucida-opentype.mkiv] \definefilesynonym [type-imp-lucidadk.mkiv] [type-imp-lucida-opentype.mkiv] diff --git a/tex/context/base/mkiv/util-str.lua b/tex/context/base/mkiv/util-str.lua index f76895aaf..05ff9f304 100644 --- a/tex/context/base/mkiv/util-str.lua +++ b/tex/context/base/mkiv/util-str.lua @@ -1081,6 +1081,7 @@ local function make(t,str) f = function() return str end end end + -- if jit then jit.on(f,true) end t[str] = f return f end diff --git a/tex/context/base/mkiv/util-tab.lua b/tex/context/base/mkiv/util-tab.lua index ebe51eb1a..1b069e2ae 100644 --- a/tex/context/base/mkiv/util-tab.lua +++ b/tex/context/base/mkiv/util-tab.lua @@ -153,15 +153,16 @@ function table.tocsv(t,specification) fields = sortedkeys(t[1]) end local separator = specification.separator or "," + local noffields = #fields if specification.preamble == true then - for f=1,#fields do + for f=1,noffields do r[f] = lpegmatch(escape,tostring(fields[f])) end result[1] = concat(r,separator) end for i=1,#t do local ti = t[i] - for f=1,#fields do + for f=1,noffields do local field = ti[fields[f]] if type(field) == "string" then r[f] = lpegmatch(escape,field) @@ -215,30 +216,31 @@ end local nspaces = utilities.strings.newrepeater(" ") local function toxml(t,d,result,step) + local r = #result for k, v in sortedpairs(t) do local s = nspaces[d] -- inlining this is somewhat faster but gives more formatters local tk = type(k) local tv = type(v) if tv == "table" then if tk == "number" then - result[#result+1] = formatters["%s<entry n='%s'>"](s,k) + r = r + 1 result[r] = formatters["%s<entry n='%s'>"](s,k) toxml(v,d+step,result,step) - result[#result+1] = formatters["%s</entry>"](s,k) + r = r + 1 result[r] = formatters["%s</entry>"](s,k) else - result[#result+1] = formatters["%s<%s>"](s,k) + r = r + 1 result[r] = formatters["%s<%s>"](s,k) toxml(v,d+step,result,step) - result[#result+1] = formatters["%s</%s>"](s,k) + r = r + 1 result[r] = formatters["%s</%s>"](s,k) end elseif tv == "string" then if tk == "number" then - result[#result+1] = formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) + r = r + 1 result[r] = formatters["%s<entry n='%s'>%!xml!</entry>"](s,k,v,k) else - result[#result+1] = formatters["%s<%s>%!xml!</%s>"](s,k,v,k) + r = r + 1 result[r] = formatters["%s<%s>%!xml!</%s>"](s,k,v,k) end elseif tk == "number" then - result[#result+1] = formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) + r = r + 1 result[r] = formatters["%s<entry n='%s'>%S</entry>"](s,k,v,k) else - result[#result+1] = formatters["%s<%s>%S</%s>"](s,k,v,k) + r = r + 1 result[r] = formatters["%s<%s>%S</%s>"](s,k,v,k) end end end diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf Binary files differindex 6ff801846..39538aa7b 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex f86da332a..ee6712cfd 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf diff --git a/tex/context/modules/common/s-abbreviations-logos.tex b/tex/context/modules/common/s-abbreviations-logos.tex index f1966f544..c14265cc0 100644 --- a/tex/context/modules/common/s-abbreviations-logos.tex +++ b/tex/context/modules/common/s-abbreviations-logos.tex @@ -86,6 +86,7 @@ \logo [DVISCR] {dviscr} \logo [DVIWINDO] {dviwindo} \logo [EBCDIC] {ebcdic} +\logo [EU] {eu} \logo [EC] {ec} \logo [EIFFEL] {Eiffel} \logo [EMACS] {emacs} diff --git a/tex/context/sample/common/poe.tex b/tex/context/sample/common/poe.tex new file mode 100644 index 000000000..fd84b60a8 --- /dev/null +++ b/tex/context/sample/common/poe.tex @@ -0,0 +1,33 @@ +% title : A dream within a dream +% author : Edgar Allan Poe +% +% music : Propaganda (on: A Secret Wish) + +\startlines +Take this kiss upon the brow! +And, in parting from you now, +Thus much let me avow — +You are not wrong, who deem +That my days have been a dream; +Yet if hope has flown away +In a night, or in a day, +In a vision, or in none, +Is it therefore the less gone? +All that we see or seem +Is but a dream within a dream. +\blank +I stand amid the roar +Of a surf-tormented shore, +And I hold within my hand +Grains of the golden sand — +How few! yet how they creep +Through my fingers to the deep, +While I weep — while I weep! +O God! can I not grasp +Them with a tighter clasp? +O God! can I not save +One from the pitiless wave? +Is all that we see or seem +But a dream within a dream? +\stoplines + diff --git a/tex/context/sample/common/samples.tex b/tex/context/sample/common/samples.tex index a2ffcf088..d732a240e 100644 --- a/tex/context/sample/common/samples.tex +++ b/tex/context/sample/common/samples.tex @@ -58,6 +58,7 @@ used in testing bibliographic references and citations. \NC greenfield.tex \NC Susan Greenfield \NC Mind Change, how digital technologies are leaving their mark on the brain, Rider, London, 2014. \NC \NR +\NC poe.tex \NC Edgar Allan Poe \NC A dream within a dream, www.poetryfoundation.org. \NC \NR \stoptabulate % Tufte: This quote will always produce hyphenated text, apart from the content, diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 97503d8a7..7cfa8c61a 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 : 04/02/18 15:43:20 +-- merge date : 04/04/18 00:51:15 do -- begin closure to overcome local limits and interference |