texlive[47285] trunk: context (current 4apr18)

commits+karl at tug.org commits+karl at tug.org
Wed Apr 4 22:15:27 CEST 2018


Revision: 47285
          http://tug.org/svn/texlive?view=revision&revision=47285
Author:   karl
Date:     2018-04-04 22:15:26 +0200 (Wed, 04 Apr 2018)
Log Message:
-----------
context (current 4apr18)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/context/stubs/unix/mtxrun
    trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
    trunk/Master/bin/win32/mtxrun.lua
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-cs.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-de.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-en.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-fr.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-it.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-de.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-en.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-it.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-nl.pdf
    trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-ro.pdf
    trunk/Master/texmf-dist/doc/context/sources/general/manuals/publications/publications-quick-example.tex
    trunk/Master/texmf-dist/doc/man/man1/context.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/luatools.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-bibtex.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-context.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-dvi.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-evohome.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-interface.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-metapost.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-metatex.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-modules.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-package.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-patterns.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-profile.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-texworks.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-unicode.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtx-youless.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/texexec.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf
    trunk/Master/texmf-dist/metapost/context/base/mpiv/mp-tool.mpiv
    trunk/Master/texmf-dist/scripts/context/lua/mtxrun.lua
    trunk/Master/texmf-dist/scripts/context/stubs/mswin/mtxrun.lua
    trunk/Master/texmf-dist/scripts/context/stubs/unix/mtxrun
    trunk/Master/texmf-dist/scripts/context/stubs/win64/mtxrun.lua
    trunk/Master/texmf-dist/tex/context/base/mkii/cont-new.mkii
    trunk/Master/texmf-dist/tex/context/base/mkii/context.mkii
    trunk/Master/texmf-dist/tex/context/base/mkiv/cont-new.mkiv
    trunk/Master/texmf-dist/tex/context/base/mkiv/context.mkiv
    trunk/Master/texmf-dist/tex/context/base/mkiv/font-ini.mkvi
    trunk/Master/texmf-dist/tex/context/base/mkiv/lxml-tab.lua
    trunk/Master/texmf-dist/tex/context/base/mkiv/meta-imp-txt.mkiv
    trunk/Master/texmf-dist/tex/context/base/mkiv/page-inf.mkiv
    trunk/Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv
    trunk/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv
    trunk/Master/texmf-dist/tex/context/base/mkiv/publ-ini.lua
    trunk/Master/texmf-dist/tex/context/base/mkiv/status-files.pdf
    trunk/Master/texmf-dist/tex/context/base/mkiv/status-lua.pdf
    trunk/Master/texmf-dist/tex/context/base/mkiv/strc-flt.mkvi
    trunk/Master/texmf-dist/tex/context/base/mkiv/type-set.mkiv
    trunk/Master/texmf-dist/tex/context/base/mkiv/util-str.lua
    trunk/Master/texmf-dist/tex/context/base/mkiv/util-tab.lua
    trunk/Master/texmf-dist/tex/context/interface/mkiv/i-context.pdf
    trunk/Master/texmf-dist/tex/context/interface/mkiv/i-readme.pdf
    trunk/Master/texmf-dist/tex/context/modules/common/s-abbreviations-logos.tex
    trunk/Master/texmf-dist/tex/context/sample/common/samples.tex
    trunk/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/context/sample/common/poe.tex

Modified: trunk/Build/source/texk/texlive/linked_scripts/context/stubs/unix/mtxrun
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/context/stubs/unix/mtxrun	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Build/source/texk/texlive/linked_scripts/context/stubs/unix/mtxrun	2018-04-04 20:15:26 UTC (rev 47285)
@@ -6101,7 +6101,7 @@
 
 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 @@
 
 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,8 +7051,9 @@
       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)
@@ -7059,7 +7060,7 @@
     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,6 +7077,7 @@
 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)
@@ -7082,24 +7084,24 @@
     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 @@
 
 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 @@
   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 @@
   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 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 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 @@
 
 -- 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
 

Modified: trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl	2018-04-04 20:15:26 UTC (rev 47285)
@@ -1,12 +1,12 @@
 #!/usr/bin/env perl
-# $Id: tlmgr.pl 47254 2018-04-02 23:13:43Z karl $
+# $Id: tlmgr.pl 47273 2018-04-03 22:14:30Z karl $
 #
 # Copyright 2008-2018 Norbert Preining
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
 
-my $svnrev = '$Revision: 47254 $';
-my $datrev = '$Date: 2018-04-03 01:13:43 +0200 (Tue, 03 Apr 2018) $';
+my $svnrev = '$Revision: 47273 $';
+my $datrev = '$Date: 2018-04-04 00:14:30 +0200 (Wed, 04 Apr 2018) $';
 my $tlmgrrevision;
 my $tlmgrversion;
 my $prg;
