diff options
Diffstat (limited to 'macros/luatex/generic/penlightplus/penlightplus.sty')
-rw-r--r-- | macros/luatex/generic/penlightplus/penlightplus.sty | 117 |
1 files changed, 89 insertions, 28 deletions
diff --git a/macros/luatex/generic/penlightplus/penlightplus.sty b/macros/luatex/generic/penlightplus/penlightplus.sty index 0d49ff90d0..3f95ae4d9e 100644 --- a/macros/luatex/generic/penlightplus/penlightplus.sty +++ b/macros/luatex/generic/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*} |