导入 lua 模块并将其与 lua pandoc 过滤器一起使用

Raf*_*ita 4 lua pandoc

Pandoc 通过其 --lua-filter 参数原生支持 lua 过滤器。
然而,我想知道它使用的是哪个版本的lua,以及是否可以导入lua模块,例如luacom(我相信它依赖于C代码)到其中。
这是我调查的一部分,旨在创建一个读取 Excel 工作表并将其转换为 pandoc 表的过滤器。

tar*_*leb 5

一般可以通过运行来检查Lua版本print(_VERSION)。即,在 shell 中运行它应该可以工作:

pandoc --lua-filter <(echo 'print(_VERSION)') <<< ''
Run Code Online (Sandbox Code Playgroud)

较旧的 pandoc 版本可以使用 Lua 5.1、Lua 5.2、Lua 5.3 或 LuaJIT 中的任何一个进行编译。然而,维护兼容性是一项繁重的工作,因此 pandoc 使用的HsLua包的维护者(即我)大约一年前就停止了对旧版本的支持。如果您使用pandoc 2.3.1或更高版本,pandoc保证包含Lua 5.3.x。

加载纯 Lua 库不会有问题,并且应该像普通 Lua 可执行文件一样工作。唯一的问题可能是LUA_PATHpandoc 中的默认设置与其他程序中使用的默认设置不同。如果 pandoc 尚未针对系统范围的 Lua 版本进行编译,则可能会发生这种情况。LuaRocks可以提供帮助,只需运行eval "$(luarocks path)".

与纯 Lua 库相同,如果 pandoc 已编译为非静态二进制文件,C Lua 库应该可以正常工作。但是,pandoc 网站和 GitHub 上提供的非 Windows 二进制文件是静态的,动态加载 C 库将不起作用

我们维护基于 Alpine 的 Docker 镜像pandoc/core和,pandoc/latex它们是针对系统范围的 Lua 版本编译的。如果您的平台的包管理器没有提供最新的 pandoc 版本,无法使用静态编译的二进制文件,并且您不想自己编译 pandoc,那么这可能是一个不错的选择。如果您希望看到对 Ubuntu 等其他基础映像的支持,只需提交一张票即可。