From dfd47fa7ce84dc43318a08b075d51c9d990790e1 Mon Sep 17 00:00:00 2001 From: Context Git Mirror Bot Date: Tue, 28 Jul 2015 16:15:05 +0200 Subject: 2015-07-28 15:17:00 --- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4208 -> 4207 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/core-uti.lua | 27 ++++++++++--- tex/context/base/font-ctx.lua | 3 +- tex/context/base/font-ots.lua | 2 +- tex/context/base/lpdf-ano.lua | 3 +- tex/context/base/status-files.pdf | Bin 24380 -> 24393 bytes tex/context/base/status-lua.pdf | Bin 255453 -> 255458 bytes tex/context/base/strc-def.mkiv | 8 ++++ tex/context/base/strc-doc.lua | 44 +++++++++++---------- tex/context/base/type-imp-lucida-opentype.mkiv | 44 ++++++++------------- tex/context/base/type-set.mkiv | 2 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 14 files changed, 80 insertions(+), 59 deletions(-) diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index fcfbd2a0d..6dc526737 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.07.27 19:36} +\newcontextversion{2015.07.28 15:15} %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 9e52fef87..3cf18d5b9 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 96484b5aa..072164505 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.07.27 19:36} +\edef\contextversion{2015.07.28 15:15} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/core-uti.lua b/tex/context/base/core-uti.lua index a4b747680..b3c8b5a5f 100644 --- a/tex/context/base/core-uti.lua +++ b/tex/context/base/core-uti.lua @@ -17,6 +17,7 @@ utility file under different setups, we now load a table once. This saves much runtime but at the cost of more memory usage.

