[luatex] Another REPL

Eduardo Ochs eduardoochs at gmail.com
Tue Jan 12 02:54:46 CET 2021

Hi list,

Here is another REPL:


It was also inspired by Rob Hoelz's lua-repl - as the one that Robert
Krug announced a few hours ago in this other thread,


but mine is a rewrite from scratch. One way to test it (ta-da: without
git!) is this:

  rm -Rfv /tmp/edrxrepl
  mkdir   /tmp/edrxrepl/
  cd      /tmp/edrxrepl/
  wget http://angg.twu.net/edrxrepl/edrxrepl.lua
  wget http://angg.twu.net/edrxrepl/edrxrepltest.tex
  lualatex edrxrepltest.tex

Here is a slightly edited transcript of a session:

  /tmp/edrxrepl(edrx:sc)# lualatex edrxrepltest.tex
  This is LuaTeX, Version 1.10.0 (TeX Live 2019)
   restricted system commands enabled.
  LaTeX2e <2020-02-02> patch level 5
  (some lines deleted...)

  Run REPL.stop = 1 to leave the REPL.
  >>> mt = function (s) tok = token.create(s); print(tok) end
  >>> ma = function (s) print(token.get_macro(s)) end
  >>> me = function (s) print(token.get_meaning(s)) end
  >>> ma "break"
  \protect \break
  >>> me "break"
  ->\protect \break
  >>> ma "section"
  \@startsection {section}{1}{\z@ }{-3.5ex \@plus -1ex \@minus
  -.2ex}{2.3ex \@plus .2ex}{\normalfont \Large \bfseries }
  >>> ma "@startsection"
  \if at noskipsec \leavevmode \fi \@tempskipa #4\relax \@afterindenttrue
  \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse
  \fi \if at nobreak \everypar {}\else \addpenalty \@secpenalty \addvspace
  \@tempskipa \fi \@ifstar {\@ssect {#3}{#4}{#5}{#6}}{\@dblarg {\@sect
  >>> os.exit()

I've been using Emacs and eev to script REPL sessions, more of less
like this,


but I still find many things very hard to discover. It would be great
if other people could share their workflows for using REPLs in

    Eduardo Ochs

More information about the luatex mailing list.