From 67b9965fe473d18f13ed4c40f1e4e008eb870322 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 4 Apr 2018 01:35:49 +0200 Subject: 2018-04-04 00:59:00 --- doc/context/documents/general/qrcs/setup-cs.pdf | Bin 844329 -> 844437 bytes doc/context/documents/general/qrcs/setup-de.pdf | Bin 841953 -> 842070 bytes doc/context/documents/general/qrcs/setup-en.pdf | Bin 846098 -> 846220 bytes doc/context/documents/general/qrcs/setup-fr.pdf | Bin 840714 -> 840822 bytes doc/context/documents/general/qrcs/setup-it.pdf | Bin 842987 -> 843093 bytes .../documents/general/qrcs/setup-mapping-cs.pdf | Bin 359373 -> 359482 bytes .../documents/general/qrcs/setup-mapping-de.pdf | Bin 441447 -> 441554 bytes .../documents/general/qrcs/setup-mapping-en.pdf | Bin 356091 -> 356210 bytes .../documents/general/qrcs/setup-mapping-fr.pdf | Bin 359492 -> 359600 bytes .../documents/general/qrcs/setup-mapping-it.pdf | Bin 358028 -> 358138 bytes .../documents/general/qrcs/setup-mapping-nl.pdf | Bin 356852 -> 356957 bytes .../documents/general/qrcs/setup-mapping-ro.pdf | Bin 610245 -> 610343 bytes doc/context/documents/general/qrcs/setup-nl.pdf | Bin 835566 -> 835674 bytes doc/context/documents/general/qrcs/setup-ro.pdf | Bin 840676 -> 840784 bytes .../publications/publications-quick-example.tex | 19 ++++-- metapost/context/base/mpiv/mp-tool.mpiv | 2 +- scripts/context/lua/mtxrun.lua | 59 ++++++++++++----- scripts/context/stubs/mswin/mtxrun.lua | 59 ++++++++++++----- scripts/context/stubs/unix/mtxrun | 59 ++++++++++++----- scripts/context/stubs/win64/mtxrun.lua | 59 ++++++++++++----- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/font-ini.mkvi | 28 ++++++-- tex/context/base/mkiv/lxml-tab.lua | 38 +++++++++-- tex/context/base/mkiv/meta-imp-txt.mkiv | 5 +- tex/context/base/mkiv/page-inf.mkiv | 43 ++++++++---- tex/context/base/mkiv/page-one.mkiv | 72 ++++++++++++++++----- tex/context/base/mkiv/page-sid.mkiv | 5 +- tex/context/base/mkiv/publ-ini.lua | 4 +- tex/context/base/mkiv/status-files.pdf | Bin 26081 -> 26054 bytes tex/context/base/mkiv/status-lua.pdf | Bin 255107 -> 255106 bytes tex/context/base/mkiv/strc-flt.mkvi | 17 +++-- tex/context/base/mkiv/type-set.mkiv | 3 + tex/context/base/mkiv/util-str.lua | 1 + tex/context/base/mkiv/util-tab.lua | 22 ++++--- tex/context/interface/mkiv/i-context.pdf | Bin 846098 -> 846220 bytes tex/context/interface/mkiv/i-readme.pdf | Bin 61032 -> 61029 bytes .../modules/common/s-abbreviations-logos.tex | 1 + tex/context/sample/common/poe.tex | 33 ++++++++++ tex/context/sample/common/samples.tex | 1 + tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 43 files changed, 395 insertions(+), 145 deletions(-) create mode 100644 tex/context/sample/common/poe.tex diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf index 76108aa59..dc3b916a8 100644 Binary files a/doc/context/documents/general/qrcs/setup-cs.pdf and b/doc/context/documents/general/qrcs/setup-cs.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf index 958c189ec..9c7678654 100644 Binary files a/doc/context/documents/general/qrcs/setup-de.pdf and b/doc/context/documents/general/qrcs/setup-de.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf index 6ff801846..39538aa7b 100644 Binary files a/doc/context/documents/general/qrcs/setup-en.pdf and b/doc/context/documents/general/qrcs/setup-en.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf index 195cd6411..99c12ebd6 100644 Binary files a/doc/context/documents/general/qrcs/setup-fr.pdf and b/doc/context/documents/general/qrcs/setup-fr.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf index 900b697dd..c687c7e39 100644 Binary files a/doc/context/documents/general/qrcs/setup-it.pdf and b/doc/context/documents/general/qrcs/setup-it.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf index 2b1369ae7..f5bd52a9f 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf and b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf index cabb087fb..274daaf89 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-de.pdf and b/doc/context/documents/general/qrcs/setup-mapping-de.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf index 33331d9e4..3aab7cf71 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-en.pdf and b/doc/context/documents/general/qrcs/setup-mapping-en.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf index 0dbd7a847..b32744159 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf and b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf index 9d59690de..309929f72 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-it.pdf and b/doc/context/documents/general/qrcs/setup-mapping-it.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf index ca4ac5581..c6bb58d3c 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf and b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf index 50d22528f..a43f56921 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf and b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf index ed1eeec04..ce5340b15 100644 Binary files a/doc/context/documents/general/qrcs/setup-nl.pdf and b/doc/context/documents/general/qrcs/setup-nl.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf index c1530f75d..63b27bf7a 100644 Binary files a/doc/context/documents/general/qrcs/setup-ro.pdf and b/doc/context/documents/general/qrcs/setup-ro.pdf differ 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"](s,k) + r=r+1 result[r]=formatters["%s"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s"](s,k) + r=r+1 result[r]=formatters["%s"](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,k) + r=r+1 result[r]=formatters["%s"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s%!xml!"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s%S"](s,k,v,k) + r=r+1 result[r]=formatters["%s%S"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S"](s,k,v,k) + r=r+1 result[r]=formatters["%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(""](s,k) + r=r+1 result[r]=formatters["%s"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s"](s,k) + r=r+1 result[r]=formatters["%s"](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,k) + r=r+1 result[r]=formatters["%s"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s%!xml!"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s%S"](s,k,v,k) + r=r+1 result[r]=formatters["%s%S"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S"](s,k,v,k) + r=r+1 result[r]=formatters["%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(""](s,k) + r=r+1 result[r]=formatters["%s"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s"](s,k) + r=r+1 result[r]=formatters["%s"](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,k) + r=r+1 result[r]=formatters["%s"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s%!xml!"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s%S"](s,k,v,k) + r=r+1 result[r]=formatters["%s%S"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S"](s,k,v,k) + r=r+1 result[r]=formatters["%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(""](s,k) + r=r+1 result[r]=formatters["%s"](s,k) toxml(v,d+step,result,step) - result[#result+1]=formatters["%s"](s,k) + r=r+1 result[r]=formatters["%s"](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,k) + r=r+1 result[r]=formatters["%s"](s,k) end elseif tv=="string" then if tk=="number" then - result[#result+1]=formatters["%s%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s%!xml!"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%!xml!"](s,k,v,k) + r=r+1 result[r]=formatters["%s<%s>%!xml!"](s,k,v,k) end elseif tk=="number" then - result[#result+1]=formatters["%s%S"](s,k,v,k) + r=r+1 result[r]=formatters["%s%S"](s,k,v,k) else - result[#result+1]=formatters["%s<%s>%S"](s,k,v,k) + r=r+1 result[r]=formatters["%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(" 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(" 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 index aa6ed92ea..74e8e3e8a 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 70204080a..a2f2ee28b 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/strc-flt.mkvi b/tex/context/base/mkiv/strc-flt.mkvi index 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"](s,k) + r = r + 1 result[r] = formatters["%s"](s,k) toxml(v,d+step,result,step) - result[#result+1] = formatters["%s"](s,k) + r = r + 1 result[r] = formatters["%s"](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,k) + r = r + 1 result[r] = formatters["%s"](s,k) end elseif tv == "string" then if tk == "number" then - result[#result+1] = formatters["%s%!xml!"](s,k,v,k) + r = r + 1 result[r] = formatters["%s%!xml!"](s,k,v,k) else - result[#result+1] = formatters["%s<%s>%!xml!"](s,k,v,k) + r = r + 1 result[r] = formatters["%s<%s>%!xml!"](s,k,v,k) end elseif tk == "number" then - result[#result+1] = formatters["%s%S"](s,k,v,k) + r = r + 1 result[r] = formatters["%s%S"](s,k,v,k) else - result[#result+1] = formatters["%s<%s>%S"](s,k,v,k) + r = r + 1 result[r] = formatters["%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 index 6ff801846..39538aa7b 100644 Binary files a/tex/context/interface/mkiv/i-context.pdf and b/tex/context/interface/mkiv/i-context.pdf differ diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf index f86da332a..ee6712cfd 100644 Binary files a/tex/context/interface/mkiv/i-readme.pdf and b/tex/context/interface/mkiv/i-readme.pdf differ diff --git a/tex/context/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 -- cgit v1.2.3