# lualatex using vebatim package

This was working and I don't see what has changed, but the code below is now throwing a "Missing \endcsname inserted" error.

If I just press Return, lualatex continues, reads the text file myfile.lua, and prints it perfectly verbatim. Doesn't seem to matter whether the file is UTF-8 or ASCII encoded (I usually use the former). Windows 10 machine if that matters.

MWE

\documentclass{article}

\RequirePackage{verbatim}%

\RequirePackage{luacode}%

\begin{luacode*}
function buildPath(...)
-- get the system path separator
local pathseparator = package.config:sub(1,1)

-- get the arguments
local elements = {...}

-- return the elements with the path separator
return table.concat(elements, pathseparator)
end

-- Get the current path.
function getPath(filename)
-- Print the current path. According to the documentation, if -2 is used,
-- then the strings are read as if the result of detokenize: all characters
-- have catcode 12 except space, which  has catcode 10.

tex.print(-2, buildPath(lfs.currentdir(), filename))
end
\end{luacode*}

\begin{document}

\verbatiminput{\getPath{myfile.lua}}

\end{document}

• What is the sense of \getPath? \verbatiminput will find files in the current directory anyway. (I doubt that this every worked, use \newcommand instead of \DeclareRobustCommand). – Ulrike Fischer Dec 4 '18 at 9:59
• @Ulrike That's what changed!!! I was replacing \newcommand in various source files and got too enthusiastic. – DLyons Dec 4 '18 at 10:03

This never worked. Don't use a robust command inside \verbatiminput. So define your \getPath as
\newcommand\getPath[1]{\luadirect{getPath(\luastring{#1})}}