diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/modules/mkiv')
46 files changed, 642 insertions, 3309 deletions
diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.lua b/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.lua index 39a0d987bee..de8d032c8fb 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.lua @@ -1,6 +1,6 @@ if not modules then modules = { } end modules ['m-asymptote'] = { version = 1.001, - comment = "companion to m-asymptote.mkiv", + comment = "companion to m-pstricks.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.mkiv index 9cd4037fb58..c236ceee503 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-asymptote.mkiv @@ -76,51 +76,51 @@ \starttext \startasymptote[demo-1] -settings.prc = true ; +settings.prc=true; -import graph3 ; -import palette ; +import graph3; +import palette; -size(6cm,6cm) ; -size3(5cm,0) ; +size(6cm,6cm); +size3(5cm,0); -currentprojection = orthographic(3,-6,12) ; -currentlight = light(8,10,2) ; +currentprojection=orthographic(3,-6,12); +currentlight=light(8,10,2); -real g(pair z) { return 1-z.x^2-z.y^2 ; } -real f(pair z) { return -2z.x+2 ; } +real g(pair z) {return 1-z.x^2-z.y^2;} +real f(pair z) {return -2z.x+2;} -real x(real t) { return t ; } -real y(real t) { return 0 ; } -real z(real t) { return 1-t^2 ; } -real a(real t) { return 1 ; } -real b(real t) { return t ; } -real c(real t) { return -t^2 ; } +real x(real t) {return t;} +real y(real t) {return 0;} +real z(real t) {return 1-t^2;} +real a(real t) {return 1;} +real b(real t) {return t;} +real c(real t) {return -t^2;} -path3 p=graph(x,y,z,-2,2,operator ..) ; -path3 o=graph(a,b,c,-2,2,operator ..) ; +path3 p=graph(x,y,z,-2,2,operator ..); +path3 o=graph(a,b,c,-2,2,operator ..); -surface r = surface(f, (0,-1), (2,1), nx = 3, Spline) ; -surface s = surface(g, (-2,-2), (2,2), nx = 5, Spline) ; +surface r=surface(f,(0,-1),(2,1),nx=3,Spline); +surface s=surface(g,(-2,-2),(2,2),nx=5,Spline); -path3 q = (-2,-2,-7) -- (2,-2,-7) -- (2,2,-7) -- (-2,2,-7) -- cycle ; +path3 q=(-2,-2,-7)--(2,-2,-7)--(2,2,-7)--(-2,2,-7)--cycle; -draw(q) ; +draw(q); -draw(p, blue+thick(), Arrow3) ; -draw(o, blue+thick(), Arrow3) ; +draw(p,blue+thick(),Arrow3); +draw(o,blue+thick(),Arrow3); -draw(s, lightgray + opacity(0.8), nolight, meshpen = black + thick()) ; -draw(r, lightgray + opacity(0.8), nolight, meshpen = black + thick()) ; +draw(s,lightgray+opacity(0.8),nolight,meshpen=black+thick()); +draw(r,lightgray+opacity(0.8),nolight,meshpen=black+thick()); -draw((1,0,0) -- (2,0,-2), black, Arrow3) ; -draw((1,0,0) -- (1,1,0), black, Arrow3) ; +draw((1,0,0)--(2,0,-2),black,Arrow3); +draw((1,0,0)--(1,1,0),black,Arrow3); \stopasymptote \startasymptote[demo-2] -size(6cm,6cm) ; +size(6cm,6cm); -fill((1cm,2cm) -- (3cm,3cm) -- (4cm,0cm) -- cycle); +fill((1cm,2cm)--(3cm,3cm)--(4cm,0cm)--cycle); \stopasymptote % see end of grph-inc.mkiv for some more options: diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-chart.lua b/Master/texmf-dist/tex/context/modules/mkiv/m-chart.lua index cde563fb3af..bcf80bdfc9a 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-chart.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-chart.lua @@ -926,16 +926,18 @@ local function getchart(settings,forced_x,forced_y,forced_nx,forced_ny) return chart end -local function makechart_indeed(chart) +local function makechart(chart) local settings = chart.settings local chartsettings = settings.chart -- + context.begingroup() + context.forgetall() + -- local g = ctx_startgraphic { instance = "metafun", format = "metafun", method = "scaled", definitions = "", - wrapped = true, } -- ctx_tographic(g,"if unknown context_flow : input mp-char.mpiv ; fi ;") @@ -1010,16 +1012,7 @@ local function makechart_indeed(chart) ctx_tographic(g,"flow_end_chart ;") ctx_stopgraphic(g) -- -end - --- We need to wrap because of tex.runtoks! - -local function makechart(chart) - context.hbox() - context.bgroup() - context.forgetall() - context(function() makechart_indeed(chart) end) - context.egroup() + context.endgroup() end local function splitchart(chart) diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-chart.mkvi b/Master/texmf-dist/tex/context/modules/mkiv/m-chart.mkvi index 4c5ea7e021c..0463e4acd26 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-chart.mkvi +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-chart.mkvi @@ -185,14 +185,11 @@ {\dodoubleempty\module_charts_process} \def\module_charts_process[#name][#settings]% -% {\hpack\bgroup % \vbox removed, \hpack prevents issues with tex.runtoks - {\bgroup % \vbox removed, \hpack prevents issues with tex.runtoks + {\bgroup % \vbox removed \insidefloattrue \dontcomplain \setupFLOWchart[#settings]% \usebodyfontparameter\FLOWchartparameter -% \meta_process_graphic_start -% \meta_start_current_graphic \clf_flow_make_chart chart { name {#name} @@ -251,8 +248,6 @@ after {} } \relax -% \meta_stop_current_graphic -% \meta_process_graphic_stop \egroup} \unexpanded\def\FLOWcharts diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-format.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-format.mkiv index 3a0a5bebd51..f9dd348a49c 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-format.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-format.mkiv @@ -217,7 +217,7 @@ \doglobal\newcounter\formatlinesubcounter \reshapebox {\doglobal\increment\formatlinesubcounter} - \glet\formatlinemaxcounter\formatlinesubcounter + \global\let\formatlinemaxcounter\formatlinesubcounter \reshapebox {\doglobal\decrement\formatlinesubcounter \ifnum\formatlinesubcounter=\zerocount @@ -303,7 +303,7 @@ \doglobal\newcounter\formatlinesubcounter \reshapebox {\doglobal\increment\formatlinesubcounter}% - \glet\formatlinemaxcounter\formatlinesubcounter + \global\let\formatlinemaxcounter\formatlinesubcounter \reshapebox {\doglobal\decrement\formatlinesubcounter \ifnum\formatlinesubcounter=\zerocount diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-matrix.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-matrix.mkiv index 4a0bd712d49..9cac6967277 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-matrix.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-matrix.mkiv @@ -23,8 +23,6 @@ \startluacode -local tonumber, type = tonumber, type - local settings_to_hash = utilities.parsers.settings_to_hash local formatters = string.formatters local copy = table.copy @@ -116,7 +114,7 @@ function matrix.typeset(m,options) if type(m[1]) ~= "table" then m = { copy(m) } end - for i=1,#m do + for i=1, #m do local mi = m[i] for j=1,#mi do context.NC() @@ -166,11 +164,9 @@ function matrix.swapcolumns(t, i, j) return t end -matrix.swapC = matrix.swapcolumns -matrix.swapR = matrix.swaprows -matrix.swapcolumns = matrix.swapcolumns -matrix.swaprows = matrix.swaprows -matrix.swap = matrix.swaprows +matrix.swapC = matrix.swapcolumns +matrix.swapR = matrix.swaprows +matrix.swap = matrix.swaprows -- replace i-th row with factor * (i-th row) @@ -303,7 +299,7 @@ local function determinant(m) end return s*d else - return "error: not a square matrix" + return "error: not a square matrix" -- not context(..) end end @@ -375,7 +371,7 @@ matrix.rowEchelon = rowechelon -- make matrices until its determinant is not 0 -local function make(m,n,low,high) -- m and n swapped +function matrix.make(m,n,low,high) -- m and n swapped if not n then n = 10 end @@ -405,9 +401,6 @@ local function make(m,n,low,high) -- m and n swapped end end -matrix.make = make -matrix.makeR = matrix.make - -- extract submatrix by using local function submatrix(t,i,j) @@ -427,11 +420,10 @@ local function submatrix(t,i,j) end matrix.submatrix = submatrix -matrix.subMatrix = submatrix -- calculating determinant using Laplace Expansion -local function laplace(t) -- not sure if this is the most effient but +function matrix.laplace(t) -- not sure if this is the most effient but local factors = { 1 } -- it's not used for number crunching anyway local data = copy(t) local det = 0 @@ -469,8 +461,6 @@ local function laplace(t) -- not sure if this is the most effient but return det end -matrix.laplace = laplace - -- solve the linear equation m X = c local function solve(m,c) @@ -528,74 +518,6 @@ end matrix.inverse = inverse --- create zero and identity matrix - -local function makeM(k,v) - local tt = { } - for i=1,k do - local temp = { } - for j=1,k do - temp[j] = 0 - end - tt[i] = temp - end - if v and v > 0 then - for i=1,k do - tt[i][i] = 1 - end - end - return tt -end - -matrix.makeM = makeM -matrix.makeidentity = makeM -matrix.makezero = makeM - --- append the rows of the second matrix to the bottom of the first matrix - -local function joinrows(t1, t2) - local nt1 = #t1 - local nt2 = #t2 - if (nt1*nt2 > 0) and (#t1[1] ~= #t2[1]) then - return "error: different number of columns" - else - for i=1,nt2 do - t1[nt1+i] = t2[i] - end - return t1 - end -end - -matrix.joinrows = joinrows -matrix.joinRows = joinrows - --- append the columns of the second matrix to the right of the first matrix - -local function joincolumns(t1, t2) - local nt1 = #t1 - local nt2 = #t2 - if nt1 == 0 then - return t2 - end - if nt2 == 0 then - return t1 - end - if nt1 ~= nt2 then - return "error: different number of rows" - end - nt3 = #t2[1] - for i=1,nt1 do - local temp = t2[i] - for j= 1, nt3 do - insert(t1[i],temp[j]) - end - end - return t1 -end - -matrix.joincolumns = joincolumns -matrix.joinColumns = joincolumns - \stopluacode \stopmodule @@ -648,7 +570,6 @@ document.DemoMatrixC = { \startbuffer \ctxmodulematrix{typeset(moduledata.matrix.symbolic("a", "m", "n"))} -$\qquad\qquad$ \ctxmodulematrix{typeset(moduledata.matrix.symbolic("a", "m", "n", 4, 8))} \stopbuffer @@ -660,10 +581,9 @@ $\qquad\qquad$ \startbuffer \startluacode - moduledata.matrix.typeset(moduledata.matrix.makeR(4,3, 0,5)) + moduledata.matrix.typeset(moduledata.matrix.make(4,3, 0,5)) context.qquad() - context("\\qquad") - moduledata.matrix.typeset(moduledata.matrix.makeR(5,5,-1,5)) + moduledata.matrix.typeset(moduledata.matrix.make(5,5,-1,5)) \stopluacode \stopbuffer @@ -671,7 +591,7 @@ $\qquad\qquad$ \stopsubject -\startsubject[title={Swap two rows (ex: 2 and 4)}] +\startsubject[title={Swap two rows (2 and 4)}] \startbuffer \startluacode @@ -685,13 +605,13 @@ $\qquad\qquad$ \stopsubject -\startsubject[title={Swap two columns (ex: 1 and 3)}] +\startsubject[title={Swap two columns (2 and 4)}] \startbuffer \startluacode moduledata.matrix.typeset(document.DemoMatrixA) context("$\\qquad \\Rightarrow \\qquad$") - moduledata.matrix.typeset(moduledata.matrix.swapcolumns(document.DemoMatrixA,1, 3)) + moduledata.matrix.typeset(moduledata.matrix.swapcolumns(document.DemoMatrixA,2, 4)) \stopluacode \stopbuffer @@ -806,7 +726,7 @@ context(moduledata.matrix.inner({ 1, 2, 3 }, { 3, 1, 2, 4 })) } moduledata.matrix.typeset(m, {fences="bars"}) context("$\\qquad = \\qquad$") - context(moduledata.matrix.determinant(m)) + moduledata.matrix.determinant(m) \stopluacode \stopbuffer @@ -944,51 +864,4 @@ context(moduledata.matrix.inner({ 1, 2, 3 }, { 3, 1, 2, 4 })) \stopsubject -\startsubject[title={make matrices(zero, identiry, random}] - -\startbuffer -\startluacode - moduledata.matrix.typeset(moduledata.matrix.makeM(3, 0)) - context.qquad() - moduledata.matrix.typeset(moduledata.matrix.makeM(3, 1)) - context.qquad() - moduledata.matrix.typeset(moduledata.matrix.makeR(4,3)) -\stopluacode -\stopbuffer - -\getbuffer[demo] - -\stopsubject - -\startsubject[title={join rows, join columns}] - -\startbuffer -\startluacode - local mat1 = moduledata.matrix.makeR(3, 4) - local mat2 = moduledata.matrix.makeR(4, 3) - - context("Appending as columns: ") - context.blank() - moduledata.matrix.typeset(mat1) - context("$\\&$") - moduledata.matrix.typeset(mat1) - context("\\quad $\\Rightarrow$ \\quad") - moduledata.matrix.joinColumns(mat1, mat1) - moduledata.matrix.typeset(mat1) - context.blank() - context("Appending as rows: ") - context.blank() - moduledata.matrix.typeset(mat2) - context("$\\&$") - moduledata.matrix.typeset(mat2) - context("\\quad $\\Rightarrow$ \\quad") - moduledata.matrix.joinRows(mat2, mat2) - moduledata.matrix.typeset(mat2) -\stopluacode -\stopbuffer - -\getbuffer[demo] - -\stopsubject - \stoptext diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-maybe.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-maybe.mkiv deleted file mode 100644 index d019828f5bb..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-maybe.mkiv +++ /dev/null @@ -1,57 +0,0 @@ -%D \module -%D [ file=m-maybe, -%D version=2018.07.26, -%D title=\CONTEXT\ Extra Modules, -%D subtitle=Maybe some day, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D The code here is not in the core and might never be as it's probably not -%D of much use and|/|or can interfere. - -\unprotect - -% \showframe -% \starttext -% \tweakpagegoal[-\lineheight] -% \dorecurse{40}{\inleftmargin{!}\input ward\par} -% \stoptext - -\def\page_scale_text_box_indeed#1% - {\scratchheight\ht#1\relax - \scratchwidth \wd#1\relax - \setbox#1\vpack\bgroup - \hpack\bgroup - \scale - [\c!height=\dimexpr\textheight-\d_page_adapts_delta\relax, - \c!width=\scratchwidth] - {\box#1}% - \egroup - \egroup - \global\d_page_adapts_delta\zeropoint - \glet\page_scale_text_box\gobbleoneargument - \ht#1\scratchheight - \wd#1\scratchwidth} - -\unexpanded\def\tweakpagegoal[#1]% - {\ifx\currentoutputroutine\s!singlecolumn - \global\d_page_adapts_delta\dimexpr#1\relax - \ifdim\d_page_adapts_delta=\zeropoint - \glet\page_scale_text_box\gobbleoneargument - \else - \glet\page_scale_text_box\page_scale_text_box_indeed - \fi - \else - \global\d_page_adapts_delta\zeropoint - \glet\page_scale_text_box\gobbleoneargument - \fi - \page_otr_command_set_vsize} - -\protect - -\endinput diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-old-columnsets.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-old-columnsets.mkiv deleted file mode 100644 index d840cbc916c..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-old-columnsets.mkiv +++ /dev/null @@ -1,7 +0,0 @@ -\writeline -\writestatus{system}{Using old columnset mechanism.} -\writeline - -\input page-set.mkiv - -\endinput diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-old-multicolumns.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-old-multicolumns.mkiv deleted file mode 100644 index a2fb1503b74..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-old-multicolumns.mkiv +++ /dev/null @@ -1,7 +0,0 @@ -\writeline -\writestatus{system}{Using old multicolumn mechanism.} -\writeline - -\input page-mul.mkiv - -\endinput diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-oldfun.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-oldfun.mkiv index 7ec779c41cb..3f2ec0263ed 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-oldfun.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-oldfun.mkiv @@ -355,14 +355,14 @@ \ifdim\wd2=\zeropoint \setbox0\emptybox \setbox2\emptybox - \expandafter\grabfirstline + \@EA\grabfirstline \else\ifdim\wd2>\hsize \hbox to \hsize{\strut\unhbox0}#2\egroup \break##1\ \egroup \else \setbox0\box2 - \doubleexpandafter\grabfirstline + \@EAEAEA\grabfirstline \fi\fi}% \grabfirstline} diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-oldnum.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-oldnum.mkiv index a240cdb58c3..382c56eb674 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-oldnum.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-oldnum.mkiv @@ -189,15 +189,28 @@ %D Although we could do with one pass, a second pass for %D handling the stored sequence is more readable. -\def\dohandledigits - {\mathcode`\,="002C \mathcode`\.="002E % pretty hard coded - \expandafter\handletokens\collecteddigits\with\scandigits - \ifcase\powerdigits\else\digitpowerseparator^{\savedpowerdigits}\fi} +\ifnum\texengine=\luatexengine -\chardef\mathaxisfontid\zerocount + \def\dohandledigits + {\mathcode`\,="002C \mathcode`\.="002E % pretty hard coded + \expandafter\handletokens\collecteddigits\with\scandigits + \ifcase\powerdigits\else\digitpowerseparator^{\savedpowerdigits}\fi} + + \chardef\mathaxisfontid\zerocount + +\else + + \def\dohandledigits + {\mathcode`\,="013B \mathcode`\.="013A % pretty hard coded + \expandafter\handletokens\collecteddigits\with\scandigits + \ifcase\powerdigits\else\digitpowerseparator^{\savedpowerdigits}\fi} + + \chardef\mathaxisfontid\plustwo + +\fi \def\doscandigit#1% - {\ifcase\skipdigit\expandafter\hbox\else\expandafter\hphantom\fi\bgroup + {\ifcase\skipdigit\@EA\hbox\else\@EA\hphantom\fi\bgroup \mathematics % brr, needed because of stored punctuation {\ifnum\digitinputmode=#1\relax \ifcase\digitoutputmode diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-punk.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-punk.mkiv index 29a6d8cca75..08a0663592e 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-punk.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-punk.mkiv @@ -104,20 +104,19 @@ function metapost.characters.process(mpxformat, name, instances, scalefactor) for i=1,instances do characters = { } descriptions = { } - metapost.process { - mpx = mpxformat, - -- trialrun = false, - flusher = flusher, - -- multipass = false, - -- isextrapass = false, - askedfig = "all", - -- incontext = false, - data = { + metapost.process( + mpxformat, + { "randomseed := " .. i*10 .. ";", "scale_factor := " .. scalefactor .. " ;", data }, - } + false, + flusher, + false, + false, + "all" + ) lists[i] = { characters = characters, descriptions = descriptions, @@ -211,18 +210,18 @@ metapost.characters.flusher = flusher statistics.register("metapost font generation", function() local time = statistics.elapsedtime(flusher) if total > 0 then - return string.format("%i glyphs, %s seconds runtime, %0.3f glyphs/second", total, time, total/tonumber(time)) + return string.format("%i glyphs, %.3f seconds runtime, %0.3f glyphs/second", total, time, total/time) else - return string.format("%i glyphs, %s seconds runtime", total, time) + return string.format("%i glyphs, %.3f seconds runtime", total, time) end end) statistics.register("metapost font loading",function() local time = statistics.elapsedtime(metapost.characters) if variants > 0 then - return string.format("%s seconds, %i instances, %0.3f instances/second", time, variants, variants/tonumber(time)) + return string.format("%.3f seconds, %i instances, %0.3f instances/second", time, variants, variants/time) else - return string.format("%s seconds, %i instances", time, variants) + return string.format("%.3f seconds, %i instances", time, variants) end end) \stopluacode diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-scite.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-scite.mkiv index 9182fa2ecb5..48f1022ad59 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-scite.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-scite.mkiv @@ -102,8 +102,7 @@ local function exportcolors() local function black(f) return (f[1] == f[2]) and (f[2] == f[3]) and (f[3] == 0) end --- local result, r = { f_mapping }, 1 -local result, r = { }, 0 + local result, r = { f_mapping }, 1 for k, v in table.sortedhash(lexer.context.styles) do local fore = v.fore if fore and not black(fore) then @@ -227,7 +226,7 @@ local function lexdata(data,lexname) end data = indent(data) end - -- io.savedata("temp.log",data) +io.savedata("temp.logs ",data) assignbuffer("lex",data) end @@ -289,7 +288,6 @@ visualizers.register("cld", visualizer) visualizers.register("tex", visualizer) visualizers.register("lua", visualizer) visualizers.register("mps", visualizer) -visualizers.register("pdf", visualizer) visualizers.register("xml", visualizer) visualizers.register("bibtex",visualizer) visualizers.register("btx", visualizer) @@ -298,7 +296,6 @@ visualizers.register("cpp", visualizer) visualizers.register("txt", visualizer) visualizers.register("bnf", visualizer) visualizers.register("sql", visualizer) -visualizers.register("json", visualizer) \stopluacode @@ -307,13 +304,11 @@ visualizers.register("json", visualizer) \definetyping[BTX] [option=bibtex] \definetyping[MPS] [option=mps] \definetyping[MP] [option=mps] -\definetyping[PDF] [option=pdf] \definetyping[CPP] [option=web] \definetyping[WEB] [option=web] \definetyping[TXT] [option=txt] \definetyping[BNF] [option=bnf] % I might use this in the metafun manual. \definetyping[SQL] [option=sql] % To be tested in an upcoming manual. -\definetyping[JSON][option=json] % To be tested in an upcoming manual. \definetyping[NONE][option=none] % This is a preliminary interface. @@ -324,11 +319,11 @@ visualizers.register("json", visualizer) \unexpanded\def\buff_scite_slxb#1% {\hangindent\numexpr#1+2\relax\scitespaceskip - \begstrut\hskip#1\scitespaceskip + \hskip#1\scitespaceskip \hangafter 1\relax} \unexpanded\def\buff_scite_slxe - {\endstrut\par} + {\par} \unexpanded\def\buff_scite_slxs {\hskip\scitespaceskip\relax} \unexpanded\def\buff_scite_slxf#1{\hskip#1\scitespaceskip\relax} @@ -337,7 +332,6 @@ visualizers.register("json", visualizer) {\scitespaceskip\interwordspace % \fontcharwd\font`0\relax % brrrrr \let\slxb\gobbleoneargument \let\slxe\space - \let\slxbreak\relax \let\installscitecommandsinline\relax} \unexpanded\def\installscitecommandsdisplay @@ -348,24 +342,10 @@ visualizers.register("json", visualizer) \clf_sciteinstallcommands -\let\slxb \gobbleoneargument -\let\slxe \space -\let\slxbreak\relax - -\let\slxL \letterleftbrace -\let\slxR \letterrightbrace -\let\slxM \letterdollar -\let\slxV \letterbar -\let\slxU \letterhat -\let\slxD \letterunderscore -\let\slxH \letterhash -\let\slxB \letterbackslash -\let\slxP \letterpercent -\let\slxT \lettertilde -\let\slxS \fixedspace - -\let\slxS \buff_scite_slxs -\let\slxF \buff_scite_slxf +\installscitecommandsinline + +\let\slxS\buff_scite_slxs +\let\slxF\buff_scite_slxf \def\module_scite_inherit_typing {\buff_verbatim_initialize_typing_one diff --git a/Master/texmf-dist/tex/context/modules/mkiv/m-units.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/m-units.mkiv index 4f25fffc62d..f85a8ba8a5e 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/m-units.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/m-units.mkiv @@ -212,7 +212,7 @@ \setbox2\hbox{m}% \ifdim\wd0=\wd2 \endgroup - \doubleexpandafter\gobbleoneargument + \@EAEAEA\gobbleoneargument \else \endgroup \fi @@ -220,8 +220,8 @@ \unexpanded\def\dimension#1% {\begingroup - \glet\savedthedimensionprefix\thedimensionprefix - \glet\savedthedimensionpower\thedimensionpower + \global\let\savedthedimensionprefix\thedimensionprefix + \global\let\savedthedimensionpower\thedimensionpower \unexpanded\def\dimension##1{\global\nesteddimensiontrue}% \let\dimensionprefix\dimension \let\dimensionmidfix\dimension @@ -229,8 +229,8 @@ \let\dimensionpower \dimension \global\nesteddimensionfalse \setbox\scratchbox\hbox{\ustartmathmode#1\ustopmathmode}% pre-roll - \glet\thedimensionprefix\savedthedimensionprefix - \glet\thedimensionpower \savedthedimensionpower + \global\let\thedimensionprefix\savedthedimensionprefix + \global\let\thedimensionpower \savedthedimensionpower \endgroup \ifnesteddimension#1\else\dodimension{#1}\fi} @@ -278,8 +278,8 @@ \else \hskip\dimensionpowersignal \fi - \glet\thedimensionprefix\empty - \glet\thedimensionpower\empty} + \global\let\thedimensionprefix\empty + \global\let\thedimensionpower\empty} %D \macros %D {dontbreakdimension, diff --git a/Master/texmf-dist/tex/context/modules/mkiv/ppchtex.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/ppchtex.mkiv index 5348d2e1a77..d1167d4143a 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/ppchtex.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/ppchtex.mkiv @@ -1747,7 +1747,7 @@ \def\dosimplechemicalA#1#2#3% % evt: {#1,\relax} {\let\chemicalspace=\relax - \expandafter\dosimplechemical\expandafter{\@@chemicalchemicaloffset,#1}{#2}{#3}% + \@EA\dosimplechemical\@EA{\@@chemicalchemicaloffset,#1}{#2}{#3}% \egroup} \def\dosimplechemicalB#1#2#3% @@ -1849,9 +1849,9 @@ \setevalue{\??chemical\c!text\the\levchemical}{\the\txtchemical}% \txtchemical=0 \dodochemical[#1][#2]% - % \expandafter\txtchemical\expandafter\csname\??chemical\c!text\the\levchemical\endcsname + % \@EA\txtchemical\@EA\csname\??chemical\c!text\the\levchemical\endcsname \txtchemical\csname\??chemical\c!text\the\levchemical\endcsname - \expandafter\let\expandafter\unknownchemical\csname\??chemical\s!unknown\the\levchemical\endcsname + \@EA\let\@EA\unknownchemical\csname\??chemical\s!unknown\the\levchemical\endcsname \advance\levchemical -1 %\egroup \ignorespaces} @@ -2099,7 +2099,7 @@ \verchemical=\getvalue{\s!chemical y1}\relax \else \restorechemicalvalues{\getvalue{\s!chemical n\the\chemicalstack}}% - %\expandafter\let\expandafter\@@chemicalpostponed\expandafter=\csname\s!chemical p\the\chemicalstack\endcsname + %\@EA\let\@EA\@@chemicalpostponed\@EA=\csname\s!chemical p\the\chemicalstack\endcsname \let\@@chemicalpostponed=\relax \horchemical=\getvalue{\s!chemical x\the\chemicalstack}\relax \verchemical=\getvalue{\s!chemical y\the\chemicalstack}\relax diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-article-basic.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-article-basic.mkiv index 67786738193..69a5779611e 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-article-basic.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-article-basic.mkiv @@ -11,21 +11,6 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. - -% \usemodule[article-basic,article-titletop] -% \usemodule[article-basic,article-titlepage] -% -% \startdocument -% [title={Some title}, -% subject={Some Subject}, -% author={Hans \& Ton}, -% affiliation={PRAGMA ADE}, -% date=\currentdate] -% -% \samplefile{ward} -% -% \stopdocument - \startmodule[article-basic] \unprotect @@ -85,10 +70,6 @@ \setuplist [\c!interaction=\v!all] -\setupdocument - [\c!before=\directsetup{document:titlepage}] - \protect \stopmodule - diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-article-titlepage.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-article-titlepage.mkiv deleted file mode 100644 index abfb957c2fa..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-article-titlepage.mkiv +++ /dev/null @@ -1,65 +0,0 @@ -%D \module -%D [ file=s-article-titlepage, -%D version=2018.05.20, -%D title=\CONTEXT\ Style File, -%D subtitle=Article Title Page, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\startmodule[article-titlepage] - -\unprotect - -% \startalignment[middle] -% \let\\=\par -% \bfb -% \setupinterlinespace -% \documentvariable {subject} -% \par -% \stopalignment - -\defineframed - [titlepageframed] - [\c!frame=\v!off, - \c!align=\v!middle] - -\startsetups document:titlepage - \startstandardmakeup[\c!align=\v!middle] - \doifdocumentvariable {title} { - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfd\setupinterlinespace] - {\documentvariable {title}} - } - \doifdocumentvariable {subject} { - \blank[2*\v!big] - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfb\setupinterlinespace] - {\documentvariable {subject}} - } - \doifdocumentvariable {author} { - \blank[4*\v!big] - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfa\setupinterlinespace] - {\documentvariable {author}} - } - \vfill - \doifdocumentvariable {affiliation} { - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfa\setupinterlinespace] - {\documentvariable {affiliation}} - } - \doifdocumentvariable {date} { - \blank[\v!big] - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfa\setupinterlinespace] - {\documentvariable {date}} - } - \stopstandardmakeup -\stopsetups - -\stopmodule diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-article-titletop.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-article-titletop.mkiv deleted file mode 100644 index e68bed79ba7..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-article-titletop.mkiv +++ /dev/null @@ -1,68 +0,0 @@ -%D \module -%D [ file=s-article-titletop, -%D version=2018.05.20, -%D title=\CONTEXT\ Style File, -%D subtitle=Article Top Title, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\startmodule[article-titletop] - -\unprotect - -\defineframed - [titlepageframed] - [\c!frame=\v!off, - \c!align=\v!middle] - -\startsetups document:titlepage - \setupheader[\c!state=\v!high] - \start - \forgetall - \startalignment[\v!middle] - \doifdocumentvariable {title} { - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfd\setupinterlinespace] - {\documentvariable {title}} - \par - } - \doifdocumentvariable {subject} { - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfb\setupinterlinespace] - {\documentvariable {subject}} - \par - } - \doifdocumentvariable {author} { - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfa\setupinterlinespace] - {\documentvariable {author}} - \par - } - \doifdocumentvariable {affiliation} { - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfa\setupinterlinespace] - {\documentvariable {affiliation}} - \par - } - \doifdocumentvariable {date} { - \dontleavehmode \titlepageframed - [\c!foregroundstyle=\bfa\setupinterlinespace] - {\documentvariable {date}} - \par - } - \blank[3*\v!big] - \stopalignment - \stop -\stopsetups - -\setupdocument - [\c!before=\directsetup{document:titlepage}] - -\protect - -\stopmodule diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-cgj.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-cgj.mkiv deleted file mode 100644 index 2950a799d9b..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-cgj.mkiv +++ /dev/null @@ -1,714 +0,0 @@ -%D \module -%D [file=s-cgj.mkiv, -%D version=2018.09.28, -%D title=Context group style file, -%D subtitle=CG-journal base style, -%D author={Adrian Egger, W. Egger, Taco Hoekwater}, -%D date=\currentdate, -%D copyright={Context Group}] - -%D \type {\enablemode[draft]} has to come before loading the style. Maybe some -%D day I'll make something more official and then some \type {everydraft} or so. - -% Fixme and todo ... - -\startmodule[cgj] - -\definecolor[NoteColor][g=1,r=.25,b=.25] -\definecolor[WarnColor][r=1,g=.25,b=.25] - -\unexpanded\def\todo#1% - {\startframedtext[background=color,backgroundcolor=NoteColor] - \dontleavehmode\start\bf TODO:\stop~~#1\par - \stopframedtext} - -\unexpanded\def\fixme#1% - {\startframedtext[background=color,backgroundcolor=WarnColor] - \dontleavehmode\start\bf FIXME:\stop~~#1\par - \stopframedtext } - -%D Base set of variables. The actual values are set in the file -%D CG-journal. - -\setvariables - [CG-Journal] - [Title={Journal}, - RunningTitle={Journal}, - SubTitle={From the base set of variables}, - Version=1.0, - NOFColumns=2] - -\startmode[onecolumn,fullwidth] - \setvariables - [CG-Journal] - [NOFColumns=1] -\stopmode - -% Fonts setup. - -\usetypescriptfile[plex] - -\starttypescript [cgj] - \definetypeface [cgj] [rm] [serif][ibmplex-light] [default] - \definetypeface [cgj] [ss] [sans] [ibmplex-light] [default] - \definetypeface [cgj] [mm] [math] [palatino] [default] - \definetypeface [cgj] [tt] [mono] [ibmplex] [default][rscale=0.9] -\stoptypescript - -\starttypescript [cgj-light] - \definetypeface [cgj-light] [rm] [serif][ibmplex-extralight] [default] - \definetypeface [cgj-light] [ss] [sans] [ibmplex-extralight] [default] - \definetypeface [cgj-light] [mm] [math] [palatino] [default] - \definetypeface [cgj-light] [tt] [mono] [ibmplex-extralight] [default][rscale=0.9] -\stoptypescript - -\starttypescript [cgj-extralight] - \definetypeface [cgj-extralight] [rm] [serif][ibmplex-thin] [default] - \definetypeface [cgj-extralight] [ss] [sans] [ibmplex-thin] [default] - \definetypeface [cgj-extralight] [mm] [math] [palatino] [default] - \definetypeface [cgj-extralight] [tt] [mono] [ibmplex-thin] [default][rscale=0.9] -\stoptypescript - -\usebodyfont - [cgj-light,cgj-extralight] - -\setupbodyfont - [cgj,ss,10pt] - -\definebodyfontenvironment[10pt][interlinespace=13pt] -\definebodyfontenvironment[12pt][interlinespace=16pt] -\definebodyfontenvironment[16pt][interlinespace=20pt] - -\setupinterlinespace - [line=13pt] - -\let\sl\it - -%D Path to the logos - -\setupexternalfigures - [directory=./Logos, - location={global,local,default}] - -%D Logos: black logo only. - -\useexternalfigure - [Logo] - [cg_corp_logo_loop_black_cmyk] - [width=30mm, - height=19mm] - -%D Black logo with text - -\useexternalfigure - [LogoText] - [cg_corp_logo_text_black_cmyk] - [width=50mm, - height=35.2mm] - -%D Colors - -\definecolor[CGlightblue][c=1,m=.15,y=0,k=0] -\definecolor[CGdeepblue] [c=1,m=.8,y=0,k=.3] -\definecolor[CGgray] [c=0,m=0,y=0,k=.1] - -%D Article styles - -\definealternativestyle - [Articleheading] - [{\switchtobodyfont[16pt,ss]\bf}] - -\definealternativestyle - [Articlesubheading] - [{\switchtobodyfont[16pt,ss]\tf}] - -\definealternativestyle - [Authorname] - [{\switchtobodyfont[12pt,ss]\it}] - -\definealternativestyle - [Sectionheading] - [{\switchtobodyfont[12pt,ss]\bf\setupinterlinespace[line=12pt]}] - -\definealternativestyle - [Subsectionheading] - [{\switchtobodyfont[cgj-light,10pt,ss]\bf\setupinterlinespace[line=10pt]}] - -\definealternativestyle - [IntroCopy] - [{\switchtobodyfont[12pt,ss]\tf}] - -\definealternativestyle - [PagenumberStyle] - [{\switchtobodyfont[cgj-light,10pt,ss]\bf}] - -%D Headerstyles:Breadcrumbs - -\definealternativestyle - [BreadcrumbMd] - [{\switchtobodyfont[cgj-light,10pt,ss]\bf}] - -\definealternativestyle - [BreadcrumbRg] - [{\switchtobodyfont[cgj,10pt,ss]}] - -\definealternativestyle - [BreadcrumbLt] - [{\switchtobodyfont[10pt,ss]\tf}] - -\definealternativestyle - [BreadcrumbTh] - [{\switchtobodyfont[cgj-light,10pt,ss]\tf}] - -%D Captionstyles - -\definealternativestyle - [Captionheading] - [{\switchtobodyfont[8pt,ss]\bf\setupinterlinespace[line=8pt]}] - -\definealternativestyle - [Captiontext] - [{\switchtobodyfont[8pt,ss]\tf\setupinterlinespace[line=8pt]}] - -%D Article signature - -\definealternativestyle - [Signaturestyle] - [{\switchtobodyfont[10pt,ss]\it}] - -%D Article footnotes - -\definealternativestyle - [Articlefootnotes] - [{\switchtobodyfont[8pt,ss]\tf}] - -%D Index and TOC styles - -\definealternativestyle - [IndexContents] - [{\switchtobodyfont[16pt,ss]\bf\setupinterlinespace[line=18pt]}] - -\definealternativestyle - [IndexArticleTitle] - [{\switchtobodyfont[12pt,ss]\tf\setupinterlinespace[line=20pt]}] - -\definealternativestyle - [IndexNumber] - [{\switchtobodyfont[12pt,ss]\bf\setupinterlinespace[line=20pt]}] - -\definealternativestyle - [IndexAuthor] - [{\switchtobodyfont[12pt,ss]\it\setupinterlinespace[line=20pt]}] - -%D Math: still missing. - -%D Verbatim - -\definealternativestyle - [DisplayMonospaced] - [\tt] - -\definealternativestyle - [DisplayMonospacedX] - [{\switchtobodyfont[8pt,tt]}] - -\definealternativestyle - [DisplayMonospacedS] - [{\switchtobodyfont[9pt,tt]\setupinterlinespace[line=10pt]}] - -%D Blank adjustment - -\defineblank[CGblank] [6pt] -\defineblank[BigCGblank] [24pt] -\defineblank[MediumCGblank][12pt] - -%D Paper definition - -\definepapersize - [Journal] - [width=210mm, - height=266mm] - -\setuppapersize - [Journal] - [Journal] - -%D General layout - -\definelayout - [General] - [topspace=18mm, - backspace=28mm, - header=5mm, - headerdistance=7mm, - footer=5mm, - footerdistance=5mm, - width=157mm, - height=224mm, - marking=on] - -\definelayout - [Content] - [topspace=18mm, - backspace=28mm, - header=5mm, - headerdistance=7mm, - footer=0mm, - footerdistance=0mm, - width=157mm, - height=224mm, - margindistance=4mm, - rightmargin=21mm, - leftmargin=21mm, - marking=on] - -\definelayout - [Imprint] - [topspace=18mm, - backspace=28mm, - header=5mm, - headerdistance=7mm, - footer=5mm, - footerdistance=5mm, - width=107mm, - height=224mm, - margindistance=4mm, - rightmargin=45.3mm, - leftmargin=21mm, - marking=on] - -\definelayout - [SingleColumn] - [topspace=18mm, - backspace=55mm, - header=5mm, - headerdistance=7mm, - footer=5mm, - footerdistance=5mm, - width=130mm, - height=224mm, - margindistance=4mm, - leftmargin=48mm, - rightmargin=21mm, - marking=on] - -%D Pagenumbering: Pagenumber is set in the footer - -\setuppagenumbering - [location=, - alternative=doublesided] - -%D Head-definitions - -\setuphead - [title] - [style=Articleheading, - after={\blank[BigCGblank]}, - page=yes] - -\setuphead - [part] - [placehead=no, - after=, - before=, - page=no, - numbercommand=, - expansion=yes] - -\setuphead - [section] - [style=Sectionheading, - before={\blank[BigCGblank]}, - after={\blank[CGblank]}, - sectionstopper={.}, - distance=4pt, - align={flushleft,nothyphenated}, - resetnumber=yes, - continue=yes] - -\setuphead - [subsection] - [style=Subsectionheading, - before={\blank[CGblank]}, - after={\blank[CGblank]}, - sectionstopper=, - distance=4pt, - align={flushleft,nothyphenated}, - resetnumber=yes, - continue=yes] - -\setuphead - [subject] - [style=Sectionheading, - before={\blank[BigCGblank]}, - after=] - -\setuphead - [subsubject] - [style=Subsectionheading, - before={\blank[CGblank]}, - after={\blank[CGblank]}, - sectionstopper=] - -%D A special head for the footnote section in multicolumn mode excuse the low-level -%D rule, I wanted it to look like the start of footnotes in single column mode. (TH) - -\definehead - [footnotesubject] - [subject] - -\setuphead - [footnotesubject] - [style=Sectionheading, - before={\kern -13pt}, - after={\smash{\lower 13pt\hbox{\vrule width 2.5cm height 1pt depth 0pt}}}] - - -%D The setup of the columns is done at the moment columns are started (see end -%D of file) - -%D Index/TOC page setups - -\definelistalternative - [CGJ:Index] - [renderingsetup=CGJ:Indexheading] - -\definelistalternative - [CGJ:Index:Chapter] - [renderingsetup=CGJ:Indexheading:Chapter] - -\startsetups[CGJ:Indexheading:Chapter] - \listparameter{before} - \vbox \listboxproperties{all} { - \forgetall - \dontleavehmode - \listrenderingsynchronize - \hbox to 15mm{ - \bgroup - \useliststyleandcolor{numberstyle}{numbercolor} - \currentlistentrypagenumber - \egroup} - \bgroup - \useliststyleandcolor{textstyle}{textcolor} - \smash{\currentlistentrytitle}% - \egroup - } - \par - \listparameter{after} -\stopsetups - -\startsetups[CGJ:Indexheading] - \listparameter{before} - \vbox \listboxproperties{all} { - \forgetall - \dontleavehmode - \listrenderingsynchronize - \hbox to 15mm{ - \bgroup - \useliststyleandcolor{numberstyle}{numbercolor} - \currentlistentrypagenumber - \egroup} - \bgroup - \useliststyleandcolor{textstyle}{textcolor} - \currentlistentrytitle - \egroup - \par - } - \par - \listparameter{after} -\stopsetups - -\setuplist - [part] - [before={\blank[CGblank]}, - after=, - style=IndexContents, - numberstyle=\IndexNumber, - textstyle=\IndexArticleTitle, - prefix=no, - alternative=CGJ:Index:Chapter] - -%D Captions - -\setupcaptions - [suffix={.}, - headstyle=\Captionheading, - style=\Captiontext, - distance=6pt] - -\setupcaption[figure][way=bypart] -\setupcaption[table] [way=bypart] - -%D Datacollection: article parameters (other fields and defaults) - -\unexpanded\def\CGJBibData[#1]% - {\getparameters - [CGJ] - [SubTitle=, - RunningAuthor=, - RunningTitle=Example, - Email=, - Address=, - Page=1, - Title={My Article}, - Author={Example Author}, - Period=, - Number=, - Year=, - TocAuthor=, - TocTitle=, - #1]% - \doifnothing - {\CGJRunningTitle} - {\let\CGJRunningTitle\CGJTitle}% - \doifnothing - {\CGJRunningAuthor} - {\let\CGJRunningAuthor\CGJAuthor}% - \doifnothing - {\CGJTocAuthor} - {\let\CGJTocAuthor\CGJAuthor}% - \doifnothing - {\CGJTocTitle} - {\let\CGJTocTitle\CGJTitle}% - \setvariables - [CGJToc] - [Author=\CGJTocAuthor, - Title=\CGJTocTitle]% for TOC - } - -\unexpanded\def\dostartArticle[#1] - {\CGJBibData[#1] - \doifelse - {\getvariable{CG-Journal}{NOFColumns}} - {1} - {\doifmodeelse{fullwidth} - {\setuplayout[General]} - {\setuplayout[SingleColumn]}} - {\setupnotes[location=none] - \setuplayout[General]}% - \bgroup - {\switchtobodyfont[16pt]\Articleheading\CGJTitle\par} - {\doifsomething{\CGJSubTitle} - {\switchtobodyfont[16pt]\Articlesubheading\CGJSubTitle\par}} - {\doifsomething{\CGJAuthor} - {\switchtobodyfont[12pt]\Authorname \CGJAuthor}\par} - \part - {\getvariable{CGJToc}{Title}% - \doifsomething{\getvariable{CGJToc}{Author}}{ \emdash\ }% - \IndexAuthor\getvariable{CGJToc}{Author}} - \godown[13pt]% - \egroup - \par - \hyphenpenalty1000\relax} - -\unexpanded\def\startArticle - {\dosingleempty\dostartArticle} - -\def\signArticle - {} - -%D In multicolumn mode, footnotes come are at the end of the article: - -\startsetups article:after - \startfootnotesubject[title=] - \placefootnotes - \stopfootnotesubject -\stopsetups - -\unexpanded\def\stopArticle - {\doifelse{\getvariable{CG-Journal}{NOFColumns}}{1} - {\par - \signArticle} - {\setups{article:after} - \par - \signArticle - \stoppagecolumns} - \page} - -\unexpanded\def\startAbstract - {\bgroup - \switchtobodyfont[12pt] - \IntroCopy} - -\unexpanded\def\stopAbstract - {\par - \egroup - \finishAbstract} - -\unexpanded\def\finishAbstract - {\doifelse {\getvariable{CG-Journal}{NOFColumns}} {1} - {\blank[BigCGblank]} - {\vbox{\blank[BigCGblank]}% - \par - \startpagecolumns[balance=yes,distance=12pt,page=no,n=\getvariable{CG-Journal}{NOFColumns}] - \setupitemgroup[itemize][packed] - \setuplayout[grid=yes]} % grid mode only in columns - } - - -\unexpanded\def\noAbstract - {\kern -24pt - \finishAbstract} - -%D Headertexts - -\startsetups[Header:texts] - \setupheadertexts - [] [{{\BreadcrumbLt\CGJRunningTitle}{\BreadcrumbTh\doifsomething{\CGJRunningAuthor}{\ > }\CGJRunningAuthor}}] %odd - [{\BreadcrumbMd contextgroup}{\BreadcrumbRg\ > \getvariable{CG-Journal}{RunningTitle}}] [] %even -\stopsetups - -%D Footertexts - -\startsetups[Footer:texts] - \setupfootertexts - [] [\PagenumberStyle\pagenumber] - [\PagenumberStyle\pagenumber] [] -\stopsetups - -%D Setup tolerance, stretch. - -\setuptolerance - [tolerant,stretch] - -%D Setting up footnotes. - -\setupnotation - [footnote] - [way=bypart, - rule=on] - -%D Adjustments to the container containing the footnotes. - -\setupnote - [footnote] - [frame=off, - topframe=off , - framecolor=black, - background=, - rulecolor=black, %% the line above the inserts - rulethickness=1pt, - next={ }, - split=verystrict, - scope=page, - style=Articlefootnotes] - -\doifmodeelse {draft} {\setupnote[footnote][frame=on]} - -% Setup typing. - -\setupnarrower - [middle=3mm, - left=5mm] - -\definetextbackground - [verbatim] - [frame=off, - background=color, - backgroundcolor=CGgray, - leftoffset=2mm,rightoffset=2mm, - topoffset=2mm,bottomoffset=2mm, - location=paragraph, - align=flushleft] - -\doifmodeelse {draft} {\definetextbackground[verbatim][frame=on]} - -\definetextbackground - [verbatimitem] - [verbatim] - -\setuptextbackground - [verbatimitem] - [before=, - after=, - width=\the\dimexpr\hsize-10.5mm\relax] - -\startsetups typing:before - \blank[MediumCGblank] - \starttextbackground[verbatim] -\stopsetups - -\startsetups typing:before:small - \blank[MediumCGblank] - \starttextbackground[verbatim] -\stopsetups - -\startsetups typing:after - \stoptextbackground - \blank[MediumCGblank] -\stopsetups - -\startsetups typing:before:item - \starttextbackground[verbatimitem] -\stopsetups - -\startsetups typing:after:item - \stoptextbackground -\stopsetups - -\setuptyping - [typing] - [style=DisplayMonospaced, - before=\setups{typing:before}, - after=\setups{typing:after}] - -\setuptype - [style=DisplayMonospaced] - -%D When verbatim becomes too large: - -\definetyping - [smalltyping] - -\setuptyping - [smalltyping] - [style=DisplayMonospacedX, - before=\setups{typing:before:small}, - after=\setups{typing:after}] - -\unexpanded\def\smalltypefile{\typefile[smalltyping][]} - -%D Bullet lists. - -\setupitemgroup - [itemize] - [each] - [] - [symbol=1, - indentnext=no, - align=right, - before={\blank[MediumCGblank]\startnarrower[left]}, - after={\stopnarrower\blank[MediumCGblank]}, - inbetween={\blank[CGblank]}] - -\definedescription - [description] - [location=hanging, - width=broad, - before={\blank}, - after={\blank}] - -\setupformula - [align=flushleft, - margin=5mm] - -\setupquotation - [before={\blank[CGblank]\switchtobodyfont[10pt]}, - after={\blank[CGblank]}] - -\setupwhitespace - [medium] - -\usemodule[abr-02,abr-03,abr-04] - -\unexpanded\def\Href#1{\underbar{\hyphenatedurl{#1}}} -\unexpanded\def\CG {\ConTeXt\ group} - -\setnewconstant\kindofpagetextareas\plusone % partial page. HH: low level, no high level switch (yet) - -%D There is a draft mode, which enables all frames: - -\doifmode {draft} {\showframe} - -\stopmodule - diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-evohome.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-evohome.mkiv index 06fd6fb76cb..1577517e513 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-evohome.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-evohome.mkiv @@ -198,19 +198,13 @@ function moduledata.evohome.history(specification) local m = 0 for minute, d in next, hour do local v = d[where] - if v then - a = a + v - n = n + 1 - if v > m then - m = v - end + a = a + v + n = n + 1 + if v > m then + m = v end end - if n > 0 then - a = a / n - else - a = 0 - end + a = a / n local dx = xoffset + h local dy = a/scale local dm = m/scale diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-basics.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-basics.mkiv index 370be35986b..e9d0a21a296 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-basics.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-basics.mkiv @@ -1,5 +1,5 @@ %D \module -%D [ file=s-fonts-basics, % was s-fnt-01, +%D [ file=s-fnt-01, %D version=2006.10.10, % guess %D title=\CONTEXT\ Style File, %D subtitle=Listing Glyphs in Large Fonts, diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-charts.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-charts.mkiv index 3123cc0d0f0..e94b52a2e76 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-charts.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-charts.mkiv @@ -15,7 +15,7 @@ % % title : show unicode blocks % -% comment : show charts of a given font +% comment : show charts of a given fgont % % end info @@ -87,7 +87,7 @@ local settings = utilities.parsers.settings_to_hash(settings) - local filename = settings.filename or settings.name or "" + local filename = settings.filename or "" local fontid = true local newpage = settings.page == interfaces.variables.yes @@ -169,40 +169,36 @@ \starttext - \showfontchart[filename=aegean,page=yes] -% \showfontchart[filename=veramono.ttf,page=yes] -% \showfontchart[filename=CoelacanthSubhdHeavy.otf,page=yes] - -% \showfontchart[filename=LucidaBrightOT.otf,page=yes] -% \showfontchart[filename=LucidaBrightOT-Demi.otf,page=yes] -% \showfontchart[filename=LucidaBrightOT-DemiItalic.otf,page=yes] -% \showfontchart[filename=LucidaBrightOT-Italic.otf,page=yes] - -% \showfontchart[filename=LucidaSansOT.otf,page=yes] -% \showfontchart[filename=LucidaSansOT-Demi.otf,page=yes] -% \showfontchart[filename=LucidaSansOT-DemiItalic.otf,page=yes] -% \showfontchart[filename=LucidaSansOT-Italic.otf,page=yes] - -% \showfontchart[filename=LucidaSansTypewriterOT.otf,page=yes] -% \showfontchart[filename=LucidaSansTypewriterOT-Bold.otf,page=yes] -% \showfontchart[filename=LucidaSansTypewriterOT-BoldOblique.otf,page=yes] -% \showfontchart[filename=LucidaSansTypewriterOT-Oblique.otf,page=yes] - -% \showfontchart[filename=LucidaConsoleDK.otf,page=yes] -% \showfontchart[filename=LucidaConsoleDK-Bold.otf,page=yes] -% \showfontchart[filename=LucidaConsoleDK-BoldItalic.otf,page=yes] -% \showfontchart[filename=LucidaConsoleDK-Italic.otf,page=yes] - -% \showfontchart[filename=LucidaGrandeMonoDK.otf,page=yes] -% \showfontchart[filename=LucidaGrandeMonoDK-Bold.otf,page=yes] -% \showfontchart[filename=LucidaGrandeMonoDK-BoldItalic.otf,page=yes] -% \showfontchart[filename=LucidaGrandeMonoDK-Italic.otf,page=yes] - -% \showfontchart[filename=LucidaBrightMathOT.otf,page=yes] -% \showfontchart[filename=LucidaBrightMathOT-Demi.otf,page=yes] - -% \showfontchart[filename=LucidaBlackletterOT.otf,page=yes] -% \showfontchart[filename=LucidaCalligraphyOT.otf,page=yes] -% \showfontchart[filename=LucidaHandwritingOT.otf,page=yes] + \showfontchart[filename=LucidaBrightOT.otf,page=yes] + \showfontchart[filename=LucidaBrightOT-Demi.otf,page=yes] + \showfontchart[filename=LucidaBrightOT-DemiItalic.otf,page=yes] + \showfontchart[filename=LucidaBrightOT-Italic.otf,page=yes] + + \showfontchart[filename=LucidaSansOT.otf,page=yes] + \showfontchart[filename=LucidaSansOT-Demi.otf,page=yes] + \showfontchart[filename=LucidaSansOT-DemiItalic.otf,page=yes] + \showfontchart[filename=LucidaSansOT-Italic.otf,page=yes] + + \showfontchart[filename=LucidaSansTypewriterOT.otf,page=yes] + \showfontchart[filename=LucidaSansTypewriterOT-Bold.otf,page=yes] + \showfontchart[filename=LucidaSansTypewriterOT-BoldOblique.otf,page=yes] + \showfontchart[filename=LucidaSansTypewriterOT-Oblique.otf,page=yes] + + \showfontchart[filename=LucidaConsoleDK.otf,page=yes] + \showfontchart[filename=LucidaConsoleDK-Bold.otf,page=yes] + \showfontchart[filename=LucidaConsoleDK-BoldItalic.otf,page=yes] + \showfontchart[filename=LucidaConsoleDK-Italic.otf,page=yes] + + \showfontchart[filename=LucidaGrandeMonoDK.otf,page=yes] + \showfontchart[filename=LucidaGrandeMonoDK-Bold.otf,page=yes] + \showfontchart[filename=LucidaGrandeMonoDK-BoldItalic.otf,page=yes] + \showfontchart[filename=LucidaGrandeMonoDK-Italic.otf,page=yes] + + \showfontchart[filename=LucidaBrightMathOT.otf,page=yes] + \showfontchart[filename=LucidaBrightMathOT-Demi.otf,page=yes] + + \showfontchart[filename=LucidaBlackletterOT.otf,page=yes] + \showfontchart[filename=LucidaCalligraphyOT.otf,page=yes] + \showfontchart[filename=LucidaHandwritingOT.otf,page=yes] \stoptext diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-complete.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-complete.mkiv index 83aa708df51..afdd79b4ca8 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-complete.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-complete.mkiv @@ -29,36 +29,23 @@ local descriptions = tfmdata.descriptions or { } local data = characters.data -- context.setuptabulate { header = "repeat" } - -- context.starttabulatehead() - -- NC() bold("unicode") - -- NC() bold("visual") - -- NC() bold("index") - -- NC() bold("tounicode") - -- NC() bold("unicodes") - -- NC() bold("glyph") - -- NC() bold("adobe") - -- NC() bold("context") - -- NC() NR() - -- context.stoptabulatehead() - context.starttabulate { "|l|c|p(8em)|l|l|p|p|p|" } - NC() bold("unicode") - NC() bold("visual") - NC() bold("unicodes") - NC() bold("tounicode") - NC() bold("index") - NC() bold("glyph") - NC() bold("adobe") - NC() bold("context") - NC() NR() + context.starttabulatehead() + NC() bold("unicode") + NC() bold("visual") + NC() bold("index") + NC() bold("glyph") + NC() bold("adobe") + NC() bold("context") + NC() NR() + context.stoptabulatehead() + context.starttabulate { "|l|c|l|p|p|p|" } for unicode, chr in fonts.iterators.characters(tfmdata) do local des, dat = descriptions[unicode], data[unicode] - local index = chr.index or 0 - local tounicode = chr.tounicode - local isunicode = chr.unicode - local cname = (dat and dat.contextname) or "" - local aname = (dat and dat.adobename) or "" - local gname = (des and des.name) or "" - local mname = dat and dat.mathname + local index = chr.index or 0 + local cname = (dat and dat.contextname) or "" + local aname = (dat and dat.adobename) or "" + local gname = (des and des.name) or "" + local mname = dat and dat.mathname if type(mname) ~= "string" then mname = "" end @@ -83,52 +70,12 @@ cname = mname end end - NC() - tttf() - context("%05X",unicode) - NC() - char(unicode) - NC() - if isunicode then - tttf() - if type(isunicode) == "table" then - for i=1,#isunicode do - if i > 1 then - if i % 2 ~= 0 then - context.crlf() - else - context.space() - end - end - context("%05X",isunicode[i]) - end - else - context("%05X",isunicode) - end - end - NC() - if tounicode then - tttf() - context(tounicode) - end - NC() - tttf() - context("%05X",index) - NC() - if gname ~= "" then - tttf() - escaped(gname) - end - NC() - if aname ~= "" then - tttf() - context(aname) - end - NC() - if cname ~= "" then - tttf() - context(cname) - end + NC() tttf() context("U+%05X",unicode) + NC() char(unicode) + NC() tttf() context("%05X",index) + NC() if gname ~= "" then tttf() escaped(gname) end + NC() if aname ~= "" then tttf() context(aname) end + NC() if cname ~= "" then tttf() context(cname) end NC() NR() end context.stoptabulate() @@ -153,13 +100,14 @@ \font\TestFont=#1 at #2 \setuplayout[style=\TestFont] \setupheadertexts[] - \setupfootertexts[#1\space\endash\space\pagenumber] + \setupfootertexts[#1 -- \pagenumber] + \setupfootertexts[pagenumber] \setuplayout[width=middle,height=middle,topspace=1cm,backspace=1cm] \TestFont \nonknuthmode \startcolumns[n=#3] - \TestFont - \ctxlua { moduledata.fonts.complete.all() } + \TestFont + \ctxlua { moduledata.fonts.complete.all() } \stopcolumns \page \endgroup} @@ -177,16 +125,14 @@ \TestFontB \setupinterlinespace[line=1.2\dimexpr#2\relax] \raggedcenter \nonknuthmode \startcolumns[n=#3] - \TestFontB - \ctxlua { moduledata.fonts.complete.glyphs() } + \TestFontB + \ctxlua { moduledata.fonts.complete.glyphs() } \stopcolumns \page \endgroup} \continueifinputfile{s-fonts-complete.mkiv} -\usemodule[art-01] \setuplayout[overview] \setupbodyfont[8pt] - \starttext % \ShowCompleteFont{name:dejavusansmono}{10pt}{1} @@ -194,7 +140,7 @@ % \ShowCompleteFont{name:officinasansbookitcregular}{10pt}{2} % \ShowCompleteFont{name:officinaserifbookitcregular}{10pt}{2} % \ShowCompleteFont{name:serpentineserifeflight}{10pt}{2} -% \ShowCompleteFont{name:lmroman10-regular}{10pt}{1} +\ShowCompleteFont{name:lmroman10-regular}{10pt}{1} % \ShowCompleteFont{name:lmtypewriter10-regular}{10pt}{2} % \ShowCompleteFont{lt55485}{10pt}{2} % \ShowCompleteFont{lmr10}{10pt}{2} @@ -211,13 +157,4 @@ % \ShowCompleteFont{name:palatinonovaregular}{11pt}{2} % \ShowCompleteFont{pirat.ttf}{12pt}{1} -\setuplayout[overview][footer=1cm] \setuplayout[overview]% \setupheadertexts[aegean.ttf] - -\ShowCompleteFont{file:aegean} {8pt}{1} -% \ShowCompleteFont{file:tsukurimashouminchops}{8pt}{1} -% \ShowCompleteFont{file:tsukurimashoumincho} {8pt}{1} -% \ShowCompleteFont{file:tsukurimashoukakups} {8pt}{1} -% \ShowCompleteFont{file:tsukurimashoukaku} {8pt}{1} -% \ShowCompleteFont{file:akkadian} {8pt}{1} - \stoptext diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-effects.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-effects.mkiv deleted file mode 100644 index 9b712938bd0..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-effects.mkiv +++ /dev/null @@ -1,59 +0,0 @@ -%D \module -%D [ file=s-fonts-basics, % was s-fnt-01, -%D version=2006.10.10, % guess -%D title=\CONTEXT\ Style File, -%D subtitle=Listing Glyphs in Large Fonts, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D This module is just a check for \type {luatex-basics-prepare}. - -\startmodule[fonts-effects] - -\startluacode -moduledata.fonts = moduledata.fonts or { } -moduledata.fonts.effects = moduledata.fonts.effects or { } - -function moduledata.fonts.effects.showfonteffect() - local effect = fonts.hashes.properties[true].effect - if effect then - local context = context - local BC, NC, EQ, NR = context.BC, context.NC, context.EQ, context.NR - context.starttabulate { "||||||||" } - BC() context("id") EQ() context(font.current()) - BC() context("factor") EQ() context(effect.factor) - BC() context("wdelta") EQ() context(effect.wdelta) - NC() NR() - BC() context("effect") EQ() context(effect.effect) - BC() context("hfactor") EQ() context(effect.hfactor) - BC() context("hdelta") EQ() context(effect.hdelta) - NC() NR() - BC() context("width") EQ() context(effect.width) - BC() context("vfactor") EQ() context(effect.vfactor) - BC() context("ddelta") EQ() context(effect.ddelta) - NC() NR() - context.stoptabulate() - end -end -\stopluacode - -\installmodulecommandluasingle \showfonteffect {moduledata.fonts.effects.showfonteffect} - -\stopmodule - -\continueifinputfile{s-fonts-effects.mkiv} - -\usemodule[art-01] - -\starttext - - \definedfont[Serif*default,boldened] An example. - - \showfonteffect - -\stopmodule diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.lua b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.lua index 6c676ce2d24..6f4032948ac 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.lua @@ -11,7 +11,7 @@ moduledata.fonts.features = moduledata.fonts.features or { } -- for the moment only otf -local insert, remove, sortedhash = table.insert, table.remove, table.sortedhash +local sortedhash = table.sortedhash local v_yes = interfaces.variables.yes local v_no = interfaces.variables.no @@ -87,35 +87,66 @@ local function collectkerns(tfmdata,feature) local lookuphash = resources.lookuphash local feature = feature or "kern" if sequences then - for i=1,#sequences do - local sequence = sequences[i] - if sequence.features and sequence.features[feature] then - local steps = sequence.steps - for i=1,#steps do - local step = steps[i] - local format = step.format - for unicode, hash in table.sortedhash(step.coverage) do - local kerns = combinations[unicode] - if not kerns then - kerns = { } - combinations[unicode] = kerns - end - for otherunicode, kern in table.sortedhash(hash) do - if format == "pair" then - local f = kern[1] - local s = kern[2] - if f then - if s then - -- todo - else - if not kerns[otherunicode] and f[3] ~= 0 then - kerns[otherunicode] = f[3] + + if true then + + for i=1,#sequences do + local sequence = sequences[i] + if sequence.features and sequence.features[feature] then + local steps = sequence.steps + for i=1,#steps do + local step = steps[i] + local format = step.format + for unicode, hash in table.sortedhash(step.coverage) do + local kerns = combinations[unicode] + if not kerns then + kerns = { } + combinations[unicode] = kerns + end + for otherunicode, kern in table.sortedhash(hash) do + if format == "pair" then + local f = kern[1] + local s = kern[2] + if f then + if s then + -- todo + else + if not kerns[otherunicode] and f[3] ~= 0 then + kerns[otherunicode] = f[3] + end end + elseif s then + -- todo + end + elseif format == "kern" then + if not kerns[otherunicode] and kern ~= 0 then + kerns[otherunicode] = kern end - elseif s then - -- todo end - elseif format == "kern" then + end + end + end + end + end + end + + else -- old loader + + for i=1,#sequences do + local sequence = sequences[i] + if sequence.features and sequence.features[feature] then + local lookuplist = sequence.subtables + if lookuplist then + for l=1,#lookuplist do + local lookupname = lookuplist[l] + local lookupdata = lookuphash[lookupname] + for unicode, data in next, lookupdata do + local kerns = combinations[unicode] + if not kerns then + kerns = { } + combinations[unicode] = kerns + end + for otherunicode, kern in next, data do if not kerns[otherunicode] and kern ~= 0 then kerns[otherunicode] = kern end @@ -125,6 +156,7 @@ local function collectkerns(tfmdata,feature) end end end + end return combinations @@ -198,90 +230,3 @@ function moduledata.fonts.features.showfeatureset(specification) end end end - -local function collectligatures(tfmdata) - local sequences = tfmdata.resources.sequences - - if not sequences then - return - end - - local series = { } - local stack = { } - local max = 0 - - local function make(tree) - for k, v in sortedhash(tree) do - if k == "ligature" then - local n = #stack - if n > max then - max = n - end - series[#series+1] = { v, unpack(stack) } - else - insert(stack,k) - make(v) - remove(stack) - end - end - end - - for i=1,#sequences do - local sequence = sequences[i] - if sequence.type == "gsub_ligature" then - local steps = sequence.steps - for i=1,#steps do - local step = steps[i] - local coverage = step.coverage - if coverage then - make(coverage) - end - end - end - end - - return series, max -end - -function moduledata.fonts.features.showallligatures(specification) - specification = interfaces.checkedspecification(specification) - local id, cs = fonts.definers.internal(specification,"<module:fonts:features:font>") - local tfmdata = fonts.hashes.identifiers[id] - local allligatures, - max = collectligatures(tfmdata) - local characters = tfmdata.characters - local descriptions = tfmdata.descriptions - if #allligatures > 0 then - context.starttabulate { "|T|" .. string.rep("|",max) .. "|T|T|" } - for i=1,#allligatures do - local s = allligatures[i] - local n = #s - local u = s[1] - local c = characters[u] - local d = descriptions[u] - NC() - context("%U",u) - NC() - context("\\setfontid%i\\relax",id) - context.char(u) - NC() - context("\\setfontid%i\\relax",id) - for i=2,n do - context.char(s[i]) - NC() - end - for i=n+1,max do - NC() - end - context(d.name) - NC() - context(c.tounicode) - NC() - NR() - end - context.stoptabulate() - else - context("no ligatures found") - context.par() - end -end diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.mkiv index 2390c44df07..2dca059ff3d 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-features.mkiv @@ -18,7 +18,6 @@ \installmodulecommandluasingle \showusedfeatures {moduledata.fonts.features.showused} \installmodulecommandluasingle \showallkerns {moduledata.fonts.features.showallkerns} \installmodulecommandluasingle \showbasekerns {moduledata.fonts.features.showbasekerns} -\installmodulecommandluasingle \showallligatures {moduledata.fonts.features.showallligatures} \installmodulecommandluasingle \showfeatureset {moduledata.fonts.features.showfeatureset} \def\kernpairheight{.8\strutht} diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.lua b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.lua index 868c22da114..748c5a92a60 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.lua @@ -58,6 +58,39 @@ function moduledata.fonts.shapes.showlist(specification) -- todo: ranges for k, v in next, characters.data do if chrs[k] then NC() context("0x%05X",k) + NC() char(id,k) -- getvalue(cs) context.char(k) + NC() char(id,v.shcode) + NC() char(id,v.lccode or k) + NC() char(id,v.uccode or k) + NC() special(id,v.specials) + NC() context.tx(v.description) + NC() NR() + end + end + context.stoptabulate() + context.endgroup() +end + +function moduledata.fonts.shapes.showlist(specification) -- todo: ranges + specification = interfaces.checkedspecification(specification) + local id, cs = fonts.definers.internal(specification,"<module:fonts:shapes:font>") + local chrs = fontdata[id].characters + context.begingroup() + context.tt() + context.starttabulate { "|l|c|c|c|c|l|l|" } + context.FL() + NC() context.bold("unicode") + NC() context.bold("glyph") + NC() context.bold("shape") + NC() context.bold("lower") + NC() context.bold("upper") + NC() context.bold("specials") + NC() context.bold("description") + NC() NR() + context.TL() + for k, v in next, characters.data do + if chrs[k] then + NC() context("0x%05X",k) NC() char(id,k) NC() char(id,v.shcode) NC() char(id,v.lccode or k) @@ -74,177 +107,220 @@ end local descriptions = nil local characters = nil - local function showglyphshape(specification) - -- - local specification = interfaces.checkedspecification(specification) - local id, cs = fonts.definers.internal(specification,"<module:fonts:shapes:font>") - local tfmdata = fontdata[id] - local characters = tfmdata.characters - local descriptions = tfmdata.descriptions - local parameters = tfmdata.parameters - local anchors = fonts.helpers.collectanchors(tfmdata) - - local function showonecharacter(unicode) - local c = characters [unicode] - local d = descriptions[unicode] - if c and d then - local factor = (parameters.size/parameters.units)*((7200/7227)/65536) - local llx, lly, urx, ury = unpack(d.boundingbox) - llx, lly, urx, ury = llx*factor, lly*factor, urx*factor, ury*factor - local width = (d.width or 0)*factor - context.start() - context.dontleavehmode() - context.obeyMPboxdepth() - context.startMPcode() - context("numeric lw ; lw := .125bp ;") - context("pickup pencircle scaled lw ;") - if width < 0.01 then - -- catches zero width marks - context('picture p ; p := textext.drt("\\hskip5sp\\getuvalue{%s}\\gray\\char%s"); draw p ;',cs,unicode) - else - context('picture p ; p := textext.drt("\\getuvalue{%s}\\gray\\char%s"); draw p ;',cs,unicode) - end - context('draw (%s,%s)--(%s,%s)--(%s,%s)--(%s,%s)--cycle withcolor green ;',llx,lly,urx,lly,urx,ury,llx,ury) - context('draw (%s,%s)--(%s,%s) withcolor green ;',llx,0,urx,0) - context('draw boundingbox p withcolor .2white withpen pencircle scaled .065bp ;') - context("defaultscale := 0.05 ; ") - -- inefficient but non critical - local slant = { - function(v,dx,dy,txt,xsign,ysign,loc,labloc) - local n = #v - if n > 0 then - local l = { } - for i=1,n do - local c = v[i] - local h = c.height or 0 - local k = c.kern or 0 - l[i] = formatters["((%s,%s) shifted (%s,%s))"](xsign*k*factor,ysign*h*factor,dx,dy) - end - context("draw ((%s,%s) shifted (%s,%s))--%s dashed (evenly scaled 1/16) withcolor .5white;", xsign*v[1].kern*factor,lly,dx,dy,l[1]) - context("draw laddered (%..t) withcolor .5white ;",l) -- why not "--" - context("draw ((%s,%s) shifted (%s,%s))--%s dashed (evenly scaled 1/16) withcolor .5white;", xsign*v[#v].kern*factor,ury,dx,dy,l[#l]) - for i=1,n do - context("draw %s withcolor blue withpen pencircle scaled 2lw ;",l[i]) - end + specification = interfaces.checkedspecification(specification) + local id, cs = fonts.definers.internal(specification,"<module:fonts:shapes:font>") + local tfmdata = fontdata[id] + local charnum = tonumber(specification.character) or fonts.helpers.nametoslot(specification.character) + local characters = tfmdata.characters + local descriptions = tfmdata.descriptions + local parameters = tfmdata.parameters + local c = characters[charnum] + local d = descriptions[charnum] + if d then + local factor = (parameters.size/parameters.units)*((7200/7227)/65536) + local llx, lly, urx, ury = unpack(d.boundingbox) + llx, lly, urx, ury = llx*factor, lly*factor, urx*factor, ury*factor + local width, italic = (d.width or 0)*factor, (d.italic or 0)*factor + local top_accent, bot_accent = (d.top_accent or 0)*factor, (d.bot_accent or 0)*factor + local anchors, math = d.anchors, d.math + context.start() + context.dontleavehmode() + context.obeyMPboxdepth() + context.startMPcode() + context("numeric lw ; lw := .125bp ;") + context("pickup pencircle scaled lw ;") + if width < 0.01 then + -- catches zero width marks + context('picture p ; p := textext.drt("\\hskip5sp\\getuvalue{%s}\\gray\\char%s"); draw p ;',cs,charnum) + else + context('picture p ; p := textext.drt("\\getuvalue{%s}\\gray\\char%s"); draw p ;',cs,charnum) + end + context('draw (%s,%s)--(%s,%s)--(%s,%s)--(%s,%s)--cycle withcolor green ;',llx,lly,urx,lly,urx,ury,llx,ury) + context('draw (%s,%s)--(%s,%s) withcolor green ;',llx,0,urx,0) + context('draw boundingbox p withcolor .2white withpen pencircle scaled .065bp ;') + context("defaultscale := 0.05 ; ") + -- inefficient but non critical + local slant = { + function(v,dx,dy,txt,xsign,ysign,loc,labloc) + local n = #v + if n > 0 then + local l = { } + for i=1,n do + local c = v[i] + local h = c.height or 0 + local k = c.kern or 0 + l[i] = formatters["((%s,%s) shifted (%s,%s))"](xsign*k*factor,ysign*h*factor,dx,dy) end - end, - function(v,dx,dy,txt,xsign,ysign,loc,labloc) - local n = #v - if n > 0 then - local l = { } - for i=1,n do - local c = v[i] - local h = c.height or 0 - local k = c.kern or 0 - l[i] = formatters["((%s,%s) shifted (%s,%s))"](xsign*k*factor,ysign*h*factor,dx,dy) - end - if loc == "top" then - context('label.%s("\\type{%s}",%s shifted (0,-1bp)) ;',loc,txt,l[n]) - else - context('label.%s("\\type{%s}",%s shifted (0,2bp)) ;',loc,txt,l[1]) - end - for i=1,n do - local c = v[i] - local h = c.height or 0 - local k = c.kern or 0 - context('label.top("(%s,%s)",%s shifted (0,-2bp));',k,h,l[i]) - end + context("draw ((%s,%s) shifted (%s,%s))--%s dashed (evenly scaled 1/16) withcolor .5white;", xsign*v[1].kern*factor,lly,dx,dy,l[1]) +-- context("draw laddered (%s) withcolor .5white ;",table.concat(l,"..")) + context("draw laddered (%..t) withcolor .5white ;",l) + context("draw ((%s,%s) shifted (%s,%s))--%s dashed (evenly scaled 1/16) withcolor .5white;", xsign*v[#v].kern*factor,ury,dx,dy,l[#l]) + for i=1,n do + context("draw %s withcolor blue withpen pencircle scaled 2lw ;",l[i]) end - end, - } - -- - local math = d.math - if math then - local kerns = math.kerns - if kerns then - for i=1,#slant do - local s = slant[i] - for k, v in next, kerns do - if k == "topright" then - -- s(v,width+italic,0,k,1,1,"top","ulft") - s(v,width,0,k,1,1,"top","ulft") - elseif k == "bottomright" then - s(v,width,0,k,1,1,"bot","lrt") - elseif k == "topleft" then - s(v,0,0,k,-1,1,"top","ulft") - elseif k == "bottomleft" then - s(v,0,0,k,-1,1,"bot","lrt") - end - end + end + end, + function(v,dx,dy,txt,xsign,ysign,loc,labloc) + local n = #v + if n > 0 then + local l = { } + for i=1,n do + local c = v[i] + local h = c.height or 0 + local k = c.kern or 0 + l[i] = formatters["((%s,%s) shifted (%s,%s))"](xsign*k*factor,ysign*h*factor,dx,dy) + end + if loc == "top" then + context('label.%s("\\type{%s}",%s shifted (0,-1bp)) ;',loc,txt,l[n]) + else + context('label.%s("\\type{%s}",%s shifted (0,2bp)) ;',loc,txt,l[1]) + end + for i=1,n do + local c = v[i] + local h = c.height or 0 + local k = c.kern or 0 + context('label.top("(%s,%s)",%s shifted (0,-2bp));',k,h,l[i]) end end - local accent = math.accent - if accent and accent ~= 0 then - local a = accent * factor - context('draw (%s,%s+1bp)--(%s,%s-1bp) withcolor blue;',a,ury,a,ury) - context('label.bot("\\type{%s}",(%s,%s+1bp));',"accent",a,ury) - context('label.top("%s",(%s,%s-1bp));',math.accent,a,ury) + end, + } + if math then + local kerns = math.kerns + if kerns then + for i=1,#slant do + local s = slant[i] + for k, v in next, kerns do + if k == "topright" then + s(v,width+italic,0,k,1,1,"top","ulft") + elseif k == "bottomright" then + s(v,width,0,k,1,1,"bot","lrt") + elseif k == "topleft" then + s(v,0,0,k,-1,1,"top","ulft") + elseif k == "bottomleft" then + s(v,0,0,k,-1,1,"bot","lrt") + end + end end end - -- - local anchordata = anchors[unicode] - if anchordata then - local function show(txt,list) - if list then - for i=1,#list do - local li = list[i] - local x, y = li[1], li[2] - local xx, yy = x*factor, y*factor - context("draw (%s,%s) withcolor blue withpen pencircle scaled 2lw ;",xx,yy) - context('label.top("\\infofont %s",(%s,%s-2.75bp)) ;',txt .. i,xx,yy) - context('label.bot("\\infofont (%s,%s)",(%s,%s+2.75bp)) ;',x,y,xx,yy) - end + end + local function show(x,y,txt) + local xx, yy = x*factor, y*factor + context("draw (%s,%s) withcolor blue withpen pencircle scaled 2lw ;",xx,yy) + context('label.top("\\type{%s}",(%s,%s-2bp)) ;',txt,xx,yy) + context('label.bot("(%s,%s)",(%s,%s+2bp)) ;',x,y,xx,yy) + end + if anchors then + local a = anchors.baselig + if a then + for k, v in next, a do + for i=1,#v do + local p = v[i] + show(p[1],p[2],k .. ":" .. i) end end - -- - show("b",anchordata.base) - show("m",anchordata.mark) - show("l",anchordata.ligature) - show("e",anchordata.entry) - show("x",anchordata.exit) end - -- - local italic = d.italic - if italic and italic ~= 0 then - local i = italic * factor - context('draw (%s,%s-1bp)--(%s,%s-0.5bp) withcolor blue ;',width,ury,width,ury) - context('draw (%s,%s-1bp)--(%s,%s-0.5bp) withcolor blue ;',width+i,ury,width+i,ury) - context('draw (%s,%s-1bp)--(%s,%s-1bp) withcolor blue ;',width,ury,width+i,ury) - context('label.lft("\\type{%s}",(%s+2bp,%s-1bp));',"italic",width,ury) - context('label.rt("%s",(%s-2bp,%s-1bp));',italic,width+i,ury) + local a = anchors.mark + if a then + for k, v in next, a do + show(v[1],v[2],k) + end end - context('draw origin withcolor red withpen pencircle scaled 2lw;') - context("setbounds currentpicture to boundingbox currentpicture enlarged 1bp ;") - context("currentpicture := currentpicture scaled 8 ;") - context.stopMPcode() - context.stop() + local a = anchors.basechar + if a then + for k, v in next, a do + show(v[1],v[2],k) + end + end + local ba = anchors.centry + if a then + for k, v in next, a do + show(v[1],v[2],k) + end + end + local a = anchors.cexit + if a then + for k, v in next, a do + show(v[1],v[2],k) + end + end + end + if italic ~= 0 then + context('draw (%s,%s-1bp)--(%s,%s-0.5bp) withcolor blue ;',width,ury,width,ury) + context('draw (%s,%s-1bp)--(%s,%s-0.5bp) withcolor blue ;',width+italic,ury,width+italic,ury) + context('draw (%s,%s-1bp)--(%s,%s-1bp) withcolor blue ;',width,ury,width+italic,ury) + context('label.lft("\\type{%s}",(%s+2bp,%s-1bp));',"italic",width,ury) + context('label.rt("%s",(%s-2bp,%s-1bp));',d.italic,width+italic,ury) + end + if top_accent ~= 0 then + context('draw (%s,%s+1bp)--(%s,%s-1bp) withcolor blue;',top_accent,ury,top_accent,ury) + context('label.bot("\\type{%s}",(%s,%s+1bp));',"top_accent",top_accent,ury) + context('label.top("%s",(%s,%s-1bp));',d.top_accent,top_accent,ury) + end + if bot_accent ~= 0 then + context('draw (%s,%s+1bp)--(%s,%s-1bp) withcolor blue;',bot_accent,lly,bot_accent,lly) + context('label.top("\\type{%s}",(%s,%s-1bp));',"bot_accent",top_accent,ury) + context('label.bot("%s",(%s,%s+1bp));',d.bot_accent,bot_accent,lly) end + context('draw origin withcolor red withpen pencircle scaled 2lw;') + context("setbounds currentpicture to boundingbox currentpicture enlarged 1bp ;") + context("currentpicture := currentpicture scaled 8 ;") + context.stopMPcode() + context.stop() + -- elseif c then + -- lastdata, lastunicode = nil, nil + -- local factor = (7200/7227)/65536 + -- context.startMPcode() + -- context("pickup pencircle scaled .25bp ; ") + -- context('picture p ; p := image(draw textext.drt("\\gray\\char%s");); draw p ;',charnum) + -- context('draw boundingbox p withcolor .2white withpen pencircle scaled .065bp ;') + -- context("defaultscale := 0.05 ; ") + -- local italic, top_accent, bot_accent = (c.italic or 0)*factor, (c.top_accent or 0)*factor, (c.bot_accent or 0)*factor + -- local width, height, depth = (c.width or 0)*factor, (c.height or 0)*factor, (c.depth or 0)*factor + -- local ury = height + -- if italic ~= 0 then + -- context('draw (%s,%s-1bp)--(%s,%s-0.5bp) withcolor blue;',width,ury,width,ury) + -- context('draw (%s,%s-1bp)--(%s,%s-0.5bp) withcolor blue;',width+italic,ury,width+italic,ury) + -- context('draw (%s,%s-1bp)--(%s,%s-1bp) withcolor blue;',width,ury,width+italic,height) + -- context('label.lft("\\type{%s}",(%s+2bp,%s-1bp));',"italic",width,height) + -- context('label.rt("%6.3f bp",(%s-2bp,%s-1bp));',italic,width+italic,height) + -- end + -- if top_accent ~= 0 then + -- context('draw (%s,%s+1bp)--(%s,%s-1bp) withcolor blue;',top_accent,ury,top_accent,height) + -- context('label.bot("\\type{%s}",(%s,%s+1bp));',"top_accent",top_accent,height) + -- context('label.top("%6.3f bp",(%s,%s-1bp));',top_accent,top_accent,height) + -- end + -- if bot_accent ~= 0 then + -- context('draw (%s,%s+1bp)--(%s,%s-1bp) withcolor blue;',bot_accent,lly,bot_accent,height) + -- context('label.top("\\type{%s}",(%s,%s-1bp));',"bot_accent",top_accent,height) + -- context('label.bot("%6.3f bp",(%s,%s+1bp));',bot_accent,bot_accent,height) + -- end + -- context('draw origin withcolor red withpen pencircle scaled 1bp;') + -- context("setbounds currentpicture to boundingbox currentpicture enlarged 1bp ;") + -- context("currentpicture := currentpicture scaled 8 ;") + -- context.stopMPcode() + else + -- lastdata, lastunicode = nil, nil + -- context("no such shape: 0x%05X",charnum) end +end - local unicode = tonumber(specification.character) or - fonts.helpers.nametoslot(specification.character) +moduledata.fonts.shapes.showglyphshape = showglyphshape - if unicode then - showonecharacter(unicode) - else - context.modulefontsstartshowglyphshapes() - for unicode, description in fonts.iterators.descriptions(tfmdata) do - if unicode >= 0x110000 then - break - end - context.modulefontsstartshowglyphshape(unicode,description.name or "",description.index or 0) - showonecharacter(unicode) - context.modulefontsstopshowglyphshape() +function moduledata.fonts.shapes.showallglypshapes(specification) + specification = interfaces.checkedspecification(specification) + local id, cs = fonts.definers.internal(specification,"<module:fonts:shapes:font>") + local descriptions = fontdata[id].descriptions + for unicode, description in fonts.iterators.descriptions(tfmdata) do + if unicode >= 0x110000 then + break end - context.modulefontsstopshowglyphshapes() + context.modulefontsstartshowglyphshape(unicode,description.name or "",description.index or 0) + showglyphshape { number = id, character = unicode } + context.modulefontsstopshowglyphshape() end - end -moduledata.fonts.shapes.showglyphshape = showglyphshape -moduledata.fonts.shapes.showallglypshapes = showglyphshape - function moduledata.fonts.shapes.showlastglyphshapefield(unicode,name) if not descriptions then -- bad news diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.mkiv index 90b9c1f6496..53ed1b426ef 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-shapes.mkiv @@ -30,7 +30,7 @@ \startsetups module:showallglyphshapes:start \unexpanded\def\modulefontsstartshowglyphshape##1##2##3{ - \startTEXpage[\c!offset=\exheight] % ,\c!frame=\v!on] + \startTEXpage[\c!offset=\exheight] \edef\lastshownglyphshapefieldunicode{##1}% \edef\lastshownglyphshapefieldname {##2}% \edef\lastshownglyphshapefieldindex {##3}% @@ -58,15 +58,6 @@ \stopsetups -\startsetups module:showallglyphshapes:stop - - % nothing - -\stopsetups - -\unexpanded\def\modulefontsstartshowglyphshapes{\setups[module:showallglyphshapes:start]} -\unexpanded\def\modulefontsstopshowglyphshapes {\setups[module:showallglyphshapes:stop]} - \protect % downward compatibility: @@ -106,9 +97,6 @@ % \startTEXpage \ShowGlyphShape{simplenaskhi}{100bp}{0xF0299} \stopTEXpage % \startTEXpage \ShowGlyphShape{simplenaskhi}{100bp}{NameMe.1190} \stopTEXpage - \startTEXpage[offset=0pt]\ShowGlyphShape{file:stix2math.otf}{20bp}{0x1D44A}\stopTEXpage - \startTEXpage[offset=0pt]\ShowGlyphShape{file:stix2math.otf}{20bp}{0x1D44C}\stopTEXpage - % \startTEXpage[offset=0pt]\ShowGlyphShape{name:cambria-math}{20bp}{0x00066}\stopTEXpage % \startTEXpage[offset=0pt]\ShowGlyphShape{name:cambria-math}{20bp}{0x1D453}\stopTEXpage % \startTEXpage[offset=0pt]\ShowGlyphShape{name:cambria-math}{20bp}{0x1D43F}\stopTEXpage @@ -121,13 +109,10 @@ % \startTEXpage[offset=0pt]\ShowGlyphShape{name:cambria-math}{50bp}{0x1D45D}\stopTEXpage % \page -% \startTEXpage[offset=0pt]\ShowGlyphShape{file:husayninotebold.ttf}{50bp}{0xF034A}\stopTEXpage -% \startTEXpage[offset=0pt]\ShowGlyphShape{file:husayninotebold.ttf}{50bp}{0x006DD}\stopTEXpage -% \startTEXpage[offset=0pt]\ShowGlyphShape{file:husayninotebold.ttf}{50bp}{0x006DD}\stopTEXpage -% \startTEXpage[offset=0pt]\ShowGlyphShape{file:arabtype.ttf}{50bp}{0x0FCA1}\stopTEXpage +\startTEXpage[offset=0pt]\ShowGlyphShape{file:husayninotebold.ttf}{50bp}{0xF034A}\stopTEXpage +\startTEXpage[offset=0pt]\ShowGlyphShape{file:husayninotebold.ttf}{50bp}{0x006DD}\stopTEXpage % \showallglyphshapes[name=name:cambria-math,size=100bp] -% \showallglyphshapes[name=name:arabtype,size=100bp] % \showallglyphshapes[name=file:husayninotebold.ttf,size=100bp] % \showallglyphshapes[name=name:dejavuserif,size=100bp] diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-statistics.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-statistics.mkiv deleted file mode 100644 index 3b5cddd3cc9..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-statistics.mkiv +++ /dev/null @@ -1,80 +0,0 @@ -%D \module -%D [ file=s-fonts-statistics, -%D version=2018.03.21, % guess -%D title=\CONTEXT\ Style File, -%D subtitle=Listing font statistics, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\startmodule[fonts-statistics] - -\startluacode - -moduledata.fonts = moduledata.fonts or { } -moduledata.fonts.statistics = moduledata.fonts.statistics or { } - -local context = context -local ctx_NC, ctx_BC, ctx_NR = context.NC, context.BC, context.NR - -function moduledata.fonts.statistics.showusage() - local t = table.load(tex.jobname.."-fonts-usage.lua") - if t then - local totalinstances = 0 - local totalfilesize = 0 - local totalfilenames = #t - if totalfilenames > 0 then - context.starttabulate { "|r|r|c||" } - context.FL() - ctx_BC() context("used") - ctx_BC() context("filesize") - ctx_BC() context("version") - ctx_BC() context("filename") - ctx_NR() - context.ML() - for i=1,#t do - local ti = t[i] - local version = tonumber(string.match(ti.version or "","^.-([%d%.]+)")) - local instances = ti.instances or 1 - local filename = file.basename(ti.filename) or "unknown" - local filesize = ti.size or 0 - totalinstances = totalinstances + instances - totalfilesize = totalfilesize + filesize - ctx_NC() context(instances) - ctx_NC() context("%0m",filesize) - ctx_NC() if version then context("%0.3f",version) end - ctx_NC() context.type(filename) - ctx_NR() - end - context.LL() - ctx_BC() context(totalinstances) - ctx_BC() context("%0m",totalfilesize) - ctx_BC() context() - ctx_BC() context("%i files loaded",totalfilenames) - ctx_NR() - context.stoptabulate() - end - end -end - -\stopluacode - -\installmodulecommandluasingle \showfontusage {moduledata.fonts.statistics.showusage} - -\stopmodule - -\continueifinputfile{s-fonts-statistics.mkiv} - -\enabletrackers[fonts.usage] - -\starttext - - \input klein - - \showfontusage - -\stoptext diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.lua b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.lua index dc0f2e6a3f8..5b58a4a533f 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.lua @@ -30,19 +30,14 @@ if not modules then modules = { } end modules ['s-fonts-system'] = { moduledata.fonts = moduledata.fonts or { } moduledata.fonts.system = moduledata.fonts.system or { } +local lower = string.lower + local context = context local NC, NR, HL = context.NC, context.NR, context.HL -local ctx_bold = context.bold -local ctx_verbatim = context.verbatim -local lpegmatch = lpeg.match -local sortedhash = table.sortedhash -local formatters = string.formatters -local concat = table.concat -local lower = string.lower -local gsub = string.gsub -local find = string.find +local bold = context.bold -local function allfiles(specification) +function moduledata.fonts.system.showinstalled(specification) + specification = interfaces.checkedspecification(specification) local pattern = lower(specification.pattern or "") local list = fonts.names.list(pattern,false,true) if list then @@ -50,22 +45,14 @@ local function allfiles(specification) for k, v in next, list do files[file.basename(string.lower(v.filename))] = v end - return files - end -end - -function moduledata.fonts.system.showinstalled(specification) - specification = interfaces.checkedspecification(specification) - local files = allfiles(specification) - if files then context.starttabulate { "|Tl|Tl|Tl|Tl|Tl|Tl|" } HL() - NC() ctx_bold("filename") - NC() ctx_bold("fontname") - NC() ctx_bold("subfamily") - NC() ctx_bold("variant") - NC() ctx_bold("weight") - NC() ctx_bold("width") + NC() bold("filename") + NC() bold("fontname") + NC() bold("subfamily") + NC() bold("variant") + NC() bold("weight") + NC() bold("width") NC() NR() HL() for filename, data in table.sortedpairs(files) do @@ -80,242 +67,3 @@ function moduledata.fonts.system.showinstalled(specification) context.stoptabulate() end end - -function moduledata.fonts.system.cacheinstalled(specification) - specification = interfaces.checkedspecification(specification) - local files = allfiles(specification) - if files then - local threshold = tonumber(specification.threshold) - local suffixes = specification.suffixes - if suffixes then - suffixes = utilities.parsers.settings_to_set(suffixes) - else - suffixes = { otf = true, ttf = true } - end - for filename, data in table.sortedpairs(files) do - if string.find(filename," ") then - -- skip this one - elseif suffixes[file.suffix(filename)] then - local fullname = resolvers.findfile(filename) - context.start() - context.type(fullname) - context.par() - if threshold and file.size(fullname) > threshold then - logs.report("fonts","ignoring : %s",fullname) - else - logs.report("fonts","caching : %s",fullname) - context.definedfont { filename } - end - context.stop() - end - end - end -end - -local splitter = lpeg.splitat(lpeg.S("._"),true) - -local method = 4 - -function moduledata.fonts.system.showinstalledglyphnames(specification) - specification = interfaces.checkedspecification(specification) - local paths = caches.getreadablepaths() - local files = { } - local names = table.setmetatableindex("table") - local f_u = formatters["%04X"] - for i=1,#paths do - local list = dir.glob(paths[i].."/fonts/o*/**.tmc") - for i=1,#list do - files[list[i]] = true - end - end - for filename in table.sortedhash(files) do - local fontname = file.nameonly(filename) - logs.report("system","fontfile: %s",fontname) - local data = table.load(filename) - if data then - if method == 1 then - local unicodes = data.resources.unicodes - if unicodes then - for n, u in sortedhash(unicodes) do - if u >= 0xF0000 or (u >= 0xE000 and u <= 0xF8FF) then - -- skip - else - local f = lpegmatch(splitter,n) or n - if #f > 0 then - local t = names[f] - t[u] = (t[u] or 0) + 1 - end - end - end - end - elseif method == 2 then - local unicodes = data.resources.unicodes - if unicodes then - for n, u in sortedhash(unicodes) do - if u >= 0xF0000 or (u >= 0xE000 and u <= 0xF8FF) then - -- skip - else - local t = names[n] - t[u] = (t[u] or 0) + 1 - end - end - end - elseif method == 3 then - local descriptions = data.descriptions - if descriptions then - for u, d in sortedhash(descriptions) do - local n = d.name - local u = d.unicode - if n and u then - if type(u) == "table" then - local t = { } - for i=1,#u do - t[i] = f_u(u[i]) - end - u = concat(t," ") - end - local t = names[n] - t[u] = (t[u] or 0) + 1 - end - end - end - elseif method == 4 then - local descriptions = data.descriptions - if descriptions then - for u, d in sortedhash(descriptions) do - local n = d.name - local u = d.unicode - if n and not u and not find(n,"^%.") then - local n = names[n] - n[#n+1] = fontname - end - end - end - else - -- nothing - end - end - end - -- names[".notdef"] = nil - -- names[".null"] = nil - if method == 4 then - if next(names) then - context.starttabulate { "|l|pl|" } - local f_u = formatters["%04X~(%i)"] - local f_s = formatters["%s~(%i)"] - for k, v in sortedhash(names) do - NC() ctx_verbatim(k) - NC() context("% t",v) - NC() NR() - end - context.stoptabulate() - end - table.save("s-fonts-system-glyph-unknowns.lua",names) - else - if next(names) then - context.starttabulate { "|l|pl|" } - local f_u = formatters["%04X~(%i)"] - local f_s = formatters["%s~(%i)"] - for k, v in sortedhash(names) do - local t = { } - for k, v in sortedhash(v) do - if type(k) == "string" then - t[#t+1] = f_s(k,v) - else - t[#t+1] = f_u(k,v) - end - end - NC() ctx_verbatim(k) - NC() context("%, t",t) - NC() NR() - end - context.stoptabulate() - end - table.save("s-fonts-system-glyph-names.lua",names) - end -end - --- -- -- - --- local skip = { --- "adobeblank", --- "veramo", --- "unitedstates", --- "tirek", --- "svbasicmanual", --- "sahel", --- "prsprorg", --- "piratdia", --- "notoserifthai", --- "coelacanthsubhdheavy", --- } - --- local function bad(name) --- name = lower(name) --- for i=1,#skip do --- if find(name,skip[i]) then --- return true --- end --- end --- end - --- function moduledata.fonts.system.showprivateglyphnames(specification) --- specification = interfaces.checkedspecification(specification) --- local paths = caches.getreadablepaths() --- local files = { } --- local names = table.setmetatableindex("table") --- local f_u = formatters["%04X"] --- for i=1,#paths do --- local list = dir.glob(paths[i].."/fonts/o*/**.tmc") --- for i=1,#list do --- files[list[i]] = true --- end --- end --- for filename in table.sortedhash(files) do --- logs.report("system","fontfile: %s",file.nameonly(filename)) --- local data = table.load(filename) --- if data and data.format == "truetype" or data.format == "opentype" then --- local basename = file.basename(data.resources.filename) --- local cleanname = gsub(basename," ","") --- if not bad(cleanname) then --- local descriptions = data.descriptions --- if descriptions then --- local done = 0 --- for u, d in sortedhash(descriptions) do --- local dn = d.name --- local du = d.unicode --- if dn and du and (u >= 0xF0000 or (u >= 0xE000 and u <= 0xF8FF)) and not find(dn,"notdef") then --- if type(du) == "table" then --- local t = { } --- for i=1,#du do --- t[i] = f_u(du[i]) --- end --- du = concat(t," ") --- end --- if done == 0 then --- logs.report("system","basename: %s",basename) --- context.starttitle { title = basename } --- context.start() --- context.definefont( { "tempfont" }, { "file:" .. cleanname }) --- context.starttabulate { "|T||T|T|" } --- end --- NC() context("%U",u) --- NC() context.tempfont() context.char(u) -- could be getglyph --- NC() ctx_verbatim(dn) --- NC() context(du) --- NC() NR() --- done = done + 1 --- end --- end --- if done > 0 then --- logs.report("system","privates: %i",done) --- context.stoptabulate() --- context.stop() --- context.stoptitle() --- end --- end --- end --- end --- end --- end - diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.mkiv index 9a0f7485d6f..6d9082a6bdc 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-system.mkiv @@ -24,27 +24,16 @@ \registerctxluafile{s-fonts-system}{} -\installmodulecommandluasingle \showinstalledfonts {moduledata.fonts.system.showinstalled} -\installmodulecommandluasingle \cacheinstalledfonts {moduledata.fonts.system.cacheinstalled} -\installmodulecommandluasingle \showinstalledglyphnames {moduledata.fonts.system.showinstalledglyphnames} -%installmodulecommandluasingle \showprivateglyphnames {moduledata.fonts.system.showprivateglyphnames} +\installmodulecommandluasingle \showinstalledfonts {moduledata.fonts.system.showinstalled} \stopmodule \continueifinputfile{s-fonts-system.mkiv} -\usemodule[art-01] \setuplayout[overview] \setupbodyfont[6pt] +\usemodule[art-01] \setuplayout[overview] \setupbodyfont[7pt] \starttext -% \showinstalledfonts - -% \enabletrackers[otf.keepnames] - -% \cacheinstalledfonts[suffixes={otf,ttf,afm}] -% \cacheinstalledfonts[threshold=4000000,suffixes={otf,ttf,afm}] -% \cacheinstalledfonts[threshold=2000000,suffixes={otf,ttf,afm}] - - \showinstalledglyphnames + \showinstalledfonts \stoptext diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.lua b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.lua index 33cbc924c36..c32f4628c17 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.lua @@ -6,45 +6,18 @@ if not modules then modules = { } end modules ['s-fonts-tables'] = { license = "see context related readme files" } -moduledata.fonts = moduledata.fonts or { } -moduledata.fonts.tables = moduledata.fonts.tables or { } - -local setmetatableindex = table.setmetatableindex -local sortedhash = table.sortedhash -local sortedkeys = table.sortedkeys -local concat = table.concat -local insert = table.insert -local remove = table.remove -local formatters = string.formatters - -local tabletracers = moduledata.fonts.tables - -local new_glyph = nodes.pool.glyph -local copy_node = nodes.copy -local setlink = nodes.setlink -local hpack = nodes.hpack -local applyvisuals = nodes.applyvisuals - -local handle_positions = fonts.handlers.otf.datasetpositionprocessor -local handle_injections = nodes.injections.handler - -local context = context -local ctx_sequence = context.formatted.sequence -local ctx_char = context.char -local ctx_setfontid = context.setfontid -local ctx_type = context.formatted.type -local ctx_dontleavehmode = context.dontleavehmode -local ctx_startPair = context.startPair -local ctx_stopPair = context.stopPair -local ctx_startSingle = context.startSingle -local ctx_stopSingle = context.stopSingle -local ctx_startSingleKern = context.startSingleKern -local ctx_stopSingleKern = context.stopSingleKern -local ctx_startPairKern = context.startPairKern -local ctx_stopPairKern = context.stopPairKern - -local ctx_NC = context.NC -local ctx_NR = context.NR +moduledata.fonts = moduledata.fonts or { } +moduledata.fonts.tables = moduledata.fonts.tables or { } + +local setmetatableindex = table.setmetatableindex +local sortedhash = table.sortedhash +local sortedkeys = table.sortedkeys +local format = string.format +local concat = table.concat + +local tabletracers = moduledata.fonts.tables + +local context = context local digits = { dflt = { @@ -133,73 +106,53 @@ setmetatableindex(digits.dflt, function(t,k) return rawget(t,"dflt") end) setmetatableindex(symbols.dflt, function(t,k) return rawget(t,"dflt") end) setmetatableindex(punctuation.dflt, function(t,k) return rawget(t,"dflt") end) --- scaled boolean string scale string float cardinal - -local function checked(specification) - specification = interfaces.checkedspecification(specification) - local id, cs = fonts.definers.internal(specification,"<module:fonts:features:font>") - local tfmdata = fonts.hashes.identifiers[id] - local resources = tfmdata.resources - return tfmdata, id, resources -end - -local function nothing() - context("no entries") - context.par() -end - -local function typesettable(t,keys,synonyms,nesting,prefix,depth) - if t and next(keys) then +local function typesettable(t,keys,synonyms,nesting,prefix) + if t then if not prefix then context.starttabulate { "|Tl|Tl|Tl|" } end for k, v in sortedhash(keys) do if k == "synonyms" then elseif type(v) ~= "table" then - ctx_NC() + context.NC() if prefix then context("%s.%s",prefix,k) else context(k) end - ctx_NC() - -- print(v) + context.NC() local tk = t[k] - if v == "<boolean>" then + if v == "boolean" then context(tostring(tk or false)) elseif not tk then context("<unset>") - elseif k == "filename" then + elseif v == "filename" then context(file.basename(tk)) - -- elseif v == "basepoints" then - -- context("%sbp",tk) - elseif v == "<scaled>" then + elseif v == "basepoints" then + context("%sbp",tk) + elseif v == "scaledpoints" then context("%p",tk) - elseif v == "<table>" then + elseif v == "table" then context("<table>") - else + else -- if v == "integerscale" then context(tostring(tk)) end - ctx_NC() - local synonym = (not prefix and synonyms[k]) or (prefix and synonyms[formatters["%s.%s"](prefix,k)]) + context.NC() + local synonym = (not prefix and synonyms[k]) or (prefix and synonyms[format("%s.%s",prefix,k)]) if synonym then - context("(% t)",synonym) + context(format("(%s)",concat(synonym," "))) end - ctx_NC() - ctx_NR() + context.NC() + context.NR() elseif nesting == false then context("<table>") - elseif next(v) then - typesettable(t[k],v,synonyms,nesting,k,true) + else -- true or nil + typesettable(t[k],v,synonyms,nesting,k) end end if not prefix then context.stoptabulate() end - return - end - if not depth then - nothing() end end @@ -222,342 +175,51 @@ end tabletracers.typeset = typeset --- function tabletracers.showproperties(nesting) --- local tfmdata = fonts.hashes.identifiers[true] --- typeset(tfmdata.properties,fonts.constructors.keys.properties,nesting) --- end - --- function tabletracers.showparameters(nesting) --- local tfmdata = fonts.hashes.identifiers[true] --- typeset(tfmdata.parameters,fonts.constructors.keys.parameters,nesting) --- end - -function tabletracers.showproperties(specification) - local tfmdata = checked(specification) - if tfmdata then - typeset(tfmdata.properties,fonts.constructors.keys.properties) - else - nothing() - end -end - -function tabletracers.showparameters(specification) - local tfmdata = checked(specification) - if tfmdata then - typeset(tfmdata.parameters,fonts.constructors.keys.parameters) - else - nothing() - end +function tabletracers.showproperties(nesting) + local tfmdata = fonts.hashes.identifiers[font.current()] + typeset(tfmdata.properties,fonts.constructors.keys.properties,nesting) end -local f_u = formatters["%U"] -local f_p = formatters["%p"] - -local function morept(t) - local r = { } - for i=1,t do - r[i] = f_p(t[i]) - end - return concat(r," ") +function tabletracers.showparameters(nesting) + local tfmdata = fonts.hashes.identifiers[font.current()] + typeset(tfmdata.parameters,fonts.constructors.keys.parameters,nesting) end -local function noprefix(kind) - kind = string.gsub(kind,"^gpos_","") - kind = string.gsub(kind,"^gsub_","") - return kind -end - -local function banner(index,i,format,kind,order,chain) - if chain then - ctx_sequence("sequence: %i, step %i, format: %s, kind: %s, features: % t, chain: %s", - index,i,format,noprefix(kind),order,noprefix(chain)) - else - ctx_sequence("sequence: %i, step %i, format: %s, kind: %s, features: % t", - index,i,format,noprefix(kind),order) - end -end - -function tabletracers.showpositionings(specification) - - local tfmdata, fontid, resources = checked(specification) - +function tabletracers.showpositionings() + local tfmdata = fonts.hashes.resources[font.current()] + local resources = tfmdata.resources if resources then - - local direction = "TLT" - - local sequences = resources.sequences - local marks = resources.marks - - if tonumber(direction) == -1 or direction == "TRT" then - direction = "TRT" - else - direction = "TLT" - end - - local visuals = "fontkern,glyph,box" - - local datasets = fonts.handlers.otf.dataset(tfmdata,fontid,0) - - local function process(dataset,sequence,kind,order,chain) - local steps = sequence.steps - local order = sequence.order or order - local index = sequence.index - for i=1,#steps do - local step = steps[i] - local format = step.format - banner(index,i,format,kind,order,chain) - if kind == "gpos_pair" then - local format = step.format - if "kern" or format == "move" then - for first, seconds in sortedhash(step.coverage) do - local done = false - local zero = 0 - for second, kern in sortedhash(seconds) do - if kern == 0 then - zero = zero + 1 - else - if not done then - ctx_startPairKern() - end - local one = new_glyph(fontid,first) - local two = new_glyph(fontid,second) - local raw = setlink(copy_node(one),copy_node(two)) - local pos = setlink(done and one or copy_node(one),copy_node(two)) - pos, okay = handle_positions(pos,fontid,direction,dataset) - pos = handle_injections(pos) - applyvisuals(raw,visuals) - applyvisuals(pos,visuals) - pos = hpack(pos,"exact",nil,direction) - raw = hpack(raw,"exact",nil,direction) - ctx_NC() if not done then context(f_u(first)) end - ctx_NC() if not done then ctx_dontleavehmode() context(one) end - ctx_NC() context(f_u(second)) - ctx_NC() ctx_dontleavehmode() context(two) - ctx_NC() context("%p",kern) - ctx_NC() ctx_dontleavehmode() context(raw) - ctx_NC() ctx_dontleavehmode() context(pos) - ctx_NC() ctx_NR() - done = true - end - end - if done then - ctx_stopPairKern() - end - if zero > 0 then - ctx_type("zero: %s",zero) - end - end - elseif format == "pair" then - for first, seconds in sortedhash(step.coverage) do - local done = false - local allnull = 0 - local allzero = 0 - local zeronull = 0 - local nullzero = 0 - for second, pair in sortedhash(seconds) do - local pfirst = pair[1] - local psecond = pair[2] - if not pfirst and not psecond then - allnull = allnull + 1 - elseif pfirst == true and psecond == true then - allzero = allzero + 1 - elseif pfirst == true and not psecond then - zeronull = zeronull + 1 - elseif not pfirst and psecond == true then - nullzero = nullzero + 1 - else - if pfirst == true then - pfirst = "all zero" - elseif pfirst then - pfirst = morept(pfirst) - else - pfirst = "no first" - end - if psecond == true then - psecond = "all zero" - elseif psecond then - psecond = morept(psecond) - else - psecond = "no second" - end - if not done then - ctx_startPair() - end - local one = new_glyph(fontid,first) - local two = new_glyph(fontid,second) - local raw = setlink(copy_node(one),copy_node(two)) - local pos = setlink(done and one or copy_node(one),copy_node(two)) - pos, okay = handle_positions(pos,fontid,direction,dataset) - pos = handle_injections(pos) - applyvisuals(raw,visuals) - applyvisuals(pos,visuals) - pos = hpack(pos,"exact",nil,direction) - raw = hpack(raw,"exact",nil,direction) - ctx_NC() if not done then context(f_u(first)) end - ctx_NC() if not done then ctx_dontleavehmode() context(one) end - ctx_NC() context(f_u(second)) - ctx_NC() ctx_dontleavehmode() context(two) - ctx_NC() context(pfirst) - ctx_NC() context(psecond) - ctx_NC() ctx_dontleavehmode() context(raw) - ctx_NC() ctx_dontleavehmode() context(pos) - ctx_NC() ctx_NR() - done = true - end - end - if done then - ctx_stopPair() - end - if allnull > 0 or allzero > 0 or zeronull > 0 or nullzero > 0 then - ctx_type("both null: %s, both zero: %s, zero and null: %s, null and zero: %s", - allnull,allzero,zeronull,nullzero) - end - end - else - -- maybe - end - elseif kind == "gpos_single" then - local format = step.format - if format == "kern" or format == "move" then - local done = false - local zero = 0 - for first, kern in sortedhash(step.coverage) do - if kern == 0 then - zero = zero + 1 - else - if not done then - ctx_startSingleKern() - end - local one = new_glyph(fontid,first) - local raw = copy_node(one) - local pos = copy_node(one) - pos, okay = handle_positions(pos,fontid,direction,dataset) - pos = handle_injections(pos) - applyvisuals(raw,visuals) - applyvisuals(pos,visuals) - pos = hpack(pos,"exact",nil,direction) - raw = hpack(raw,"exact",nil,direction) - ctx_NC() context(f_u(first)) - ctx_NC() ctx_dontleavehmode() context(one) - ctx_NC() context("%p",kern) - ctx_NC() ctx_dontleavehmode() context(raw) - ctx_NC() ctx_dontleavehmode() context(pos) - ctx_NC() ctx_NR() - done = true - end - end - if done then - ctx_stopSingleKern() - end - if zero > 0 then - ctx_type("zero: %i",zero) - end - elseif format == "single" then - local done = false - local zero = 0 - local null = 0 - for first, single in sortedhash(step.coverage) do - if single == false then - null = null + 1 - elseif single == true then - zero = zero + 1 - else - single = morept(single) - if not done then - ctx_startSingle() - end - local one = new_glyph(fontid,first) - local raw = copy_node(one) - local pos = copy_node(one) - pos, okay = handle_positions(pos,fontid,direction,dataset) - pos = handle_injections(pos) - applyvisuals(raw,visuals) - applyvisuals(pos,visuals) - raw = hpack(raw,"exact",nil,direction) - pos = hpack(pos,"exact",nil,direction) - ctx_NC() context(f_u(first)) - ctx_NC() ctx_dontleavehmode() context(one) - ctx_NC() context(single) - ctx_NC() ctx_dontleavehmode() context(raw) - ctx_NC() ctx_dontleavehmode() context(pos) - ctx_NC() ctx_NR() - done = true - end - end - if done then - ctx_stopSingle() - end - if null > 0 then - if zero > 0 then - ctx_type("null: %i, zero: %i",null,zero) - else - ctx_type("null: %i",null) - end - else - if null > 0 then - ctx_type("both zero: %i",zero) - end - end - else - -- todo - end - end - end - end - - local done = false - - for d=1,#datasets do - local dataset = datasets[d] - local sequence = dataset[3] - local kind = sequence.type - if kind == "gpos_contextchain" or kind == "gpos_context" then - local steps = sequence.steps - for i=1,#steps do - local step = steps[i] - local rules = step.rules - if rules then - for i=1,#rules do - local rule = rules[i] - local lookups = rule.lookups - if lookups then - for i=1,#lookups do - local lookup = lookups[i] - if lookup then - local look = lookup[1] - local dnik = look.type - if dnik == "gpos_pair" or dnik == "gpos_single" then - process(dataset,look,dnik,sequence.order,kind) - end - end - end - end - end + local features = resources.features + if features then + local gpos = features.gpos + if gpos and next(gpos) then + context.starttabulate { "|Tl|Tl|Tlp|" } + for feature, scripts in sortedhash(gpos) do + for script, languages in sortedhash(scripts) do + context.NC() + context(feature) + context.NC() + context(script) + context.NC() + context(concat(sortedkeys(languages)," ")) + context.NC() + context.NR() end end - done = true - elseif kind == "gpos_pair" or kind == "gpos_single" then - process(dataset,sequence,kind) - done = true + context.stoptabulate() + else + context("no entries") + context.par() end end - - if done then - return - end - end - - nothing() - end local dynamics = true -function tabletracers.showsubstitutions(specification) - - local tfmdata, fontid, resources = checked(specification) - +function tabletracers.showsubstitutions() + local tfmdata = fonts.hashes.identifiers[font.current()] + local resources = tfmdata.resources if resources then local features = resources.features if features then @@ -567,8 +229,8 @@ function tabletracers.showsubstitutions(specification) for feature, scripts in sortedhash(gsub) do for script, languages in sortedhash(scripts) do for language in sortedhash(languages) do - local tag = formatters["dummy-%s-%s-%s"](feature,script,language) - local fnt = formatters["file:%s*%s"](file.basename(tfmdata.properties.filename),tag) + local tag = format("dummy-%s-%s-%s",feature,script,language) + local fnt = format("file:%s*%s",file.basename(tfmdata.properties.filename),tag) context.definefontfeature ( { tag }, { @@ -597,13 +259,13 @@ function tabletracers.showsubstitutions(specification) local data = makes_sense[i] local script = data.script local language = data.language - ctx_NC() + context.NC() context(data.feature) - ctx_NC() + context.NC() context(script) - ctx_NC() + context.NC() context(language) - ctx_NC() + context.NC() if not dynamics then context.startfont { data.fontname } else @@ -617,160 +279,85 @@ function tabletracers.showsubstitutions(specification) if not dynamics then context.stopfont() end - ctx_NC() - ctx_NR() + context.NC() + context.NR() end context.stoptabulate() - return + else + context("no entries") + context.par() end end end end - - nothing() - end -function tabletracers.showunicodevariants(specification) - - local tfmdata, fontid, resources = checked(specification) +function tabletracers.showunicodevariants() - if resources then + local variants = fonts.hashes.variants[true] - local variants = fonts.hashes.variants[fontid] - - if variants then - context.starttabulate { "|c|c|c|c|c|c|c|" } - for selector, unicodes in sortedhash(variants) do - local done = false - for unicode, variant in sortedhash(unicodes) do - ctx_NC() - if not done then - context("%U",selector) - done = true - end - ctx_NC() - context("%U",unicode) - ctx_NC() - context("%c",unicode) - ctx_NC() - context("%U",variant) - ctx_NC() - context("%c",variant) - ctx_NC() - context("%c%c",unicode,selector) - ctx_NC() - context.startoverlay() - context("{\\color[trace:r]{%c}}{\\color[trace:ds]{%c}}",unicode,variant) - context.stopoverlay() - ctx_NC() - ctx_NR() + if variants then + context.starttabulate { "|c|c|c|c|c|c|c|" } + for selector, unicodes in sortedhash(variants) do + local done = false + for unicode, variant in sortedhash(unicodes) do + context.NC() + if not done then + context("%U",selector) + done = true end + context.NC() + context("%U",unicode) + context.NC() + context("%c",unicode) + context.NC() + context("%U",variant) + context.NC() + context("%c",variant) + context.NC() + context("%c%c",unicode,selector) + context.NC() + context.startoverlay() + context("{\\color[trace:r]{%c}}{\\color[trace:ds]{%c}}",unicode,variant) + context.stopoverlay() + context.NC() + context.NR() end - context.stoptabulate() - return end - + context.stoptabulate() end - nothing() - end +function tabletracers.showall(specification) -- not interfaced + specification = interfaces.checkedspecification(specification) -local function collectligatures(steps) - - local series = { } - local stack = { } - local max = 0 - - local function make(tree) - for k, v in sortedhash(tree) do - if k == "ligature" then - local n = #stack - if n > max then - max = n - end - series[#series+1] = { v, unpack(stack) } - else - insert(stack,k) - make(v) - remove(stack) - end - end + if specification.title then + context.starttitle { title = specification.title } end - for i=1,#steps do - local step = steps[i] - local coverage = step.coverage - if coverage then - make(coverage) - end - end + context.startsubject { title = "Properties" } + tabletracers.showproperties() + context.stopsubject() - return series, max -end + context.startsubject { title = "Parameters" } + tabletracers.showparameters() + context.stopsubject() -local function banner(index,kind,order) - ctx_sequence("sequence: %i, kind: %s, features: % t",index,noprefix(kind),order) -end - -function tabletracers.showligatures(specification) + context.startsubject { title = "Positioning features" } + tabletracers.showpositionings() + context.stopsubject() - local tfmdata, fontid, resources = checked(specification) + context.startsubject { title = "Substitution features" } + tabletracers.showsubstitutions() + context.stopsubject() - if resources then + context.startsubject { title = "Unicode variants" } + tabletracers.showunicodevariants() + context.stopsubject() - local characters = tfmdata.characters - local descriptions = tfmdata.descriptions - local sequences = resources.sequences - if sequences then - local done = true - for index=1,#sequences do - local sequence = sequences[index] - local kind = sequence.type - if kind == "gsub_ligature" then - local list, max = collectligatures(sequence.steps) - if #list > 0 then - banner(index,kind,sequence.order or { }) - context.starttabulate { "|T|" .. string.rep("|",max) .. "|T|T|" } - for i=1,#list do - local s = list[i] - local n = #s - local u = s[1] - local c = characters[u] - local d = descriptions[u] - ctx_NC() - context("%U",u) - ctx_NC() - ctx_setfontid(fontid) - ctx_char(u) - ctx_NC() - ctx_setfontid(fontid) - for i=2,n do - ctx_char(s[i]) - ctx_NC() - end - for i=n+1,max do - ctx_NC() - end - context(d.name) - ctx_NC() - context(c.tounicode) - ctx_NC() - ctx_NR() - end - context.stoptabulate() - done = true - end - end - end - if done then - return - end - end + if title then + context.stoptitle() end - nothing() - end diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.mkiv index f1340c3eac4..64fe76f0e4b 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-tables.mkiv @@ -17,28 +17,10 @@ \registerctxluafile{s-fonts-tables}{} -\definetabulate[Pair] [|T|cw(3em)|T|cw(3em)|Tw(10em)|Tw(10em)|cw(4em)|cw(4em)|] -\definetabulate[Single] [|T|cw(3em)|Tw(10em)|cw(4em)|cw(4em)|] -\definetabulate[SingleKern][|T|cw(3em)|Trw(5em)|cw(4em)|cw(4em)|] -\definetabulate[PairKern] [|T|cw(3em)|T|cw(3em)|Trw(5em)|cw(4em)|cw(4em)|] - -\definehead - [sequence] - [subsubject] - [style=\ttbf] - -\definecolor - [bbcolor] - [t=.5,a=1,s=.5] - -\definefontfeature - [boundingbox] - [boundingbox={background,bbcolor}] - +\installmodulecommandluasingle \showfonttables {moduledata.fonts.tables.showall} \installmodulecommandluasingle \showfontproperties {moduledata.fonts.tables.showproperties} \installmodulecommandluasingle \showfontparameters {moduledata.fonts.tables.showparameters} \installmodulecommandluasingle \showfontpositionings {moduledata.fonts.tables.showpositionings} -\installmodulecommandluasingle \showfontligatures {moduledata.fonts.tables.showligatures} \installmodulecommandluasingle \showfontsubstitutions {moduledata.fonts.tables.showsubstitutions} \installmodulecommandluasingle \showfontunicodevariants{moduledata.fonts.tables.showunicodevariants} @@ -52,5 +34,5 @@ [cambria] \starttext - \showfontproperties[name=cambria] + \showfonttables[title=Cambria] \stoptext diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-variable.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-variable.mkiv index 2cd612c7577..d1bf8b69d63 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-variable.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-fonts-variable.mkiv @@ -72,28 +72,28 @@ \char983040\relax\par \stopbuffer -% \showfontvariations -% [font=file:adobevfprototype.otf] + \showfontvariations + [font=file:adobevfprototype.otf] -% \showfontvariations -% [font=file:avenirnextvariable.ttf] + \showfontvariations + [font=file:avenirnextvariable.ttf] -% \showfontvariations -% [font=file:DecoVar-VF.ttf] + \showfontvariations + [font=file:DecoVar-VF.ttf] % \showfontvariations % [font=file:VotoSerifGX.ttf, % max=15] -% \showfontvariations -% [font=file:Selawik-Variable.ttf] + \showfontvariations + [font=file:Selawik-Variable.ttf] -% \showfontvariations -% [font=file:LibreFranklinGX-Romans.ttf] + \showfontvariations + [font=file:LibreFranklinGX-Romans.ttf] - % \showfontvariations - % [font=file:Zycon.ttf, - % sample={\getbuffer[zycon]}] + \showfontvariations + [font=file:Zycon.ttf, + sample={\getbuffer[zycon]}] % \showfontvariations % [font=file:kairossansvariable.ttf] @@ -104,8 +104,8 @@ % \showfontvariations % [font=file:AmstelvarAlpha-VF.ttf] - % \showfontvariations - % [font=file:bahnschrift.ttf] + \showfontvariations + [font=file:bahnschrift.ttf] % \showfontvariations % [font=file:sitka.ttc] diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-languages-hyphenation.lua b/Master/texmf-dist/tex/context/modules/mkiv/s-languages-hyphenation.lua index 65fd1ab1443..6d3cf3d3e83 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-languages-hyphenation.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-languages-hyphenation.lua @@ -29,8 +29,7 @@ local newrule = nodepool.rule local newglue = nodepool.glue local insert_node_after = nuts.insert_after - -local nextglyph = nuts.traversers.glyph +local traverse_by_id = nuts.traverse_id local tonut = nodes.tonut local tonode = nodes.tonode @@ -130,7 +129,7 @@ end local function getlanguage(head,l,left,right) local t = { } - for n in nextglyph, tonut(head) do + for n in traverse_by_id(glyph_code,tonut(head)) do t[n] = { getlang(n), getfield(n,"left"), @@ -149,7 +148,7 @@ function moduledata.languages.hyphenation.showhyphens(head) local marked = { } local cached = { } -- somehow assigning -1 fails - for n in nextglyph, tonut(head) do + for n in traverse_by_id(glyph_code,tonut(head)) do cached[n] = { getlang(n), getfield(n,"left"), diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-languages-system.lua b/Master/texmf-dist/tex/context/modules/mkiv/s-languages-system.lua index d1805057799..3b422db9f2e 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-languages-system.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-languages-system.lua @@ -19,7 +19,7 @@ local ctx_bold = context.bold function moduledata.languages.system.loadinstalled() context.start() - for k, v in sortedhash(registered) do + for k, v in table.sortedhash(registered) do context.language{ k } end context.stop() diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-maps.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-maps.mkiv index 28e88af987f..c7541babc81 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-maps.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-maps.mkiv @@ -135,11 +135,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% 3 versions of layout with matching headers -\definepapersize +\definepapersize [maps] [width=21cm,height=26.5cm] -\setuppapersize +\setuppapersize [maps][maps] \setuplayout[ @@ -360,9 +360,9 @@ \xdef\MapsNumber{\the\numexpr (\the\year-1990)*2+1\relax}% \fi }% \doifnothing\MapsRunningAuthor - {\glet\MapsRunningAuthor\MapsAuthor}% + {\global\let\MapsRunningAuthor\MapsAuthor}% \doifnothing\MapsRunningTitle - {\glet\MapsRunningTitle\MapsTitle}}% + {\global\let\MapsRunningTitle\MapsTitle}}% \def\dostartArticle[#1]{% \MapsBibData[#1] diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-present-dark.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-present-dark.mkiv deleted file mode 100644 index a3b6f6e14af..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-present-dark.mkiv +++ /dev/null @@ -1,357 +0,0 @@ -%D \module -%D [ file=s-present-dark, % tug-2001 -%D version=2018.09.25, % 2000.*.* -%D title=\CONTEXT\ Style File, -%D subtitle=Presentation Environment Dark, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\startmodule[present-dark] - -%D The original document dates from 2000 and was meant for a presentation at \TUG\ -%D 2001. It used widgets and in particular check fields and push buttons. -%D \JAVASCRIPT\ was used to show or hide them when rolling over, and appearances -%D changed in a subtle way. It actually worked quite well at that time. -%D -%D However, over time these widgets proved to be sort of unstable. For instance we -%D used the parent|-|child model of which (inheritance and appearance) behaviour -%D changed over time. We're talking of a few decades ago when \TEX\ was one of the -%D few (maybe only) tools that could actually support everything that the manual -%D introduced: the \quote {standard} seemed to be ahead of the viewer. Anyway, we -%D adapted but it meant that old document in principle were not always future proof. -%D -%D We used in this document a push button in the background of the menu so that it -%D could become visible when rolled over. There were no layers in \PDF\ at that -%D time! Nowadays such a trick doesn't work well because of the way a viewer -%D intercepts regions. One gets kind of erratic behaviour when applying \JAVASCRIPT. -%D -%D I spent quite some time to test if we could still do the same without side -%D effects and in the process also noticed that some functionality in \JAVASCRIPT\ -%D seems broken (or changed due to maybe security issues). So, in the end I decided -%D to simplify the approach and use layers to pop up the menu when the mouse goes -%D over it but no longer hide it when the mouse leaves that area. It just doesn't -%D work too well otherwise. - -%D We start with the layout. We basically have three areas: edge, margin and text. -%D Each are more or less the same width. - -\setuppapersize - [S6][S6] - -\setuplayout - [backspace=380pt, - topspace=20pt, - leftedge=100pt, - leftedgedistance=10pt, - leftmargin=230pt, - leftmargindistance=20pt, - header=0pt, - footer=0pt, - width=200pt, - backspace=360pt, - width=220pt, - leftmargin=210pt, - height=middle] - -%D The bodyfont is the Latin Modern Variable (of course at that time we used -%D the Computer Modern predecessors). We still apply protrusion and expansion. -%D The new \quotation {Modern Latin} look also works ok on screen. - -\definefontfeature - [default] - [default] - [expansion=pure, - protrusion=pure] - -\setupalign - [verytolerant,stretch,hanging] % space - -\setupbodyfont - [modernvariable,11pt] - -% \setupbodyfont -% [modernlatin,11pt] - -\setupinmargin - [style=, - color=] - -%D We use some predefined \JAVASCRIPT\ functions. These are rather old helpers. -%D Normally only the libraries (sets of functions) that are used will be -%D embedded. - -\useJSscripts[fld] -\useJSscripts[nav] - -%D The remarks that will pop up. By default they are not visible. Clicking -%D on the page (or menu item) will show them step by step. - -\newcounter\bofremarks -\newcounter\nofremarks - -\setupfield - [remark] - [offset=overlay, - option={readonly,hidden}, - color=, - style=, - frame=off] - -\defineframed - [remarkable] - [frame=off, - backgroundcolor=white, - background=RollBackground] - -\starttexdefinition unexpanded remark #1#2 - - \doglobal\increment\nofremarks - - \definesymbol - [remark:x:\nofremarks] - [\remarkable{#1}] - - \definesymbol - [remark:y:\nofremarks] - [\remarkable{#2}] - - \definefield - [remark:x:\nofremarks][check][remark] - [remark:x:\nofremarks] - [remark:x:\nofremarks] - - \definefield - [remark:y:\nofremarks][check][remark] - [remark:y:\nofremarks] - [remark:y:\nofremarks] - - \inleft - [scope=local] - { - \hpack to \hsize { - \hss - \linebox { - \fitfield[remark:y:\nofremarks] - } - } - } - - \bgroup - - \setbox\scratchbox\hbox { - #1 - } - - \hpack to \wd\scratchbox { - \wd\scratchbox\zeropoint - \box\scratchbox - \hss - \linebox { - \fitfield[remark:x:\nofremarks] - } - \hss - } - - \egroup - -\stoptexdefinition - -%D We use lots of backgrounds. The \METAPOST\ graphics are a bit overkill -%D but we keep them. - -\setupbackgrounds - [text] - [background=StepFields] - -\defineoverlay - [StepFields] - [\directsetup{syncrefs}\overlaybutton{ShowRemark}] - -\setupbackgrounds - [page] - [background=PageBackground] - -%D Just look in \type {java-imp-fld.mkiv} how \type {HideFields} and -%D alike are defined. They are defined references to \JAVASCRIPT\ calls. - -\setupinteraction - [state=start, - click=no, - menu=on, - style=, - color=, - frame=off, - contrastcolor=] - -\setupinteractionscreen - [option=max] - -\setupbackgrounds - [paper] - [background=color, - backgroundcolor=black] - -\defineoverlay - [PageBackground] - [\useMPgraphic{PageBackground}] - -\startuseMPgraphic{PageBackground} - StartPage ; - numeric w ; w := 1.25 * PaperWidth ; - numeric n ; n := 2.50 * PageNumber ; - numeric d ; d := (1 + (PageNumber-1)/5) * 5pt ; - fill Page - withcolor black ; - for i=1 upto 500 : - draw - center Page - randomized w - rotatedaround(center Page,n) - withpen pencircle - scaled (uniformdeviate d) - withcolor - (yellow randomized (.3,.8)) - ; - endfor ; - StopPage ; -\stopuseMPgraphic - -\defineoverlay - [TextBackground] - [\uniqueMPgraphic{TextBackground}] - -\startuniqueMPgraphic{TextBackground} - fill - OverlayBox - withcolor black ; - draw - OverlayBox - withpen pencircle scaled 1pt - withcolor OverlayColor ; -\stopuniqueMPgraphic - -\defineoverlay - [RollBackground] - [\uniqueMPgraphic{RollBackground}] - -\startuniqueMPgraphic{RollBackground} - fill - OverlayBox - withcolor black ; - draw - OverlayBox - withpen pencircle scaled 1pt - withcolor OverlayColor ; -\stopuniqueMPgraphic - -\setupinteractionmenu - [left] - [state=start, - width=\leftedgewidth, - frame=on, - framecolor=white, - rulethickness=1pt, - foregroundcolor=white, - background=RollBackground] - -\startsetups syncrefs - \normalexpanded { - \definereference - [ShowRemark] - [StepFields{remark:x,\bofremarks,\nofremarks}, - StepFields{remark:y,\bofremarks,\nofremarks}] - } -\stopsetups - -%D The menu buttons used to be rollover buttons but are now normal simple -%D ones (more predictable). - -\defineviewerlayer - [buttons] - -\startinteractionmenu[left] - \vfill - \directsetup{syncrefs} - \startviewerlayer[buttons] - \startbut [previouspage,HideFields] Previous \stopbut - \startbut [nextpage,HideFields] Next \stopbut - \startbut [ShowRemark] Remark \stopbut - \startbut [HideFields] Reset \stopbut - \startbut [CloseDocument,HideFields] Quit \stopbut - \stopviewerlayer -\stopinteractionmenu - -\setupinteraction - [closeaction=ForgetChanges, - openpageaction={HideFields,HideLayer{buttons}}, - closepageaction={HideFields,HideLayer{buttons}}] - -\defineoverlay - [ShowMenu] - [\overlayrollbutton{VideLayer{buttons}}{}] - -\setupbackgrounds - [text][leftedge] - [backgroundoffset=10pt, - background=ShowMenu] - -%D The environment has been adapted a bit. Instead of taking two -%D arguments we now use a key|-|value approach. The remark is shown -%D when one rolls over the title (author). - -\defineframedtext - [MainText] - [frame=off, - offset=10pt, - width=\textwidth, - before=, - after=, - color=, - foregroundcolor=white, - background=TextBackground, - backgroundcolor=white] - -\starttexdefinition unexpanded StartIdea - \dosingleempty{\texdefinition{StartIdeaIndeed}} -\stoptexdefinition - -\starttexdefinition StartIdeaIndeed [#1] - \let\bofremarks\nofremarks - \increment\bofremarks - \startstandardmakeup - \setvariables[Idea][#1] - \startMainText - \setupalign[verytolerant,stretch,hanging] -\stoptexdefinition - -\starttexdefinition unexpanded StopIdea - \doifvariable {Idea} {text} { - \blank - \rightaligned { - \doifelsevariable {Idea} {remark} { - \tooltip - [left] - {\getvariable{Idea}{title}} - {\getvariable{Idea}{remark}} - } { - \getvariable{Idea}{title} - } - } - } - \stopMainText - \vfill - \stopstandardmakeup -\stoptexdefinition - -\stopmodule - -\continueifinputfile{s-present-dark.mkiv} - -\usemodule[present-common] - -\inputpresentationfile{tug/2001/tug-2001-ideas.tex} diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-present-steps.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-present-steps.mkiv deleted file mode 100644 index 432650a5ed9..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-present-steps.mkiv +++ /dev/null @@ -1,177 +0,0 @@ -%D \module -%D [ file=s-present-steps, -%D version=2018.05.17, -%D title=\CONTEXT\ Style File, -%D subtitle=Presentation Environment Repeated Steps, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D This a preliminary module, a quick hack and not entirely proper \CONTEXT, but -%D let's see what more is needed. - -\startmodule[present-steps] - -\startluacode - -moduledata.steps = moduledata.steps or { } - -local steps = moduledata.steps -local data = { } -local name = "unknown" -local set = 0 -local settings = nil - -function steps.startsteps(buffername) - set = set + 1 - data = { } - name = buffername -end - -function steps.stopsteps() - local n = 0 - for i=1,#data do - local state = "once" - local done = 0 - while true do - context.startprocessingsteps() - for j=1,i do - local step = data[j] - local nested = step.nested - local content = step.content - local last = (i == #data) and (j == i) and 1 or 0 - local option = step.option - local flush = true - if option == interfaces.variables["title"] then - if i > 1 then - flush = false - end - elseif option == interfaces.variables["repeat"] then - if i == 1 then - flush = false - end - end - if flush then - if j < i or nested == 0 then - context(function() - buffers.assign("step",content) - context.processstep("step",i,0,last) - -- context.writestatus("step a",string.formatters["%i %i %i"](i,0,last)) - end) - state = "done" - else - done = done + 1 - local d = done - context(function() - buffers.assign("step",content) - context.processstep("step",i,d,last) - -- context.writestatus("step b",string.formatters["%i %i %i"](i,d,last)) - end) - if done == nested then - state = "done" - n = n + nested - else - state = "busy" - end - end - end - end - context.stopprocessingsteps() - if state == "done" then - break - end - end - end -end - -function steps.startstep(str) - settings = utilities.parsers.settings_to_hash(str) -end - -function steps.stopstep() - settings.content = buffers.getcontent(name) - settings.nested = tonumber(settings.n) or 0 - data[#data+1] = settings -end - -function steps.startsubstep(str) - local d = data[#data] - d.nested = d.nested + 1 -end - -function steps.stopsubstep() -end - -\stopluacode - -\definebuffer - [step] - -\def\currentstep {0} -\def\currentsubstep{0} - -\unexpanded\def\startprocessingsteps - {\global\wantedsubstep\zerocount} - -\unexpanded\def\stopprocessingsteps - {} - -\unexpanded\def\processstep#1#2#3#4% - {\par - \edef\currentstep {#2}% - \edef\currentsubstep{#3}% - \ifcase#4\relax - \setupreferencing[prefix=#2:#3] - \getbuffer[#1]% - \par - \else - \setupreferencing[prefix=] - \getbuffer[#1]% - \page - \fi} - -\let\normalstartstep\startstep - -\newcount\wantedsubstep - -\unexpanded\def\startsteps - {\ctxlua{moduledata.steps.startsteps("\thedefinedbuffer{step}")}} - -\unexpanded\def\stopsteps - {\ctxlua{moduledata.steps.stopsteps()}} - -\unexpanded\def\startstep - {\dosingleempty\startstepindeed} - -\def\startstepindeed[#1]% - {\ctxlua{moduledata.steps.startstep("#1")}% - \normalstartstep} - -\unexpanded\def\stopstep - {\ctxlua{moduledata.steps.stopstep()}} - -\let\stopsubstep\relax - -\unexpanded\def\startsubstep#1\stopsubstep - {\ctxlua{moduledata.steps.startsubstep()}% - \ifcase\currentsubstep\relax - #1% - \else - \global\advance\wantedsubstep\plusone - \ifnum\currentsubstep>\wantedsubstep\else - #1% - \fi - \fi - \ctxlua{moduledata.steps.stopsubstep()}} - -\stopmodule - -\continueifinputfile{s-present-steps.mkiv} - -\usemodule[present-common] - -\inputpresentationfile{examples/present-steps-001.tex} diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-references-identify.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-references-identify.mkiv deleted file mode 100644 index 85187be9dc0..00000000000 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-references-identify.mkiv +++ /dev/null @@ -1,69 +0,0 @@ -%D \module -%D [ file=s-references-identity, -%D version=2018.09.15, -%D title=\CONTEXT\ Style File, -%D subtitle=Analyze References, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -% begin info -% -% title : analyze reference -% -% comment : show the building blocks of a reference (list) -% -% end info - -\startmodule[references-identify] - -\startluacode - -moduledata.references = moduledata.references or { } - -local context = context -local NC, NR = context.NC, context.NR -local bold = context.bold -local text = context - -function moduledata.references.show(str) - local t = structures.references.identify(str) - context.starttabulate { "|T|T|T|" } - for i=1,#t do - if i == 1 then - context.FL() - else - context.ML() - end - local ti = t[i] - NC() bold(i) NC() bold("reference") NC() bold(ti.reference) NC() NR() - NC() NC() text("kind") NC() text(ti.kind) NC() NR() - NC() NC() text("operation") NC() text(ti.operation) NC() NR() - NC() NC() text("arguments") NC() text(ti.arguments) NC() NR() - NC() NC() text("special") NC() text(ti.special) NC() NR() - end - context.LL() - context.stoptabulate() -end - -\stopluacode - -\installmodulecommandluasingle \showreference {moduledata.references.show} - -\stopmodule - -\continueifinputfile{s-references-identify.mkiv} - -\usemodule[art-01] - -\starttext - - \showreference[page(123),StartMovie{mymovie}] - \showreference[JS(Forget_Changes),CloseDocument] - \showreference[manual::contents] - -\stoptext diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-xml-analyzers.lua b/Master/texmf-dist/tex/context/modules/mkiv/s-xml-analyzers.lua index 93c6c37b661..6e7f7f2baf9 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-xml-analyzers.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-xml-analyzers.lua @@ -230,12 +230,6 @@ local f_template = formatters [ [[ %% setups -\xmlregistersetup{xml:presets:all} - -\starttext - \xmlprocessfile{main}{somefile.xml}{} -\stoptext - %s ]] ] diff --git a/Master/texmf-dist/tex/context/modules/mkiv/s-youless.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/s-youless.mkiv index e218e6110b4..d8b6e2ff6cd 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/s-youless.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/s-youless.mkiv @@ -33,26 +33,7 @@ moduledata.youless = { } - local defaults = { - electricity = { - unit = "watt", - maxunit = "maxwatt", - }, - watt = { - unit = "watt", - maxunit = "maxwatt", - }, - pulse = { - unit = "watt", - maxunit = "maxwatt", - }, - gas = { - unit = "liters", - maxunit = "maxliters", - }, - } - - local function process(specification,thevariant) + local function process(specification) local data, message = utilities.youless.analyze(specification.filename or "youless-electricity.lua") @@ -61,32 +42,12 @@ return end + local year = tonumber(specification.year) or os.today().year + local years = data.years local variant = data.variant local unit = specification.unit local maxunit = specification.maxunit - if thevariant then - if variant ~= thevariant then - context("invalid variant") - return - end - elseif variant then - local d = defaults[variant] - if d then - unit = d.unit - maxunit = d.maxunit - else - context("unknown variant") - return - end - else - context("invalid variant") - return - end - - local year = tonumber(specification.year) or os.today().year - local month = tonumber(specification.month) - local years = data.years local max = specification[maxunit] if not max then @@ -99,19 +60,16 @@ end end - local firstmonth = month or 1 - local lastmonth = month or 12 - local max = max local delta = round(max/10) local scale = round(delta/20) local mark = 3 for y=year,year do - local year = years[y] + local year = years[y] if year then local grand = 0 - for m=firstmonth,lastmonth do + for m=1,12 do local month = year.months[m] if month then context.startMPpage { offset = "10pt" } @@ -209,7 +167,7 @@ function moduledata.youless.electricity(specification) specification.unit = "watt" specification.maxunit = "maxwatt" - process(specification,"electricity") + process(specification) end moduledata.youless.watt = moduledata.youless.electricity @@ -217,16 +175,12 @@ function moduledata.youless.gas(specification) specification.unit = "liters" specification.maxunit = "maxliters" - process(specification,"gas") + process(specification) end function moduledata.youless.pulse(specification) specification.unit = "watt" specification.maxunit = "maxwatt" - process(specification,"pulse") - end - - function moduledata.youless.graphics(specification) process(specification) end diff --git a/Master/texmf-dist/tex/context/modules/mkiv/x-asciimath.lua b/Master/texmf-dist/tex/context/modules/mkiv/x-asciimath.lua index 677ab0ce562..b0d45659e30 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/x-asciimath.lua +++ b/Master/texmf-dist/tex/context/modules/mkiv/x-asciimath.lua @@ -132,12 +132,6 @@ local reserved = { ["overbar"] = { false, "\\overline", "unary" }, ["overline"] = { false, "\\overline", "unary" }, ["underline"] = { false, "\\underline", "unary" }, - ["overbrace"] = { false, "\\overbrace", "unary" }, - ["underbrace"]= { false, "\\underbrace", "unary" }, - ["overset"] = { false, "\\overset", "unary" }, - ["underset"] = { false, "\\underset", "unary" }, - ["obrace"] = { false, "\\overbrace", "unary" }, - ["ubrace"] = { false, "\\underbrace", "unary" }, ["ul"] = { false, "\\underline", "unary" }, ["vec"] = { false, "\\overrightarrow", "unary" }, ["dot"] = { false, "\\dot", "unary" }, -- 0x2D9 @@ -149,7 +143,6 @@ local reserved = { ["-"] = { true, "-" }, ["*"] = { true, "⋅" }, ["**"] = { true, "⋆" }, - ["////"] = { true, "⁄⁄" }, -- crap ["//"] = { true, "⁄" }, -- \slash ["\\"] = { true, "\\" }, ["xx"] = { true, "×" }, @@ -756,14 +749,11 @@ end reserved.P = nil reserved.S = nil - local isbinary = { ["\\frac"] = true, ["\\root"] = true, ["\\asciimathroot"] = true, ["\\asciimathstackrel"] = true, - ["\\overset"] = true, - ["\\underset"] = true, } local isunary = { -- can be taken from reserved @@ -782,10 +772,6 @@ local isunary = { -- can be taken from reserved ["\\dot"] = true, -- ["\\ddot"] = true, -- - ["\\overbrace"] = true, - ["\\underbrace"] = true, - ["\\obrace"] = true, - ["\\ubrace"] = true, } local isfunny = { @@ -1729,14 +1715,8 @@ local function collapse_fractions_2(t) while i < n do local current = t[i] if current == "⁄" and i > 1 then -- \slash - if i < n and t[i+1] == "⁄" then - -- crap for - t[m] = "{" .. s_left .. t[i-1] .. s_mslash .. s_mslash .. t[i+2] .. s_right .. "}" - i = i + 3 - else - t[m] = "{" .. s_left .. t[i-1] .. s_mslash .. t[i+1] .. s_right .. "}" - i = i + 2 - end + t[m] = "{" .. s_left .. t[i-1] .. s_mslash .. t[i+1] .. s_right .. "}" + i = i + 2 if i < n then m = m + 1 t[m] = t[i] diff --git a/Master/texmf-dist/tex/context/modules/mkiv/x-mathml.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/x-mathml.mkiv index adc49431407..ea7f7d2e9ce 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/x-mathml.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/x-mathml.mkiv @@ -350,7 +350,7 @@ % % \def\postponedMMLactions % {\global\setfalse\somepostponedMMLactions -% \expandafter\global\expandafter\@@postponedMMLactions\expandafter\emptytoks +% \@EA\global\@EA\@@postponedMMLactions\@EA\emptytoks % \the\@@postponedMMLactions} \startxmlsetups mml:apply diff --git a/Master/texmf-dist/tex/context/modules/mkiv/x-setups-basics.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/x-setups-basics.mkiv index 51c9253975b..be96466b8bc 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/x-setups-basics.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/x-setups-basics.mkiv @@ -66,13 +66,6 @@ \unprotect -% We might apply this locally! - -\setupxml - [\c!entities=\v!yes] - -% So far. - \defineregister [texmacro] @@ -517,11 +510,14 @@ {\doifelsenextoptionalcs\cmd_show_setup_yes\cmd_show_setup_nop} \def\cmd_show_setup_yes[#1]% - {\cmd_show_setup_nop{#1}} + {\iffirstargument + \cmd_show_setup_nop{#1}% + \else + \expandafter\cmd_show_setup_nop + \fi} \def\cmd_show_setup_nop#1% this will trigger 'used' - {\begingroup - \registersort[texcommand][#1]% + {\registersort[texcommand][#1]% \ifconditional\c_cmd_show_setup \writestatus{setup}{#1 / \rawsynonymname{texcommand}{#1}}% \fi @@ -538,8 +534,7 @@ \let\m_cmd_instance\empty \fi \stopelement - \stopelement - \endgroup} + \stopelement} \unexpanded\def\placesetup {\placelistofsorts[texcommand][\c!criterium=\v!used]} \unexpanded\def\placeallsetups{\placelistofsorts[texcommand][\c!criterium=\v!all ]} diff --git a/Master/texmf-dist/tex/context/modules/mkiv/x-setups-overview.mkiv b/Master/texmf-dist/tex/context/modules/mkiv/x-setups-overview.mkiv index 512db3bd14f..f6dff12f5f2 100644 --- a/Master/texmf-dist/tex/context/modules/mkiv/x-setups-overview.mkiv +++ b/Master/texmf-dist/tex/context/modules/mkiv/x-setups-overview.mkiv @@ -102,9 +102,8 @@ numeric h, w; boolean mapping ; path p, q, r ; color f, d ; pair s ; h := OverlayHeight ; w := 2*OverlayWidth ; r := unitsquare xyscaled (w,h) ; - fill r withcolor resolvedcolor("lightgray") ; - % mapping := lua.mp.processingmode("setups:mapping") ; - mapping := lua.mp("processingmode","setups:mapping") ; + fill r withcolor \MPcolor{lightgray} ; + mapping := lua.mp.processingmode("setups:mapping") ; if mapping : set_grid(w,h,w/8,w/160) ; pickup pensquare yscaled (w/80) ; @@ -115,8 +114,8 @@ forever : s := center r randomized (w,h) ; if new_on_grid(xpart s, ypart s) : - d := .5[resolvedcolor("LocalColor"),resolvedcolor("lightgray")] randomized (.5,.9) ; - f := resolvedcolor("lightgray") randomized (.5,.9) ; + d := .5[\MPcolor{LocalColor},\MPcolor{lightgray}] randomized (.5,.9) ; + f := \MPcolor{lightgray} randomized (.5,.9) ; s := (dx,dy) ; if mapping : p := (-w/4,0) -- (w/4,0) ; |