Pandoc Lua 过滤器在 div 中包含章节和部分

我一直在使用 javascript 将章节或部分的“内容”(在下一章节或部分标题之间的元素)包装在 div 中(为了 UI 方面)。我想在构建时而不是运行时使用 Lua 过滤器来做同样的事情。

从我的抽象语法树 ( AST) 的阅读中,这些元素的组并不是直接可选择的。这使我相信我将不得不循环遍历所有文档元素,类似于从手册中以下示例中所做的方式。

function Pandoc(doc)
    local hblocks = {}
    for i,el in pairs(doc.blocks) do
        if (el.t == "Div" and el.classes[1] == "handout") or
           (el.t == "BlockQuote") or
           (el.t == "OrderedList" and el.style == "Example") or
           (el.t == "Para" and #el.c == 1 and el.c[1].t == "Image") or
           (el.t == "Header") then
           table.insert(hblocks, el)
        end
    end
    return pandoc.Pandoc(hblocks, doc.meta)
end

我认为我可以使用类似的方法,但累加 Header 之间的元素并将它们捆绑在 Div 中。这是合理的方法还是 AST 中有明显漏洞?

点赞