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

如何编写Lua Filter修改Pandoc输出中的表格标题?

Pandoc Lua Filter 修改表格标题失败的原因与解决方法

错误原因

你直接将字符串赋值给Table.caption的操作是错误的:pandoc中Table的caption并非字符串类型,而是一个包含short和long字段的table:

  • short:可选的短标题(用于交叉引用等场景),类型为Inline元素列表或nil
  • long:必填的主标题,类型为Inline元素的列表(比如pandoc.Str、pandoc.Emph这类富文本元素)

直接赋值字符串会破坏caption的结构,导致pandoc无法正确解析表格,最终出现表格被移除的问题。

解决方案

修改表格标题时,需要针对caption.long字段赋值,且赋值内容必须是Inline元素的列表。以下是两种常用实现方式:

正确的Lua Filter示例

return {{
  Table = function (el)
    -- 方式1:纯文本标题,直接构造Inline元素
    el.caption.long = {pandoc.Str("abc")}
    
    -- 方式2:带格式的标题,用pandoc.read解析markdown语法
    -- local new_caption = "**加粗的新表格标题**"
    -- 读取markdown内容并提取第一段的Inline元素列表
    -- el.caption.long = pandoc.read(new_caption).blocks[1].content
    
    -- 若不需要保留原短标题,可设为nil(保留则注释此行)
    el.caption.short = nil
    
    return el
  end
}}

验证执行

运行你原有的命令:

pandoc --lua-filter link.lua --lua-filter caption.lua input.md -o output.tex

生成的TeX文件中表格会正常保留,标题已被修改为设置的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:13:22