--ldx]]-- +local math = math local format, match = string.format, string.match local next, type, tostring = next, type, tostring local concat = table.concat @@ -82,7 +83,7 @@ function job.initialize(loadname,savename) if not savename or savename == "" then savename = tex.jobname .. ".tua" end - job.load(loadname) -- has to come after structure is defined ! + job.load(loadname) -- has to come after structure is defined ! luatex.registerstopactions(function() if enabled and not status.lasterrorstring or status.lasterrorstring == "" then -- if kept then @@ -121,12 +122,14 @@ end job.register('job.variables.checksums', 'job.variables.checksums', initializer) local rmethod, rvalue +local collectedmacros, tobesavedmacros local ctx_setxvalue = context.setxvalue local function initializer() tobesaved = jobvariables.tobesaved collected = jobvariables.collected + -- rvalue = collected.randomseed if not rvalue then rvalue = math.random() @@ -137,19 +140,33 @@ local function initializer() rmethod = "resumed" end tobesaved.randomseed = rvalue - for cs, value in next, collected do - ctx_setxvalue(cs,value) + -- + collectedmacros = collected.macros + tobesavedmacros = tobesaved.macros + if not collectedmacros then + collectedmacros = { } + collected.macros = collectedmacros + end + if not tobesavedmacros then + tobesavedmacros = { } + tobesaved.macros = tobesavedmacros + end + -- will become collected.macros + for cs, value in next, collectedmacros do + if type(value) == "string" then -- safeguard + ctx_setxvalue(cs,value) + end end end job.register('job.variables.collected', tobesaved, initializer) function jobvariables.save(cs,value) - tobesaved[cs] = value + tobesavedmacros[cs] = value end function jobvariables.restore(cs) - return collected[cs] or tobesaved[cs] + return collectedmacros[cs] or tobesavedmacros[cs] end -- checksums diff --git a/tex/context/base/font-ctx.lua b/tex/context/base/font-ctx.lua index 84de6026f..8c6142abb 100644 --- a/tex/context/base/font-ctx.lua +++ b/tex/context/base/font-ctx.lua @@ -738,13 +738,14 @@ local function registercontextfeature(mergedname,extraname,how) for k, v in next, extra do mergedfeatures[k] = v end - local number = #numbers + 1 + local number = #numbers + 1 -- we somehow end up with steps of 2 mergedfeatures.number = number numbers[number] = mergedname merged[number] = how == "=" and 1 or 2 -- 1=replace, 2=combine setups[mergedname] = mergedfeatures return number -- contextnumber(mergedname) else + report_features("unknown feature %a cannot be merged into %a using method %a",extraname,mergedname,how) return 0 end end diff --git a/tex/context/base/font-ots.lua b/tex/context/base/font-ots.lua index 827413f42..4b5c04dc2 100644 --- a/tex/context/base/font-ots.lua +++ b/tex/context/base/font-ots.lua @@ -304,7 +304,7 @@ end local function mref(rlmode) if not rlmode or rlmode == 0 then return "---" - elseif rlmode < 0 then + elseif rlmode == -1 or rlmode == "+TRT" then return "r2l" else return "l2r" diff --git a/tex/context/base/lpdf-ano.lua b/tex/context/base/lpdf-ano.lua index 9994be2df..8384313c2 100644 --- a/tex/context/base/lpdf-ano.lua +++ b/tex/context/base/lpdf-ano.lua @@ -1063,6 +1063,7 @@ local function build(levels,start,parent,method,nested) local level = current.level local title = current.title local reference = current.reference + local block = reference.block local opened = current.opened local reftype = type(reference) local variant = "unknown" @@ -1087,7 +1088,7 @@ local function build(levels,start,parent,method,nested) if variant == "unknown" then -- error, ignore i = i + 1 - elseif level < startlevel then + elseif (level < startlevel) or (i > 1 and block ~= levels[i-1].reference.block) then if nested then -- could be an option but otherwise we quit too soon if entry then pdfflushobject(child,entry) diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index 69a42bdc6..fa2ce1a80 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 408a0546d..a79641b6d 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/strc-def.mkiv b/tex/context/base/strc-def.mkiv index 015e02d67..962c46b48 100644 --- a/tex/context/base/strc-def.mkiv +++ b/tex/context/base/strc-def.mkiv @@ -65,6 +65,14 @@ \setsectionblock [\v!bodypart] % default +% \appendtoks +% \setsectionblock[\v!bodypart]% default +% \to \everyjob +% +% \appendtoks +% \clf_setinitialsectionblock{\v!bodypart}% +% \to \everystarttext + \appendtoks \clf_setinitialsectionblock{\v!bodypart}% \to \everyjob diff --git a/tex/context/base/strc-doc.lua b/tex/context/base/strc-doc.lua index 66b30fe3a..885e2de0b 100644 --- a/tex/context/base/strc-doc.lua +++ b/tex/context/base/strc-doc.lua @@ -240,26 +240,36 @@ function sections.setblock(name,settings) return block end +local jobvariables = job.variables local pushed_order = { } local pushed_done = { } -function sections.order() - return job.variables.collected.sectionblockorder or pushed_order -- so we have a first pass list too +jobvariables.tobesaved.sectionblockorder = pushed_order + +-- function sections.order() +-- return jobvariables.collected.sectionblockorder or pushed_order -- so we have a first pass list too +-- end + +function sections.setinitialblock(default) + local order = jobvariables.collected.sectionblockorder or pushed_order + local name = #order > 0 and order[1] or default or "bodypart" + context.setsectionblock { name } + -- interfaces.setmacro("currentsectionblock",name) + -- sections.setblock(name,{}) end function sections.pushblock(name,settings) counters.check(0) -- we assume sane usage of \page between blocks local block = name or data.block + insert(data.blocks,block) + data.block = block + sectionblockdata[block] = settings + documents.reset() if not pushed_done[name] then pushed_done[name] = true local nofpushed = #pushed_order + 1 pushed_order[nofpushed] = name - job.variables.tobesaved.sectionblockorder = pushed_order end - insert(data.blocks,block) - data.block = block - sectionblockdata[block] = settings - documents.reset() return block end @@ -1106,6 +1116,13 @@ implement { arguments = { "string", { { "bookmark" } } } } +implement { + name = "setinitialsectionblock", + actions = sections.setinitialblock, + arguments = "string", + -- onlyonce = true, +} + implement { name = "pushsectionblock", actions = sections.pushblock, @@ -1116,16 +1133,3 @@ implement { name = "popsectionblock", actions = sections.popblock, } - --- bah, i'll probably forget about this hack but it's needed for --- preamble list mess as used by some users for booksmarks - -implement { - name = "setinitialsectionblock", - onlyonce = true, - arguments = "string", - actions = function(default) - local name = sections.order()[1] - context.setsectionblock { name ~= "" and name or default } - end -} diff --git a/tex/context/base/type-imp-lucida-opentype.mkiv b/tex/context/base/type-imp-lucida-opentype.mkiv index 63a331cad..f39ed6e1f 100644 --- a/tex/context/base/type-imp-lucida-opentype.mkiv +++ b/tex/context/base/type-imp-lucida-opentype.mkiv @@ -11,11 +11,11 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -% NOTA BENE: class feattures and goodies get expanded! +% NOTA BENE: class features and goodies get expanded! \starttypescriptcollection[lucida-opentype] - \starttypescript [lucidanova,lucidaot,otlucida] + \starttypescript [lucidaot,lucidadk] \loadfontgoodies[lucida-opentype-math] \definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default] [\s!features=\s!default] \definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default] [\s!features=\s!default] @@ -28,7 +28,7 @@ \quittypescriptscanning \stoptypescript - \starttypescript [\s!serif] [lucidanova,lucidaot,otlucida] + \starttypescript [\s!serif] [lucidaot,lucidadk] \definefontsynonym [\s!Serif] [\s!file:LucidaBrightOT.otf] \definefontsynonym [\s!SerifBold] [\s!file:LucidaBrightOT-Demi.otf] \definefontsynonym [\s!SerifItalic] [\s!file:LucidaBrightOT-Italic.otf] @@ -37,7 +37,7 @@ \definefontsynonym [\s!SerifBoldSlanted] [\s!SerifBoldItalic] \stoptypescript - \starttypescript [\s!sans] [lucidanova,lucidaot,otlucida] + \starttypescript [\s!sans] [lucidaot,lucidadk] \definefontsynonym [\s!Sans] [\s!file:LucidaSansOT.otf] \definefontsynonym [\s!SansBold] [\s!file:LucidaSansOT-Demi.otf] \definefontsynonym [\s!SansItalic] [\s!file:LucidaSansOT-Italic.otf] @@ -46,7 +46,7 @@ \definefontsynonym [\s!SansBoldSlanted] [\s!SansBoldItalic] \stoptypescript - \starttypescript [\s!mono] [lucidanova,lucidaot,otlucida] + \starttypescript [\s!mono] [lucidaot] \definefontsynonym [\s!Mono] [\s!file:LucidaSansTypewriterOT.otf] \definefontsynonym [\s!MonoBold] [\s!file:LucidaSansTypewriterOT-Bold.otf] \definefontsynonym [\s!MonoItalic] [\s!file:LucidaSansTypewriterOT-Oblique.otf] @@ -55,38 +55,28 @@ \definefontsynonym [\s!MonoBoldSlanted] [\s!MonoBoldItalic] \stoptypescript - \starttypescript [\s!math] [lucidanova,lucidaot,otlucida] + \starttypescript [\s!mono] [lucidadk] + \definefontsynonym [\s!Mono] [\s!file:LucidaGrandeMonoDK.otf] + \definefontsynonym [\s!MonoBold] [\s!file:LucidaGrandeMonoDK-Bold.otf] + \definefontsynonym [\s!MonoItalic] [\s!file:LucidaGrandeMonoDK-Oblique.otf] + \definefontsynonym [\s!MonoBoldItalic] [\s!file:LucidaGrandeMonoDK-BoldOblique.otf] + \definefontsynonym [\s!MonoSlanted] [\s!MonoItalic] + \definefontsynonym [\s!MonoBoldSlanted] [\s!MonoBoldItalic] + \stoptypescript + + \starttypescript [\s!math] [lucidaot,lucidadk] \definefontsynonym [\s!MathRoman] [\s!file:LucidaBrightMathOT.otf] [\s!features=\s!math\mathsizesuffix,\s!goodies=lucida-opentype-math] \definefontsynonym [\s!MathRomanBold] [\s!file:LucidaBrightMathOT-Demi.otf] [\s!features=\s!math\mathsizesuffix,\s!goodies=lucida-opentype-math] \stoptypescript - \starttypescript [\s!handwriting] [lucidanova,lucidaot,otlucida] + \starttypescript [\s!handwriting] [lucidaot,lucidadk] \definefontsynonym [\s!Handwriting] [\s!file:LucidaHandwritingOT.otf] \stoptypescript - \starttypescript [\s!calligraphy] [lucidanova,lucidaot,otlucida] + \starttypescript [\s!calligraphy] [lucidaot,lucidadk] \definefontsynonym [\s!Calligraphy] [\s!file:LucidaCalligraphyOT.otf] \stoptypescript \stoptypescriptcollection \endinput - -\starttext - - \setupbodyfont[lucidanova] - -% \showfont[Serif][all] -% \showfont[MathRoman][all] - - \usemodule[fnt-31] - - \startluacode - fonts.tracers.coverage { - "LucidaMathOT.otf", - "LucidaBrightOT.otf", - "LucidaSansOT-Typewriter.otf", - } - \stopluacode - -\stoptext diff --git a/tex/context/base/type-set.mkiv b/tex/context/base/type-set.mkiv index b07944afe..a5a3bf5ef 100644 --- a/tex/context/base/type-set.mkiv +++ b/tex/context/base/type-set.mkiv @@ -58,8 +58,8 @@ \fi \definefilesynonym [type-imp-lucida.mkiv] [type-imp-lucida-typeone.mkiv] -\definefilesynonym [type-imp-lucidanova.mkiv] [type-imp-lucida-opentype.mkiv] \definefilesynonym [type-imp-lucidaot.mkiv] [type-imp-lucida-opentype.mkiv] +\definefilesynonym [type-imp-lucidadk.mkiv] [type-imp-lucida-opentype.mkiv] \definefilesynonym [type-imp-palatino.mkiv] [type-imp-texgyre.mkiv] \definefilesynonym [type-imp-courier.mkiv] [type-imp-texgyre.mkiv] diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 5de00c5d4..1c1d2db94 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 : 07/27/15 19:36:10 +-- merge date : 07/28/15 15:15:23 do -- begin closure to overcome local limits and interference -- cgit v1.2.3