我收到了"Undefined control sequence."
消息,但...sdir{\directlua{tex.sprint(lfs.currentdir())}
我不明白 LuaLaTeX 指的是哪个控制序列:
我该如何探索它?
MWE 是
\documentclass[a4paper, twoside]{ltjsarticle}
\usepackage{luatexja-fontspec}
\edef\currfileabsdir{\directlua{tex.sprint(lfs.currentdir())}/}
\begin{document}
done
\end{document}
答案1
未定义的控制序列是换行符之前的内容:
\documentclass{article}
\begin{document}
\quad\acommandthatdoesntexist\quad
\end{document}
有输出:
! Undefined control sequence.
<*> \quad\acommandthatdoesntexist
\quad
在你的情况下,这似乎是\Users
,这可能表明 TeX 正在尝试读取 Windows 路径并将 解释\
为命令的开头。你可能需要一个可以导航 Windows 目录的包。
答案2
未定义的控制序列是\Users
路径的一部分。尽管此处\
应为路径分隔符,但 LuaTeX 并不知道这一点,只是将带有当前活动 catcode 的路径反馈给 TeX,而此处\
恰好是转义字符。幸运的是,您可以tex.sprint
使用可选参数来指示使用不同的 catcode 表。要使用逐字 catcode(所有内容都是 catcode 12,除了空格保留 catcode 10),请使用带有数字的 catcode 表-2
。
\edef\currfileabsdir{\directlua{tex.sprint(-2, lfs.currentdir())}/}