\begingroup \catcode`\^^^^ffff=11 \catcode`\@=11 \toks0{% local dimen_cmd = token.command_id'assign_dimen' local tex_params = {} local texmeta = getmetatable(tex) local texmetaoldindex = texmeta.__index local texmetaoldnewindex = texmeta.__newindex function texmeta.__index(t, k) local v = tex_params[k] if v then if v.command == dimen_cmd then return tex.dimen[v.index] end else return texmetaoldindex(t, k) end end function texmeta.__newindex(t, k, v) local p = tex_params[k] if p then if p.command == dimen_cmd then tex.dimen[p.index] = v end else return texmetaoldnewindex(t, k, v) end end } \def\InternalAlloc#1#2#3#4#5{% \csname new#3\endcsname#1% \global#1=#5\relax \etoksapp0{#2_params["\luaescapestring{#4}"] = token.create"\luaescapestring{\csstring#1}"} } \def\internalAlloc#1#2#3{% \expandafter\InternalAlloc\csname ^^^^fffe#3@#1\endcsname{#1}{#2}{#3}% } \def\texAlloc#1#2{% \expandafter\InternalAlloc\csname #2\endcsname{tex}{#1}{#2}% } \texAlloc{dimen}{pageheight}{11in} \texAlloc{dimen}{pagewidth}{8.5in} % \internalAlloc{tex}{dimen}{pagewidth} \directlua{ lua.prepared_code[\csstring#lua.prepared_code+1] = tex.toks[0] \the\toks0 } \endgroup