我想在 Lua 中解析路径,以便将其拆分为文件夹和文件组件。目标是创建一个接受形式参数的宏myfolder/myfile
,并能够myfolder
在 lua 块内使用,以便将其放入其他宏中。
以下内容不起作用但应该展示我所寻求的内容:
\newcommand*{\splitme}[1]{\directlua{
local parts=split(#1,'[\\/]+');
tex.sprint("\graphicspath{",parts[1],"}");
}}
我退房了http://lua-users.org/wiki/SplitJoin但无法在 LuaLaTeX 中将其拼凑起来。有没有可能不用太多麻烦就做到这一点?
答案1
在这种情况下,StackOverflow 可能会有所帮助。
\documentclass{article}
% https://stackoverflow.com/questions/5243179
\newcommand*{\splitme}[1]{\directlua{\unexpanded{
local parts = string.match([[#1]], "(.-)([^\\/]-)$")
tex.sprint(parts)
%tex.sprint("\graphicspath{",parts,"}")
}}}
\begin{document}
\splitme{/home/user/test.jpg}
\splitme{/home/user/}
\splitme{/home/user}
% Print the backslash
\def\\{\textbackslash}
\splitme{C:\\home\\user\\test.jpg}
\splitme{C:\\home\\user\\}
\splitme{C:\\home\\user}
\end{document}
答案2
由于我对 lua 和 LuaLaTeX 不太熟悉,这里有一些 lua 代码,它应该返回子字符串:
local i = 0
local p = 0
while i <= in_string:len() do
if in_string:sub(i,i) == "/" then
p = i
end
i = i + 1
end
return in_string:sub(0,p)
可能存在利用 lua 功能的更简单的解决方案,但由于我不知道这些,所以我会这么做。