summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2015-04-15 02:15:05 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2015-04-15 02:15:05 +0200
commitd3c8d09b0a9cd2e1f2fd2680b6a6bb7369c67a7a (patch)
tree6fa0ba84744c974278d07f0f05aacf321ecd1feb
parent2ba81259a75af1ae03dfd8ee29464274081fc48b (diff)
downloadcontext-d3c8d09b0a9cd2e1f2fd2680b6a6bb7369c67a7a.tar.gz
2015-04-15 01:46:00
-rw-r--r--tex/context/base/buff-ver.lua1
-rw-r--r--tex/context/base/buff-ver.mkiv9
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4187 -> 4181 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/font-ini.mkvi7
-rw-r--r--tex/context/base/m-chart.mkvi2
-rw-r--r--tex/context/base/pack-box.mkiv2
-rw-r--r--tex/context/base/pack-com.mkiv7
-rw-r--r--tex/context/base/pack-lyr.mkiv14
-rw-r--r--tex/context/base/pack-mrl.mkiv2
-rw-r--r--tex/context/base/pack-rul.mkiv24
-rw-r--r--tex/context/base/page-mbk.mkvi2
-rw-r--r--tex/context/base/spac-ali.mkiv6
-rw-r--r--tex/context/base/status-files.pdfbin24486 -> 24489 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin249951 -> 249882 bytes
-rw-r--r--tex/context/base/strc-ini.lua2
-rw-r--r--tex/context/base/strc-lst.lua5
-rw-r--r--tex/context/base/strc-mat.lua48
-rw-r--r--tex/context/base/strc-not.mkvi6
-rw-r--r--tex/context/base/strc-ref.lua30
-rw-r--r--tex/context/base/strc-ref.mkvi16
-rw-r--r--tex/context/base/strc-syn.lua145
-rw-r--r--tex/context/base/strc-syn.mkiv40
-rw-r--r--tex/context/base/strc-tag.lua2
-rw-r--r--tex/context/base/tabl-tab.mkiv2
-rw-r--r--tex/context/base/tabl-xtb.mkvi3
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
28 files changed, 224 insertions, 157 deletions
diff --git a/tex/context/base/buff-ver.lua b/tex/context/base/buff-ver.lua
index 6dd9d8ebe..0168c551d 100644
--- a/tex/context/base/buff-ver.lua
+++ b/tex/context/base/buff-ver.lua
@@ -800,7 +800,6 @@ implement {
{
{ "data" },
{ "tab" },
- { "option" },
{ "method" },
{ "compact" },
{ "nature" },
diff --git a/tex/context/base/buff-ver.mkiv b/tex/context/base/buff-ver.mkiv
index ace149184..1581973d1 100644
--- a/tex/context/base/buff-ver.mkiv
+++ b/tex/context/base/buff-ver.mkiv
@@ -107,7 +107,7 @@
{\hskip\doifelseoddpage{\typingparameter\c!oddmargin}{\typingparameter\c!evenmargin}\relax}
\def\buff_verbatim_initialize_typing_one
- {\switchtobodyfont[\typingparameter\c!bodyfont]% can be low level call
+ {\usebodyfontparameter\typingparameter
\scratchskip\typingparameter\c!oddmargin\relax
\ifzeropt\scratchskip \else
\let\buff_verbatim_set_line_margin\buff_verbatim_set_line_margin_indeed
@@ -125,8 +125,7 @@
\else\ifx\p_buff_option\empty
\usetypingstyleandcolor\c!style\c!color
\fi\fi
- % will become: \usealignparameter\typingparameter
- \doifsomething{\typingparameter\c!align}{\setupalign[\typingparameter\c!align]}} % use fast one
+ \usealignparameter\typingparameter}
\def\buff_verbatim_initialize_typing_two
{\spaceskip.5\emwidth\relax
@@ -344,7 +343,7 @@
\clf_type
data {\detokenize{#1}}%
tab {\typeparameter\c!tab}%
- option {\p_buff_option}%
+ method {\p_buff_option}%
compact {\typeparameter\c!compact}% % none | all | last (all needed in tabulate etc for manuals)
escape {\typeparameter\c!escape}% % new but rather useless imo (escaping in general is not used much)
% nature {inline}% is default
@@ -359,7 +358,7 @@
\clf_type
data {\detokenize{#1}}%
tab {\typeparameter\c!tab}%
- option {\p_buff_option}% % extra visualizer (maybe: nested,\typeparameter\c!option)
+ method {\p_buff_option}% % extra visualizer (maybe: nested,\typeparameter\c!option)
escape {\typeparameter\c!escape}% % new but rather useless imo (escaping in general is not used much)
% nature {inline}% is default
method {nested}%
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 828782e01..c84ac47c9 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.04.14 19:03}
+\newcontextversion{2015.04.15 01:44}
%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 e81738ba5..876060740 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 676871e7c..c74f81ba7 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -39,7 +39,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2015.04.14 19:03}
+\edef\contextversion{2015.04.15 01:44}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/font-ini.mkvi b/tex/context/base/font-ini.mkvi
index c780ee997..c04952a9e 100644
--- a/tex/context/base/font-ini.mkvi
+++ b/tex/context/base/font-ini.mkvi
@@ -2173,6 +2173,13 @@
\unexpanded\def\switchtobodyfont[#specification]% could become an ifx
{\doifsomething{#specification}{\font_basics_switchtobodyfont{#specification}}}
+
+\unexpanded\def\usebodyfontparameter#1%
+ {\edef\m_font_bodyfont_asked{#1\c!bodyfont}%
+ \ifx\m_font_bodyfont_asked\empty\else
+ \font_basics_switchtobodyfont\m_font_bodyfont_asked
+ \fi}
+
\def\font_helpers_switch_bodyfont_step
{\font_basics_switch_points\m_font_step
\font_basics_switch_style \fontstyle}
diff --git a/tex/context/base/m-chart.mkvi b/tex/context/base/m-chart.mkvi
index 877a0fa37..a0c8b2244 100644
--- a/tex/context/base/m-chart.mkvi
+++ b/tex/context/base/m-chart.mkvi
@@ -192,7 +192,7 @@
\insidefloattrue
\dontcomplain
\setupFLOWchart[#settings]%
- \setupbodyfont[\FLOWchartparameter\c!bodyfont]%
+ \usebodyfontparameter\FLOWchartparameter
\ctxcommand{flow_make_chart {
chart = {
name = "#name",
diff --git a/tex/context/base/pack-box.mkiv b/tex/context/base/pack-box.mkiv
index 3fb56d799..6e3bab6f4 100644
--- a/tex/context/base/pack-box.mkiv
+++ b/tex/context/base/pack-box.mkiv
@@ -680,7 +680,7 @@
\dowithnextboxcontent
{\forgetall
\hsize\directdummyparameter\c!width
- \normalexpanded{\setupalign[\directdummyparameter\c!align]}%
+ \usealignparameter\directdummyparameter
\dousestyleparameter{\directdummyparameter\c!style}}
{\setlayer[#1][#2]{\strut\dousecolorparameter{\directdummyparameter\c!color}\flushnextbox}% maybe expand the color
\egroup}%
diff --git a/tex/context/base/pack-com.mkiv b/tex/context/base/pack-com.mkiv
index 7f3fcb538..b734d6028 100644
--- a/tex/context/base/pack-com.mkiv
+++ b/tex/context/base/pack-com.mkiv
@@ -221,7 +221,6 @@
\edef\p_height {\combinationparameter\c!height}%
\edef\p_width {\combinationparameter\c!width}%
\edef\p_location{\combinationparameter\c!location}%
- \edef\p_align {\combinationparameter\c!align}%
\edef\p_distance{\combinationparameter\c!distance}%
%
\pack_combinations_location_reset
@@ -295,7 +294,7 @@
\def\pack_combinations_alternative_label_indeed
{\dowithnextboxcs\pack_combinations_pickup_caption\vtop\bgroup
\hsize\wd\b_pack_combinations_content
- \ifx\p_align\empty\else\setupalign[\p_align]\fi
+ \usealignparameter\combinationparameter
\usecombinationstyleandcolor\c!style\c!color
\begstrut
\normalexpanded{\strc_labels_command{\v!combination\ifx\currentcombination\empty\else:\currentcombination\fi}}%
@@ -329,7 +328,7 @@
\else
% todo: \p_pack_combinations_alternative\v!none: no style, strut etc
\hsize\wd\b_pack_combinations_content
- \ifx\p_align\empty\else\setupalign[\p_align]\fi
+ \usealignparameter\combinationparameter
\usecombinationstyleandcolor\c!style\c!color
\bgroup
\aftergroup\endstrut
@@ -783,7 +782,7 @@
\fi}
\def\pack_pairedboxes_between
- {\switchtobodyfont[\pairedboxparameter\c!bodyfont]% split under same regime
+ {\usebodyfontparameter\pairedboxparameter
\setbox\b_pack_pairedboxes_first\box\nextbox
\ifconditional\c_pack_pairedboxes_horizontal
\pack_pairedboxes_between_horizontal
diff --git a/tex/context/base/pack-lyr.mkiv b/tex/context/base/pack-lyr.mkiv
index a274a8d23..a847dec67 100644
--- a/tex/context/base/pack-lyr.mkiv
+++ b/tex/context/base/pack-lyr.mkiv
@@ -674,7 +674,7 @@
% we have conflicting demands: some mechanisms want ll anchoring .. I need to figure this out
% an dmaybe we will have 'origin=bottom' or so
\setbox\nextbox
- \ifx\p_pack_layers_option\v!test \ruledvbox \else \vbox \fi \ifx\p_pack_layers_method\v!overlay to \overlayheight \fi \layoutcomponentboxattribute
+ \ifx\p_pack_layers_option\v!test \ruledvbox \else \vbox \fi \ifx\p_pack_layers_method\v!overlay to \d_overlay_height \fi \layoutcomponentboxattribute
{\pack_layers_top_fill
\hbox \ifx\p_pack_layers_method\v!overlay to \d_overlay_width \fi
{\box\nextbox
@@ -723,12 +723,20 @@
\unexpanded\def\composedlayer#1{\flushlayer[#1]}
+% \unexpanded\def\tightlayer[#1]%
+% {\hbox
+% {\def\currentlayer{#1}% todo: left/right
+% \setbox\nextbox\emptybox
+% \hsize\layerparameter\c!width
+% \vsize\layerparameter\c!height
+% \composedlayer{#1}}}
+
\unexpanded\def\tightlayer[#1]%
{\hbox
{\def\currentlayer{#1}% todo: left/right
\setbox\nextbox\emptybox
- \hsize\layerparameter\c!width
- \vsize\layerparameter\c!height
+ \d_overlay_width \layerparameter\c!width
+ \d_overlay_height\layerparameter\c!height
\composedlayer{#1}}}
\let\placelayer\flushlayer
diff --git a/tex/context/base/pack-mrl.mkiv b/tex/context/base/pack-mrl.mkiv
index 071059565..a97c9e6f8 100644
--- a/tex/context/base/pack-mrl.mkiv
+++ b/tex/context/base/pack-mrl.mkiv
@@ -631,7 +631,7 @@
\def\pack_textrule_nop_indeed{\csname\??textrulealternatives\v!middle\endcsname}%
\csname\??textrulealternatives\v!top\endcsname{#1}%
\bgroup
- \doifsomething{\directtextrulesparameter\c!bodyfont}{\switchtobodyfont[\directtextrulesparameter\c!bodyfont]}}
+ \usebodyfontparameter\directtextrulesparameter}
\unexpanded\def\stoptextrule
{\par
diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv
index 9a8c2784e..141d741cf 100644
--- a/tex/context/base/pack-rul.mkiv
+++ b/tex/context/base/pack-rul.mkiv
@@ -440,11 +440,21 @@
\newdimen\d_overlay_offset
\newdimen\d_overlay_linewidth
-\def\overlaywidth {\the\d_overlay_width \space} % We preset the variables
-\def\overlayheight {\the\d_overlay_height \space} % to some reasonable default
-\def\overlaydepth {\the\d_overlay_depth \space} % values.
-\def\overlayoffset {\the\d_overlay_offset \space} % of the frame can be (are)
-\def\overlaylinewidth {\the\d_overlay_linewidth\space} % set somewhere else.
+% expandable ... in a future version the space will go (in my one can use Overlay*)
+
+\def\overlaywidth {\the\d_overlay_width \space} % We preset the variables
+\def\overlayheight {\the\d_overlay_height \space} % to some reasonable default
+\def\overlaydepth {\the\d_overlay_depth \space} % values.
+\def\overlayoffset {\the\d_overlay_offset \space} % of the frame can be (are)
+\def\overlaylinewidth {\the\d_overlay_linewidth\space} % set somewhere else.
+
+% public but kind of protected
+
+\def\usedoverlaywidth {\dimexpr\d_overlay_width \relax}
+\def\usedoverlayheight {\dimexpr\d_overlay_height \relax}
+\def\usedoverlaydepth {\dimexpr\d_overlay_depth \relax}
+\def\usedoverlayoffset {\dimexpr\d_overlay_offset \relax}
+\def\usedoverlaylinewidth{\dimexpr\d_overlay_linewidth\relax}
%D The next register is used to initialize overlays.
@@ -2662,7 +2672,7 @@
\startboxedcontent
\hsize\localhsize
% \insidefloattrue % ? better
- \normalexpanded{\switchtobodyfont[\framedtextparameter\c!bodyfont]}%
+ \usebodyfontparameter\framedtextparameter
\letframedtextparameter\c!strut\v!no
\inheritedframedtextframed\bgroup
\let\\=\endgraf
@@ -2778,7 +2788,7 @@
\dosingleempty\pack_framed_text_start_direct}
\def\pack_framed_text_start_direct[#1]%
- {\normalexpanded{\switchtobodyfont[\framedtextparameter\c!bodyfont]}%
+ {\usebodyfontparameter\framedtextparameter
\letframedtextparameter\c!strut\v!no
\iffirstargument
\setupcurrentframedtext[#1]%
diff --git a/tex/context/base/page-mbk.mkvi b/tex/context/base/page-mbk.mkvi
index 9e3e57193..8038771d9 100644
--- a/tex/context/base/page-mbk.mkvi
+++ b/tex/context/base/page-mbk.mkvi
@@ -98,7 +98,7 @@
\unvbox\b_page_margin_blocks
\marginblockparameter\c!inbetween
\fi
- \setupalign[\marginblockparameter\c!align]%
+ \usealignparameter\marginblockparameter
\usemarginblockstyleandcolor\c!style\c!color
\begstrut
\ignorespaces}
diff --git a/tex/context/base/spac-ali.mkiv b/tex/context/base/spac-ali.mkiv
index 90f980341..fbcce89c4 100644
--- a/tex/context/base/spac-ali.mkiv
+++ b/tex/context/base/spac-ali.mkiv
@@ -562,6 +562,12 @@
\spac_align_use_indeed
\fi}
+\unexpanded\def\dousealignparameter#1% faster local variant
+ {\edef\m_spac_align_asked{#1}%
+ \ifx\m_spac_align_asked\empty\else
+ \spac_align_use_indeed
+ \fi}
+
\def\spac_align_use_indeed
{\expandafter\let\expandafter\raggedcommand\csname\??alignmentnormalcache\m_spac_align_asked\endcsname
\ifx\raggedcommand\relax
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index fe46665b6..35c093351 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 eb37397a8..c9dd4bb96 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/strc-ini.lua b/tex/context/base/strc-ini.lua
index b21e31ace..f736427bb 100644
--- a/tex/context/base/strc-ini.lua
+++ b/tex/context/base/strc-ini.lua
@@ -73,7 +73,7 @@ structures.itemgroups = structures.itemgroups or { }
structures.specials = structures.specials or { }
structures.counters = structures.counters or { }
structures.tags = structures.tags or { }
-structures.formulas = structures.formulas or { }
+structures.formulas = structures.formulas or { } -- not used but reserved
structures.sets = structures.sets or { }
structures.marks = structures.marks or { }
structures.floats = structures.floats or { }
diff --git a/tex/context/base/strc-lst.lua b/tex/context/base/strc-lst.lua
index 4ed542eb6..4c9a7217e 100644
--- a/tex/context/base/strc-lst.lua
+++ b/tex/context/base/strc-lst.lua
@@ -40,6 +40,7 @@ local sections = structures.sections
local helpers = structures.helpers
local documents = structures.documents
local tags = structures.tags
+local counters = structures.counters
local references = structures.references
local collected = allocate()
@@ -207,7 +208,7 @@ function lists.addto(t) -- maybe more more here (saves parsing at the tex end)
if numberdata then
local numbers = numberdata.numbers
if type(numbers) == "string" then
- numberdata.numbers = structures.counters.compact(numbers,nil,true)
+ numberdata.numbers = counters.compact(numbers,nil,true)
end
end
local group = numberdata and numberdata.group
@@ -1021,7 +1022,7 @@ implement {
}
},
{ "numberdata", {
- { "numbers" }, -- = structures.counters.compact("\currentcounter",nil,true),
+ { "numbers" },
{ "groupsuffix" },
{ "group" },
{ "counter" },
diff --git a/tex/context/base/strc-mat.lua b/tex/context/base/strc-mat.lua
index 98b1e996c..87f35ed1d 100644
--- a/tex/context/base/strc-mat.lua
+++ b/tex/context/base/strc-mat.lua
@@ -6,28 +6,35 @@ if not modules then modules = { } end modules ['strc-mat'] = {
license = "see context related readme files"
}
+----- copytable = table.copy
+
local structures = structures
-local lists = structures.lists
-local sections = structures.sections
-local floats = structures.floats
-local helpers = structures.helpers
-local formulas = structures.formulas
+local lists = structures.lists
+local sections = structures.sections
+local floats = structures.floats
+local helpers = structures.helpers
+local formulas = structures.formulas -- not used but reserved
-lists.enhancers = lists.enhancers or { }
+----- context = context
+----- simplify = helpers.simplify
-- maybe we want to do clever things with formulas, the store might go away
-local formuladata = { }
-
-function formulas.store(data)
- formuladata[#formuladata+1] = data
- context(#formuladata)
-end
-
-function formulas.current()
- return formuladata[#formuladata]
-end
+-- local formuladata = { }
+--
+-- function formulas.store(data)
+-- formuladata[#formuladata+1] = data
+-- context(#formuladata)
+-- end
+--
+-- function formulas.current()
+-- return formuladata[#formuladata]
+-- end
+
+-- function formulas.simplify(entry)
+-- return simplify(copytable(entry or formuladata[#formuladata]))
+-- end
function helpers.formulanumber(data,spec)
if data then
@@ -38,10 +45,9 @@ function helpers.formulanumber(data,spec)
end
end
-function formulas.simplify(entry)
- return helpers.simplify(table.copy(entry or formuladata[#formuladata]))
-end
-
function lists.formulanumber(name,n,spec)
- helpers.formulanumber(lists.result[n])
+ local result = lists.result
+ if result then
+ helpers.formulanumber(result[n])
+ end
end
diff --git a/tex/context/base/strc-not.mkvi b/tex/context/base/strc-not.mkvi
index 1113cfa76..25a1072a3 100644
--- a/tex/context/base/strc-not.mkvi
+++ b/tex/context/base/strc-not.mkvi
@@ -1299,7 +1299,7 @@
\noteparameter\c!before
\fi
% \bgroup
- % \setupalign[\noteparameter\c!align]%
+ % \usealignparameter\noteparameter
\placenoterule % alleen in ..mode
% \par
% \egroup
@@ -1727,8 +1727,8 @@
\def\strc_notes_set_bodyfont
{\let\strc_notes_set_bodyfont\relax
\restoreglobalbodyfont
- \switchtobodyfont[\noteparameter\c!bodyfont]%
- \setupalign[\noteparameter\c!align]}
+ \usebodyfontparameter\noteparameter
+ \usealignparameter\noteparameter}
%D The footnote mechanism defaults to a traditional one
%D column way of showing them. By default we precede them by
diff --git a/tex/context/base/strc-ref.lua b/tex/context/base/strc-ref.lua
index 5174b289d..b6f2e9a37 100644
--- a/tex/context/base/strc-ref.lua
+++ b/tex/context/base/strc-ref.lua
@@ -1976,17 +1976,17 @@ function references.setandgetattribute(data) -- maybe do internal automatically
if ndat then
local numbers = ndat.numbers
if type(numbers) == "string" then
- ndat.numbers = structures.counters.compact(numbers,nil,true)
+ ndat.numbers = counters.compact(numbers,nil,true)
end
- data.numberdata = structures.helpers.simplify(ndat)
+ data.numberdata = helpers.simplify(ndat)
end
local pdat = data.prefixdata
if pdat then
- data.prefixdata = structures.helpers.simplify(pdat)
+ data.prefixdata = helpers.simplify(pdat)
end
local udat = data.userdata
if type(udat) == "string" then
- data.userdata = structures.helpers.touserdata(udat)
+ data.userdata = helpers.touserdata(udat)
end
if not rdat.block then
rdat.block = structures.sections.currentblock()
@@ -2075,17 +2075,27 @@ end
references.currentmetadata = currentmetadata
local function getcurrentprefixspec(default)
+ local data = currentreference and currentreference.i
+ local metadata = data and data.metadata
return
- currentmetadata("kind") or "?",
- currentmetadata("name") or "?",
- default or "?"
+ metatadata and metadata.kind or "?",
+ metatadata and metadata.name or "?",
+ default or "?"
end
references.getcurrentprefixspec = getcurrentprefixspec
+-- implement {
+-- name = "getcurrentprefixspec",
+-- actions = { getcurrentprefixspec, context }, -- returns 3 arguments
+-- arguments = "string",
+-- }
+
implement {
name = "getcurrentprefixspec",
- actions = { getcurrentprefixspec, context }, -- returns 3 arguments
+ actions = function(tag)
+ context("{%s}{%s}{%s}",getcurrentprefixspec(tag))
+ end,
arguments = "string",
}
@@ -2101,7 +2111,7 @@ filters.text = textfilters
filters.full = fullfilters
filters.section = sectionfilters
-local function filterreference(name,...) -- number page title ...
+local function filterreference(name,prefixspec,numberspec) -- number page title ...
local data = currentreference and currentreference.i -- maybe we should take realpage from here
if data then
if name == "realpage" then
@@ -2116,7 +2126,7 @@ local function filterreference(name,...) -- number page title ...
if trace_referencing then
report_references("name %a, kind %a, using dedicated filter",name,kind)
end
- filter(data,name,...)
+ filter(data,name,prefixspec,numberspec)
elseif trace_referencing then
report_references("name %a, kind %a, using generic filter",name,kind)
end
diff --git a/tex/context/base/strc-ref.mkvi b/tex/context/base/strc-ref.mkvi
index 7bf198998..f5d0d1d78 100644
--- a/tex/context/base/strc-ref.mkvi
+++ b/tex/context/base/strc-ref.mkvi
@@ -1953,7 +1953,7 @@
%D
%D Only when \type {text} is not empty, a space is inserted.
-\def\dotextprefix#text%
+\unexpanded\def\dotextprefix#text%
{\begingroup
\setbox\scratchbox\hbox{#text}% to be solved some day
\ifdim\wd\scratchbox>\zeropoint
@@ -2089,7 +2089,7 @@
\installcorenamespace{referencingprefix}
\def\getreferencestructureprefix#kind#name#category% name will change
- {{
+ {{%
prefix {\referencestructureprefixparameter{#kind}{#name}{#category}\c!prefix}%
separatorset {\referencestructureprefixparameter{#kind}{#name}{#category}\c!prefixseparatorset}%
conversion {\referencestructureprefixparameter{#kind}{#name}{#category}\c!prefixconversion}%
@@ -2099,8 +2099,8 @@
set {\referencestructureprefixparameter{#kind}{#name}{#category}\c!prefixset}%
segments {\referencestructureprefixparameter{#kind}{#name}{#category}\c!prefixsegments}%
connector {\referencestructureprefixparameter{#kind}{#name}{#category}\c!prefixconnector}%
- }
- {
+ }%
+ {%
separatorset {\referencestructureprefixparameter{#kind}{#name}{#category}\c!numberseparatorset}%
conversion {\referencestructureprefixparameter{#kind}{#name}{#category}\c!numberconversion}%
conversionset {\referencestructureprefixparameter{#kind}{#name}{#category}\c!numberconversionset}%
@@ -2128,11 +2128,11 @@
\csname \??referencingprefix:#category#parameter\endcsname
\fi\fi\fi}
-\def\currentreferencedefault
- {\clf_filterdefaultreference
+\def\currentreferencedefault % for some reason we need to explicitly expand
+ {\normalexpanded{\noexpand\clf_filterdefaultreference
{\s!default}%
- \getreferencestructureprefix\clf_getcurrentprefixspec{\s!default}% returns #kind#name#category
- \relax}
+ \noexpand\getreferencestructureprefix\clf_getcurrentprefixspec{\s!default}% returns #kind#name#category
+ \relax}}
%D Not all support is visible by looking at the \TEX\ code; here is one of those:^
%D
diff --git a/tex/context/base/strc-syn.lua b/tex/context/base/strc-syn.lua
index 1864dc84a..22a4ff9fd 100644
--- a/tex/context/base/strc-syn.lua
+++ b/tex/context/base/strc-syn.lua
@@ -7,14 +7,12 @@ if not modules then modules = { } end modules ['strc-syn'] = {
}
local next, type = next, type
-local format = string.format
-local allocate = utilities.storage.allocate
-
--- interface to tex end
local context = context
local implement = interfaces.implement
+local allocate = utilities.storage.allocate
+
local sorters = sorters
local structures = structures
@@ -46,73 +44,73 @@ job.register('structures.synonyms.collected', tobesaved, initializer, finalizer)
-- todo: allocate becomes metatable
-local function allocate(class)
- local d = tobesaved[class]
- if not d then
- d = {
- metadata = {
- language = 'en',
- sorted = false,
- class = class
- },
- entries = {
- },
- hash = {
- }
+table.setmetatableindex(tobesaved,function(t,k)
+ local v = {
+ metadata = {
+ language = 'en',
+ sorted = false,
+ class = v
+ },
+ entries = {
+ },
+ hash = {
}
- tobesaved[class] = d
- end
- return d
-end
+ }
+ t[k] = v
+ return v
+end)
function synonyms.define(class,kind)
- local data = allocate(class)
+ local data = tobesaved[class]
data.metadata.kind = kind
end
function synonyms.register(class,kind,spec)
- local data = allocate(class)
+ local data = tobesaved[class]
+ local hash = data.hash
+ local tag = spec.definition.tag or ""
data.metadata.kind = kind -- runtime, not saved in format (yet)
- if not data.hash[spec.definition.tag or ""] then
- data.entries[#data.entries+1] = spec
- data.hash[spec.definition.tag or ""] = spec
+ if not hash[tag] then
+ local entries = data.entries
+ entries[#entries+1] = spec
+ hash[tag] = spec
end
end
function synonyms.registerused(class,tag)
- local data = allocate(class)
- local dht = data.hash[tag]
- if dht then
- dht.definition.used = true
+ local data = tobesaved[class]
+ local okay = data.hash[tag]
+ if okay then
+ okay.definition.used = true
end
end
function synonyms.synonym(class,tag)
- local data = allocate(class).hash
- local d = data[tag]
- if d then
- local de = d.definition
- de.used = true
- context(de.synonym)
+ local data = tobesaved[class]
+ local okay = data.hash[tag]
+ if okay then
+ local definition = okay.definition
+ definition.used = true
+ context(definition.synonym)
end
end
function synonyms.meaning(class,tag)
- local data = allocate(class).hash
- local d = data[tag]
- if d then
- local de = d.definition
- de.used = true
- context(de.meaning)
+ local data = tobesaved[class]
+ local okay = data.hash[tag]
+ if okay then
+ local definition = okay.definition
+ definition.used = true
+ context(definition.meaning)
end
end
synonyms.compare = sorters.comparers.basic -- (a,b)
function synonyms.filter(data,options)
- local result = { }
+ local result = { }
local entries = data.entries
- local all = options and options.criterium == interfaces.variables.all
+ local all = options and options.criterium == interfaces.variables.all
for i=1,#entries do
local entry = entries[i]
if all or entry.definition.used then
@@ -122,16 +120,35 @@ function synonyms.filter(data,options)
data.result = result
end
+function synonyms.filter(data,options)
+ local result = { }
+ local entries = data.entries
+ local all = options and options.criterium == interfaces.variables.all
+ if all then
+ for i=1,#entries do
+ result[i] = entries[i]
+ end
+ else
+ for i=1,#entries do
+ local entry = entries[i]
+ if entry.definition.used then
+ result[#result+1] = entry
+ end
+ end
+ end
+ data.result = result
+end
+
function synonyms.prepare(data)
local result = data.result
if result then
for i=1, #result do
- local r = result[i]
- local rd = r.definition
- if rd then
- local rt = rd.tag
- local sortkey = rt and rt ~= "" and rt or rd.synonym
- r.split = splitter(strip(sortkey))
+ local entry = result[i]
+ local definition = entry.definition
+ if definition then
+ local tag = definition.tag
+ local key = tag ~= "" and tag or definition.synonym
+ entry.split = splitter(strip(key))
end
end
end
@@ -139,16 +156,19 @@ end
function synonyms.sort(data,options)
sorters.sort(data.result,synonyms.compare)
+ data.metadata.sorted = true
end
function synonyms.finalize(data,options) -- mostly the same as registers so we will generalize it: sorters.split
- local result = data.result
- data.metadata.nofsorted = #result
- local split, nofsplit, lasttag, done, nofdone = { }, 0, nil, nil, 0
- local firstofsplit = sorters.firstofsplit
+ local result = data.result
+ local split = { }
+ local nofsplit = 0
+ local lasttag = nil
+ local lasttag = nil
+ local nofdone = 0
for k=1,#result do
- local v = result[k]
- local entry, tag = firstofsplit(v)
+ local entry = result[k]
+ local first, tag = firstofsplit(entry)
if tag ~= lasttag then
-- if trace_registers then
-- report_registers("splitting at %a",tag)
@@ -160,7 +180,7 @@ function synonyms.finalize(data,options) -- mostly the same as registers so we w
split[nofsplit] = { tag = tag, data = done }
end
nofdone = nofdone + 1
- done[nofdone] = v
+ done[nofdone] = entry
end
data.result = split
end
@@ -171,23 +191,22 @@ end
local ctx_synonymentry = context.synonymentry
function synonyms.flush(data,options)
- local kind = data.metadata.kind -- hack, will be done better
local result = data.result
for i=1,#result do
local sublist = result[i]
- local letter = sublist.tag
- local data = sublist.data
+ local letter = sublist.tag
+ local data = sublist.data
for d=1,#data do
local entry = data[d].definition
ctx_synonymentry(d,entry.tag,entry.synonym,entry.meaning or "")
end
end
- data.result = nil
+ data.result = nil
data.metadata.sorted = false
end
function synonyms.analyzed(class,options)
- local data = synonyms.collected[class]
+ local data = collected[class]
if data and data.entries then
options = options or { }
sorters.setlanguage(options.language,options.method)
@@ -202,7 +221,7 @@ end
function synonyms.process(class,options)
if synonyms.analyzed(class,options) then
- synonyms.flush(synonyms.collected[class],options)
+ synonyms.flush(collected[class],options)
end
end
diff --git a/tex/context/base/strc-syn.mkiv b/tex/context/base/strc-syn.mkiv
index bd5cd4ca8..22198aa7d 100644
--- a/tex/context/base/strc-syn.mkiv
+++ b/tex/context/base/strc-syn.mkiv
@@ -22,7 +22,7 @@
% split but common in lua
-\def\preprocessexpansion#1#2#3#4%
+\def\preprocessexpansion#1#2#3#4% do this at the lua end if still needed
{\ifx#1\s!xml
\xmlstartraw
\xdef#2{#4}%
@@ -251,19 +251,21 @@
\def\strc_synonyms_place_list[#1][#2]%
{\begingroup
\edef\currentsimplelist{#1}%
- \strc_constructions_initialize{#1}%
- \setupcurrentsimplelist[#2]%
- \let\synonymentry\strc_synonym_normal
- \startpacked
- \clf_processsynonyms
- {#1}%
- {%
- criterium {\simplelistparameter\c!criterium}%
- language {\simplelistparameter\s!language}%
- method {\simplelistparameter\c!method}%
- }%
- \relax
- \stoppacked
+ \doifelsecommandhandler\??simplelist\currentsimplelist
+ {\strc_constructions_initialize{#1}%
+ \setupcurrentsimplelist[#2]%
+ \let\synonymentry\strc_synonym_normal
+ \startpacked
+ \clf_processsynonyms
+ {#1}%
+ {%
+ criterium {\simplelistparameter\c!criterium}%
+ language {\simplelistparameter\s!language}%
+ method {\simplelistparameter\c!method}%
+ }%
+ \relax
+ \stoppacked}%
+ {}% todo: message that invalid
\endgroup}
\def\completelistofsynonyms
@@ -272,10 +274,12 @@
\def\strc_synonyms_complete_list[#1][#2]%
{\begingroup
\edef\currentsimplelist{#1}%
- \normalexpanded{\startnamedsection[\v!chapter][\c!title={\headtext{\simplelistparameter\s!multi}},\c!reference=#1]}%
- \strc_synonyms_place_list[#1][#2]%
- \page
- \stopnamedsection
+ \doifelsecommandhandler\??simplelist\currentsimplelist
+ {\normalexpanded{\startnamedsection[\v!chapter][\c!title={\headtext{\simplelistparameter\s!multi}},\c!reference=#1]}%
+ \strc_synonyms_place_list[#1][#2]%
+ \page
+ \stopnamedsection}%
+ {}% todo: message that invalid
\endgroup}
\unexpanded\def\strc_synonym_normal#1#2#3#4%
diff --git a/tex/context/base/strc-tag.lua b/tex/context/base/strc-tag.lua
index eda53c8be..637d74e8c 100644
--- a/tex/context/base/strc-tag.lua
+++ b/tex/context/base/strc-tag.lua
@@ -13,7 +13,7 @@ if not modules then modules = { } end modules ['strc-tag'] = {
local type, next = type, next
local insert, remove, unpack, concat = table.insert, table.remove, table.unpack, table.concat
-local gsub, find, topattern, format = string.gsub, string.find, string.topattern, string.format
+local find, topattern, format = string.find, string.topattern, string.format
local lpegmatch, P, S, C, Cc = lpeg.match, lpeg.P, lpeg.S, lpeg.C, lpeg.Cc
local texattribute = tex.attribute
local allocate = utilities.storage.allocate
diff --git a/tex/context/base/tabl-tab.mkiv b/tex/context/base/tabl-tab.mkiv
index 16a16601c..5add1c684 100644
--- a/tex/context/base/tabl-tab.mkiv
+++ b/tex/context/base/tabl-tab.mkiv
@@ -2203,7 +2203,7 @@
\def\dolocaltablesetup
{\directtablesparameter\c!commands\relax
- \doifsomething{\directtablesparameter\c!bodyfont}{\switchtobodyfont[\directtablesparameter\c!bodyfont]}%
+ \usebodyfontparameter\directtablesparameter
\tablelinethicknessunit\dimexpr\directtablesparameter\c!rulethickness/\tablelinethicknessfactor\relax
\edef\p_tabl_table_height{\directtablesparameter\c!height}%
\edef\p_tabl_table_depth{\directtablesparameter\c!depth}%
diff --git a/tex/context/base/tabl-xtb.mkvi b/tex/context/base/tabl-xtb.mkvi
index 530232b1e..b5ab0a5dc 100644
--- a/tex/context/base/tabl-xtb.mkvi
+++ b/tex/context/base/tabl-xtb.mkvi
@@ -268,8 +268,7 @@
{\begingroup % *
\forgetall % moved here
\dontcomplain % for the moment here till we figure out where we get the overflow
- \doifsomething{\xtableparameter\c!bodyfont}
- {\setupbodyfont[\xtableparameter\c!bodyfont]}%
+ \usebodyfontparameter\xtableparameter
\setbox\scratchbox\vbox
{\doifsomething{\xtableparameter\c!spaceinbetween}{\blank[\xtableparameter\c!spaceinbetween]}}%
\clf_x_table_create
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index bbc2b53e4..7ab0c9be3 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 : 04/14/15 19:03:21
+-- merge date : 04/15/15 01:44:50
do -- begin closure to overcome local limits and interference