From f001d9ba5954210bfe37144d6aff612260c754a7 Mon Sep 17 00:00:00 2001 From: Context Git Mirror Bot Date: Fri, 2 Jan 2015 12:15:04 +0100 Subject: 2015-01-02 11:58:00 --- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4378 -> 4392 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/publ-sor.lua | 31 ++++++++++++++++--- tex/context/base/status-files.pdf | Bin 24910 -> 24903 bytes tex/context/base/status-lua.pdf | Bin 356655 -> 356660 bytes tex/context/base/tabl-xtb.lua | 34 +++++++++++++++++++-- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 8 files changed, 60 insertions(+), 11 deletions(-) (limited to 'tex') 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 Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf 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 = "" + local s_unknown = "" + + 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 Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf index 23b6fa723..badc82b03 100644 Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf 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 -- cgit v1.2.3