%% luakeys-debug.tex %% Copyright 2021 Josef Friedrich % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2008/05/04 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Josef Friedrich. % % This work consists of the files luakeys.lua, luakeys-debug.sty % and luakeys-debug.tex. \directlua{ luakeys = require('luakeys') } % https://tex.stackexchange.com/a/418401/42311 \catcode`\@=11 \long\def\LuaKeysIfNextChar#1#2#3{% \let\@tmpa=#1% \def\@tmpb{#2}% \def\@tmpc{#3}% \futurelet\@future\LuaKeysIfNextChar@i% }% \def\LuaKeysIfNextChar@i{% \ifx\@tmpa\@future% \expandafter\@tmpb \else \expandafter\@tmpc \fi }% \def\luakeysdebug@parse@options#1{ \directlua{ luakeys.save('debug_options', luakeys.parse('#1')) } }% \def\luakeysdebug@output#1{ { \tt \parindent=0pt \directlua{ local result = luakeys.parse('\luaescapestring{\unexpanded{#1}}', luakeys.get('debug_options')) tex.print(luakeys.stringify(result, true)) luakeys.print(result) } } }% \def\luakeysdebug@oarg[#1]#2{% \luakeysdebug@parse@options{#1}% \luakeysdebug@output{#2}% }% \def\luakeysdebug@marg#1{% \luakeysdebug@output{#1}% }% \def\luakeysdebug{\LuaKeysIfNextChar[{\luakeysdebug@oarg}{\luakeysdebug@marg}}% \catcode`\@=12