From d6c24a529d922ac67d2a30595c52b6b9547dce77 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 26 Sep 2018 15:15:30 +0200 Subject: 2018-09-26 14:34:00 --- doc/context/documents/general/manuals/musings.pdf | Bin 5724808 -> 2647 bytes doc/context/documents/general/qrcs/setup-cs.pdf | Bin 853712 -> 853563 bytes doc/context/documents/general/qrcs/setup-de.pdf | Bin 853673 -> 853525 bytes doc/context/documents/general/qrcs/setup-en.pdf | Bin 857071 -> 856925 bytes doc/context/documents/general/qrcs/setup-fr.pdf | Bin 849591 -> 849445 bytes doc/context/documents/general/qrcs/setup-it.pdf | Bin 856208 -> 856054 bytes .../documents/general/qrcs/setup-mapping-cs.pdf | Bin 346837 -> 346696 bytes .../documents/general/qrcs/setup-mapping-de.pdf | Bin 431140 -> 430993 bytes .../documents/general/qrcs/setup-mapping-en.pdf | Bin 344793 -> 344652 bytes .../documents/general/qrcs/setup-mapping-fr.pdf | Bin 347539 -> 347391 bytes .../documents/general/qrcs/setup-mapping-it.pdf | Bin 346669 -> 346518 bytes .../documents/general/qrcs/setup-mapping-nl.pdf | Bin 345411 -> 345264 bytes .../documents/general/qrcs/setup-mapping-ro.pdf | Bin 508150 -> 508003 bytes doc/context/documents/general/qrcs/setup-nl.pdf | Bin 846743 -> 846610 bytes doc/context/documents/general/qrcs/setup-ro.pdf | Bin 851264 -> 851107 bytes .../general/manuals/luatex/luatex-fonts.tex | 12 +++- .../general/manuals/luatex/luatex-nodes.tex | 3 +- metapost/context/base/mpiv/mp-mlib.mpiv | 40 ++++++------ tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-cs.mkii | 1 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 10 +-- tex/context/base/mkiv/core-def.mkiv | 2 +- tex/context/base/mkiv/font-ini.lua | 35 ++++++---- tex/context/base/mkiv/font-mps.lua | 23 ++++++- tex/context/base/mkiv/page-cst.mkiv | 5 +- tex/context/base/mkiv/page-mul.mkiv | 13 ++++ tex/context/base/mkiv/page-set.mkiv | 17 +++++ tex/context/base/mkiv/page-smp.mkiv | 59 +++++++++++++++++ tex/context/base/mkiv/status-files.pdf | Bin 26112 -> 26196 bytes tex/context/base/mkiv/status-lua.pdf | Bin 269238 -> 269257 bytes tex/context/base/mkiv/strc-flt.mkvi | 72 +-------------------- tex/context/base/mkiv/strc-sec.mkiv | 9 ++- tex/context/base/mkiv/syst-aux.mkiv | 56 ++++++++-------- tex/context/interface/mkii/keys-cs.xml | 1 + tex/context/interface/mkiv/i-context.pdf | Bin 857071 -> 856925 bytes tex/context/interface/mkiv/i-readme.pdf | Bin 60772 -> 60771 bytes tex/context/modules/mkiv/m-old-columnsets.mkiv | 7 ++ tex/context/modules/mkiv/m-old-multicolumns.mkiv | 7 ++ tex/generic/context/luatex/luatex-fonts-merged.lua | 10 ++- tex/generic/context/luatex/luatex-fonts-mis.lua | 4 ++ 42 files changed, 244 insertions(+), 148 deletions(-) create mode 100644 tex/context/base/mkiv/page-smp.mkiv create mode 100644 tex/context/modules/mkiv/m-old-columnsets.mkiv create mode 100644 tex/context/modules/mkiv/m-old-multicolumns.mkiv diff --git a/doc/context/documents/general/manuals/musings.pdf b/doc/context/documents/general/manuals/musings.pdf index 9d1daa346..bb70fac4c 100644 Binary files a/doc/context/documents/general/manuals/musings.pdf and b/doc/context/documents/general/manuals/musings.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf index 415d1499a..efb4fb952 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 025c45f65..fe5c22ca8 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 1ac6e7764..9c45d463f 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 affc42206..e15cff82c 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 af1556843..5aae4072a 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 3012ce5aa..0b99cc06c 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 85b6639c9..c451eb621 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 f877428b9..248a1c798 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 8708d7a7a..c4cceecdc 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 f52cdaa38..56c41f819 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 2f33274ca..7a3c3c84a 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 5ab86805e..ab17871a0 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 fcb0cbb71..26f6e3f8c 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 c16d44b87..c43d9ba17 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/luatex/luatex-fonts.tex b/doc/context/sources/general/manuals/luatex/luatex-fonts.tex index 189e3295e..6f71877fb 100644 --- a/doc/context/sources/general/manuals/luatex/luatex-fonts.tex +++ b/doc/context/sources/general/manuals/luatex/luatex-fonts.tex @@ -713,9 +713,15 @@ font.setfont( n, f) \stopfunctioncall Note that at the moment, each access to the \type {font.fonts} or call to \type -{font.getfont} creates a \LUA\ table for the whole font. This process can be -quite slow. In a later version of \LUATEX, this interface will change (it will -start using userdata objects instead of actual tables). +{font.getfont} creates a \LUA\ table for the whole font unless you cached it. +This process can be quite slow. + +\startfunctioncall +
p = font.getparameters( n) +\stopfunctioncall + +This one will return a table of the parameters as known to \TEX. These can be +different from the ones in the cached table. Also note the following: assignments can only be made to fonts that have already been defined in \TEX, but have not been accessed {\it at all\/} since that diff --git a/doc/context/sources/general/manuals/luatex/luatex-nodes.tex b/doc/context/sources/general/manuals/luatex/luatex-nodes.tex index 2793a1af7..40324cd7b 100644 --- a/doc/context/sources/general/manuals/luatex/luatex-nodes.tex +++ b/doc/context/sources/general/manuals/luatex/luatex-nodes.tex @@ -312,7 +312,8 @@ to make the encapsulating box fit its dimensions. For instance, in a paragraph lines normally have glue representing spaces and these stretch or shrink to make the content fit in the available space. The \type {effective_glue} function that takes a glue node and a parent (hlist or vlist) returns the effective width of -that glue item. +that glue item. When you pass \type {true} as third argument the value will be +rounded. A \nod {glue_spec} node is a special kind of node that is used for storing a set of glue values in registers. Originally they were also used to store properties diff --git a/metapost/context/base/mpiv/mp-mlib.mpiv b/metapost/context/base/mpiv/mp-mlib.mpiv index 807b91dbd..b7fc60b21 100644 --- a/metapost/context/base/mpiv/mp-mlib.mpiv +++ b/metapost/context/base/mpiv/mp-mlib.mpiv @@ -1131,59 +1131,59 @@ enddef ; numeric currentoutlinetext ; currentoutlinetext := 0 ; -vardef mfun_do_outline_text_flush (expr kind, n, x, y) (text t) = +vardef mfun_do_outline_text_flush (expr kind, n, x, y, c) (text t) = if kind = "f" : - mfun_do_outline_text_f (n, x, y) (t) + mfun_do_outline_text_f (n, x, y, c) (t) elseif kind = "d" : - mfun_do_outline_text_d (n, x, y) (t) + mfun_do_outline_text_d (n, x, y, c) (t) elseif kind = "b" : - mfun_do_outline_text_b (n, x, y) (t) + mfun_do_outline_text_b (n, x, y, c) (t) elseif kind = "r" : - mfun_do_outline_text_r (n, x, y) (t) + mfun_do_outline_text_r (n, x, y, c) (t) elseif kind = "p" : - mfun_do_outline_text_p (n, x, y) (t) + mfun_do_outline_text_p (n, x, y, c) (t) elseif kind = "u" : - mfun_do_outline_text_u (n, x, y) (t) + mfun_do_outline_text_u (n, x, y, c) (t) else : - mfun_do_outline_text_n (n, x, y) (t) + mfun_do_outline_text_n (n, x, y, c) (t) fi ; enddef ; vardef mfun_do_outline_rule_flush (expr kind, x, y, w, h) = - mfun_do_outline_text_flush (kind, 1, x, y) (fullsquare xyscaled(w,h)) + mfun_do_outline_text_flush (kind, 1, x, y, "") (fullsquare xyscaled(w,h)) enddef ; numeric mfun_do_outline_n ; mfun_do_outline_n := 0 ; -vardef mfun_do_outline_text_f (expr n, x, y) (text t) = +vardef mfun_do_outline_text_f (expr n, x, y, c) (text t) = mfun_do_outline_n := 0 ; for i=t : mfun_do_outline_n := mfun_do_outline_n + 1 ; - if mfun_do_outline_n = n : fill else : nofill fi (i shifted(x,y)) mfun_do_outline_options_f withpen pencircle scaled 0 ; + if mfun_do_outline_n = n : fill else : nofill fi (i shifted(x,y)) mfun_do_outline_options_f withpen pencircle scaled 0 withprescript c ; endfor ; enddef ; -vardef mfun_do_outline_text_u (expr n, x, y) (text t) = +vardef mfun_do_outline_text_u (expr n, x, y, c) (text t) = mfun_do_outline_n := 0 ; for i=t : mfun_do_outline_n := mfun_do_outline_n + 1 ; - if mfun_do_outline_n = n : fillup else : nofill fi (i shifted(x,y)) mfun_do_outline_options_f ; + if mfun_do_outline_n = n : fillup else : nofill fi (i shifted(x,y)) mfun_do_outline_options_f withprescript c ; endfor ; enddef ; -vardef mfun_do_outline_text_d (expr n, x, y) (text t) = +vardef mfun_do_outline_text_d (expr n, x, y, c) (text t) = for i=t : draw i shifted(x,y) mfun_do_outline_options_d ; endfor ; enddef ; -vardef mfun_do_outline_text_p (expr n, x, y) (text t) = +vardef mfun_do_outline_text_p (expr n, x, y, c) (text t) = for i=t : - draw i shifted(x,y) ; + draw i shifted(x,y) withprescript c ; endfor ; enddef ; -vardef mfun_do_outline_text_b (expr n, x, y) (text t) = +vardef mfun_do_outline_text_b (expr n, x, y, c) (text t) = mfun_do_outline_n := 0 ; for i=t : mfun_do_outline_n := mfun_do_outline_n + 1 ; @@ -1194,18 +1194,18 @@ vardef mfun_do_outline_text_b (expr n, x, y) (text t) = endfor ; enddef ; -vardef mfun_do_outline_text_r (expr n, x, y) (text t) = +vardef mfun_do_outline_text_r (expr n, x, y, c) (text t) = mfun_do_outline_n := 0 ; for i=t : draw i shifted(x,y) mfun_do_outline_options_d ; endfor ; for i=t : mfun_do_outline_n := mfun_do_outline_n + 1 ; - if mfun_do_outline_n = n : fill else : nofill fi (i shifted(x,y)) mfun_do_outline_options_f ; + if mfun_do_outline_n = n : fill else : nofill fi (i shifted(x,y)) mfun_do_outline_options_f; endfor ; enddef ; -vardef mfun_do_outline_text_n (expr n, x, y) (text t) = +vardef mfun_do_outline_text_n (expr n, x, y, c) (text t) = mfun_do_outline_n := 0 ; for i=t : mfun_do_outline_n := mfun_do_outline_n + 1 ; diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 17a5a0f62..2d0987f26 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2018.09.25 14:14} +\newcontextversion{2018.09.26 14:26} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 3cfcb8828..42417ac1e 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2018.09.25 14:14} +\edef\contextversion{2018.09.26 14:26} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-cs.mkii b/tex/context/base/mkii/mult-cs.mkii index ffb685a10..b07eb00f6 100644 --- a/tex/context/base/mkii/mult-cs.mkii +++ b/tex/context/base/mkii/mult-cs.mkii @@ -1241,6 +1241,7 @@ \setinterfaceconstant{textstyle}{styltextu} \setinterfaceconstant{textwidth}{sirkatextu} \setinterfaceconstant{threshold}{threshold} +\setinterfaceconstant{time}{time} \setinterfaceconstant{title}{titul} \setinterfaceconstant{titlecolor}{barvatitulek} \setinterfaceconstant{titlecommand}{titlecommand} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 8bb291480..3d6861ab4 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2018.09.25 14:14} +\newcontextversion{2018.09.26 14:26} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 2ea76e361..21b83b486 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -42,7 +42,7 @@ %D has to match \type {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2018.09.25 14:14} +\edef\contextversion{2018.09.26 14:26} \edef\contextkind {beta} %D For those who want to use this: @@ -320,9 +320,11 @@ \loadmarkfile{page-pst} \loadmkvifile{page-mbk} -\loadmarkfile{page-mul} % partly overloaded -\loadmarkfile{page-mix} % new -\loadmarkfile{page-set} +%loadmarkfile{page-mul} % \usecolumns[old-multicolumns] +\loadmarkfile{page-mix} +\loadmarkfile{page-smp} +%loadmarkfile{page-set} % \usecolumns[old-columnsets] +\loadmarkfile{page-cst} \loadmarkfile{page-pcl} % new \loadmarkfile{pack-lyr} \loadmarkfile{pack-pos} diff --git a/tex/context/base/mkiv/core-def.mkiv b/tex/context/base/mkiv/core-def.mkiv index 9dbb16f5c..95f7f2577 100644 --- a/tex/context/base/mkiv/core-def.mkiv +++ b/tex/context/base/mkiv/core-def.mkiv @@ -39,7 +39,7 @@ % \flushcommentanchors \flushnotes \synchronizenotes - \OTRSETshowstatus + % \OTRSETshowstatus \registerparoptions % \flushsyncpositions \flushpostponednodedata diff --git a/tex/context/base/mkiv/font-ini.lua b/tex/context/base/mkiv/font-ini.lua index 3d5dd27a2..d42652e0e 100644 --- a/tex/context/base/mkiv/font-ini.lua +++ b/tex/context/base/mkiv/font-ini.lua @@ -10,22 +10,33 @@ if not modules then modules = { } end modules ['font-ini'] = {

Not much is happening here.

--ldx]]-- -local allocate = utilities.storage.allocate +local allocate = utilities.storage.allocate +local sortedhash = table.sortedhash -fonts = fonts or { } -local fonts = fonts +fonts = fonts or { } +local fonts = fonts -fonts.hashes = fonts.hashes or { identifiers = allocate() } -fonts.tables = fonts.tables or { } -fonts.helpers = fonts.helpers or { } -fonts.tracers = fonts.tracers or { } -- for the moment till we have move to moduledata -fonts.specifiers = fonts.specifiers or { } -- in format ! +local identifiers = allocate() -fonts.analyzers = { } -- not needed here -fonts.readers = { } -fonts.definers = { methods = { } } -fonts.loggers = { register = function() end } +fonts.hashes = fonts.hashes or { identifiers = identifiers } +fonts.tables = fonts.tables or { } +fonts.helpers = fonts.helpers or { } +fonts.tracers = fonts.tracers or { } -- for the moment till we have move to moduledata +fonts.specifiers = fonts.specifiers or { } -- in format ! + +fonts.analyzers = { } -- not needed here +fonts.readers = { } +fonts.definers = { methods = { } } +fonts.loggers = { register = function() end } if context then + + font.originaleach = font.each + + function font.each() + return sortedhash(identifiers) + end + fontloader = nil + end diff --git a/tex/context/base/mkiv/font-mps.lua b/tex/context/base/mkiv/font-mps.lua index 766468c57..167d7f214 100644 --- a/tex/context/base/mkiv/font-mps.lua +++ b/tex/context/base/mkiv/font-mps.lua @@ -6,6 +6,7 @@ if not modules then modules = { } end modules ['font-mps'] = { license = "see context related readme files" } +local tostring = tostring local concat = table.concat local formatters = string.formatters @@ -35,6 +36,17 @@ local f_draw = formatters["draw %s;"] local f_boundingbox = formatters["((%.6F,%.6F)--(%.6F,%.6F)--(%.6F,%.6F)--(%.6F,%.6F)--cycle)"] local f_vertical = formatters["((%.6F,%.6F)--(%.6F,%.6F))"] +directives.register("metapost.stripzeros", function() + + f_moveto = formatters["(%.6N,%.6N)"] + f_lineto = formatters["--(%.6N,%.6N)"] + f_curveto = formatters["..controls(%.6N,%.6N)and(%.6N,%.6N)..(%.6N,%.6N)"] + + f_boundingbox = formatters["((%.6N,%.6N)--(%.6N,%.6N)--(%.6N,%.6N)--(%.6N,%.6N)--cycle)"] + f_vertical = formatters["((%.6N,%.6N)--(%.6N,%.6N))"] + +end) + function metapost.boundingbox(d,factor) local bounds = d.boundingbox local factor = factor or 1 @@ -276,11 +288,17 @@ local parameters = fonts.hashes.parameters local shapes = fonts.hashes.shapes local topaths = metapost.paths -local f_code = formatters["mfun_do_outline_text_flush(%q,%i,%.6F,%.6F)(%,t);"] +local f_code = formatters["mfun_do_outline_text_flush(%q,%i,%.6F,%.6F,%q)(%,t);"] local f_rule = formatters["mfun_do_outline_rule_flush(%q,%.6F,%.6F,%.6F,%.6F);"] local f_bounds = formatters["checkbounds(%.6F,%.6F,%.6F,%.6F);"] local s_nothing = "(origin scaled 10)" +directives.register("metapost.stripzeros", function() + f_code = formatters["mfun_do_outline_text_flush(%q,%i,%.6N,%.6N,%q)(%,t);"] + f_rule = formatters["mfun_do_outline_rule_flush(%q,%.6N,%.6N,%.6N,%.6N);"] + f_bounds = formatters["checkbounds(%.6N,%.6N,%.6N,%.6N);"] +end) + local sc = 10 local fc = number.dimenfactors.bp * sc / 10 @@ -303,13 +321,14 @@ function metapost.output(kind,font,char,advance,shift,ex) local advance = advance or 0 local exfactor = ex or 0 local wfactor = 1 + local detail = kind == "p" and tostring(char) or "" if exfactor ~= 0 then wfactor = (1+(ex/units)/1000) xfactor = xfactor * wfactor end local paths = topaths(glyf,xfactor,yfactor) if paths then - local code = f_code(kind,#paths,advance,shift,paths) + local code = f_code(kind,#paths,advance,shift,detail,paths) return code, character.width * fc * wfactor else return "", 0 diff --git a/tex/context/base/mkiv/page-cst.mkiv b/tex/context/base/mkiv/page-cst.mkiv index f6eede68a..37df4e8b1 100644 --- a/tex/context/base/mkiv/page-cst.mkiv +++ b/tex/context/base/mkiv/page-cst.mkiv @@ -765,7 +765,7 @@ % state start | repeat -% for now (transition) +%D The old one: \let\definecolumnset \definepagegrid \let\setupcolumnset \setuppagegrid @@ -782,5 +782,6 @@ \let\setupcolumnsetarea \setuppagegridarea \let\setupcolumnsetareatext\setuppagegridareatext -\protect +%D It ends here. +\protect \endinput diff --git a/tex/context/base/mkiv/page-mul.mkiv b/tex/context/base/mkiv/page-mul.mkiv index 51040a28e..69771bf78 100644 --- a/tex/context/base/mkiv/page-mul.mkiv +++ b/tex/context/base/mkiv/page-mul.mkiv @@ -1848,4 +1848,17 @@ \s!page_otr_command_test_column =\page_mul_command_test_column ] +\installfloatmethod \s!multicolumn \v!here \page_mul_place_float_here +\installfloatmethod \s!multicolumn \v!force \page_mul_place_float_force +\installfloatmethod \s!multicolumn \v!top \page_mul_place_float_top +\installfloatmethod \s!multicolumn \v!bottom \page_mul_place_float_bottom + +\appendtoks + \flushingcolumnfloatsfalse +\to \everybeforesectionheadhandle + +\appendtoks + \flushingcolumnfloatstrue +\to \everyaftersectionheadhandle + \protect \endinput diff --git a/tex/context/base/mkiv/page-set.mkiv b/tex/context/base/mkiv/page-set.mkiv index d5bfe657e..f2755195a 100644 --- a/tex/context/base/mkiv/page-set.mkiv +++ b/tex/context/base/mkiv/page-set.mkiv @@ -2626,6 +2626,23 @@ % \s!page_otr_command_flush_margin_blocks =\page_set_command_flush_margin_blocks, % not used ] +\installfloatmethod \s!columnset \v!here \page_set_place_float_here +\installfloatmethod \s!columnset \v!force \page_set_place_float_force +\installfloatmethod \s!columnset \v!top \page_set_place_float_top +\installfloatmethod \s!columnset \v!bottom \page_set_place_float_bottom +\installfloatmethod \s!columnset \v!page \page_set_place_float_page +\installfloatmethod \s!columnset \s!tblr \page_set_place_float_slot +\installfloatmethod \s!columnset \s!lrtb \page_set_place_float_slot +\installfloatmethod \s!columnset \s!tbrl \page_set_place_float_slot +\installfloatmethod \s!columnset \s!rltb \page_set_place_float_slot +\installfloatmethod \s!columnset \s!fxtb \page_set_place_float_slot +\installfloatmethod \s!columnset \s!btlr \page_set_place_float_slot +\installfloatmethod \s!columnset \s!lrbt \page_set_place_float_slot +\installfloatmethod \s!columnset \s!btrl \page_set_place_float_slot +\installfloatmethod \s!columnset \s!rlbt \page_set_place_float_slot +\installfloatmethod \s!columnset \s!fxbt \page_set_place_float_slot +\installfloatmethod \s!columnset \s!fixd \page_set_place_float_force + \protect \endinput % extreme examples (1) diff --git a/tex/context/base/mkiv/page-smp.mkiv b/tex/context/base/mkiv/page-smp.mkiv new file mode 100644 index 000000000..2711c9944 --- /dev/null +++ b/tex/context/base/mkiv/page-smp.mkiv @@ -0,0 +1,59 @@ +%D \module +%D [ file=page-smp, % was: core-mul, page-mul +%D version=1998.03.15, +%D title=\CONTEXT\ Page Macros, +%D subtitle=Simple Multi Column Output, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\unprotect + +%D The old one: + +\definemixedcolumns + [\v!columns] + % compatible with columns default : + [\c!balance=\v!yes, + \c!blank={\v!line,\v!fixed}] + +\unexpanded\def\setupcolumns + {\setupmixedcolumns[\v!columns]} + +%D This will be replaced by mixed box. + +\unexpanded\def\startsimplecolumns + {\dosingleempty\page_simple_start} + +\def\page_simple_start[#1]% + {\bgroup + \setsimplecolumnshsize[#1]% + \nopenalties + \setbox\scratchbox\vbox\bgroup + \forgetall} % \blank[\v!disable] + +\unexpanded\def\stopsimplecolumns + {\removebottomthings + \egroup + \rigidcolumnbalance\scratchbox + \egroup} + +\unexpanded\def\setsimplecolumnshsize[#1]% + {\getdummyparameters + [\c!width=\hsize, + \c!distance=1.5\bodyfontsize, + \c!n=2, + \c!lines=0, + #1]% + \edef\rigidcolumnlines + {\directdummyparameter\c!lines}% + \setrigidcolumnhsize + {\directdummyparameter\c!width}% + {\directdummyparameter\c!distance}% + {\directdummyparameter\c!n}} + +\protect \endinput diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index 395dfd172..5d0bf9406 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 270d4ef92..c7ffdbd8b 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 f3fb1182c..805a6edc7 100644 --- a/tex/context/base/mkiv/strc-flt.mkvi +++ b/tex/context/base/mkiv/strc-flt.mkvi @@ -2329,6 +2329,8 @@ \definesystemconstant{fxbt} \definesystemconstant{fixd} +% can move to page-one: + \installfloatmethod \s!singlecolumn \v!here \page_one_place_float_here \installfloatmethod \s!singlecolumn \v!force \page_one_place_float_force \installfloatmethod \s!singlecolumn \v!left \page_one_place_float_left @@ -2364,76 +2366,6 @@ \installfloatmethod \s!singlecolumn \s!fxbt \page_one_place_float_bottom \installfloatmethod \s!singlecolumn \s!fixd \page_one_place_float_force -\installfloatmethod \s!multicolumn \v!here \page_mul_place_float_here -\installfloatmethod \s!multicolumn \v!force \page_mul_place_float_force -%installfloatmethod \s!multicolumn \v!left -%installfloatmethod \s!multicolumn \v!right -%installfloatmethod \s!multicolumn \v!text -\installfloatmethod \s!multicolumn \v!top \page_mul_place_float_top -\installfloatmethod \s!multicolumn \v!bottom \page_mul_place_float_bottom -%installfloatmethod \s!multicolumn \v!auto -%installfloatmethod \s!multicolumn \v!margin -%installfloatmethod \s!multicolumn \v!opposite -%installfloatmethod \s!multicolumn \v!page -%installfloatmethod \s!multicolumn \v!leftpage -%installfloatmethod \s!multicolumn \v!rightpage -%installfloatmethod \s!multicolumn \v!inmargin -%installfloatmethod \s!multicolumn \v!inleft -%installfloatmethod \s!multicolumn \v!inright -%installfloatmethod \s!multicolumn \v!leftmargin -%installfloatmethod \s!multicolumn \v!rightmargin -%installfloatmethod \s!multicolumn \v!leftedge -%installfloatmethod \s!multicolumn \v!rightedge -%installfloatmethod \s!multicolumn \v!somewhere -%installfloatmethod \s!multicolumn \v!backspace -%installfloatmethod \s!multicolumn \v!cutspace -%installfloatmethod \s!multicolumn \s!tblr -%installfloatmethod \s!multicolumn \s!lrtb -%installfloatmethod \s!multicolumn \s!tbrl -%installfloatmethod \s!multicolumn \s!rltb -%installfloatmethod \s!multicolumn \s!fxtb -%installfloatmethod \s!multicolumn \s!btlr -%installfloatmethod \s!multicolumn \s!lrbt -%installfloatmethod \s!multicolumn \s!btrl -%installfloatmethod \s!multicolumn \s!rlbt -%installfloatmethod \s!multicolumn \s!fxbt -%installfloatmethod \s!multicolumn \s!fixd - -\installfloatmethod \s!columnset \v!here \page_set_place_float_here -\installfloatmethod \s!columnset \v!force \page_set_place_float_force -%installfloatmethod \s!columnset \v!left -%installfloatmethod \s!columnset \v!right -%installfloatmethod \s!columnset \v!text -\installfloatmethod \s!columnset \v!top \page_set_place_float_top -\installfloatmethod \s!columnset \v!bottom \page_set_place_float_bottom -%installfloatmethod \s!columnset \v!auto -%installfloatmethod \s!columnset \v!margin -%installfloatmethod \s!columnset \v!opposite -\installfloatmethod \s!columnset \v!page \page_set_place_float_page -%installfloatmethod \s!columnset \v!leftpage -%installfloatmethod \s!columnset \v!rightpage -%installfloatmethod \s!columnset \v!inmargin -%installfloatmethod \s!columnset \v!inleft -%installfloatmethod \s!columnset \v!inright -%installfloatmethod \s!columnset \v!leftmargin -%installfloatmethod \s!columnset \v!rightmargin -%installfloatmethod \s!columnset \v!leftedge -%installfloatmethod \s!columnset \v!rightedge -%installfloatmethod \s!columnset \v!somewhere -%installfloatmethod \s!columnset \v!backspace -%installfloatmethod \s!columnset \v!cutspace -\installfloatmethod \s!columnset \s!tblr \page_set_place_float_slot -\installfloatmethod \s!columnset \s!lrtb \page_set_place_float_slot -\installfloatmethod \s!columnset \s!tbrl \page_set_place_float_slot -\installfloatmethod \s!columnset \s!rltb \page_set_place_float_slot -\installfloatmethod \s!columnset \s!fxtb \page_set_place_float_slot -\installfloatmethod \s!columnset \s!btlr \page_set_place_float_slot -\installfloatmethod \s!columnset \s!lrbt \page_set_place_float_slot -\installfloatmethod \s!columnset \s!btrl \page_set_place_float_slot -\installfloatmethod \s!columnset \s!rlbt \page_set_place_float_slot -\installfloatmethod \s!columnset \s!fxbt \page_set_place_float_slot -\installfloatmethod \s!columnset \s!fixd \page_set_place_float_force - %D Local floats: \installcorenamespace{localfloats} diff --git a/tex/context/base/mkiv/strc-sec.mkiv b/tex/context/base/mkiv/strc-sec.mkiv index 637db03f4..8f6038da7 100644 --- a/tex/context/base/mkiv/strc-sec.mkiv +++ b/tex/context/base/mkiv/strc-sec.mkiv @@ -869,6 +869,9 @@ \ifdefined\triggerautostructurelevel \else \let\triggerautostructurelevel\relax \fi +\newtoks\everybeforesectionheadhandle +\newtoks\everyaftersectionheadhandle + \def\strc_sectioning_handle#1#2#3% name data userdata (we can move #1 to the caller) {\xdef\currenthead {#1}% \xdef\currentheadcoupling{\sectionheadcoupling\currenthead}% @@ -882,7 +885,7 @@ \strc_sectioning_initialize_placement \strc_sectioning_initialize_number % - \flushingcolumnfloatsfalse + \the\everybeforesectionheadhandle % % todo: also mark (for header) % @@ -968,7 +971,9 @@ \strc_sectioning_after_nop \fi\fi \fi - \flushingcolumnfloatstrue + % + \the\everyaftersectionheadhandle + % \setfalse\c_strc_sectioning_ignore_page % ignorespaces prevents spaces creeping in when after=\dontleavehmode \dostarttagged\t!sectioncontent\empty diff --git a/tex/context/base/mkiv/syst-aux.mkiv b/tex/context/base/mkiv/syst-aux.mkiv index 6ba3e0e66..a23563f3c 100644 --- a/tex/context/base/mkiv/syst-aux.mkiv +++ b/tex/context/base/mkiv/syst-aux.mkiv @@ -573,7 +573,7 @@ \def\setgvalue #1{\expandafter\gdef\csname#1\endcsname} \def\setevalue #1{\expandafter\edef\csname#1\endcsname} \def\setxvalue #1{\expandafter\xdef\csname#1\endcsname} -\def\getvalue #1{\csname#1\endcsname} +\def\getvalue #1{\csname#1\endcsname} % maybe: \begincsname#1\endcsname \def\letvalue #1{\expandafter\let \csname#1\endcsname} \def\letgvalue #1{\expandafter\glet\csname#1\endcsname} \def\resetvalue #1{\expandafter\let \csname#1\endcsname\empty} @@ -4395,28 +4395,6 @@ \expandafter\let\expandafter\recurselevel\csname\??recurseindex\the\outerrecurse\endcsname \global\advance\outerrecurse \minusone} -\unexpanded\def\dostepwiserecurse#1#2#3#4% can be made faster by postponing #4 - {\global\advance\outerrecurse \plusone - \expandafter\gdef\csname\??recurseaction\the\outerrecurse\endcsname##1##2{#4}% - \expandafter\glet\csname\??recurseindex \the\outerrecurse\endcsname\recurselevel - \ifnum#3>\zerocount\relax - \ifnum#2<#1\relax - \let\syst_helpers_stepwise_next\syst_helpers_stepwise_exit - \else - \let\syst_helpers_stepwise_next\syst_helpers_stepwise_recurse - \fi - \else - \ifnum#3<\zerocount\relax - \ifnum#1<#2\relax - \let\syst_helpers_stepwise_next\syst_helpers_stepwise_exit - \else - \let\syst_helpers_stepwise_next\syst_helpers_stepwise_reverse - \fi - \else - \let\syst_helpers_stepwise_next\syst_helpers_stepwise_exit - \fi - \fi\normalexpanded{\syst_helpers_stepwise_next{\number#1}{\number#2}{\number#3}}} - \unexpanded\def\doloop#1% {\global\advance\outerrecurse \plusone \expandafter\gdef\csname\??recurseaction\the\outerrecurse\endcsname##1##2{#1}% @@ -4424,8 +4402,32 @@ \let\endofloop\syst_helpers_loop \syst_helpers_loop1} % no \plusone else \recurselevel wrong -% faster - +% for instance: +% +% \unexpanded\def\dostepwiserecurse#1#2#3#4% can be made faster by postponing #4 +% {\global\advance\outerrecurse \plusone +% \expandafter\gdef\csname\??recurseaction\the\outerrecurse\endcsname##1##2{#4}% +% \expandafter\glet\csname\??recurseindex \the\outerrecurse\endcsname\recurselevel +% \ifnum#3>\zerocount\relax +% \ifnum#2<#1\relax +% \let\syst_helpers_stepwise_next\syst_helpers_stepwise_exit +% \else +% \let\syst_helpers_stepwise_next\syst_helpers_stepwise_recurse +% \fi +% \else +% \ifnum#3<\zerocount\relax +% \ifnum#1<#2\relax +% \let\syst_helpers_stepwise_next\syst_helpers_stepwise_exit +% \else +% \let\syst_helpers_stepwise_next\syst_helpers_stepwise_reverse +% \fi +% \else +% \let\syst_helpers_stepwise_next\syst_helpers_stepwise_exit +% \fi +% \fi\normalexpanded{\syst_helpers_stepwise_next{\number#1}{\number#2}{\number#3}}} +% +% faster: +% % \unexpanded\def\dostepwiserecurse#1#2#3#4% can be made faster by postponing #4 % {\global\advance\outerrecurse \plusone % \expandafter\gdef\csname\??recurseaction\the\outerrecurse\endcsname##1##2{#4}% @@ -4437,10 +4439,12 @@ % \ifnum#1<#2\else r\fi % \fi\fi % \expandafter\endcsname\normalexpanded{{\number#1}{\number#2}{\number#3}}} - +% % \let\@swr \syst_helpers_stepwise_exit % \let\@swrd\syst_helpers_stepwise_recurse % \let\@swrr\syst_helpers_stepwise_reverse +% +% nicer: \installsystemnamespace{recursestepwise} diff --git a/tex/context/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml index a4a6b3582..8e1e4a457 100644 --- a/tex/context/interface/mkii/keys-cs.xml +++ b/tex/context/interface/mkii/keys-cs.xml @@ -1247,6 +1247,7 @@ + diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf index 1ac6e7764..9c45d463f 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 75e3265b4..c7a9f2005 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/mkiv/m-old-columnsets.mkiv b/tex/context/modules/mkiv/m-old-columnsets.mkiv new file mode 100644 index 000000000..d840cbc91 --- /dev/null +++ b/tex/context/modules/mkiv/m-old-columnsets.mkiv @@ -0,0 +1,7 @@ +\writeline +\writestatus{system}{Using old columnset mechanism.} +\writeline + +\input page-set.mkiv + +\endinput diff --git a/tex/context/modules/mkiv/m-old-multicolumns.mkiv b/tex/context/modules/mkiv/m-old-multicolumns.mkiv new file mode 100644 index 000000000..a2fb1503b --- /dev/null +++ b/tex/context/modules/mkiv/m-old-multicolumns.mkiv @@ -0,0 +1,7 @@ +\writeline +\writestatus{system}{Using old multicolumn mechanism.} +\writeline + +\input page-mul.mkiv + +\endinput diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index b76e2042b..45caa3ee4 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 : 09/25/18 14:14:33 +-- merge date : 09/26/18 14:26:41 do -- begin closure to overcome local limits and interference @@ -9049,9 +9049,11 @@ if not modules then modules={} end modules ['font-ini']={ license="see context related readme files" } local allocate=utilities.storage.allocate +local sortedhash=table.sortedhash fonts=fonts or {} local fonts=fonts -fonts.hashes=fonts.hashes or { identifiers=allocate() } +local identifiers=allocate() +fonts.hashes=fonts.hashes or { identifiers=identifiers } fonts.tables=fonts.tables or {} fonts.helpers=fonts.helpers or {} fonts.tracers=fonts.tracers or {} @@ -9061,6 +9063,7 @@ fonts.readers={} fonts.definers={ methods={} } fonts.loggers={ register=function() end } if context then + --removed end @@ -9096,6 +9099,9 @@ table.setmetatableindex(marks,function(t,k) return marks end end) +function font.each() + return table.sortedhash(fonts.hashes.identifiers) +end end -- closure diff --git a/tex/generic/context/luatex/luatex-fonts-mis.lua b/tex/generic/context/luatex/luatex-fonts-mis.lua index d3cfd70a9..b472b86dd 100644 --- a/tex/generic/context/luatex/luatex-fonts-mis.lua +++ b/tex/generic/context/luatex/luatex-fonts-mis.lua @@ -29,3 +29,7 @@ table.setmetatableindex(marks,function(t,k) return marks end end) + +function font.each() + return table.sortedhash(fonts.hashes.identifiers) +end -- cgit v1.2.3