我的 miktex 2.9 与 lualatex 配合得很好。我进入某个地方修改了一些文件,以便可以添加自己的模块路径。使用 miktex 升级工具升级一些软件包后,我的 latex 代码再也找不到我的 lua 模块了。升级 miktex 时,它说需要修复一些 miktex 配置文件,但我当时没有意识到这是由于我的修改造成的。
由于某种原因,lualatex 不使用 LUA_PATH。我的 lua 库代码独立运行良好(打印 package.path 可显示 LUA_PATH 中的内容,但不使用 lualatex)。
我尝试使用 \directlua 修改 package.path 并且它可以正确打印出来但是仍然找不到我的模块。
我已经在完整的 miktex 安装中搜索了 lua 路径,但什么也没找到。不确定“修复”是否删除了我修改的文件或发生了什么,但似乎没有任何效果。
无论如何,为什么 lualatex 不使用 LUA_PATH?有什么办法可以解决这个问题吗?
这里要意识到的主要一点是,在“升级”之前一切都正常(不过我不认为我升级了有关 lualatex 的任何内容),使用 Lua For Windows 时一切都按预期运行,这似乎是路径问题。这几乎肯定是 LuaLatex 的问题,如果我没记错的话,我不得不修改 miktex 安装目录中的路径,因为我无法让 LUA_PATH 或 package.path 与 lualatex 一起工作
硬编码解决方案(每次升级后可能会失效)是修改 lualatex.ini 并添加其他路径,但请确保使用正斜杠并在路径末尾使用两个斜杠。无需在末尾添加文件名,例如 ?.lua 和 LUA_PATH。还有一个问题,为什么 lualatex 不使用 LUA_PATH。
另外,我正在使用 winedt 6,它可能使用其自己的环境,其中 LUA_PATH 不存在……
答案1
好吧,我不知道你改变了什么,但要稍微整理一下:lualatex.ini
正常的 miktex 中有两个文件:
- 第一个在
\miktex\config
。.ini
此文件夹中的文件包含二进制文件的配置设置,例如main_memory
或路径设置。您可以.ini
使用 创建或打开此类文件的本地版本initexmf --edit-config-file=lualatex
。Imholualatex.exe
将读取两个.ini
文件:全局文件和本地文件并汇编它们的设置,但我从未真正测试过这个假设。 - 第二个
lualatex.ini
是\tex\latex\latexconfig
。这是.ini
用于生成格式的。您可以通过将文件复制到类似位置的本地树来创建本地版本。如果您有本地版本,它将被使用,并且全局版本是被忽略。
您永远不应该操作 miktex 安装的原始文件(包括包的文件),因为 miktex 有工具来检查此类更改,然后将“修复”这些文件。
答案2
无论如何,为什么 lualatex 不使用 LUA_PATH?有什么办法可以解决这个问题吗?
因为 TeX 只在其自己的分布中进行搜索。
请参阅相关问题:安装 Lua 模块以在 LuaLaTeX 中使用 - 续集
而且很难说出它之前为什么能起作用。