@@ -6560,11 +6560,11 @@
       debug("will verify cryptographic signatures\n")
     } else {
       my $prefix = "$prg: No gpg found"; # just to shorten the strings
-      if ($opts{'verify-repo'} eq "all") {
-        # verification was requested on the command line, but did not succeed, die
+      if (defined($opts{'verify-repo'}) && $opts{'verify-repo'} eq "all") {
+        # verification requested on the command line, but did not succeed: die
         tldie("$prefix, verification explicitly requested on command line, quitting.\n");
       }
-      if ($config{'verify-repo'} eq "all") {
+      if (defined($config{'verify-repo'}) && $config{'verify-repo'} eq "all") {
         # verification explicitly requested in config file, but not gpg, die
         tldie("$prefix, verification explicitly requested in config file, quitting.\n");
       }
@@ -9441,7 +9441,7 @@
 distribution (L<http://tug.org/texlive>) and both are licensed under the
 GNU General Public License Version 2 or later.
 
-$Id: tlmgr.pl 47254 2018-04-02 23:13:43Z karl $
+$Id: tlmgr.pl 47273 2018-04-03 22:14:30Z karl $
 =cut
 
 # to remake HTML version: pod2html --cachedir=/tmp tlmgr.pl >/tmp/tlmgr.html

Modified: trunk/Master/bin/win32/mtxrun.lua
===================================================================
--- trunk/Master/bin/win32/mtxrun.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/bin/win32/mtxrun.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -6101,7 +6101,7 @@
 
 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 @@
 
 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,8 +7051,9 @@
       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)
@@ -7059,7 +7060,7 @@
     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,6 +7077,7 @@
 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)
@@ -7082,24 +7084,24 @@
     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 @@
 
 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 @@
   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 @@
   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 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 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 @@
 
 -- 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
 

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-cs.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-de.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-it.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-de.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-it.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-nl.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/documents/general/qrcs/setup-ro.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/context/sources/general/manuals/publications/publications-quick-example.tex
===================================================================
--- trunk/Master/texmf-dist/doc/context/sources/general/manuals/publications/publications-quick-example.tex	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/doc/context/sources/general/manuals/publications/publications-quick-example.tex	2018-04-04 20:15:26 UTC (rev 47285)
@@ -1,16 +1,21 @@
 \usebtxdataset[mkiv-publications.bib]
 
+
 \starttext
 
-\startbodymatter
-a citation: \cite[article,book]
-\stopbodymatter
+% \startbodymatter
+a citation: \citation[article,book]
+% \stopbodymatter
 
-\startbackmatter
-    \startchapter[title=Bibliography]
+\enabletrackers[publ*]
+
+% \startbackmatter
+%     \startchapter[title=Bibliography]
         \placelistofpublications
-    \stopchapter
-\stopbackmatter
+%     \stopchapter
+% \stopbackmatter
 
+% \ctxlua{inspect(publications.datasets.default.luadata)}
+
 \stoptext
 

Modified: trunk/Master/texmf-dist/doc/man/man1/context.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/luatools.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-babel.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-base.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-bibtex.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-cache.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-chars.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-check.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-colors.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-context.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-dvi.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-epub.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-evohome.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-fcd.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-flac.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-fonts.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-grep.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-interface.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-metapost.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-metatex.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-modules.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-package.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-patterns.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-pdf.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-plain.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-profile.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-rsync.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-scite.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-server.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-texworks.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-timing.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-tools.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-unicode.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-unzip.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-update.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-watch.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtx-youless.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/mtxrun.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/texexec.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/texmfstart.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/metapost/context/base/mpiv/mp-tool.mpiv
===================================================================
--- trunk/Master/texmf-dist/metapost/context/base/mpiv/mp-tool.mpiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/metapost/context/base/mpiv/mp-tool.mpiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -1716,7 +1716,7 @@
     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

Modified: trunk/Master/texmf-dist/scripts/context/lua/mtxrun.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/context/lua/mtxrun.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/scripts/context/lua/mtxrun.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -6101,7 +6101,7 @@
 
 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 @@
 
 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,8 +7051,9 @@
       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)
@@ -7059,7 +7060,7 @@
     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,6 +7077,7 @@
 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)
@@ -7082,24 +7084,24 @@
     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 @@
 
 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 @@
   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 @@
   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 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 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 @@
 
 -- 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
 

Modified: trunk/Master/texmf-dist/scripts/context/stubs/mswin/mtxrun.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/context/stubs/mswin/mtxrun.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/scripts/context/stubs/mswin/mtxrun.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -6101,7 +6101,7 @@
 
 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 @@
 
 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,8 +7051,9 @@
       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)
@@ -7059,7 +7060,7 @@
     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,6 +7077,7 @@
 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)
@@ -7082,24 +7084,24 @@
     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 @@
 
 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 @@
   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 @@
   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 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 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 @@
 
 -- 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
 

