带有模块的可移植 Lua 代码

带有模块的可移植 Lua 代码

注意:我是 Lua 编程的新手,而且我已经很难正常安装 Lua 模块了(VS Code 无法运行正确的代码,我不知道,我会在 StackOverflow 上问)。因此,就这个问题而言,请假设我很笨,除了 LaTeX 之外,我一生中从未使用过任何“编程语言”。

对于一个教学学校项目,我被要求开发一种资源来帮助学校学生提高他们的方程式求解技能。因此,我决定创建一组算法(但随机)生成的方程式及其解法,这些方程式将在编译时生成并打印在 TeX 文件中(在 .pdf 中)。然后,这些 .tex 文件将免费提供给教师,供他们编译。我听说 Lua 很适合做这个,因为它与 LuaLaTeX 很好地集成在一起,并且可以轻松地编写为单独的代码文件并输入

\directlua{ code.lua }

我的问题是我真的希望能够访问如下功能map和函数编程语法LuaFun 库,但我甚至在自己的机器上安装它都遇到了很大的困难。

因为我希望 .tex 文件基本上是“即插即用”的(假设可以访问正确的 TeX 安装),这太麻烦了,会阻止人们使用我的项目。相反,我希望有一种简单的方法来访问map等,而不需要每个用户都已经在他们的机器上安装了 Lua 和 LuaFun。

我尝试fun.luaGitHub 仓库并且只是在我的代码之前输入它,但这似乎不起作用。

那我该怎么办?最好的(即最简单、最轻量和最便携的)方法是什么?

或者整个企业从根本上来说存在缺陷,我应该使用类似这个python包吗?

提前致谢!

答案1

当加载一个 Lua 文件时,LuaLaTeX 会搜索以下命令给出的位置:

lualatex '\directlua{print((package.path..";"..kpse.show_path("lua")):gsub("[;:]",string.char(10)):gsub("!",""):gsub("/+", "/").."")}\csname@@end\endcsname'

这给出了一个非常长的与系统相关的路径列表,但只有以下位置真正对您的目的有意义:

  • .(当前目录):LuaTeX 将在当前目录中搜索任何已加载的文件,因此您可以将任何.lua文件直接放在与主文件相同的文件夹中.tex,两者之间不需要任何子目录。

  • $TEXMFDIST/tex/lualatex/<packagename>/:如果您计划将包上传到 CTAN,那么您可以将.lua文件放在与您的文件相同的文件夹中.sty

  • 绝对路径:在测试包时,类似

    require("/path/to/file.lua")
    

    将会起作用,尽管这会使软件包的分发变得相当棘手。

我的问题是我真的希望能够从 LuaFun 库访问诸如 map 和函数编程语法之类的函数,但我甚至在自己的机器上安装它时也非常挣扎。

TeX Live 和 MiKTeX 已经包含包裹penlight其中包含许多函数式编程函数如map,,,等等filterzip根据文档,要加载包,你只需要运行

local penlight = require("penlight")  -- Lua

或者

\usepackage[pl, import]{penlight} % LaTeX

因此,我决定创建一组算法(但随机)生成的具有可行解的方程,这些方程将在编译时生成并打印在 TeX 文件中(嗯,在 .pdf 中)。

luacas包裹可能会有帮助。

相关内容