Pandoc本身通过--lua-filter参数支持lua过滤器。
但是,我想知道它使用的是什么版本的lua,以及是否可以将luacom等lua模块(我相信它依赖C代码)导入其中。
这是我调查的一部分,目的是创建一个读取excel工作表并将其转换为pandoc表的过滤器。
答案 0 :(得分:2)
通常可以通过运行print(_VERSION)
来检查Lua版本。也就是说,在您的shell中运行此程序应该可以:
pandoc --lua-filter <(echo 'print(_VERSION)') <<< ''
较旧的pandoc版本可以使用Lua 5.1,Lua 5.2,Lua 5.3或LuaJIT中的任何一个进行编译。但是,保持兼容性很重,因此pandoc(I)使用的HsLua软件包的维护者大约在一年前就停止支持较旧的版本。如果您使用的是Pandoc 2.3.1或更高版本,则保证Pandoc包含Lua 5.3.x。
加载纯Lua库将没有问题,并且应该与普通Lua可执行文件一样工作。唯一的问题可能是pandoc中设置的默认LUA_PATH
与其他程序中使用的不同。如果尚未针对系统范围的Lua版本编译pandoc,则会发生这种情况。 LuaRocks可以为您提供帮助,只需运行eval "$(luarocks path)"
。
与纯Lua库一样,如果pandoc已被编译为非静态二进制文件,则C Lua库应该可以正常工作。但是,pandoc网站和GitHub上提供的非Windows二进制文件是静态的,动态加载C库将 不起作用。
我们maintain Alpine-based Docker images,pandoc/core
和pandoc/latex
是针对系统范围的Lua版本进行编译的。如果平台的软件包管理器未提供最新的pandoc版本,无法使用静态编译的二进制文件,并且您不想自己编译pandoc,则这可能是一个不错的选择。如果您希望获得对其他基本映像(如Ubuntu)的支持,只需提出一张票即可。