Modified: trunk/Master/texmf-dist/scripts/context/stubs/unix/mtxrun
===================================================================
--- trunk/Master/texmf-dist/scripts/context/stubs/unix/mtxrun	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/scripts/context/stubs/unix/mtxrun	2018-04-04 20:15:26 UTC (rev 47285)
@@ -6101,7 +6101,7 @@
 
 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 @@
 
 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,8 +7051,9 @@
       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)
@@ -7059,7 +7060,7 @@
     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,6 +7077,7 @@
 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)
@@ -7082,24 +7084,24 @@
     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 @@
 
 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 @@
   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 @@
   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 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 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 @@
 
 -- 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
 

Modified: trunk/Master/texmf-dist/scripts/context/stubs/win64/mtxrun.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/context/stubs/win64/mtxrun.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/scripts/context/stubs/win64/mtxrun.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -6101,7 +6101,7 @@
 
 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 @@
 
 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,8 +7051,9 @@
       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)
@@ -7059,7 +7060,7 @@
     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,6 +7077,7 @@
 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)
@@ -7082,24 +7084,24 @@
     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 @@
 
 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 @@
   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 @@
   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 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 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 @@
 
 -- 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
 

Modified: trunk/Master/texmf-dist/tex/context/base/mkii/cont-new.mkii
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkii/cont-new.mkii	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkii/cont-new.mkii	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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

Modified: trunk/Master/texmf-dist/tex/context/base/mkii/context.mkii
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkii/context.mkii	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkii/context.mkii	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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:
 

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/cont-new.mkiv
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/cont-new.mkiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/cont-new.mkiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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.

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/context.mkiv
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/context.mkiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/context.mkiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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:

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/font-ini.mkvi
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/font-ini.mkvi	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/font-ini.mkvi	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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:

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/lxml-tab.lua
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/lxml-tab.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/lxml-tab.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -14,7 +14,7 @@
 -- 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 @@
     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 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 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,8 +1089,12 @@
     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
     local cdata            = (spacing * begincdata       * somecdata       * endcdata      ) / function(...) add_special("@cd@",...) end
@@ -1294,7 +1322,7 @@
 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

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/meta-imp-txt.mkiv
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/meta-imp-txt.mkiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/meta-imp-txt.mkiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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:
 %

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/page-inf.mkiv
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/page-inf.mkiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/page-inf.mkiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/page-one.mkiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -481,29 +481,69 @@
    #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_left
+  {\page_one_place_float_side_indeed
+   \page_sides_process_float_left
+   \presetindentation}
 
-%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_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
      \page_one_place_float_otherwise_here

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/page-sid.mkiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/publ-ini.lua
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/publ-ini.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/publ-ini.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -2325,13 +2325,13 @@
 
     implement {
         name      = "btxflushlistentry",
-        arguments = "2 strings",
+        arguments = { "string", "integer" },
         actions   = lists.flushentry,
     }
 
     implement {
         name      = "btxflushlisttag",
-        arguments = "2 strings",
+        arguments = { "string", "integer" },
         actions   = lists.flushtag,
     }
 

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/status-files.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/status-lua.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/strc-flt.mkvi
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/strc-flt.mkvi	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/strc-flt.mkvi	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/type-set.mkiv
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/type-set.mkiv	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/type-set.mkiv	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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]

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/util-str.lua
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/util-str.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/util-str.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -1081,6 +1081,7 @@
             f = function() return str end
         end
     end
+ -- if jit then jit.on(f,true) end
     t[str] = f
     return f
 end

Modified: trunk/Master/texmf-dist/tex/context/base/mkiv/util-tab.lua
===================================================================
--- trunk/Master/texmf-dist/tex/context/base/mkiv/util-tab.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/base/mkiv/util-tab.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -153,8 +153,9 @@
             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)
@@ -161,7 +162,7 @@
         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,6 +216,7 @@
 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)
@@ -221,24 +223,24 @@
         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

Modified: trunk/Master/texmf-dist/tex/context/interface/mkiv/i-context.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/context/interface/mkiv/i-readme.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/context/modules/common/s-abbreviations-logos.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/modules/common/s-abbreviations-logos.tex	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/modules/common/s-abbreviations-logos.tex	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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}

Added: trunk/Master/texmf-dist/tex/context/sample/common/poe.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/sample/common/poe.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/context/sample/common/poe.tex	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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
+


Property changes on: trunk/Master/texmf-dist/tex/context/sample/common/poe.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/context/sample/common/samples.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/sample/common/samples.tex	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/context/sample/common/samples.tex	2018-04-04 20:15:26 UTC (rev 47285)
@@ -58,6 +58,7 @@
 \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,

Modified: trunk/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua	2018-04-04 20:12:10 UTC (rev 47284)
+++ trunk/Master/texmf-dist/tex/generic/context/luatex/luatex-fonts-merged.lua	2018-04-04 20:15:26 UTC (rev 47285)
@@ -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
 



More information about the tex-live-commits mailing list