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

能否使用Pandoc移除Markdown文档中未使用的脚注引用?

移除Markdown文档中未被使用的Pandoc脚注引用

Pandoc没有内置的直接选项来移除未被引用的脚注,但可以通过自定义Lua过滤器实现这个需求,以下是具体方案:

实现思路

先遍历文档的抽象语法树(AST),收集所有被实际引用的脚注ID,再过滤掉脚注定义列表中不在这个ID集合里的条目。

具体Lua过滤器代码

将以下代码保存为remove-unused-footnotes.lua文件:

local used_footnotes = {}

-- 收集所有被引用的脚注ID
function Note(el)
    used_footnotes[el.id] = true
    return el
end

function NoteRef(el)
    used_footnotes[el.id] = true
    return el
end

-- 过滤未被引用的脚注定义
function Doc(doc)
    local filtered_notes = {}
    for _, note in ipairs(doc.notes) do
        if used_footnotes[note.id] then
            table.insert(filtered_notes, note)
        end
    end
    doc.notes = filtered_notes
    return doc
end

return {
    {Note = Note},
    {NoteRef = NoteRef},
    {Doc = Doc}
}

使用方法

运行Pandoc时加载这个过滤器,命令示例:

pandoc your-input-file.md --lua-filter=remove-unused-footnotes.lua -o cleaned-output.md

这个过滤器支持Pandoc兼容的两种脚注格式:

  • 行内引用脚注(如 [^note]: 脚注内容 对应正文中的 [^note])
  • 引用式脚注(分散定义的脚注条目)

它会自动保留所有被正文中引用过的脚注,删除从未被提及的脚注定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:47:04