summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2017-10-15 13:10:46 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2017-10-15 13:10:46 +0200
commitf34b1249e3ad9bcbe34323c6daf0ad3174190649 (patch)
tree15c0312b94c448f18e7c305f5bb1508987d68103 /tex
parentd47ee9fc195ba82eef5e4be132b1d88b7f009a9c (diff)
downloadcontext-f34b1249e3ad9bcbe34323c6daf0ad3174190649.tar.gz
2017-10-15 12:34:00
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-cs.mkii1
-rw-r--r--tex/context/base/mkii/mult-de.mkii1
-rw-r--r--tex/context/base/mkii/mult-ro.mkii1
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv3
-rw-r--r--tex/context/base/mkiv/font-ots.lua123
-rw-r--r--tex/context/base/mkiv/meta-nod.mkiv (renamed from tex/context/base/mkiv/meta-imp-nodes.mkiv)8
-rw-r--r--tex/context/base/mkiv/mult-def.lua3
-rw-r--r--tex/context/base/mkiv/mult-low.lua2
-rw-r--r--tex/context/base/mkiv/mult-prm.lua1
-rw-r--r--tex/context/base/mkiv/mult-prm.mkiv55
-rw-r--r--tex/context/base/mkiv/page-sid.mkiv196
-rw-r--r--tex/context/base/mkiv/spac-ver.mkiv18
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin25730 -> 25716 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin245447 -> 245458 bytes
-rw-r--r--tex/context/base/mkiv/strc-flt.mkvi3
-rw-r--r--tex/context/base/mkiv/tabl-mis.mkiv8
-rw-r--r--tex/context/interface/mkii/keys-cs.xml1
-rw-r--r--tex/context/interface/mkii/keys-de.xml1
-rw-r--r--tex/context/interface/mkii/keys-ro.xml1
-rw-r--r--tex/context/interface/mkiv/context-en.xml1033
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin818494 -> 803360 bytes
-rw-r--r--tex/context/interface/mkiv/i-floats.xml5
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin60767 -> 60768 bytes
-rw-r--r--tex/context/interface/mkiv/i-strut.xml5
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua116
28 files changed, 364 insertions, 1227 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 1fc148a68..49269493e 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{2017.10.10 12:00}
+\newcontextversion{2017.10.15 12:29}
%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 8467e6ef8..0375b1b7a 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{2017.10.10 12:00}
+\edef\contextversion{2017.10.15 12:29}
%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 b57c8ece5..85297dd12 100644
--- a/tex/context/base/mkii/mult-cs.mkii
+++ b/tex/context/base/mkii/mult-cs.mkii
@@ -1150,6 +1150,7 @@
\setinterfaceconstant{sidemethod}{sidemethod}
\setinterfaceconstant{sidespaceafter}{bocnimezeraza}
\setinterfaceconstant{sidespacebefore}{bocnimezerapred}
+\setinterfaceconstant{sidethreshold}{sidethreshold}
\setinterfaceconstant{sign}{znak}
\setinterfaceconstant{size}{velikost}
\setinterfaceconstant{slantedfeatures}{slantedfeatures}
diff --git a/tex/context/base/mkii/mult-de.mkii b/tex/context/base/mkii/mult-de.mkii
index de622fc76..3fd291e1e 100644
--- a/tex/context/base/mkii/mult-de.mkii
+++ b/tex/context/base/mkii/mult-de.mkii
@@ -1150,6 +1150,7 @@
\setinterfaceconstant{sidemethod}{sidemethod}
\setinterfaceconstant{sidespaceafter}{nebennachspatium}
\setinterfaceconstant{sidespacebefore}{nebenvorspatium}
+\setinterfaceconstant{sidethreshold}{sidethreshold}
\setinterfaceconstant{sign}{zeichen}
\setinterfaceconstant{size}{groesse}
\setinterfaceconstant{slantedfeatures}{slantedfeatures}
diff --git a/tex/context/base/mkii/mult-ro.mkii b/tex/context/base/mkii/mult-ro.mkii
index bceff14e4..c7fbc8a40 100644
--- a/tex/context/base/mkii/mult-ro.mkii
+++ b/tex/context/base/mkii/mult-ro.mkii
@@ -1150,6 +1150,7 @@
\setinterfaceconstant{sidemethod}{sidemethod}
\setinterfaceconstant{sidespaceafter}{spatiulateraldupa}
\setinterfaceconstant{sidespacebefore}{spatiulateralinainte}
+\setinterfaceconstant{sidethreshold}{sidethreshold}
\setinterfaceconstant{sign}{semn}
\setinterfaceconstant{size}{dimensiune}
\setinterfaceconstant{slantedfeatures}{slantedfeatures}
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index f61d816f5..07bfb94c5 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{2017.10.10 12:00}
+\newcontextversion{2017.10.15 12:29}
%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 8eb7bd70f..cd0da3d95 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -41,7 +41,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2017.10.10 12:00}
+\edef\contextversion{2017.10.15 12:29}
\edef\contextkind {beta}
%D For those who want to use this:
@@ -454,6 +454,7 @@
\loadmarkfile{meta-pag}
\loadmarkfile{meta-grd}
\loadmarkfile{meta-fnt}
+\loadmarkfile{meta-nod}
\loadmarkfile{page-mrk} % depends on mp
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index 55c5354da..2e82de21a 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -2080,7 +2080,7 @@ local function chaindisk(head,start,dataset,sequence,rlmode,skiphash,ck)
if current then
-- go on
elseif sweepoverflow then
- -- we already are folling up on sweepnode
+ -- we already are following up on sweepnode
break
elseif sweeptype == "post" or sweeptype == "replace" then
current = getnext(sweepnode)
@@ -3069,6 +3069,9 @@ local function kernrun(disc,k_run,font,attr,...)
end
setlink(prev,disc,next)
end
+ if done and trace_testruns then
+ report_disc("done",disc)
+ end
return nextstart, done
end
@@ -3116,6 +3119,9 @@ local function comprun(disc,c_run,...) -- vararg faster than the whole list
sweepnode = nil
sweeptype = nil
if renewed then
+ if trace_testruns then
+ report_disc("done",disc)
+ end
setdisc(disc,pre,post,replace)
end
--
@@ -3135,6 +3141,7 @@ local function testrun(disc,t_run,c_run,...)
return
end
local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
+ local renewed = false
if (post or replace) and prev then
if post then
setlink(posttail,next)
@@ -3153,12 +3160,17 @@ local function testrun(disc,t_run,c_run,...)
local head = getnext(disc) -- is: next
local tail = head
for i=1,d do
- tail = getnext(tail)
- if getid(tail) == disc_code then
- head, tail = flattendisk(head,tail)
+ local nx = getnext(tail)
+ local id = getid(nx)
+ if id == disc_code then
+ head, tail = flattendisk(head,nx)
+ elseif id == glyph_code then
+ tail = nx
+ else
+ -- we can have overrun into a glue
+ break
end
end
--- local next = getnext(tail)
next = getnext(tail)
setnext(tail)
setprev(head)
@@ -3173,7 +3185,6 @@ local function testrun(disc,t_run,c_run,...)
else
replace = new
end
--- setlink(disc,next)
else
-- we stay inside the disc
if posttail then
@@ -3186,15 +3197,16 @@ local function testrun(disc,t_run,c_run,...)
else
replace = nil
end
--- setprev(next,disc) -- setlink(dics,next)
end
-setlink(disc,next)
+ setlink(disc,next)
-- pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
end
--
-- like comprun
--
- local renewed = false
+ if trace_testruns then
+ report_disc("more",disc)
+ end
--
if pre then
sweepnode = disc
@@ -3230,6 +3242,9 @@ setlink(disc,next)
sweeptype = nil
if renewed then
setdisc(disc,pre,post,replace)
+ if trace_testruns then
+ report_disc("done",disc)
+ end
end
-- next can have changed (copied list)
return getnext(disc), renewed
@@ -3273,7 +3288,7 @@ local function c_run_single(head,font,attr,lookupcache,step,dataset,sequence,rlm
start = head
end
while start do
- local char = ischar(start,font)
+ local char, id = ischar(start,font)
if char then
local a -- happens often so no assignment is faster
if attr then
@@ -3332,7 +3347,7 @@ local function t_run_single(start,stop,font,attr,lookupcache)
ss = nil
end
-- a bit weird: why multiple ... anyway we can't have a disc in a disc
- -- how about post ...
+ -- how about post ... we can probably merge this into the while
while getid(s) == disc_code do
ss = getnext(s)
s = getfield(s,"replace")
@@ -3344,40 +3359,48 @@ local function t_run_single(start,stop,font,attr,lookupcache)
local l = nil
local d = 0
while s do
- local lg = lookupmatch[getchar(s)]
- if lg then
- if sstop then
- d = 1
- elseif d > 0 then
- d = d + 1
- end
- l = lg
- s = getnext(s)
- sstop = s == stop
- if not s then
- s = ss
- ss = nil
- end
- while getid(s) == disc_code do
- ss = getnext(s)
- s = getfield(s,"replace")
+ local char = ischar(s,font)
+ if char then
+ local lg = lookupmatch[char]
+ if lg then
+ if sstop then
+ d = 1
+ elseif d > 0 then
+ d = d + 1
+ end
+ l = lg
+ s = getnext(s)
+ sstop = s == stop
if not s then
s = ss
ss = nil
end
+ while getid(s) == disc_code do
+ ss = getnext(s)
+ s = getfield(s,"replace")
+ if not s then
+ s = ss
+ ss = nil
+ end
+ end
+ else
+ break
end
else
break
end
end
- if l and l.ligature then
+ if l and l.ligature then -- so we test for ligature
lastd = d
end
+-- why not: if not l then break elseif l.ligature then return d end
else
+-- why not: break
-- no match (yet)
end
else
-- go on can be a mixed one
+-- why not: break
end
if lastd then
return lastd
@@ -3505,27 +3528,32 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps)
local l = nil
local d = 0
while s do
- local lg = lookupmatch[getchar(s)]
- if lg then
- if sstop then
- d = 1
- elseif d > 0 then
- d = d + 1
- end
- l = lg
- s = getnext(s)
- sstop = s == stop
- if not s then
- s = ss
- ss = nil
- end
- while getid(s) == disc_code do
- ss = getnext(s)
- s = getfield(s,"replace")
+ local char = ischar(s)
+ if char then
+ local lg = lookupmatch[char]
+ if lg then
+ if sstop then
+ d = 1
+ elseif d > 0 then
+ d = d + 1
+ end
+ l = lg
+ s = getnext(s)
+ sstop = s == stop
if not s then
s = ss
ss = nil
end
+ while getid(s) == disc_code do
+ ss = getnext(s)
+ s = getfield(s,"replace")
+ if not s then
+ s = ss
+ ss = nil
+ end
+ end
+ else
+ break
end
else
break
@@ -3660,7 +3688,6 @@ do
local testdics = false
directives.register("otf.fastdisc",function(v) fastdisc = v end) -- normally enabled
- directives.register("otf.testdisc",function(v) testdisc = v end) -- only for myself
-- using a merged combined hash as first test saves some 30% on ebgaramond and
-- about 15% on arabtype .. then moving the a test also saves a bit (even when
@@ -3750,7 +3777,7 @@ do
local topstack = 0
local typ = sequence.type
local gpossing = typ == "gpos_single" or typ == "gpos_pair" -- store in dataset
- local forcetestrun = testdisc or typ == "gsub_ligature"
+ local forcetestrun = typ == "gsub_ligature" -- testrun is only for ligatures
local handler = handlers[typ] -- store in dataset
local steps = sequence.steps
local nofsteps = sequence.nofsteps
diff --git a/tex/context/base/mkiv/meta-imp-nodes.mkiv b/tex/context/base/mkiv/meta-nod.mkiv
index 557eac2cc..1c6f1309d 100644
--- a/tex/context/base/mkiv/meta-imp-nodes.mkiv
+++ b/tex/context/base/mkiv/meta-nod.mkiv
@@ -1,5 +1,5 @@
%D \module
-%D [ file=meta-imp-nodes,
+%D [ file=meta-nod,
%D version=2016.11.23,
%D title=\METAPOST\ Graphics,
%D subtitle=Nodes,
@@ -32,8 +32,8 @@
[node]
[\c!foregroundstyle=\small]
-\startMPdefinitions{nodes}
- loadmodule "node" ;
-\stopMPdefinitions
+% \startMPdefinitions{nodes}
+% loadmodule "node" ;
+% \stopMPdefinitions
\protect
diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua
index c12040708..05b6a0387 100644
--- a/tex/context/base/mkiv/mult-def.lua
+++ b/tex/context/base/mkiv/mult-def.lua
@@ -11036,6 +11036,9 @@ return {
["threshold"]={
["en"]="threshold",
},
+ ["sidethreshold"]={
+ ["en"]="sidethreshold",
+ },
["displaythreshold"]={
["en"]="displaythreshold",
},
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index 6b7bf47b3..55edc191c 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -340,7 +340,7 @@ return {
--
"offinterlineskip", "oninterlineskip", "nointerlineskip",
--
- "strut", "halfstrut", "quarterstrut", "depthstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight",
+ "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight",
"leftboundary", "rightboundary", "signalcharacter",
--
"ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing",
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index cf12388a0..7482d08ec 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -1,6 +1,5 @@
return {
["aleph"]={
- "AlephVersion",
"Alephminorversion",
"Alephrevision",
"Alephversion",
diff --git a/tex/context/base/mkiv/mult-prm.mkiv b/tex/context/base/mkiv/mult-prm.mkiv
index 60ec26fe7..fb71878d8 100644
--- a/tex/context/base/mkiv/mult-prm.mkiv
+++ b/tex/context/base/mkiv/mult-prm.mkiv
@@ -31,22 +31,14 @@
context.starttext()
- function table.sorted(t)
- table.sort(t)
- return t
- end
-
local missing = {
tex = {
- "def", "catcode", "futurelet", "chardef",
- "voffset", "hoffset",
- "numexpr", "dimexpr",
- "write", "dump", "skipdef,"
},
etex = {
- "savingvdiscards",
},
- pdftex = {
+ luatex = {
+ },
+ pdftex = { -- maybe not complete
"ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing",
"pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit",
"pdfcompresslevel", "pdfcopyfont", "pdfcreationdate",
@@ -77,35 +69,32 @@
"pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr",
"pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage",
},
- luatex = {
- },
- aleph = {
- "AlephVersion", "Alephminorversion", "Alephrevision", "Alephversion",
+ aleph = { -- we don't bother
+ "Alephminorversion", "Alephrevision", "Alephversion",
},
- omega = {
+ omega = { -- we don't bother
"Omegaminorversion", "Omegarevision", "Omegaversion",
},
- xetex = {
- "XeTeXversion", -- probably some more
- },
- plain = {
- "TeX",
- "bgroup", "egroup", "endgraf", "space", "empty", "null",
- "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newhelp", "newread", "newwrite", "newfam", "newlanguage", "newinsert", "newif",
- "maxdimen", "magstephalf", "magstep",
- "frenchspacing", "nonfrenchspacing", "normalbaselines", "obeylines", "obeyspaces", "raggedright", "ttraggedright",
- "thinspace", "negthinspace", "enspace", "enskip", "quad", "qquad",
- "smallskip", "medskip", "bigskip", "removelastskip", "topglue", "vglue", "hglue",
- "break", "nobreak", "allowbreak", "filbreak", "goodbreak", "smallbreak", "medbreak", "bigbreak",
- "line", "leftline", "rightline", "centerline", "rlap", "llap", "underbar", "strutbox", "strut",
- "cases", "matrix", "pmatrix", "bordermatrix", "eqalign", "displaylines", "eqalignno", "leqalignno",
- "pageno", "folio", "tracingall", "showhyphens", "fmtname", "fmtversion",
- "hphantom", "vphantom", "phantom", "smash",
+ xetex = { -- we don't bother
+ "XeTeXversion",
},
+ -- plain = {
+ -- "TeX",
+ -- "bgroup", "egroup", "endgraf", "space", "empty", "null",
+ -- "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newhelp", "newread", "newwrite", "newfam", "newlanguage", "newinsert", "newif",
+ -- "maxdimen", "magstephalf", "magstep",
+ -- "frenchspacing", "nonfrenchspacing", "normalbaselines", "obeylines", "obeyspaces", "raggedright", "ttraggedright",
+ -- "thinspace", "negthinspace", "enspace", "enskip", "quad", "qquad",
+ -- "smallskip", "medskip", "bigskip", "removelastskip", "topglue", "vglue", "hglue",
+ -- "break", "nobreak", "allowbreak", "filbreak", "goodbreak", "smallbreak", "medbreak", "bigbreak",
+ -- "line", "leftline", "rightline", "centerline", "rlap", "llap", "underbar", "strutbox", "strut",
+ -- "cases", "matrix", "pmatrix", "bordermatrix", "eqalign", "displaylines", "eqalignno", "leqalignno",
+ -- "pageno", "folio", "tracingall", "showhyphens", "fmtname", "fmtversion",
+ -- "hphantom", "vphantom", "phantom", "smash",
+ -- },
}
local primitives = {
- -- tex = table.sorted( table.merged( missing.tex , tex.primitives() ) ),
tex = table.sorted( table.merged( missing.tex , tex.extraprimitives("core","tex") ) ),
etex = table.sorted( table.merged( missing.etex , tex.extraprimitives("etex") ) ),
pdftex = table.sorted( table.merged( missing.pdftex, { } ) ),
diff --git a/tex/context/base/mkiv/page-sid.mkiv b/tex/context/base/mkiv/page-sid.mkiv
index 50023c2e8..477675ce6 100644
--- a/tex/context/base/mkiv/page-sid.mkiv
+++ b/tex/context/base/mkiv/page-sid.mkiv
@@ -193,19 +193,29 @@
\def\page_sides_flush_floats
{\par
- \ifdim\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax>\zeropoint
- \page_sides_flush_floats_indeed
- \else
- % no need as the par just fits next to the previous float
+ \ifdim\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax>\zeropoint % -\pagedepth
+ \page_sides_flush_floats_progress
+ \page_sides_flush_floats_after_next
+ \fi
+ \page_sides_flush_floats_reset}
+
+\def\page_sides_flush_floats_text
+ {\par
+ \ifdim\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax>\zeropoint % -\pagedepth
+ \page_sides_flush_floats_progress
+ \page_sides_flush_floats_after_none
\fi
+ \page_sides_flush_floats_reset}
+
+\def\page_sides_flush_floats_reset
+ {\global\d_page_sides_vsize\d_page_sides_vsize_reset
% also here if used at all \global\holdinginserts\zerocount
- \global\d_page_sides_vsize\d_page_sides_vsize_reset
\global\setfalse\c_page_sides_short
\global\setfalse\c_page_sides_flag}
\unexpanded\def\doifelsesidefloat
{\par
- \ifdim\dimexpr\d_page_sides_vsize-\pagetotal\relax>\zeropoint
+ \ifdim\dimexpr\d_page_sides_vsize-\pagetotal\relax>\zeropoint % -\pagedepth
\expandafter\firstoftwoarguments
\else
\expandafter\secondoftwoarguments
@@ -217,70 +227,86 @@
\setvalue{\??sidefloatsteps\v!line }{\strut}
\setvalue{\??sidefloatsteps\v!big }{\strut}
-\setvalue{\??sidefloatsteps\v!medium}{\halfstrut}
-\setvalue{\??sidefloatsteps\v!small }{\quarterstrut}
-\setvalue{\??sidefloatsteps\v!depth }{\depthstrut}
+\setvalue{\??sidefloatsteps\v!medium}{\halflinestrut} % was \halfstrut
+\setvalue{\??sidefloatsteps\v!small }{\noheightstrut} % was \quarterstrut
% we don't officially know what kind of float we flush
-\def\page_sides_flush_floats_blank#1% we need to deal with the distance
- {\ifdim\d_page_sides_bottomskip>\d_page_sides_topskip
- \blank[%
- \ifnum#1>\zerocount\v!nowhite,\fi
- \ifdim\d_page_sides_topskip >\zeropoint-\rootfloatparameter\c!sidespacebefore,\fi % the next one
- \ifdim\d_page_sides_bottomskip>\zeropoint \rootfloatparameter\c!sidespaceafter \fi
- ]%
- \else\ifdim\d_page_sides_bottomskip<\d_page_sides_topskip
- \blank[%
- \ifnum#1>\zerocount\v!nowhite,\fi
- \ifdim\d_page_sides_bottomskip>\zeropoint -\rootfloatparameter\c!sidespaceafter ,\fi
- \ifdim\d_page_sides_topskip >\zeropoint \rootfloatparameter\c!sidespacebefore \fi
- ]%
- \fi\fi}
-
\def\page_sides_flush_floats_tracer
{\dontleavehmode
\ruledhpack\bgroup\backgroundline[trace:b]{%
+ \llap{\smash{\vrule\s!width4\points\s!height.4\points\s!depth.4\points}}%
\ifnum\recurselevel=\plusone
- \llap{{\smallinfofont\the\scratchdimen}\hskip.5\leftmargindistance}%
+ \llap{\smash{\smallinfofont\the\scratchdimen}\hskip.5\leftmargindistance}%
\else\ifodd\recurselevel
- \llap{{\smallinfofont\recurselevel}\hskip.5\leftmargindistance}%
+ \llap{\smash{\smallinfofont\recurselevel}\hskip.5\leftmargindistance}%
\fi\fi
- \m_pages_strut
+ \page_sides_flush_floats_normal
\kern\hsize
\egroup}}
-\def\page_sides_flush_floats_indeed
- {% the \d_page_sides_bottomskip == \rootfloatparameter\c!sidespaceafter is embedded
- % in the progression of the float
- \begingroup
+\def\page_sides_flush_floats_normal
+ {\ifdim\scratchdimen>\htdp\strutbox
+ \strut
+ \else
+ \m_pages_strut
+ \fi}
+
+% the \d_page_sides_bottomskip == \rootfloatparameter\c!sidespaceafter is embedded
+% in the progression of the float
+
+\def\page_sides_flush_floats_progress
+ {\begingroup
\let\page_sides_flush_floats\relax
\edef\m_pages_strut
{\ifcsname\??sidefloatsteps\rootfloatparameter\c!step\endcsname
\lastnamedcs
\else
- \strut
- \fi}%
+ \noheightstrut
+ \fi}%
\forgetall
+ \offinterlineskip
\doloop
- {\scratchdimen\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal\relax
- \iftracesidefloats
- \page_sides_flush_floats_tracer
- \else
- \m_pages_strut
- \fi
- \par
- \nointerlineskip
- \ifdim\scratchdimen>\zeropoint
+ {\scratchdimen\dimexpr\d_page_sides_vsize-\d_page_sides_bottomskip-\pagetotal-\pagedepth\relax
+ \ifdim\scratchdimen>\onepoint % good enough, if we change it it will become a threshold
\ifnum\recurselevel>\plushundred % safeguard, sort of deadcycles
\exitloop
- \fi
+ \else\iftracesidefloats
+ \page_sides_flush_floats_tracer\par
+ \else
+ \page_sides_flush_floats_normal\par
+ \fi\fi
\else
\exitloop
\fi}%
- \endgroup
- % we're going to add top space anyway so ....
- \ifdim\parskip>\zeropoint % why this test ?
+ \endgroup}
+
+\def\page_sides_flush_floats_after_none
+ {\ifdim\parskip>\zeropoint % why this test ?
+ \ifdim\d_page_sides_bottomskip>\parskip
+ \blank[\v!nowhite,\rootfloatparameter\c!sidespaceafter]%
+ \fi
+ \else
+ \blank[\rootfloatparameter\c!sidespaceafter]%
+ \fi}
+
+\def\page_sides_flush_floats_blank#1% we need to deal with the distance
+ {\ifdim\d_page_sides_bottomskip>\d_page_sides_topskip
+ \blank[%
+ \ifnum#1>\zerocount\v!nowhite,\fi
+ \ifdim\d_page_sides_topskip >\zeropoint-\rootfloatparameter\c!sidespacebefore,\fi % the next one
+ \ifdim\d_page_sides_bottomskip>\zeropoint \rootfloatparameter\c!sidespaceafter \fi
+ ]%
+ \else\ifdim\d_page_sides_bottomskip<\d_page_sides_topskip
+ \blank[%
+ \ifnum#1>\zerocount\v!nowhite,\fi
+ \ifdim\d_page_sides_bottomskip>\zeropoint -\rootfloatparameter\c!sidespaceafter ,\fi
+ \ifdim\d_page_sides_topskip >\zeropoint \rootfloatparameter\c!sidespacebefore \fi
+ ]%
+ \fi\fi}
+
+\def\page_sides_flush_floats_after_next
+ {\ifdim\parskip>\zeropoint % why this test ?
\ifdim\d_page_sides_bottomskip>\parskip
\page_sides_flush_floats_blank\plusone
\fi
@@ -405,15 +431,18 @@
\def\page_sides_apply_vertical_shift_traced
{\global\setbox\floatbox\hpack % why extra box
{\backgroundline[trace:r]{\ruledhpack{\vpack
- {\hsize\wd\floatbox
+ {\forgetall
+ \hsize\wd\floatbox
\vskip\privatescratchdimen
- \nointerlineskip
- \backgroundline[trace:g]{\ruledhpack{\box\floatbox}}%
+ \offinterlineskip
+ \backgroundline[trace:g]{\ruledhpack{\box\floatbox}}\par
+ \blackrule[\c!color=trace:s,\c!height=\d_page_sides_bottomskip,\c!depth=\zeropoint,\c!width=\hsize]%
+ \vskip-\d_page_sides_bottomskip
\ifnum\c_page_sides_align=\plusfive \vskip-\lineheight \fi}}}}}
\def\page_sides_apply_depth_normal
{\global\setbox\floatbox\hpack
- {\lower\strutdepth\box\floatbox}}
+ {\lower\strutdp\box\floatbox}}
\def\page_sides_apply_depth_traced
{\global\setbox\floatbox\hpack
@@ -426,7 +455,7 @@
\def\page_sides_apply_vertical_shift
{\ifnum\c_page_sides_align=\plusfour
\getnoflines{\ht\floatbox}%
- \privatescratchdimen\dimexpr\noflines\lineheight-\strutdepth\relax
+ \privatescratchdimen\dimexpr\noflines\lineheight-\strutdp\relax
\getrawnoflines\d_page_sides_topskip
\advance\privatescratchdimen\noflines\lineheight
% todo: maybe rounding problem here
@@ -453,17 +482,17 @@
% the top of the box is at the previous baseline
\ifcase\c_page_sides_align
% 0 normal
- \advance\privatescratchdimen\strutdepth % or \openstrutdepth
+ \advance\privatescratchdimen\strutdp % or \openstrutdepth
\or % 1 height
- \advance\privatescratchdimen\strutdepth % or \openstrutdepth
+ \advance\privatescratchdimen\strutdp % or \openstrutdepth
\or % 2 line
\or % 3 depth
- \advance\privatescratchdimen\lineheight % or \openlineheight
- \advance\privatescratchdimen\strutdepth % or \openstrutdepth
+ \advance\privatescratchdimen\lineheight % or \openlineheight
+ \advance\privatescratchdimen\strutdp % or \openstrutdepth
\or % 4 grid
\privatescratchdimen\zeropoint
\or
- \advance\privatescratchdimen\strutheight % or \openstrutheight
+ \advance\privatescratchdimen\strutht % or \openstrutheight
\fi
% new
\global\c_page_sides_lines_done\zerocount
@@ -555,6 +584,7 @@
\global\setfalse\c_page_sides_flag
\else
\advance\d_page_sides_progress-\pagetotal
+ \advance\d_page_sides_progress-\pagedepth % new 2017-10-10
\fi}
\def\page_sides_analyse_space
@@ -579,7 +609,7 @@
\ifcase\c_page_sides_method
% method 0 : raw
\or
- % method 1 : safe
+ % method 1 : safe (default)
\scratchdimentwo .99\pagegoal
\or
% method 2 : tight
@@ -596,6 +626,7 @@
% why was this \global\holdinginserts\plusone
\else
\global\advance\d_page_sides_vsize \d_page_sides_bottomskip
+ \global\advance\d_page_sides_vsize -\parskip % new 2017-10-10
\global\setfalse\c_page_sides_short
\fi
\global\settrue\c_page_floats_room
@@ -649,15 +680,58 @@
\unexpanded\def\page_sides_check_floats_tracer
{\begingroup
\hskip-\d_page_sides_width % kern
+ %\llap{\smallinfofont\the\d_page_sides_progression\space=>\space\the\c_page_sides_n_of_hang\hskip.5\leftmargindistance}%
\color[trace:o]%
{\vrule\s!height.5\points\s!depth.5\points\s!width\d_page_sides_width
\llap{\showstruts\strut\kern.25\bodyfontsize}}%
\endgroup}
+% \usemodule[art-01]
+% \starttext
+% \definemeasure[MyHeight][3cm] \definemeasure[MyWidth][3cm]
+% \startbuffer
+% \input klein \par
+% \placefigure[left]{oeps}{\framed[width=\measure{MyWidth},height=\measure{MyHeight}]{}}
+% \dorecurse{4}{test\par} \dorecurse{3}{\input klein }\par
+% \placefigure[left]{oeps}{\framed[width=\measure{MyWidth},height=\measure{MyHeight}]{}}
+% \dorecurse{3}{\input klein }\par
+% \stopbuffer
+% \enabletrackers[floats.anchoring]
+% \setupfloats[step=small]
+% \setupheadertexts[width=\measure{MyWidth},height=\measure{MyHeight}]
+% \dostepwiserecurse {100} {120} {1} {
+% \definemeasure[MyWidth][#1pt]
+% \dostepwiserecurse {50} {300} {1} {
+% \definemeasure[MyHeight][##1pt]
+% \setupwhitespace[none]%
+% \getbuffer \page
+% \setupwhitespace[big]
+% \getbuffer \page
+% }
+% }
+% \stoptext
+
+% \setupfloats
+% [\c!sidethreshold=.5\strutdp] % set to "old" to check with old method
+
+\newdimen\d_page_sides_progression
+
\unexpanded\def\page_sides_check_floats_set
- {\privatescratchdimen\dimexpr\d_page_sides_progress+\strutht-\roundingeps\relax
- \c_page_sides_n_of_hang\privatescratchdimen
- \divide\c_page_sides_n_of_hang \baselineskip\relax
+ {\edef\p_sidethreshold{\floatparameter\c!sidethreshold}%
+ \ifx\p_sidethreshold\v!old
+ \d_page_sides_progression\dimexpr\d_page_sides_progress+\strutht-\roundingeps\relax
+ \c_page_sides_n_of_hang\d_page_sides_progression
+ \divide\c_page_sides_n_of_hang \baselineskip\relax
+ \else
+ \d_page_sides_progression
+ \ifx\p_sidethreshold\empty
+ \d_page_sides_progress
+ \else
+ \dimexpr\d_page_sides_progress-\p_sidethreshold\relax
+ \fi
+ \getnoflines\d_page_sides_progression
+ \c_page_sides_n_of_hang\noflines
+ \fi
\ifnum\c_page_sides_n_of_hang>\zerocount
% new from here (needs test case, old code)
\ifcase\c_page_sides_n_of_lines
@@ -759,7 +833,7 @@
%D the callers. We use \type {\def} as they can be redefined! Some will become obsolete
\def\checksidefloat {\page_sides_check_floats}
-\def\flushsidefloats {\page_sides_flush_floats}
+\def\flushsidefloats {\page_sides_flush_floats_text}
\def\flushsidefloatsafterpar{\page_sides_flush_floats_after_par}
\def\forgetsidefloats {\page_sides_forget_floats}
%def\synchronizesidefloats {\page_sides_synchronize_floats}
diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv
index 6647ede19..934577b17 100644
--- a/tex/context/base/mkiv/spac-ver.mkiv
+++ b/tex/context/base/mkiv/spac-ver.mkiv
@@ -1050,6 +1050,24 @@
\box\scratchbox
\endgroup}
+\unexpanded\def\halflinestrut
+ {\relax
+ \dontleavehmode
+ \begingroup
+ \setbox\scratchbox\copy\strutbox
+ \ht\scratchbox\dimexpr\strutht-.5\strutht-.5\strutdp\relax
+ \box\scratchbox
+ \endgroup}
+
+\unexpanded\def\noheightstrut
+ {\relax
+ \dontleavehmode
+ \begingroup
+ \setbox\scratchbox\copy\strutbox
+ \ht\scratchbox\zeropoint
+ \box\scratchbox
+ \endgroup}
+
%D Sometimes a capstrut comes in handy
%D
%D \starttabulate[|Tl|l|l|]
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index a1089d96d..1c2878919 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index f34a394fe..016e39a04 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/strc-flt.mkvi b/tex/context/base/mkiv/strc-flt.mkvi
index 359b32a53..160001114 100644
--- a/tex/context/base/mkiv/strc-flt.mkvi
+++ b/tex/context/base/mkiv/strc-flt.mkvi
@@ -154,7 +154,7 @@
\c!outermargin=\zeropoint, % idem
\c!leftmargindistance=\zeropoint,
\c!rightmargindistance=\floatparameter\c!leftmargindistance,
- \c!step=\v!big, % the flush side float step (big=line, medium=halfline, small=quarterline, depth=halfline with normaldepth)
+ \c!step=\v!small, % the flush side float step (big, medium, small : always depth)
\c!ntop=2,
\c!nbottom=0,
\c!nlines=4, % used?
@@ -165,6 +165,7 @@
%\c!bottombefore=, % e.g. \vfill
%\c!bottomafter=,
%\c!default=, % default location
+ \c!sidethreshold=.5\strutdp, % set to "old" to check with old method
\c!numbering=\v!yes]
%D Individial settings:
diff --git a/tex/context/base/mkiv/tabl-mis.mkiv b/tex/context/base/mkiv/tabl-mis.mkiv
index 8db31b31d..2d88f3495 100644
--- a/tex/context/base/mkiv/tabl-mis.mkiv
+++ b/tex/context/base/mkiv/tabl-mis.mkiv
@@ -106,10 +106,11 @@
\installcorenamespace{paragraphs}
-\installcommandhandler \??paragraphs {paragraphs} \??paragraphs
+\installframedcommandhandler \??paragraphs {paragraphs} \??paragraphs
\setupparagraphs
[\c!n=3,
+ \c!offset=\zeropoint,
\c!before=\blank,
\c!after=\blank,
\c!distance=\emwidth,
@@ -123,6 +124,7 @@
\c!rulecolor=,
\c!style=,
\c!color=,
+ \c!frame=\v!off,
\c!top=\vss,
\c!bottom=\vfill]
@@ -170,6 +172,7 @@
\else
\d_typo_paragraphs_width\p_width\relax
\fi
+ \advance\d_typo_paragraphs_width-2\dimexpr\paragraphsparameter\c!offset\relax
\c_typo_paragraphs_max\paragraphsparameter\c!n\relax
\d_typo_paragraphs_auto\d_typo_paragraphs_width\relax
\scratchcounter\zerocount
@@ -191,9 +194,10 @@
\parindent\zeropoint
\c_typo_paragraphs_n\zerocount
\let\\=\typo_paragraphs_next % downward compatible
- \dontleavehmode\hbox
+ \dontleavehmode\inheritedparagraphsframed
\bgroup % (2)
\forgetall
+ \advance\hsize-2\dimexpr\paragraphsparameter\c!offset\relax
\let\typo_paragraphs_start_cell\typo_paragraphs_start_cell_indeed
\let\typo_paragraphs_stop_cell \typo_paragraphs_stop_cell_indeed
\typo_paragraphs_start_cell_indeed}
diff --git a/tex/context/interface/mkii/keys-cs.xml b/tex/context/interface/mkii/keys-cs.xml
index 52e2b7f60..6dc681b55 100644
--- a/tex/context/interface/mkii/keys-cs.xml
+++ b/tex/context/interface/mkii/keys-cs.xml
@@ -1156,6 +1156,7 @@
<cd:constant name='sidemethod' value='sidemethod'/>
<cd:constant name='sidespaceafter' value='bocnimezeraza'/>
<cd:constant name='sidespacebefore' value='bocnimezerapred'/>
+ <cd:constant name='sidethreshold' value='sidethreshold'/>
<cd:constant name='sign' value='znak'/>
<cd:constant name='size' value='velikost'/>
<cd:constant name='slantedfeatures' value='slantedfeatures'/>
diff --git a/tex/context/interface/mkii/keys-de.xml b/tex/context/interface/mkii/keys-de.xml
index 99e04428d..271fea6d0 100644
--- a/tex/context/interface/mkii/keys-de.xml
+++ b/tex/context/interface/mkii/keys-de.xml
@@ -1156,6 +1156,7 @@
<cd:constant name='sidemethod' value='sidemethod'/>
<cd:constant name='sidespaceafter' value='nebennachspatium'/>
<cd:constant name='sidespacebefore' value='nebenvorspatium'/>
+ <cd:constant name='sidethreshold' value='sidethreshold'/>
<cd:constant name='sign' value='zeichen'/>
<cd:constant name='size' value='groesse'/>
<cd:constant name='slantedfeatures' value='slantedfeatures'/>
diff --git a/tex/context/interface/mkii/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml
index e0f46ecb5..81846b72e 100644
--- a/tex/context/interface/mkii/keys-ro.xml
+++ b/tex/context/interface/mkii/keys-ro.xml
@@ -1156,6 +1156,7 @@
<cd:constant name='sidemethod' value='sidemethod'/>
<cd:constant name='sidespaceafter' value='spatiulateraldupa'/>
<cd:constant name='sidespacebefore' value='spatiulateralinainte'/>
+ <cd:constant name='sidethreshold' value='sidethreshold'/>
<cd:constant name='sign' value='semn'/>
<cd:constant name='size' value='dimensiune'/>
<cd:constant name='slantedfeatures' value='slantedfeatures'/>
diff --git a/tex/context/interface/mkiv/context-en.xml b/tex/context/interface/mkiv/context-en.xml
index 0dbc9f4e4..d8fda217d 100644
--- a/tex/context/interface/mkiv/context-en.xml
+++ b/tex/context/interface/mkiv/context-en.xml
@@ -9755,1033 +9755,7 @@
</cd:arguments>
</cd:command>
</cd:interface>
- <cd:interface file="i-floats.xml">
- <cd:command file="strc-flt.mkvi" level="style" name="definefloat">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords optional="yes">
- <cd:constant type="cd:singular"/>
- <cd:constant type="cd:plural"/>
- </cd:keywords>
- <cd:assignments list="yes" optional="yes">
- <cd:inherit name="setupfloat"/>
- </cd:assignments>
- </cd:arguments>
- <cd:instances>
- <cd:constant value="chemical"/>
- <cd:constant value="figure"/>
- <cd:constant value="table"/>
- <cd:constant value="intermezzo"/>
- <cd:constant value="graphic"/>
- </cd:instances>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="style" name="definefloat" variant="name">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords optional="yes">
- <cd:constant type="cd:plural"/>
- </cd:keywords>
- <cd:keywords optional="yes">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- </cd:arguments>
- <cd:instances>
- <cd:constant value="chemical"/>
- <cd:constant value="figure"/>
- <cd:constant value="table"/>
- <cd:constant value="intermezzo"/>
- <cd:constant value="graphic"/>
- </cd:instances>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="style" name="setupfloat">
- <cd:arguments>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:assignments list="yes">
- <cd:parameter name="indentnext">
- <cd:constant type="yes"/>
- <cd:constant type="no"/>
- <cd:constant type="auto"/>
- </cd:parameter>
- <cd:parameter name="default">
- <cd:inherit name="placefloat"/>
- </cd:parameter>
- <cd:parameter name="fallback">
- <cd:inherit name="placefloat"/>
- </cd:parameter>
- <cd:parameter name="inner">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="criterium">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="method">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="sidemethod">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="textmethod">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="sidealign">
- <cd:constant type="height"/>
- <cd:constant type="depth"/>
- <cd:constant type="line"/>
- <cd:constant type="halfline"/>
- <cd:constant type="grid"/>
- <cd:constant default="yes" type="normal"/>
- </cd:parameter>
- <cd:parameter name="grid">
- <cd:constant type="cd:string"/>
- </cd:parameter>
- <cd:parameter name="local">
- <cd:constant type="yes"/>
- <cd:constant default="yes" type="no"/>
- </cd:parameter>
- <cd:parameter name="command">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="availablewidth">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="availableheight">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="minwidth">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="maxwidth">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="location">
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="middle"/>
- <cd:constant type="flushleft"/>
- <cd:constant type="flushright"/>
- <cd:constant type="center"/>
- <cd:constant type="max"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="backspace"/>
- <cd:constant type="cutspace"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="leftedge"/>
- <cd:constant type="rightedge"/>
- </cd:parameter>
- <cd:parameter name="leftmargindistance">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="rightmargindistance">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="leftmargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="rightmargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="innermargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="outermargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="bottombefore">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="bottomafter">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="expansion">
- <cd:constant type="yes"/>
- <cd:constant default="yes" type="no"/>
- <cd:constant type="xml"/>
- </cd:parameter>
- <cd:parameter name="referenceprefix">
- <cd:constant type="+"/>
- <cd:constant type="-"/>
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="xmlsetup">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="catcodes">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- <cd:parameter name="freeregion">
- <cd:constant default="yes" type="yes"/>
- <cd:constant type="no"/>
- </cd:parameter>
- <cd:parameter name="spacebefore">
- <cd:constant type="none"/>
- <cd:inherit name="blank"/>
- </cd:parameter>
- <cd:parameter name="spaceafter">
- <cd:constant type="none"/>
- <cd:inherit name="blank"/>
- </cd:parameter>
- <cd:parameter name="width">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="height">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="offset">
- <cd:constant type="cd:dimension"/>
- <cd:constant type="none"/>
- <cd:constant type="overlay"/>
- </cd:parameter>
- <cd:parameter name="sidespacebefore">
- <cd:constant type="none"/>
- <cd:inherit name="blank"/>
- </cd:parameter>
- <cd:parameter name="sidespaceafter">
- <cd:constant type="none"/>
- <cd:inherit name="blank"/>
- </cd:parameter>
- <cd:parameter name="margin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="ntop">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="nbottom">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="step">
- <cd:constant type="small"/>
- <cd:constant type="medium"/>
- <cd:constant default="yes" type="big"/>
- <cd:constant type="line"/>
- <cd:constant type="depth"/>
- </cd:parameter>
- <cd:parameter name="nlines">
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="cache">
- <cd:constant default="yes" type="yes"/>
- <cd:constant type="no"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="style" name="setupfloats">
- <cd:arguments>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:assignments list="yes">
- <cd:inherit name="setupfloat"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="style" name="setupfloatcaption">
- <cd:arguments>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments list="yes">
- <cd:parameter name="suffix">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="suffixseparator">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="suffixstopper">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="location">
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="middle"/>
- <cd:constant type="low"/>
- <cd:constant type="high"/>
- <cd:constant type="grid"/>
- <cd:constant type="overlay"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="lefthanging"/>
- <cd:constant type="righthanging"/>
- <cd:constant type="hang"/>
- <cd:constant type="top"/>
- <cd:constant default="yes" type="bottom"/>
- <cd:constant type="stretch"/>
- <cd:constant type="none"/>
- <cd:constant type="default"/>
- </cd:parameter>
- <cd:parameter name="command">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="numbercommand">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="textcommand">
- <cd:constant type="cd:oneargument"/>
- </cd:parameter>
- <cd:parameter name="spacebefore">
- <cd:inherit name="blank"/>
- </cd:parameter>
- <cd:parameter name="spaceinbetween">
- <cd:inherit name="blank"/>
- </cd:parameter>
- <cd:parameter name="spaceafter">
- <cd:inherit name="blank"/>
- </cd:parameter>
- <cd:parameter name="distance">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="inbetween">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="style">
- <cd:constant type="cd:style"/>
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="color">
- <cd:constant type="cd:color"/>
- </cd:parameter>
- <cd:parameter name="topoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="bottomoffset">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="number">
- <cd:constant default="yes" type="yes"/>
- <cd:constant type="no"/>
- <cd:constant type="none"/>
- </cd:parameter>
- <cd:parameter name="group">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="leftmargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="rightmargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="innermargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="outermargin">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="align">
- <cd:inherit name="setupalign"/>
- </cd:parameter>
- <cd:parameter name="width">
- <cd:constant default="yes" type="fit"/>
- <cd:constant type="max"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="minwidth">
- <cd:constant default="yes" type="fit"/>
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:parameter name="maxwidth">
- <cd:constant type="cd:dimension"/>
- </cd:parameter>
- <cd:inherit name="setupcounter"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="style" name="setupcaption">
- <cd:arguments>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments list="yes">
- <cd:inherit name="setupfloatcaption"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="style" name="setupcaptions">
- <cd:arguments>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:assignments list="yes">
- <cd:inherit name="setupfloatcaption"/>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" generated="yes" level="document" name="placefloat" variant="instance">
- <cd:sequence>
- <cd:string value="place"/>
- <cd:instance value="float"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="split"/>
- <cd:constant type="always"/>
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="backspace"/>
- <cd:constant type="cutspace"/>
- <cd:constant type="inleft"/>
- <cd:constant type="inright"/>
- <cd:constant type="inmargin"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="leftedge"/>
- <cd:constant type="rightedge"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="text"/>
- <cd:constant type="opposite"/>
- <cd:constant type="reset"/>
- <cd:constant type="height"/>
- <cd:constant type="depth"/>
- <cd:constant method="none" prefix="cd:sign" type="line"/>
- <cd:constant type="halfline"/>
- <cd:constant type="grid"/>
- <cd:constant type="high"/>
- <cd:constant type="low"/>
- <cd:constant type="fit"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- <cd:constant type="nonumber"/>
- <cd:constant type="none"/>
- <cd:constant type="local"/>
- <cd:constant type="here"/>
- <cd:constant type="force"/>
- <cd:constant type="margin"/>
- <cd:constant method="none" prefix="cd:sign" type="hang"/>
- <cd:constant type="hanging"/>
- <cd:constant type="tall"/>
- <cd:constant type="both"/>
- <cd:constant type="middle"/>
- <cd:constant type="offset"/>
- <cd:constant type="top"/>
- <cd:constant type="bottom"/>
- <cd:constant type="auto"/>
- <cd:constant type="page"/>
- <cd:constant type="leftpage"/>
- <cd:constant type="rightpage"/>
- <cd:constant type="somewhere"/>
- <cd:constant type="effective"/>
- <cd:constant type="header"/>
- <cd:constant type="footer"/>
- </cd:keywords>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:reference"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content/>
- </cd:arguments>
- <cd:instances>
- <cd:constant value="chemical"/>
- <cd:constant value="figure"/>
- <cd:constant value="table"/>
- <cd:constant value="intermezzo"/>
- <cd:constant value="graphic"/>
- </cd:instances>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="document" name="placefloat">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="split"/>
- <cd:constant type="always"/>
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="backspace"/>
- <cd:constant type="cutspace"/>
- <cd:constant type="inleft"/>
- <cd:constant type="inright"/>
- <cd:constant type="inmargin"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="leftedge"/>
- <cd:constant type="rightedge"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="text"/>
- <cd:constant type="opposite"/>
- <cd:constant type="reset"/>
- <cd:constant type="height"/>
- <cd:constant type="depth"/>
- <cd:constant method="none" prefix="cd:sign" type="line"/>
- <cd:constant type="halfline"/>
- <cd:constant type="grid"/>
- <cd:constant type="high"/>
- <cd:constant type="low"/>
- <cd:constant type="fit"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- <cd:constant type="nonumber"/>
- <cd:constant type="none"/>
- <cd:constant type="local"/>
- <cd:constant type="here"/>
- <cd:constant type="force"/>
- <cd:constant type="margin"/>
- <cd:constant method="none" prefix="cd:sign" type="hang"/>
- <cd:constant type="hanging"/>
- <cd:constant type="tall"/>
- <cd:constant type="both"/>
- <cd:constant type="middle"/>
- <cd:constant type="offset"/>
- <cd:constant type="top"/>
- <cd:constant type="bottom"/>
- <cd:constant type="auto"/>
- <cd:constant type="page"/>
- <cd:constant type="leftpage"/>
- <cd:constant type="rightpage"/>
- <cd:constant type="somewhere"/>
- <cd:constant type="effective"/>
- <cd:constant type="header"/>
- <cd:constant type="footer"/>
- </cd:keywords>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:reference"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content/>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" generated="yes" level="document" name="placefloat" type="environment" variant="instance">
- <cd:sequence>
- <cd:string value="place"/>
- <cd:instance value="float"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments list="yes" optional="yes">
- <cd:parameter name="title">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="bookmark">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="marking">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="list">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="location">
- <cd:constant type="split"/>
- <cd:constant type="always"/>
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="backspace"/>
- <cd:constant type="cutspace"/>
- <cd:constant type="inleft"/>
- <cd:constant type="inright"/>
- <cd:constant type="inmargin"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="leftedge"/>
- <cd:constant type="rightedge"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="text"/>
- <cd:constant type="opposite"/>
- <cd:constant type="reset"/>
- <cd:constant type="height"/>
- <cd:constant type="depth"/>
- <cd:constant method="none" prefix="cd:sign" type="line"/>
- <cd:constant type="halfline"/>
- <cd:constant type="grid"/>
- <cd:constant type="high"/>
- <cd:constant type="low"/>
- <cd:constant type="fit"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- <cd:constant type="nonumber"/>
- <cd:constant type="none"/>
- <cd:constant type="local"/>
- <cd:constant type="here"/>
- <cd:constant type="force"/>
- <cd:constant type="margin"/>
- <cd:constant method="none" prefix="cd:sign" type="hang"/>
- <cd:constant type="hanging"/>
- <cd:constant type="tall"/>
- <cd:constant type="both"/>
- <cd:constant type="middle"/>
- <cd:constant type="offset"/>
- <cd:constant type="top"/>
- <cd:constant type="bottom"/>
- <cd:constant type="auto"/>
- <cd:constant type="page"/>
- <cd:constant type="leftpage"/>
- <cd:constant type="rightpage"/>
- <cd:constant type="somewhere"/>
- <cd:constant type="effective"/>
- <cd:constant type="header"/>
- <cd:constant type="footer"/>
- </cd:parameter>
- <cd:parameter name="reference">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- </cd:assignments>
- <cd:assignments list="yes" optional="yes">
- <cd:parameter name="cd:key">
- <cd:constant type="cd:value"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- <cd:instances>
- <cd:constant value="chemical"/>
- <cd:constant value="figure"/>
- <cd:constant value="table"/>
- <cd:constant value="intermezzo"/>
- <cd:constant value="graphic"/>
- </cd:instances>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="document" name="placefloat" type="environment">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:singular"/>
- </cd:keywords>
- <cd:assignments list="yes" optional="yes">
- <cd:parameter name="title">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="bookmark">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="marking">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="list">
- <cd:constant type="cd:text"/>
- </cd:parameter>
- <cd:parameter name="location">
- <cd:constant type="split"/>
- <cd:constant type="always"/>
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="backspace"/>
- <cd:constant type="cutspace"/>
- <cd:constant type="inleft"/>
- <cd:constant type="inright"/>
- <cd:constant type="inmargin"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="leftedge"/>
- <cd:constant type="rightedge"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="text"/>
- <cd:constant type="opposite"/>
- <cd:constant type="reset"/>
- <cd:constant type="height"/>
- <cd:constant type="depth"/>
- <cd:constant method="none" prefix="cd:sign" type="line"/>
- <cd:constant type="halfline"/>
- <cd:constant type="grid"/>
- <cd:constant type="high"/>
- <cd:constant type="low"/>
- <cd:constant type="fit"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- <cd:constant type="nonumber"/>
- <cd:constant type="none"/>
- <cd:constant type="local"/>
- <cd:constant type="here"/>
- <cd:constant type="force"/>
- <cd:constant type="margin"/>
- <cd:constant method="none" prefix="cd:sign" type="hang"/>
- <cd:constant type="hanging"/>
- <cd:constant type="tall"/>
- <cd:constant type="both"/>
- <cd:constant type="middle"/>
- <cd:constant type="offset"/>
- <cd:constant type="top"/>
- <cd:constant type="bottom"/>
- <cd:constant type="auto"/>
- <cd:constant type="page"/>
- <cd:constant type="leftpage"/>
- <cd:constant type="rightpage"/>
- <cd:constant type="somewhere"/>
- <cd:constant type="effective"/>
- <cd:constant type="header"/>
- <cd:constant type="footer"/>
- </cd:parameter>
- <cd:parameter name="reference">
- <cd:constant type="cd:reference"/>
- </cd:parameter>
- </cd:assignments>
- <cd:assignments list="yes" optional="yes">
- <cd:parameter name="cd:key">
- <cd:constant type="cd:value"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" generated="yes" level="document" name="floattext" type="environment" variant="instance">
- <cd:sequence>
- <cd:instance value="float"/>
- <cd:string value="text"/>
- </cd:sequence>
- <cd:arguments>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="split"/>
- <cd:constant type="always"/>
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="backspace"/>
- <cd:constant type="cutspace"/>
- <cd:constant type="inleft"/>
- <cd:constant type="inright"/>
- <cd:constant type="inmargin"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="leftedge"/>
- <cd:constant type="rightedge"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="text"/>
- <cd:constant type="opposite"/>
- <cd:constant type="reset"/>
- <cd:constant type="height"/>
- <cd:constant type="depth"/>
- <cd:constant method="none" prefix="cd:sign" type="line"/>
- <cd:constant type="halfline"/>
- <cd:constant type="grid"/>
- <cd:constant type="high"/>
- <cd:constant type="low"/>
- <cd:constant type="fit"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- <cd:constant type="nonumber"/>
- <cd:constant type="none"/>
- <cd:constant type="local"/>
- <cd:constant type="here"/>
- <cd:constant type="force"/>
- <cd:constant type="margin"/>
- <cd:constant method="none" prefix="cd:sign" type="hang"/>
- <cd:constant type="hanging"/>
- <cd:constant type="tall"/>
- <cd:constant type="both"/>
- <cd:constant type="middle"/>
- <cd:constant type="offset"/>
- <cd:constant type="top"/>
- <cd:constant type="bottom"/>
- <cd:constant type="auto"/>
- <cd:constant type="page"/>
- <cd:constant type="leftpage"/>
- <cd:constant type="rightpage"/>
- <cd:constant type="somewhere"/>
- <cd:constant type="effective"/>
- <cd:constant type="header"/>
- <cd:constant type="footer"/>
- </cd:keywords>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:reference"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- </cd:arguments>
- <cd:instances>
- <cd:constant value="chemical"/>
- <cd:constant value="figure"/>
- <cd:constant value="table"/>
- <cd:constant value="intermezzo"/>
- <cd:constant value="graphic"/>
- </cd:instances>
- </cd:command>
- <cd:command file="strc-flt.mkvi" generated="yes" level="document" name="placelistoffloats" variant="instance">
- <cd:sequence>
- <cd:string value="placelistof"/>
- <cd:instance value="floats"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments list="yes" optional="yes">
- <cd:inherit name="setuplist"/>
- </cd:assignments>
- </cd:arguments>
- <cd:instances>
- <cd:constant value="chemicals"/>
- <cd:constant value="figures"/>
- <cd:constant value="tables"/>
- <cd:constant value="intermezzi"/>
- <cd:constant value="graphics"/>
- </cd:instances>
- </cd:command>
- <cd:command file="strc-flt.mkvi" generated="yes" level="document" name="completelistoffloats" variant="instance">
- <cd:sequence>
- <cd:string value="completelistof"/>
- <cd:instance value="floats"/>
- </cd:sequence>
- <cd:arguments>
- <cd:assignments list="yes" optional="yes">
- <cd:inherit name="setuplist"/>
- </cd:assignments>
- </cd:arguments>
- <cd:instances>
- <cd:constant value="chemicals"/>
- <cd:constant value="figures"/>
- <cd:constant value="tables"/>
- <cd:constant value="intermezzi"/>
- <cd:constant value="graphics"/>
- </cd:instances>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="system" name="floatuserdataparameter">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:key"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="system" name="doifelserightpagefloat">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:true"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:false"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="system" name="doifrightpagefloatelse">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:true"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:false"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="system" name="doifelseoddpagefloat">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:true"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:false"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="system" name="doifoddpagefloatelse">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:true"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:false"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="system" name="doifelsemainfloatbody">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:true"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:false"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="system" name="doifmainfloatbodyelse">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:true"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:false"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" level="style" name="setuplocalfloats">
- <cd:arguments>
- <cd:assignments list="yes">
- <cd:parameter name="before">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="after">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="inbetween">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" name="noflocalfloats"/>
- <cd:command file="strc-flt.mkvi" name="resetlocalfloats"/>
- <cd:command file="strc-flt.mkvi" name="somelocalfloat"/>
- <cd:command file="strc-flt.mkvi" name="getlocalfloats"/>
- <cd:command file="strc-flt.mkvi" name="flushlocalfloats"/>
- <cd:command file="strc-flt.mkvi" name="getlocalfloat">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:number"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="strc-flt.mkvi" name="forcelocalfloats"/>
- <cd:command file="tabl-tsp.mkiv" level="style" name="setupfloatsplitting">
- <cd:arguments>
- <cd:assignments list="yes">
- <cd:parameter name="before">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="after">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="inbetween">
- <cd:constant type="cd:command"/>
- </cd:parameter>
- <cd:parameter name="lines">
- <cd:constant type="auto"/>
- <cd:constant type="cd:number"/>
- </cd:parameter>
- <cd:parameter name="conversion">
- <cd:constant type="cd:name"/>
- </cd:parameter>
- </cd:assignments>
- </cd:arguments>
- </cd:command>
- <cd:command file="tabl-tsp.mkiv" level="system" name="splitfloat">
- <cd:arguments>
- <cd:assignments list="yes" optional="yes">
- <cd:inherit name="setupfloatsplitting"/>
- </cd:assignments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:command"/>
- </cd:keywords>
- <cd:content/>
- </cd:arguments>
- </cd:command>
- <cd:command file="tabl-tsp.mkiv" level="system" name="doifnotinsidesplitfloat">
- <cd:arguments>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:true"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="page-flt.mkiv" level="document" name="placenamedfloat">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords>
- <cd:constant type="cd:reference"/>
- </cd:keywords>
- </cd:arguments>
- </cd:command>
- <cd:command file="page-flt.mkiv" name="placefloatwithsetups">
- <cd:arguments>
- <cd:keywords>
- <cd:constant type="cd:name"/>
- </cd:keywords>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="split"/>
- <cd:constant type="always"/>
- <cd:constant type="left"/>
- <cd:constant type="right"/>
- <cd:constant type="inner"/>
- <cd:constant type="outer"/>
- <cd:constant type="backspace"/>
- <cd:constant type="cutspace"/>
- <cd:constant type="inleft"/>
- <cd:constant type="inright"/>
- <cd:constant type="inmargin"/>
- <cd:constant type="leftmargin"/>
- <cd:constant type="rightmargin"/>
- <cd:constant type="leftedge"/>
- <cd:constant type="rightedge"/>
- <cd:constant type="innermargin"/>
- <cd:constant type="outermargin"/>
- <cd:constant type="inneredge"/>
- <cd:constant type="outeredge"/>
- <cd:constant type="text"/>
- <cd:constant type="opposite"/>
- <cd:constant type="reset"/>
- <cd:constant type="height"/>
- <cd:constant type="depth"/>
- <cd:constant method="none" prefix="cd:sign" type="line"/>
- <cd:constant type="halfline"/>
- <cd:constant type="grid"/>
- <cd:constant type="high"/>
- <cd:constant type="low"/>
- <cd:constant type="fit"/>
- <cd:constant type="90"/>
- <cd:constant type="180"/>
- <cd:constant type="270"/>
- <cd:constant type="nonumber"/>
- <cd:constant type="none"/>
- <cd:constant type="local"/>
- <cd:constant type="here"/>
- <cd:constant type="force"/>
- <cd:constant type="margin"/>
- <cd:constant method="none" prefix="cd:sign" type="hang"/>
- <cd:constant type="hanging"/>
- <cd:constant type="tall"/>
- <cd:constant type="both"/>
- <cd:constant type="middle"/>
- <cd:constant type="offset"/>
- <cd:constant type="top"/>
- <cd:constant type="bottom"/>
- <cd:constant type="auto"/>
- <cd:constant type="page"/>
- <cd:constant type="leftpage"/>
- <cd:constant type="rightpage"/>
- <cd:constant type="somewhere"/>
- <cd:constant type="effective"/>
- <cd:constant type="header"/>
- <cd:constant type="footer"/>
- </cd:keywords>
- <cd:keywords list="yes" optional="yes">
- <cd:constant type="cd:reference"/>
- </cd:keywords>
- <cd:keywords delimiters="braces">
- <cd:constant type="cd:text"/>
- </cd:keywords>
- <cd:content/>
- </cd:arguments>
- </cd:command>
- </cd:interface>
+ <error/>
<cd:interface file="i-fontfamily.xml">
<cd:command category="fonts" file="font-sel.mkvi" level="style" name="definefontfamily">
<cd:arguments>
@@ -36402,6 +35376,11 @@
</cd:arguments>
</cd:command>
<cd:command file="spac-ver.mkiv" name="strut"/>
+ <cd:command file="spac-ver.mkiv" name="halfstrut"/>
+ <cd:command file="spac-ver.mkiv" name="quarterstrut"/>
+ <cd:command file="spac-ver.mkiv" name="halflinestrut"/>
+ <cd:command file="spac-ver.mkiv" name="noheightstrut"/>
+ <cd:command file="spac-ver.mkiv" name="depthstrut"/>
<cd:command file="spac-ver.mkiv" level="system" name="setstrut"/>
<cd:command file="spac-ver.mkiv" level="system" name="setcharstrut">
<cd:arguments>
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index 4eb8278e1..d137d9c00 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-floats.xml b/tex/context/interface/mkiv/i-floats.xml
index 39dc52a9b..856b41a18 100644
--- a/tex/context/interface/mkiv/i-floats.xml
+++ b/tex/context/interface/mkiv/i-floats.xml
@@ -170,6 +170,11 @@
<cd:constant type="none"/>
<cd:inherit name="blank"/>
</cd:parameter>
+ </cd:parameter>
+ <cd:parameter name="sidethreshold">
+ <cd:constant type="old"/>
+ <cd:constant type="dimension" default="yes"/> <!-- value=".5\strutdp" -->
+ </cd:parameter>
<cd:parameter name="margin">
<cd:constant type="cd:dimension"/>
</cd:parameter>
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index c3912d980..df8aae1fe 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-strut.xml b/tex/context/interface/mkiv/i-strut.xml
index a11c6c13d..88047dd3d 100644
--- a/tex/context/interface/mkiv/i-strut.xml
+++ b/tex/context/interface/mkiv/i-strut.xml
@@ -29,6 +29,11 @@
</cd:command>
<cd:command name="strut" file="spac-ver.mkiv"/>
+ <cd:command name="halfstrut" file="spac-ver.mkiv"/>
+ <cd:command name="quarterstrut" file="spac-ver.mkiv"/>
+ <cd:command name="halflinestrut" file="spac-ver.mkiv"/>
+ <cd:command name="noheightstrut" file="spac-ver.mkiv"/>
+ <cd:command name="depthstrut" file="spac-ver.mkiv"/>
<cd:command name="setstrut" level="system" file="spac-ver.mkiv"/>
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 2be2ae931..7a73dd4fd 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 : 10/10/17 12:00:59
+-- merge date : 10/15/17 12:29:01
do -- begin closure to overcome local limits and interference
@@ -25308,6 +25308,9 @@ local function kernrun(disc,k_run,font,attr,...)
end
setlink(prev,disc,next)
end
+ if done and trace_testruns then
+ report_disc("done",disc)
+ end
return nextstart,done
end
local function comprun(disc,c_run,...)
@@ -25346,6 +25349,9 @@ local function comprun(disc,c_run,...)
sweepnode=nil
sweeptype=nil
if renewed then
+ if trace_testruns then
+ report_disc("done",disc)
+ end
setdisc(disc,pre,post,replace)
end
return getnext(disc),renewed
@@ -25359,6 +25365,7 @@ local function testrun(disc,t_run,c_run,...)
return
end
local pre,post,replace,pretail,posttail,replacetail=getdisc(disc,true)
+ local renewed=false
if (post or replace) and prev then
if post then
setlink(posttail,next)
@@ -25377,9 +25384,14 @@ local function testrun(disc,t_run,c_run,...)
local head=getnext(disc)
local tail=head
for i=1,d do
- tail=getnext(tail)
- if getid(tail)==disc_code then
- head,tail=flattendisk(head,tail)
+ local nx=getnext(tail)
+ local id=getid(nx)
+ if id==disc_code then
+ head,tail=flattendisk(head,nx)
+ elseif id==glyph_code then
+ tail=nx
+ else
+ break
end
end
next=getnext(tail)
@@ -25408,9 +25420,11 @@ local function testrun(disc,t_run,c_run,...)
replace=nil
end
end
-setlink(disc,next)
+ setlink(disc,next)
+ end
+ if trace_testruns then
+ report_disc("more",disc)
end
- local renewed=false
if pre then
sweepnode=disc
sweeptype="pre"
@@ -25442,6 +25456,9 @@ setlink(disc,next)
sweeptype=nil
if renewed then
setdisc(disc,pre,post,replace)
+ if trace_testruns then
+ report_disc("done",disc)
+ end
end
return getnext(disc),renewed
end
@@ -25456,7 +25473,7 @@ local function c_run_single(head,font,attr,lookupcache,step,dataset,sequence,rlm
start=head
end
while start do
- local char=ischar(start,font)
+ local char,id=ischar(start,font)
if char then
local a
if attr then
@@ -25518,33 +25535,38 @@ local function t_run_single(start,stop,font,attr,lookupcache)
local l=nil
local d=0
while s do
- local lg=lookupmatch[getchar(s)]
- if lg then
- if sstop then
- d=1
- elseif d>0 then
- d=d+1
- end
- l=lg
- s=getnext(s)
- sstop=s==stop
- if not s then
- s=ss
- ss=nil
- end
- while getid(s)==disc_code do
- ss=getnext(s)
- s=getfield(s,"replace")
+ local char=ischar(s,font)
+ if char then
+ local lg=lookupmatch[char]
+ if lg then
+ if sstop then
+ d=1
+ elseif d>0 then
+ d=d+1
+ end
+ l=lg
+ s=getnext(s)
+ sstop=s==stop
if not s then
s=ss
ss=nil
end
+ while getid(s)==disc_code do
+ ss=getnext(s)
+ s=getfield(s,"replace")
+ if not s then
+ s=ss
+ ss=nil
+ end
+ end
+ else
+ break
end
else
break
end
end
- if l and l.ligature then
+ if l and l.ligature then
lastd=d
end
else
@@ -25666,27 +25688,32 @@ local function t_run_multiple(start,stop,font,attr,steps,nofsteps)
local l=nil
local d=0
while s do
- local lg=lookupmatch[getchar(s)]
- if lg then
- if sstop then
- d=1
- elseif d>0 then
- d=d+1
- end
- l=lg
- s=getnext(s)
- sstop=s==stop
- if not s then
- s=ss
- ss=nil
- end
- while getid(s)==disc_code do
- ss=getnext(s)
- s=getfield(s,"replace")
+ local char=ischar(s)
+ if char then
+ local lg=lookupmatch[char]
+ if lg then
+ if sstop then
+ d=1
+ elseif d>0 then
+ d=d+1
+ end
+ l=lg
+ s=getnext(s)
+ sstop=s==stop
if not s then
s=ss
ss=nil
end
+ while getid(s)==disc_code do
+ ss=getnext(s)
+ s=getfield(s,"replace")
+ if not s then
+ s=ss
+ ss=nil
+ end
+ end
+ else
+ break
end
else
break
@@ -25778,8 +25805,7 @@ otf.helpers.pardirstate=pardirstate
do
local fastdisc=true
local testdics=false
- directives.register("otf.fastdisc",function(v) fastdisc=v end)
- directives.register("otf.testdisc",function(v) testdisc=v end)
+ directives.register("otf.fastdisc",function(v) fastdisc=v end)
local otfdataset=nil
local getfastdisc={ __index=function(t,k)
local v=usesfont(k,currentfont)
@@ -25832,7 +25858,7 @@ do
local topstack=0
local typ=sequence.type
local gpossing=typ=="gpos_single" or typ=="gpos_pair"
- local forcetestrun=testdisc or typ=="gsub_ligature"
+ local forcetestrun=typ=="gsub_ligature"
local handler=handlers[typ]
local steps=sequence.steps
local nofsteps=sequence.nofsteps