From a0e79ce94348b934dcefc38133cd8fed08bd38e3 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 27 Apr 2023 17:10:58 +0200 Subject: 2023-04-27 16:57:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-en.mkii | 3 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/mult-prm.lua | 2 +- tex/context/base/mkiv/status-files.pdf | Bin 24649 -> 24650 bytes tex/context/base/mkiv/status-lua.pdf | Bin 271246 -> 271361 bytes tex/context/base/mkxl/cldf-pos.lmt | 152 ++++++++++++++------- tex/context/base/mkxl/cldf-pos.mkxl | 20 ++- tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/luat-cnf.lmt | 2 +- tex/context/base/mkxl/toks-ini.lmt | 2 + tex/context/base/mkxl/toks-scn.lmt | 2 + tex/context/interface/mkii/keys-en.xml | 3 + tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 17 files changed, 138 insertions(+), 62 deletions(-) (limited to 'tex') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index e41443a84..1b418833b 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{2023.04.27 09:34} +\newcontextversion{2023.04.27 16:54} %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 74541280a..5f1fbaa04 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{2023.04.27 09:34} +\edef\contextversion{2023.04.27 16:54} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-en.mkii b/tex/context/base/mkii/mult-en.mkii index e6c9225e0..ec4f634f8 100644 --- a/tex/context/base/mkii/mult-en.mkii +++ b/tex/context/base/mkii/mult-en.mkii @@ -450,6 +450,7 @@ \setinterfacevariable{printable}{printable} \setinterfacevariable{process}{process} \setinterfacevariable{product}{product} +\setinterfacevariable{profile}{profile} \setinterfacevariable{program}{program} \setinterfacevariable{project}{project} \setinterfacevariable{protected}{protected} @@ -831,6 +832,7 @@ \setinterfaceconstant{exitoffset}{exitoffset} \setinterfaceconstant{expansion}{expansion} \setinterfaceconstant{export}{export} +\setinterfaceconstant{extradata}{extradata} \setinterfaceconstant{extras}{extras} \setinterfaceconstant{factor}{factor} \setinterfaceconstant{fallback}{fallback} @@ -954,6 +956,7 @@ \setinterfaceconstant{lastpage}{lastpage} \setinterfaceconstant{lastpagesep}{lastpagesep} \setinterfaceconstant{lastpubsep}{lastpubsep} +\setinterfaceconstant{lasttextseparator}{lasttextseparator} \setinterfaceconstant{layout}{layout} \setinterfaceconstant{left}{left} \setinterfaceconstant{leftclass}{leftclass} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 1342dc41a..cbe448fc7 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{2023.04.27 09:34} +\newcontextversion{2023.04.27 16:54} %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 71f8d3f74..7c3567153 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -49,7 +49,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2023.04.27 09:34} +\edef\contextversion{2023.04.27 16:54} %D Kind of special: diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua index 239e97a04..37779ec57 100644 --- a/tex/context/base/mkiv/mult-prm.lua +++ b/tex/context/base/mkiv/mult-prm.lua @@ -354,6 +354,7 @@ return { "firstvalidlanguage", "float", "floatdef", + "floatexpr", "flushmarks", "fontcharba", "fontcharta", @@ -599,7 +600,6 @@ return { "pardirection", "permanent", "pettymuskip", - "posexpr", "positdef", "postexhyphenchar", "posthyphenchar", diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index cae5837bf..dddda9577 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index a47b73f9f..087e77bf3 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkxl/cldf-pos.lmt b/tex/context/base/mkxl/cldf-pos.lmt index 40c88c716..9378b01be 100644 --- a/tex/context/base/mkxl/cldf-pos.lmt +++ b/tex/context/base/mkxl/cldf-pos.lmt @@ -21,13 +21,15 @@ local posittonumber = posit.tonumber local values = tokens.values local boolean_code = values.boolean +local float_code = values.float -do +local scanners = tokens.scanners +local scanposit = scanners.posit +local scanfloat = scanners.float +local scaninteger = scanners.integer +local scancsname = scanners.csname - local scanners = tokens.scanners - local scanfloat = scanners.float - local scaninteger = scanners.integer - local scancsname = scanners.csname +do -- these are only for testing and might go to a module eventually local codes = tex.codes @@ -78,60 +80,108 @@ do end, } -end + do -do - - local p_number = lpeg.patterns.number - local p = lpeg.Cs( - lpeg.Cc("local new = new ; return ") - * ( - lpeg.C(p_number) / function(s) - return "new(" .. s .. ")" - end - + lpeg.P(1) - )^0 - ) + local p_number = lpeg.patterns.number + local p = lpeg.Cs( + lpeg.Cc("local new = new ; return ") + * ( + lpeg.C(p_number) / function(s) + return "new(" .. s .. ")" + end + + lpeg.P(1) + )^0 + ) - local t = setmetatableindex({ new = posit.new }, posit) + local t = setmetatableindex({ new = posit.new }, posit) - local function calculate(s) - local new = lpegmatch(p,s) - new = load(new,nil,nil,t) - if new then - new = new() + local function calculate(s) + local new = lpegmatch(p,s) + new = load(new,nil,nil,t) if new then - return new + new = new() + if new then + return new + end end + return old end - return old - end - implement { - name = "positunum", - public = true, - arguments = "string", - actions = function(s) - local r = calculate(s) - local t = type(r) - if t == "boolean" then - context(tostring(r)) - elseif t == "string" then - context(r) - else - context("%N",posittonumber(r)) + implement { + name = "positunum", + public = true, + arguments = "string", + actions = function(s) + local r = calculate(s) + local t = type(r) + if t == "boolean" then + context(tostring(r)) + elseif t == "string" then + context(r) + else + context("%N",posittonumber(r)) + end end - end - } + } + + implement { + name = "ifpositunum", + public = true, + usage = "condition", + arguments = "string", + actions = function(s) + return boolean_code, calculate(s) and true or false + end, + } - implement { - name = "ifpositunum", - public = true, - usage = "condition", - arguments = "string", - actions = function(s) - return boolean_code, calculate(s) and true or false - end, - } + end + +end + +do + + local xsin = xmath.sin local xasin = xmath.asin local xsinh = xmath.sinh local xasinh = xmath.asinh + local xcos = xmath.cos local xacos = xmath.acos local xcosh = xmath.cosh local xacosh = xmath.acosh + local xtan = xmath.tan local xatan = xmath.atan local xtanh = xmath.tanh local xatanh = xmath.atanh + + local xsqrt = xmath.sqrt + local xlog = xmath.log + local xexp = xmath.exp + local xpow = xmath.pow + local xceil = xmath.ceil + local xfloor = xmath.floor + local xround = xmath.round + local xabs = xmath.fabs + local xmod = xmath.fmod + local xrem = xmath.remainder + local xrad = xmath.rad + local xdeg = xmath.deg + local xatan2 = xmath.atan2 + + implement { name = "pfsin", public = true, usage = "value", actions = function() return float_code, xsin (scanposit(true)) end } + implement { name = "pfcos", public = true, usage = "value", actions = function() return float_code, xcos (scanposit(true)) end } + implement { name = "pftan", public = true, usage = "value", actions = function() return float_code, xtan (scanposit(true)) end } + implement { name = "pfasin", public = true, usage = "value", actions = function() return float_code, xasin (scanposit(true)) end } + implement { name = "pfacos", public = true, usage = "value", actions = function() return float_code, xacos (scanposit(true)) end } + implement { name = "pfatan", public = true, usage = "value", actions = function() return float_code, xatan (scanposit(true)) end } + implement { name = "pfsinh", public = true, usage = "value", actions = function() return float_code, xsinh (scanposit(true)) end } + implement { name = "pfcosh", public = true, usage = "value", actions = function() return float_code, xcosh (scanposit(true)) end } + implement { name = "pftanh", public = true, usage = "value", actions = function() return float_code, xtanh (scanposit(true)) end } + implement { name = "pfasinh", public = true, usage = "value", actions = function() return float_code, xasinh(scanposit(true)) end } + implement { name = "pfacosh", public = true, usage = "value", actions = function() return float_code, xacosh(scanposit(true)) end } + implement { name = "pfatanh", public = true, usage = "value", actions = function() return float_code, xatanh(scanposit(true)) end } + implement { name = "pfsqrt", public = true, usage = "value", actions = function() return float_code, xsqrt (scanposit(true)) end } + implement { name = "pflog", public = true, usage = "value", actions = function() return float_code, xlog (scanposit(true)) end } + implement { name = "pfexp", public = true, usage = "value", actions = function() return float_code, xexp (scanposit(true)) end } + implement { name = "pfceil", public = true, usage = "value", actions = function() return float_code, xceil (scanposit(true)) end } + implement { name = "pffloor", public = true, usage = "value", actions = function() return float_code, xfloor(scanposit(true)) end } + implement { name = "pfround", public = true, usage = "value", actions = function() return float_code, xround(scanposit(true)) end } + implement { name = "pfabs", public = true, usage = "value", actions = function() return float_code, xabs (scanposit(true)) end } + implement { name = "pfrad", public = true, usage = "value", actions = function() return float_code, xrad (scanposit(true)) end } + implement { name = "pfdeg", public = true, usage = "value", actions = function() return float_code, xdeg (scanposit(true)) end } + implement { name = "pfatantwo", public = true, usage = "value", actions = function() return float_code, xatan2(scanposit(true),scanposit(true)) end } + implement { name = "pfpow", public = true, usage = "value", actions = function() return float_code, xpow (scanposit(true),scanposit(true)) end } + implement { name = "pfmod", public = true, usage = "value", actions = function() return float_code, xmod (scanposit(true),scanposit(true)) end } + implement { name = "pfrem", public = true, usage = "value", actions = function() return float_code, xrem (scanposit(true),scanposit(true)) end } end diff --git a/tex/context/base/mkxl/cldf-pos.mkxl b/tex/context/base/mkxl/cldf-pos.mkxl index e8868eece..fb419d070 100644 --- a/tex/context/base/mkxl/cldf-pos.mkxl +++ b/tex/context/base/mkxl/cldf-pos.mkxl @@ -13,8 +13,24 @@ \writestatus{loading}{ConTeXt Posit Numbers / Initialization} -% \newcount\trialtypesettingstate % gets aliased at the Lua end - \registerctxluafile{cldf-pos}{autosuffix} +\newposit\pfpi \pfpi 3.1415926535897932384626433832795028841971 +\newposit\pftwopi \pftwopi \floatexpr \pfpi * 2 \relax + +% \newfloat\fooA +% +% \scratchdimen=123.456pt\relax [\type{dim:} \the\scratchdimen==123.456pt]\par +% \fooA =123.456\relax [\type{pos:} \the\fooA ==123.456] \par +% \fooA =\scratchdimen\relax [\type{pos:} \the\fooA ==123.456] \par +% \scratchdimen=\fooA\relax [\type{dim:} \the\scratchdimen==123.456pt]\par +% \scratchdimen\dimexpr\fooA+10pt\relax[\type{dim:} \the\scratchdimen==133.456pt]\par +% +% \fooA\pfsin \pfpi [\the\fooA]\par +% \fooA\pfcos \pfpi [\the\fooA]\par +% \fooA\pfsqrt\pfpi [\the\fooA]\par +% \fooA\pfexp \pfpi [\the\fooA]\par +% \fooA\pflog \pfpi [\the\fooA]\par +% \fooA\pfpow \pfpi 2 [\the\fooA]\par + \endinput diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index ebc5e13fc..23dc6bbef 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{2023.04.27 09:34} +\newcontextversion{2023.04.27 16:54} %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 1e286f461..9ee1d3803 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{2023.04.27 09:34} +\immutable\edef\contextversion{2023.04.27 16:54} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/luat-cnf.lmt b/tex/context/base/mkxl/luat-cnf.lmt index ea9eb0d89..585941173 100644 --- a/tex/context/base/mkxl/luat-cnf.lmt +++ b/tex/context/base/mkxl/luat-cnf.lmt @@ -60,7 +60,7 @@ function texconfig.init() -- not in luametatex "unicode", "utf", "gzip", "zip", "zlib", -- in luametatex - "xzip", "xmath", "xcomplex", "xdecimal", "basexx", + "xzip", "xmath", "xcomplex", "xdecimal", "basexx", "posit", -- maybe some day in luametatex "lz4", "lzo", -- always (mime can go) diff --git a/tex/context/base/mkxl/toks-ini.lmt b/tex/context/base/mkxl/toks-ini.lmt index e4bf7626f..d45e3ae1c 100644 --- a/tex/context/base/mkxl/toks-ini.lmt +++ b/tex/context/base/mkxl/toks-ini.lmt @@ -48,6 +48,7 @@ local scanvalue = token.scanvalue local scanchar = token.scanchar local scancsname = token.scancsname local scannextchar = token.scannextchar +local scanposit = token.scanposit local scanreal = token.scanreal local scanfloat = token.scanfloat local scanluanumber = token.scanluanumber @@ -160,6 +161,7 @@ tokens.scanners = { -- these expand gluespec = scanskip, integer = scaninteger, cardinal = scancardinal, + posit = scanposit, real = scanreal, float = scanfloat, luanumber = scanluanumber, diff --git a/tex/context/base/mkxl/toks-scn.lmt b/tex/context/base/mkxl/toks-scn.lmt index c08e8415a..855bca6ad 100644 --- a/tex/context/base/mkxl/toks-scn.lmt +++ b/tex/context/base/mkxl/toks-scn.lmt @@ -29,6 +29,7 @@ local scantoks = scanners.toks local scaninteger = scanners.integer local scancardinal = scanners.cardinal local scannumber = scanners.number +local scanfloat = scanners.float local scankeyword = scanners.keyword local scankeywordcs = scanners.keywordcs local scanword = scanners.word @@ -226,6 +227,7 @@ local shortcuts = { scaninteger = scaninteger, scancardinal = scancardinal, scannumber = scannumber, + scanfloat = scanfloat, scantable = scantable, -- not directly useable scankeyword = scankeyword, scankeywordcs = scankeywordcs, diff --git a/tex/context/interface/mkii/keys-en.xml b/tex/context/interface/mkii/keys-en.xml index fae9ee691..80624e8dc 100644 --- a/tex/context/interface/mkii/keys-en.xml +++ b/tex/context/interface/mkii/keys-en.xml @@ -453,6 +453,7 @@ + @@ -837,6 +838,7 @@ + @@ -960,6 +962,7 @@ + diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 5b8498cd4..917ab1b94 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 : 2023-04-27 09:34 +-- merge date : 2023-04-27 16:54 do -- begin closure to overcome local limits and interference -- cgit v1.2.3