1

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*}

\DeclareRobustCommand\getPath[1]{\luadirect{getPath(\luastring{#1})}}

\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
3

This never worked. Don't use a robust command inside \verbatiminput. So define your \getPath as

\newcommand\getPath[1]{\luadirect{getPath(\luastring{#1})}}

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.