LuaLatex 包:\dofile 导致错误“没有这样的文件或目录”

LuaLatex 包:\dofile 导致错误“没有这样的文件或目录”

我编写了一些宏,可以从数据库中随机选择问题以包含在考试中。我的.sty文件开头如下:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{randqs}[2012/10/23 ver 0.1]

\RequirePackage{xparse}

\directlua{dofile('randqs.lua')}

在我的文档中,当我打电话时

\documentclass[answers]{exam}
\usepackage{randqs}

randqs.luaLuaTex (或任何人)在文件目录中.tex而不是在文件目录中搜索,.sty因为如果.lua在前者中,则会找到它,而如果在后者中,则不会找到它。我猜这不是解决办法,所以我的问题是:我如何确保 LuaTex (或任何人) 在目录中而不是目录dofile中查找文件?.sty.tex

答案1

dofile()Lua 命令并查找具有给定路径的文件,在您的情况下是randqs.lua在当前目录中,因为您给出了相对路径。这里有两个选择:

  1. 给出样式文件的相对路径(或绝对路径),但这当然是不可移植的。
  2. 或者使用require('randqs')(不带.lua) 加载文件。但要注意:require()使用特殊的搜索路径,请参阅我对另一个问题的回答:“Lua 树”(texmf 树的类似物)
  3. Khaled 表示:第三个选项是使用 kpse 库来定位文件,例如dofile(kpse.find_file("randqs.lua"))

相关内容