diff options
-rw-r--r-- | doc/context/documents/general/manuals/xtables-mkiv.pdf | bin | 128566 -> 131419 bytes | |||
-rw-r--r-- | doc/context/sources/general/manuals/xtables/xtables-mkiv.tex | 58 | ||||
-rw-r--r-- | tex/context/base/cont-new.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/context-version.pdf | bin | 4378 -> 4392 bytes | |||
-rw-r--r-- | tex/context/base/context.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/publ-sor.lua | 31 | ||||
-rw-r--r-- | tex/context/base/status-files.pdf | bin | 24910 -> 24903 bytes | |||
-rw-r--r-- | tex/context/base/status-lua.pdf | bin | 356655 -> 356660 bytes | |||
-rw-r--r-- | tex/context/base/tabl-xtb.lua | 34 | ||||
-rw-r--r-- | tex/generic/context/luatex/luatex-fonts-merged.lua | 2 |
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 Binary files differindex 0544696d4..56d3d74c9 100644 --- a/doc/context/documents/general/manuals/xtables-mkiv.pdf +++ b/doc/context/documents/general/manuals/xtables-mkiv.pdf 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 Binary files differindex abae22c5d..bd456b7f1 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf 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 Binary files differindex 8cca48991..137acb6f7 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf Binary files differindex 23b6fa723..badc82b03 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf 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 |