首页 > 解决方案 > 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块之间累积元素并将它们捆绑到Divs. 这是一种合理的方法,还是我在这里遗漏了一些关于 AST 的明显内容?

标签: luaabstract-syntax-treepandoc

解决方案


推荐阅读