这是有效的,我看不出有什么变化,但是下面的代码现在抛出了“缺少 \endcsname 插入”错误。
如果我只是按下回车键,lualatex 就会继续,读取文本文件 myfile.lua,并逐字逐句地打印出来。文件是 UTF-8 还是 ASCII 编码似乎并不重要(我通常使用前者)。如果这很重要,则使用 Windows 10 机器。
平均能量损失
\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}
答案1
这从来没起作用。不要在里面使用强大的命令\verbatiminput
。因此,请将您的\getPath
命令定义为
\newcommand\getPath[1]{\luadirect{getPath(\luastring{#1})}}