LuaLaTeX 需要路径 - 只有绝对路径才有效

LuaLaTeX 需要路径 - 只有绝对路径才有效

我想使用外部包进行 LuaLaTeX 脚本编写(例如penlight)。我经常使用texlua命令测试我的脚本,没有任何问题。但是,我注意到当我使用命令编译文档时lualatex,会出现错误require()。我确定package.pathpackage.cpath包含存储我的外部模块的目录。似乎我可以通过提供外部模块的绝对路径来添加模块,但如果模块相对引用另一个模块,这就会成为一个问题。

所以总而言之,require()相对路径不适用于lualatex,但适用于texlua命令。

我知道这是一个相关的问题,但现在是 2011 年,解决方案不够优雅,因为我必须手动更改require每个外部模块的调用。“Lua 树”(texmf 树的类似物)

主文本

\documentclass{scrartcl}
\directlua{dofile("FileInSameDirAsMainAndRequiresExternalModules.lua")}
\begin{document}
Hello World
\end{document}

FileInSameDirAsMainAndRequiresExternalModules.lua

_LUA_STUFF_DIR = 'C:/Program Files/MiKTeX 2.9/miktex/bin/x64' --just to be sure the path is there...
package.path = package.path..';'.._LUA_STUFF_DIR
package.cpath = package.cpath..';'.._LUA_STUFF_DIR --todo why does this not work for luatex but texlua
--Both calls below work with texlua command
pl = require('pl') -- this fails with lualatex as pl is not found
pl = require(_LUA_STUFF_DIR..'/pl/tablex') -- this also fails with lualatex, but differently
--it "gets" through to the pl.tablex module, but fails since tablex.lua had a require(pl.util) in it

编辑:也测试了同样的问题

\documentclass{scrartcl}
\directlua{
LUASTUFFDIR = 'C:/Program Files/MiKTeX 2.9/miktex/bin/x64'
package.path = package.path..';'..LUASTUFFDIR
package.cpath = package.cpath..';'..LUASTUFFDIR
pl = require('pl')
}
\begin{document}
Hello
\end{document}

答案1

正如@UlrikeFischer 指出的那样,\usepackage{luapackageloader}这个问题已经解决了。

相关内容