diff options
author | Hans Hagen <pragma@wxs.nl> | 2021-06-29 23:24:45 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2021-06-29 23:24:45 +0200 |
commit | ed04388261fdd19e6cc5661225439df6e042bf41 (patch) | |
tree | 8266ef63cfd71f6ebe06180f0e69695664010f5b /tex | |
parent | 070c533456efeba3c0c97908ab9930f00ae7b61c (diff) | |
download | context-ed04388261fdd19e6cc5661225439df6e042bf41.tar.gz |
2021-06-29 23:13:00
Diffstat (limited to 'tex')
21 files changed, 162 insertions, 58 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 430e4c2a7..85130e123 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2021.06.27 16:54} +\newcontextversion{2021.06.29 23:10} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index bc85e355b..60a3d86e2 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2021.06.27 16:54} +\edef\contextversion{2021.06.29 23:10} %D For those who want to use this: diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 28dd93980..d539b2840 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2021.06.27 16:54} +\newcontextversion{2021.06.29 23:10} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index d5bef984a..a79fb76a7 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2021.06.27 16:54} +\edef\contextversion{2021.06.29 23:10} %D Kind of special: diff --git a/tex/context/base/mkiv/lang-ini.lua b/tex/context/base/mkiv/lang-ini.lua index e286233bc..54e5e96f8 100644 --- a/tex/context/base/mkiv/lang-ini.lua +++ b/tex/context/base/mkiv/lang-ini.lua @@ -21,7 +21,7 @@ if not modules then modules = { } end modules ['lang-ini'] = { local type, tonumber, next = type, tonumber, next local utfbyte = utf.byte local format, gsub, gmatch, find = string.format, string.gsub, string.gmatch, string.find -local concat, sortedkeys, sortedpairs, keys, insert = table.concat, table.sortedkeys, table.sortedpairs, table.keys, table.insert +local concat, sortedkeys, sortedhash, keys, insert = table.concat, table.sortedkeys, table.sortedhash, table.keys, table.insert local utfvalues, strip, utfcharacters = string.utfvalues, string.strip, utf.characters local context = context @@ -506,15 +506,6 @@ else return 0 end end - - if CONTEXTLMTXMODE > 0 then - numbers[0] = "null" - registered.null = { - number = 0, - instance = new_language(0), - } - end - end -- not that usefull, global values @@ -590,7 +581,7 @@ languages.logger = languages.logger or { } function languages.logger.report() local result, r = { }, 0 - for tag, l in sortedpairs(registered) do + for tag, l in sortedhash(registered) do if l.loaded then r = r + 1 result[r] = format("%s:%s:%s",tag,l.parent,l.number) diff --git a/tex/context/base/mkiv/luat-cnf.lua b/tex/context/base/mkiv/luat-cnf.lua index 7bb70ce20..a67167bb9 100644 --- a/tex/context/base/mkiv/luat-cnf.lua +++ b/tex/context/base/mkiv/luat-cnf.lua @@ -209,7 +209,7 @@ function texconfig.init() end -CONTEXTLMTXMODE = %s +CONTEXTLMTXMODE = 0 -- we provide a qualified path @@ -256,7 +256,7 @@ local function makestub() end end t[#t+1] = "" - t[#t+1] = format(stub,firsttable,tostring(CONTEXTLMTXMODE or 0)) + t[#t+1] = format(stub,firsttable) io.savedata(name,concat(t,"\n")) logs.newline() end diff --git a/tex/context/base/mkiv/mult-fun.lua b/tex/context/base/mkiv/mult-fun.lua index e9572f983..c0209c89e 100644 --- a/tex/context/base/mkiv/mult-fun.lua +++ b/tex/context/base/mkiv/mult-fun.lua @@ -38,6 +38,9 @@ return { "popparameters", "definecolor", -- + "newrecord", + "getrecord", + -- "anchorxy", "anchorx", "anchory", "anchorht", "anchordp", "anchorul", "anchorll", "anchorlr", "anchorur", diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex 5bf31dc0f..a238c059b 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 2273d06c0..6b0362e36 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/util-tar.lua b/tex/context/base/mkiv/util-tar.lua index 0368a7db5..c8a8536a7 100644 --- a/tex/context/base/mkiv/util-tar.lua +++ b/tex/context/base/mkiv/util-tar.lua @@ -124,7 +124,7 @@ local readers = { return true end, - link = function(t,h) + symbolic = function(t,h) local metadata = t.metadata local filename = h.name local linkname = h.linkname @@ -152,7 +152,7 @@ local skippers = { return fileoffset end, - link = function(t,h) + symbolic = function(t,h) return true end, diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index 2716055d2..9dc2c1797 100644 --- a/tex/context/base/mkxl/cont-new.mkxl +++ b/tex/context/base/mkxl/cont-new.mkxl @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2021.06.27 16:54} +\newcontextversion{2021.06.29 23:10} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl index 4976f4ffe..895f817ae 100644 --- a/tex/context/base/mkxl/context.mkxl +++ b/tex/context/base/mkxl/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} -\immutable\edef\contextversion{2021.06.27 16:54} +\immutable\edef\contextversion{2021.06.29 23:10} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/libs-imp-lzma.lmt b/tex/context/base/mkxl/libs-imp-lzma.lmt index 69762a54c..eeecaf353 100644 --- a/tex/context/base/mkxl/libs-imp-lzma.lmt +++ b/tex/context/base/mkxl/libs-imp-lzma.lmt @@ -9,6 +9,8 @@ if not modules then modules = { } end modules ['libs-imp-lzma'] = { -- Instead of linking in libs like this we now do them optional. After all, once -- we start adding more and more stuff statically we en dup with a mess. +-- e:\tex-context\tex\texmf-win64\bin\lib\luametatex\lzma\liblzma.dll + local libname = "lzma" local libfile = "liblzma" diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt index fc488297f..f3eea58b4 100644 --- a/tex/context/base/mkxl/lpdf-lmt.lmt +++ b/tex/context/base/mkxl/lpdf-lmt.lmt @@ -2488,7 +2488,9 @@ local openfile, closefile do else f = io.open(filename,"wb") if not f then + report() report("quitting because file %a cannot be opened for writing",filename) + report() os.exit() end -- f:setvbuf("full",64*1024) diff --git a/tex/context/base/mkxl/luat-ini.mkxl b/tex/context/base/mkxl/luat-ini.mkxl index abfe510b1..98095a4de 100644 --- a/tex/context/base/mkxl/luat-ini.mkxl +++ b/tex/context/base/mkxl/luat-ini.mkxl @@ -59,7 +59,8 @@ %D It is nicer for checking with \type {s-system-macros} if we have some meaning: \pushoverloadmode - \let\-\explicitdiscretionary + % \aliased\let\-\explicitdiscretionary + \permanent\protected\def\-{\begingroup\hyphenationmode\explicithyphenationmodecode\explicitdiscretionary\endgroup} \popoverloadmode \ifdefined\n \else \mutable\def\n{n} \fi \ifdefined\r \else \mutable\def\r{r} \fi diff --git a/tex/context/base/mkxl/mlib-run.lmt b/tex/context/base/mkxl/mlib-run.lmt index 82ca32c75..231bd4d20 100644 --- a/tex/context/base/mkxl/mlib-run.lmt +++ b/tex/context/base/mkxl/mlib-run.lmt @@ -214,6 +214,7 @@ function metapost.load(name,method) tolerance = bend_tolerance, math_mode = method, run_script = metapost.runscript, + run_internal = metapost.runinternal, script_error = metapost.scripterror, make_text = metapost.maketext, extensions = 1, diff --git a/tex/context/base/mkxl/mlib-scn.lmt b/tex/context/base/mkxl/mlib-scn.lmt index b64533cae..2fb4e7428 100644 --- a/tex/context/base/mkxl/mlib-scn.lmt +++ b/tex/context/base/mkxl/mlib-scn.lmt @@ -92,9 +92,6 @@ local tokenscanners = nil local scanset = nil local scanparameters = nil -scanners.typescanners = typescanners -scanners.tokenscanners = tokenscanners - scanset = function() -- can be optimized, we now read twice scantoken() if scantoken(true) == rightbrace_code then @@ -165,6 +162,9 @@ table.setmetatableindex(tokenscanners,function() return typescanners[e] or scanexpression end) +scanners.typescanners = typescanners +scanners.tokenscanners = tokenscanners + -- a key like 'color' has code 'declare' local function scanparameters(fenced) @@ -179,18 +179,29 @@ local function scanparameters(fenced) end while true do -- local s = scansymbol() - local s = scansymbol(false,false) + local s = scansymbol(false,false) -- keep expand if s == close then break; elseif s == "," then -- continue else - local t = scantoken(true) - if t == equals_code or t == colon_code then +-- local t = scantoken(true) +-- if t == equals_code or t == colon_code then +-- -- optional equal or : +-- scantoken() +-- else +-- end +-- local kind = scantoken(true) + +-- test: +-- + local kind = scantoken(true) + if kind == equals_code or kind == colon_code then -- optional equal or : scantoken() + local kind = scantoken(true) end - local kind = scantoken(true) + if kind == leftdelimiter_code or kind == tag_code or kind == capsule_code then kind = scanexpression(true) data[s] = (typescanners[kind] or scanexpression)() @@ -381,9 +392,11 @@ end -- todo: -local function getparameter() +local function getparameter(v) local list, n = collectnames() - local v = namespaces + if not v then + v = namespaces + end for i=1,n do local l = list[i] local vl = v[l] @@ -752,6 +765,61 @@ function metapost.setparameterset(namespace,t) namespaces[namespace] = t end +-- This is an experiment for Alan and me. + +local records = { } +local stack = setmetatableindex("table") +local nofrecords = 0 +local interim = 0 + +registerdirect("newrecord", function() + scantoken() -- semicolon + local p = get_parameters() + local n = 0 + if interim > 0 then + records[interim] = p + local top = stack[interim] + if top then + top = stack[interim][#top] + if top then + setmetatableindex(p,top) + end + end + n = interim + interim = 0 + else + nofrecords = nofrecords + 1 + records[nofrecords] = p + n = nofrecords + end + return n +end) + +registerdirect("getrecord", function() + local n = scaninteger() + local v = records[n] + while true do + local t = scansymbol(true) + if t == ";" or t == ")" then + return v + elseif t == "." then + scansymbol() + else + t = scansymbol() + v = v[t] + end + end +end) + +function metapost.runinternal(n,m) + if m == 0 then + insert(stack[n],records[n]) + interim = n + elseif m == 1 then + records[n] = remove(stack[n]) or records[n] + end +end + -- goodies registerdirect("definecolor", function() diff --git a/tex/context/base/mkxl/pack-rul.mkxl b/tex/context/base/mkxl/pack-rul.mkxl index c4e510623..bbfd88bfe 100644 --- a/tex/context/base/mkxl/pack-rul.mkxl +++ b/tex/context/base/mkxl/pack-rul.mkxl @@ -1766,6 +1766,12 @@ % \framed[width=2cm,align=middle,location=lohi] {location\\equals\\lohi} % \framed[width=2cm,align=middle,location=middle] {location\\equals\\middle} % B} +% \vskip2cm +% \ruledhbox +% {A +% \framed[width=2cm,align=middle,location=keep] {location\\equals\\top} +% \framed[width=2cm,align=middle,location=formula {location\\equals\\bottom} +% B} \installframedlocator \v!hanging % best with strut=no *1* / see mail to list by SB {} diff --git a/tex/context/base/mkxl/strc-con.mklx b/tex/context/base/mkxl/strc-con.mklx index 5e0ceb833..a7df2f9cf 100644 --- a/tex/context/base/mkxl/strc-con.mklx +++ b/tex/context/base/mkxl/strc-con.mklx @@ -261,7 +261,7 @@ \currentconstructiontext \endgroup} -\protected\setvalue{\??constructionmainhandler\v!construction}#1% +\protected\defcsname\??constructionmainhandler\v!construction\endcsname#1% {\iftrialtypesetting \else \begingroup \currentconstructionsynchronize % reinstated @@ -270,7 +270,7 @@ \endgroup \fi#1} -\protected\setvalue{\??constructiontexthandler\v!construction}% +\protected\defcsname\??constructiontexthandler\v!construction\endcsname {\begingroup \useconstructionstyleandcolor\c!headstyle\c!headcolor % move to \currentconstructiontext \the\everyconstruction @@ -294,7 +294,7 @@ % \def\resetconstructions % to be used in e.g. footnotes % {\c_strc_constructions_nested_state\zerocount} -\protected\setvalue{\??constructioncommandhandler\v!construction}% +\protected\defcsname\??constructioncommandhandler\v!construction\endcsname {\endgroup} \let\p_strc_constructions_sample \empty diff --git a/tex/context/base/mkxl/strc-not.mklx b/tex/context/base/mkxl/strc-not.mklx index a0691d9f1..0adb23566 100644 --- a/tex/context/base/mkxl/strc-not.mklx +++ b/tex/context/base/mkxl/strc-not.mklx @@ -449,7 +449,10 @@ \c_attr_destination\currentconstructionattribute\relax % todo, whole text \signalcharacter \endgroup - \fi#following} + \fi + \ifconditional\c_strc_notes_flushed\else + #following\relax + \fi} \protected\defcsname\??constructionnotehandler\v!notation:\v!note\endcsname % in the running text {\ifnotesenabled @@ -481,6 +484,8 @@ \global\settrue\postponednote \orelse\ifconditional\inlocalnotes % todo: per note class \global\settrue\postponednote + \orelse\ifconditional\c_strc_notes_flushed + \handlenoteitself\currentnote\currentnotenumber \orelse\ifconditional\c_strc_notes_delayed % probably end notes \else @@ -938,28 +943,49 @@ \installcorenamespace{notelocation} \newconditional\c_strc_notes_delayed +\newconditional\c_strc_notes_flushed + +\protected\def\strc_notes_set_delayed_yes{\settrue \c_strc_notes_delayed\setfalse\c_strc_notes_flushed} +\protected\def\strc_notes_set_delayed_nop{\setfalse\c_strc_notes_delayed\setfalse\c_strc_notes_flushed} +\protected\def\strc_notes_set_delayed_lst{\settrue \c_strc_notes_delayed\settrue \c_strc_notes_flushed} + +\defcsname\??notelocation\v!page\endcsname + {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop + \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_page} + +\defcsname\??notelocation\v!columns\endcsname + {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop + \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_columns} + +\defcsname\??notelocation\v!lastcolumn\endcsname + {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop + \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_lastcolumn} + +\defcsname\??notelocation\v!firstcolumn\endcsname + {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop + \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_firstcolumn} -\protected\def\strc_notes_set_delayed_yes{\settrue \c_strc_notes_delayed} -\protected\def\strc_notes_set_delayed_nop{\setfalse\c_strc_notes_delayed} - -\defcsname\??notelocation\v!page \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop - \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_page} -\defcsname\??notelocation\v!columns \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop - \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_columns} -\defcsname\??notelocation\v!lastcolumn \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop - \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_lastcolumn} -\defcsname\??notelocation\v!firstcolumn\endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_nop - \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_firstcolumn} -\defcsname\??notelocation\v!none \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes - \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_none} -\defcsname\??notelocation\v!text \endcsname{\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes - \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_text} -\defcsname\??notelocation\v!high \endcsname{\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_high} -\defcsname\??notelocation\v!bottom \endcsname{\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_bottom} - -\defcsname\??notedelayedvariant \??notedelayedvariant \endcsname{\strc_notes_set_delayed_nop} % not let -\defcsname\??notepositionvariant\??notepositionvariant\endcsname{\strc_notes_set_position_bottom} % not let -\defcsname\??notelocationvariant\??notelocationvariant\endcsname{\strc_notes_set_location_page} % not let +\defcsname\??notelocation\v!none\endcsname + {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes + \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_none} + +\defcsname\??notelocation\v!list\endcsname + {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_lst + \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_none} + +\defcsname\??notelocation\v!text\endcsname + {\letcsname\??notedelayedvariant \currentnote\endcsname\strc_notes_set_delayed_yes + \letcsname\??notelocationvariant\currentnote\endcsname\strc_notes_set_location_text} + +\defcsname\??notelocation\v!high\endcsname + {\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_high} + +\defcsname\??notelocation\v!bottom\endcsname + {\letcsname\??notepositionvariant\currentnote\endcsname\strc_notes_set_position_bottom} + +\defcsname\??notedelayedvariant \??notedelayedvariant \endcsname{\strc_notes_set_delayed_nop } % not \let +\defcsname\??notepositionvariant\??notepositionvariant\endcsname{\strc_notes_set_position_bottom} % not \let +\defcsname\??notelocationvariant\??notelocationvariant\endcsname{\strc_notes_set_location_page } % not \let \protected\def\strc_notes_set_delayed {\csname\??notedelayedvariant @@ -1261,7 +1287,9 @@ \begstrut \strc_references_flush_destination_nodes \strc_notes_set_destination_attribute_text - \strc_notes_inject_text\relax + \ifconditional\c_strc_notes_flushed\else + \strc_notes_inject_text\relax + \fi \ifvmode\obeydepth\else\endstrut\fi % \obeydepth is new per 2015-01-10 \strc_constructions_stored_stop %endgroup @@ -1270,6 +1298,8 @@ \protected\def\strc_notes_inject_text % hm main? {\clf_savedlisttitle{\currentconstructionmain}\currentconstructionlistentry\relax} +\installstructurelistprocessor{construction}{\usestructurelistprocessor{section}} + \newsignal\d_strc_notes_signal \newconditional\processingnote diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 48cd432b5..4a2afb265 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 2021-06-27 16:54 +-- merge date : 2021-06-29 23:10 do -- begin closure to overcome local limits and interference |