summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/context/documents/general/manuals/xtables-mkiv.pdfbin128566 -> 131419 bytes
-rw-r--r--doc/context/sources/general/manuals/xtables/xtables-mkiv.tex58
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4378 -> 4392 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/publ-sor.lua31
-rw-r--r--tex/context/base/status-files.pdfbin24910 -> 24903 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin356655 -> 356660 bytes
-rw-r--r--tex/context/base/tabl-xtb.lua34
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
10 files changed, 118 insertions, 11 deletions
diff --git a/doc/context/documents/general/manuals/xtables-mkiv.pdf b/doc/context/documents/general/manuals/xtables-mkiv.pdf
index 0544696d4..56d3d74c9 100644
--- a/doc/context/documents/general/manuals/xtables-mkiv.pdf
+++ b/doc/context/documents/general/manuals/xtables-mkiv.pdf
Binary files differ
diff --git a/doc/context/sources/general/manuals/xtables/xtables-mkiv.tex b/doc/context/sources/general/manuals/xtables/xtables-mkiv.tex
index 677b339db..e137f9235 100644
--- a/doc/context/sources/general/manuals/xtables/xtables-mkiv.tex
+++ b/doc/context/sources/general/manuals/xtables/xtables-mkiv.tex
@@ -1038,4 +1038,62 @@ in the distribution.
\typebuffer \start \getbuffer \stop
+\page
+
+\startbuffer[demo]
+\startxtable
+\startxrow
+ \startxcell[demo][nx=4] 1 / 2 / 3 / 4 \stopxcell
+\stopxrow
+\startxrow
+ \startxcell[demo][nx=3] 1 / 2 / 3 \stopxcell
+ \startxcell 4 \stopxcell
+\stopxrow
+\startxrow
+ \startxcell 1 \stopxcell
+ \startxcell[demo][nx=3] 2 / 3 / 4 \stopxcell
+\stopxrow
+\startxrow
+ \startxcell[demo][nx=2] 1 / 2 \stopxcell
+ \startxcell 3 \stopxcell
+ \startxcell 4 \stopxcell
+\stopxrow
+\startxrow
+ \startxcell 1 \stopxcell
+ \startxcell[demo][nx=2] 2 / 3 \stopxcell
+ \startxcell 4 \stopxcell
+\stopxrow
+\startxrow
+ \startxcell 1 \stopxcell
+ \startxcell 2 \stopxcell
+ \startxcell[demo][nx=2] 3 / 4 \stopxcell
+\stopxrow
+\startxrow
+ \startxcell[demo][nx=2] 1 / 2 \stopxcell
+ \startxcell[demo][nx=2] 3 / 4 \stopxcell
+\stopxrow
+\startxrow
+ \startxcell 1 \stopxcell
+ \startxcell 2 \stopxcell
+ \startxcell 3 \stopxcell
+ \startxcell 4 \stopxcell
+\stopxrow
+\stopxtable
+\stopbuffer
+
+\startbuffer[tight]
+\setupxtable[demo][option=tight]
+\stopbuffer
+
+\startbuffer[normal]
+\setupxtable[demo][option=]
+\stopbuffer
+
+\typebuffer[demo]
+
+\page
+
+\typebuffer[tight] \start \getbuffer[tight,demo] \stop
+\typebuffer[normal] \start \getbuffer[normal,demo] \stop
+
\stopdocument
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index fa756369d..c846aeb3f 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2015.01.01 13:15}
+\newcontextversion{2015.01.02 11:55}
%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/context-version.pdf b/tex/context/base/context-version.pdf
index abae22c5d..bd456b7f1 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 2f3248eb6..558e749fa 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -28,7 +28,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2015.01.01 13:15}
+\edef\contextversion{2015.01.02 11:55}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/publ-sor.lua b/tex/context/base/publ-sor.lua
index 5f0764472..acef99aa0 100644
--- a/tex/context/base/publ-sor.lua
+++ b/tex/context/base/publ-sor.lua
@@ -13,6 +13,10 @@ local type = type
local concat = table.concat
local formatters = string.formatters
local compare = sorters.comparers.basic -- (a,b)
+local sort = table.sort
+
+local toarray = utilities.parsers.settings_to_array
+local utfchar = utf.char
local publications = publications
local writers = publications.writers
@@ -108,12 +112,26 @@ local function sortsequence(dataset,list,sorttype)
local method = sortmethods and sortmethods[sorttype] or sharedmethods[sorttype]
local sequence = method and method.sequence
+ local s_default = "<before end>"
+ local s_unknown = "<at the end>"
+
+ local c_default = utfchar(0xFFFE)
+ local c_unknown = utfchar(0xFFFF)
+
if not sequence and type(sorttype) == "string" then
- local list = utilities.parsers.settings_to_array(sorttype)
+ local list = toarray(sorttype)
if #list > 0 then
sequence = { }
for i=1,#list do
- sequence[i] = { field = list[i] }
+ local entry = toarray(list[i])
+ local field = entry[1]
+ local default = entry[2]
+ local unknown = entry[3] or default
+ sequence[i] = {
+ field = field,
+ default = default == s_default and c_default or default or c_default,
+ unknown = unknown == s_unknown and c_unknown or unknown or c_unknown,
+ }
end
end
if trace_sorters then
@@ -134,13 +152,16 @@ local function sortsequence(dataset,list,sorttype)
for i=1,#sequence do
local step = sequence[i]
local field = step.field or "?"
- local default = step.default or ""
- local unknown = step.unknown or ""
+ local default = step.default or c_default
+ local unknown = step.unknown or c_unknown
local fldtype = types[field]
local writer = fldtype and writers[fldtype]
if trace_sorters then
- report("% 3i : field %a, type %a, default %a, unknown %a",i,field,fldtype,default,unknown)
+ report("% 3i : field %a, type %a, default %a, unknown %a",i,field,fldtype,
+ default == c_default and s_default or default,
+ unknown == c_unknown and s_unknown or unknown
+ )
end
if writer then
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 8cca48991..137acb6f7 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index 23b6fa723..badc82b03 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/tabl-xtb.lua b/tex/context/base/tabl-xtb.lua
index 3503d5351..ca02616e3 100644
--- a/tex/context/base/tabl-xtb.lua
+++ b/tex/context/base/tabl-xtb.lua
@@ -89,6 +89,7 @@ local v_before = variables.before
local v_after = variables.after
local v_both = variables.both
local v_samepage = variables.samepage
+local v_tight = variables.tight
local xtables = { }
typesetters.xtables = xtables
@@ -126,6 +127,7 @@ function xtables.create(settings)
local modes = { }
local fixedrows = { }
local fixedcolumns = { }
+ local fixedcspans = { }
local frozencolumns = { }
local options = { }
local rowproperties = { }
@@ -140,6 +142,7 @@ function xtables.create(settings)
autowidths = autowidths,
fixedrows = fixedrows,
fixedcolumns = fixedcolumns,
+ fixedcspans = fixedcspans,
frozencolumns = frozencolumns,
options = options,
nofrows = 0,
@@ -191,6 +194,7 @@ function xtables.create(settings)
setmetatableindex(fixedrows,add_zero)
setmetatableindex(fixedcolumns,add_zero)
setmetatableindex(options,add_table)
+ setmetatableindex(fixedcspans,add_table)
--
settings.columndistance = tonumber(settings.columndistance) or 0
settings.rowdistance = tonumber(settings.rowdistance) or 0
@@ -221,7 +225,7 @@ function xtables.initialize_reflow_width(option,width)
end
if option and option ~= "" then
local options = settings_to_hash(option)
- -- data.options[r][c] = options -- not yet used (commented elsewhere)
+ data.options[r][c] = options
if options[v_fixed] then
data.frozencolumns[c] = true
end
@@ -251,9 +255,30 @@ function xtables.set_reflow_width()
local widths = data.widths
local heights = data.heights
local depths = data.depths
- if width > widths[c] then
- widths[c] = width
+ local cspan = drc.nx
+ if cspan < 2 then
+ if width > widths[c] then
+ widths[c] = width
+ end
+ else
+ local options = data.options[r][c]
+ if not options then
+ if width > widths[c] then
+ widths[c] = width
+ end
+ elseif not options[v_tight] then
+ if width > widths[c] then
+ widths[c] = width
+ end
+ end
end
+-- if cspan > 1 then
+-- local f = data.fixedcspans[c]
+-- local w = f[cspan] or 0
+-- if width > w then
+-- f[cspan] = width -- maybe some day a solution for autospanmax and so
+-- end
+-- end
if drc.ny < 2 then
if height > heights[r] then
heights[r] = height
@@ -514,6 +539,9 @@ function xtables.reflow_width()
showwidths("stage 1",widths,autowidths)
end
local noffrozen = 0
+
+-- inspect(data.fixedcspans)
+
if options[v_max] then
for c=1,nofcolumns do
width = width + widths[c]
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 523de8fd4..100ce3ef0 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 : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 01/01/15 13:15:11
+-- merge date : 01/02/15 11:55:50
do -- begin closure to overcome local limits and interference