You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandoc调用Lua过滤器的正确路径及跨目录使用方法

跨目录调用Pandoc Lua过滤器的正确方法

先解决你的当前错误

你之前误用了--from参数加载Lua过滤器,这个参数是用来指定输入文档格式(比如markdown)的,并非加载过滤器的正确方式。当你给--from传路径时,pandoc会把路径字符串强制转成小写作为格式名处理,这就是错误信息里路径全变成小写的原因。

正确加载Lua过滤器的参数是--lua-filter(缩写为-L)。

跨目录调用过滤器的三种方案

1. 直接使用绝对/相对路径调用

用--lua-filter参数指定过滤器的完整路径即可,修正后的命令如下:

pandoc --lua-filter=/home/frank/Workspace11/experiments_SSG_related/booklet/combine.lua index.md 0*.md -o res1.pdf

或者用缩写更简洁:

pandoc -L /home/frank/Workspace11/experiments_SSG_related/booklet/combine.lua index.md 0*.md -o res1.pdf

2. 放到Pandoc默认过滤器目录

Pandoc会自动扫描系统默认的过滤器目录,把过滤器放在这里后,调用时无需写路径:

  • Linux/macOS:~/.pandoc/filters/
  • Windows:%APPDATA%\pandoc\filters\

将combine.lua复制到对应目录后,直接用过滤器名调用:

pandoc --lua-filter=combine.lua index.md 0*.md -o res1.pdf

3. 设置环境变量指定过滤器路径

通过PANDOC_LUA_FILTER_PATH环境变量添加过滤器所在目录,让Pandoc自动搜索该目录下的过滤器:

  • Linux/macOS终端执行:
    export PANDOC_LUA_FILTER_PATH=/home/frank/Workspace11/experiments_SSG_related/booklet:$PANDOC_LUA_FILTER_PATH
    
  • Windows(PowerShell):
    $env:PANDOC_LUA_FILTER_PATH = "C:\Users\frank\Workspace11\experiments_SSG_related\booklet;$env:PANDOC_LUA_FILTER_PATH"
    

设置后同样直接用过滤器名调用即可。

最佳实践总结

  • 个人常用的过滤器:放到Pandoc默认过滤器目录,调用最便捷;
  • 项目专属过滤器:和项目文件放在同一目录,调用时用相对路径(比如--lua-filter=./combine.lua),便于项目迁移;
  • 永远用--lua-filter/-L参数加载Lua过滤器,不要用--from。

内容的提问来源于stack exchange,提问作者user855443

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:32:26