summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-08-28 20:05:19 +0000
committerKarl Berry <karl@freefriends.org>2023-08-28 20:05:19 +0000
commitcf72ca7bebb7527f437656adb6697bf6ed6f5ac1 (patch)
treebc039de51378e840d3acecf4cd746e1a3e49e3f0 /Master/texmf-dist/tex/luatex
parentec27223e000735d66cd64e75c0ad530ec299d0f4 (diff)
penlightplus (28aug23)
git-svn-id: svn://tug.org/texlive/trunk@68098 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex')
-rw-r--r--Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua57
-rw-r--r--Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty117
2 files changed, 142 insertions, 32 deletions
diff --git a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
index ffdbe89bc58..96eb565fb65 100644
--- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
+++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
@@ -1,5 +1,5 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2023-07-22
+--% 2023-08-27
--% Copyright (C) 2021-2023 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -67,6 +67,10 @@ penlight.tex._xTrue = '\\BooleanTrue '
penlight.tex._xFalse = '\\BooleanFalse '
penlight.tex._xNoValue = '-NoValue-'
+penlight.tex.xTrue = '\\BooleanTrue '
+penlight.tex.xFalse = '\\BooleanFalse '
+penlight.tex.xNoValue = '-NoValue-'
+
--Generic LuaLaTeX utilities for print commands or environments
if not __PL_SKIP_TEX__ then
@@ -138,6 +142,8 @@ function penlight.tex.help_wrt(s1, s2) -- helpful printing, makes it easy to deb
wrt2('\n^^^^^\n')
end
penlight.help_wrt = penlight.tex.help_wrt
+penlight.wrth = penlight.help_wrt
+penlight.tex.wrth = penlight.help_wrt
function penlight.tex.prt_array2d(t)
for _, r in ipairs(t) do
@@ -171,9 +177,10 @@ end
--definition helpers -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-function penlight.tex.defmacro(cs, val) -- , will not work if val contains undefined tokens (so pre-define them if using..)
+function penlight.tex.defmacro(cs, val, g) -- , will not work if val contains undefined tokens (so pre-define them if using..)
val = val or '' -- however this works for arbitrary command names (\@hello-123 etc allowed)
- token.set_macro(cs, val, 'global')
+ g = g or 'global'
+ token.set_macro(cs, val, g)
end
@@ -767,6 +774,47 @@ function penlight.tex.split2items(s, d)
end
+penlight.tbls = {}
+
+function penlight.get_tbl_item(s, p) -- get item with string, p means print value
+ p = p or false
+ local itm = 'tbl: INVALID INDEX WITH: "'..s..'"'
+ if s:find('%.') then
+ local tt = s:split('.')
+ itm = penlight.tbls[tt[1]][tt[2]]
+ elseif s:find('/') then
+ local tt = s:split('/')
+ itm = penlight.tbls[tt[1]][tonumber(tonumber(tt[2]))]
+ else
+ if s:isdigit() then
+ itm = penlight.tbls._recent[tonumber(s)]
+ else
+ itm = penlight.tbls._recent[s]
+ end
+ end
+ if p then
+ tex.sprint(tostring(itm))
+ end
+ return itm
+end
+
+
+function penlight.set_tbl_item(s, v)
+ if s:find('%.') then
+ local tt = s:split('.')
+ penlight.tbls[tt[1]][tt[2]] = v
+ elseif s:find('/') then
+ local tt = s:split('/')
+ penlight.tbls[tt[1]][tonumber(tonumber(tt[2]))] = v
+ else
+ if s:isdigit() then
+ penlight.tbls._recent[tonumber(s)] = v
+ else
+ penlight.tbls._recent[s] = v
+ end
+ end
+ end
+
if penlight.hasval(__PL_GLOBALS__) then
-- iterators
@@ -803,8 +851,9 @@ if penlight.hasval(__PL_GLOBALS__) then
penlight.filterfiles = penlight.utils.filterfiles
penlight.a2 = penlight.array2d
+ A2d = penlight.array2d
penlight.tbl = penlight.tablex
-
+ TX = penlight.tablex
for k,v in pairs(penlight.tex) do -- make tex functions global
_G[k] = v
diff --git a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
index 0d49ff90d04..3f95ae4d9ef 100644
--- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
+++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
@@ -1,5 +1,5 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-22
+% 2023-08-27
% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -22,11 +22,12 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
% OR OTHER DEALINGS IN THE SOFTWARE.
-\ProvidesPackage{penlightplus}[2023-07-22]
+\ProvidesPackage{penlightplus}[2023-08-27]
\RequirePackage{luacode}
\RequirePackage{luakeys}
\RequirePackage[import]{penlight}
+\RequirePackage{etoolbox}
\DeclareOption{globals}{\luadirect{__PL_GLOBALS__ = true}}
\DeclareOption{pl}{\directlua{pl = penlight}}
@@ -72,43 +73,92 @@
}
-%
-%
-%\NewDocumentCommand{\tblnew}{m}{\luadirect{
-% _G[\luastring{#1}] = {}
-%}}
-%
-%\NewDocumentCommand{\tblfrkv}{m m O{} }{\luadirect{
-% _G[\luastring{#1}] = penlight.luakeys.parse(\luastring{#2}, penlight.luakeys.parse(\luastring{#3}))
-%}}
-%
-%\NewDocumentCommand{\tblset}{m m m}{\luadirect{
-% _G[\luastring{#1}][\luastring{#2}] = \luastring{#3}
-%}}
-%
-%\NewDocumentCommand{\tblget}{m m}{\luadirect{
-% tex.sprint(tostring(_G[\luastring{#1}][\luastring{#2}]))
-%}}
-%
-%\NewDocumentCommand{\tblidx}{m m}{\luadirect{
-% tex.sprint(tostring(_G[\luastring{#1}][#2]))
-%}}
-%
-%
+
+
+
+
+
+
+%%%%
+
+\newtoggle{luaexpr}\togglefalse{luaexpr}
+
+\begin{luacode*}
+ function toggle_luaexpr(expr)
+ if expr then
+ tex.sprint('\\toggletrue{luaexpr}')
+ else
+ tex.sprint('\\togglefalse{luaexpr}')
+ end
+ end
+\end{luacode*}
+
+\NewDocumentCommand{\ifluax}{m m O{}}{%
+ \luadirect{toggle_luaexpr(#1)}%
+ \iftoggle{luaexpr}{#2}{#3}%
+ \togglefalse{luaexpr}% safety set to false
+}
+
+\NewDocumentCommand{\ifluaxv}{m m O{}}{\ifluax{penlight.hasval(#1)}{#2}[#3]}
+
+
+% testing ifluax
+% {-->\ifluax{1 == 2}{\LARGE TRUE}[\tiny FALSE]<--test\\
+% -->\ifluax{abc == nil}{\LARGE TRUE}[\tiny FALSE]<--test}
+
+
+%%%
+
+\NewDocumentCommand{\newtbl}{m}{\luadirect{
+ penlight.tbls[\luastring{#1}] = {}
+ penlight.tbls._recent = penlight.tbls[\luastring{#1}]
+}}
+
+\NewDocumentCommand{\tblfrkv}{m m O{}}{ \luadirect{
+ penlight.tbls[\luastring{#1}] = penlight.luakeys.parse(\luastring{#2}, penlight.luakeys.parse(\luastring{#3}))
+ penlight.tbls._recent = penlight.tbls[\luastring{#1}]
+}}
+
+\NewDocumentCommand{\chgtbl}{ m }{ \luadirect{
+ penlight.tbls._recent = penlight.tbls[\luastring{#1}]
+}}
+
+\NewDocumentCommand{\gettbl}{m}{\luadirect{
+ penlight.get_tbl_item(\luastring{#1}, true)
+}}
+
+\NewDocumentCommand{\settbl}{m m}{\luadirect{
+ penlight.set_tbl_item(\luastring{#1}, \luastring{#2})
+}}
+
+\NewDocumentCommand{\deftbl}{ m m }{\luadirect{% define a table, use * to make definition
+ token.set_macro(\luastring{#2}, tostring(penlight.get_tbl_item(\luastring{#1})))
+}}
+
+\NewDocumentCommand{\gdeftbl}{ m m }{\luadirect{% define a table, use * to make global definition
+ token.set_macro(\luastring{#2}, tostring(penlight.get_tbl_item(\luastring{#1})), 'global')
+}}
+
+\NewDocumentCommand{\iftbl}{m m O{}}{\ifluax{penlight.get_tbl_item(\luastring{#1})}{#2}[#3]}
+
+\NewDocumentCommand{\iftblv}{m m O{}}{\ifluaxv{penlight.get_tbl_item(\luastring{#1})}{#2}[#3]}
+
+
+
%\NewDocumentCommand{\tblupd}{ m m}{\luadirect{
-% penlight.tablex.update(_G[\luastring{#1}], _G[\luastring{#2}])
+% penlight.tablex.update(penlight.tbls[\luastring{#1}], penlight.tbls[\luastring{#2}])
%}}
%
%\NewDocumentCommand{\tblupdkv}{ m m }{\luadirect{
-% penlight.tablex.update(_G[\luastring{#1}], penlight.luakeys.parse(\luastring{#2}))
+% penlight.tablex.update(penlight.tbls[\luastring{#1}], penlight.luakeys.parse(\luastring{#2}))
%}}
+
%
%% todo need a get table function. If blank is passed, the last table referenced is used.
%\NewDocumentCommand{\tblfrkvII}{ m m m }{\luadirect{
% _G[\luastring{#1}] = penlight.tablex.update(penlight.luakeys.parse(\luastring{#2}), luakeys.parse(\luastring{#3}))
%}}
-
%\NewDocumentCommand{\tbldo}{m m O{} }{\luadirect{
% % tex.sprint(tostring(_G[\luastring{#1}][#2]))
% % todo allow one to use pl tablex function here,
@@ -117,3 +167,14 @@
%}}
+
+
+%%%%%%%%5
+
+%\begin{luacode*}
+% function set_dim(name, len)
+% tex.sprint('\\global\\let\\'..name..'\\relax') -- reset length
+% tex.sprint('\\global\\newlength{\\'..name..'}') -- make new len
+% tex.setglue(name, tex.sp(len))
+% end
+%\end{luacode*}