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

问题描述 投票:0回答:1

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

lua pandoc
1个回答
7
投票

一般可以通过运行

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

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

或使用 pandoc 3.0 及更高版本

pandoc lua -e 'print(_VERSION)'

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

加载纯 Lua 库不会有问题,并且应该像普通 Lua 可执行文件一样工作。唯一的问题可能是 pandoc 中设置的默认

LUA_PATH
与其他程序中使用的不同。如果 pandoc 尚未针对系统范围的 Lua 版本进行编译,则可能会发生这种情况。 LuaRocks 可以提供帮助,只需运行
eval "$(luarocks path)"

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

我们维护基于Alpine和Ubuntu的Docker镜像

pandoc/core
pandoc/latex
,它们是针对系统范围的Lua版本编译的。如果您的平台的包管理器没有提供最新的 pandoc 版本,无法使用静态编译的二进制文件,并且您不想自己编译 pandoc,那么这可能是一个不错的选择。如果您想看到对其他基本映像的支持,只需提出请求即可。

© www.soinside.com 2019 - 2024. All rights reserved.