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



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

通常可以通过运行print(_VERSION)来检查 Lua 版本。 也就是说,在你的 shell 中运行它应该可以工作:

pandoc --lua-filter <(echo 'print(_VERSION)') <<< ''

较旧的 pandoc 版本可以使用 Lua 5.1、Lua 5.2、Lua 5.3 或 LuaJIT 中的任何一个进行编译。然而,维护兼容性是很麻烦的,所以pandoc使用的HsLua软件包的维护者(即I)大约一年前停止支持旧版本。如果您使用的是 pandoc 2.3.1 或更高版本,则保证 pandoc 包含 Lua 5.3.x。

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

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

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

最新更新