从标记转换为HTML时,使用Pandoc Lua过滤器替换HTML标记

从标记转换为HTML时,使用Pandoc Lua过滤器替换HTML标记,html,lua,markdown,pandoc,xhtml-transitional,Html,Lua,Markdown,Pandoc,Xhtml Transitional,我有一个标记文件,其中包含一些HTML标记,特别是在使用pandoc转换为HTML时要替换的标记。问题是我想用替换它,因为与一些抱怨的旧渲染器存在一些兼容性问题。在运行转换时,我确实尝试了以下Lua筛选器,但它没有执行任何操作: filter.lua: function LineBreak (elem) return { pandoc.RawInline('html', '<br />') } end pandoc--lua filter.lua--

我有一个标记文件,其中包含一些HTML标记,特别是在使用pandoc转换为HTML时要替换的

标记。问题是我想用

替换它,因为与一些抱怨

的旧渲染器存在一些兼容性问题。在运行转换时,我确实尝试了以下Lua筛选器,但它没有执行任何操作:

filter.lua

function LineBreak (elem)
    return {
        pandoc.RawInline('html', '<br />')
    }
end
pandoc--lua filter.lua--to html5 Test.md


我还尝试将
--指定为html4
,但输出仍然是一样的。有没有一种方法可以用Lua过滤器实现这一点?

要调试它,我们可以先运行
pandoc--to=native Test.md
来查看输入是如何解析为pandoc的内部文档表示的。这就产生了

[标题2(“测试”、[]、[])[Str“测试”]
,Para[Str“Hello”,Space,RawInline(格式为“html”)“
”,Space,Str“World!”]]
有趣的是,

被解析为
RawInline(格式为“html”)“
,而不是换行符。因此,我们可以修改过滤器以匹配:

函数RawInline(原始)
如果raw.format='html'和raw.text='
,则 返回pandoc.RawInline('html','
')) 结束 结束
这将产生预期的结果:

$ pandoc --lua-filter filter.lua --to html5 Test.md
<h2 id="testing">Testing</h2>
<p>Hello <br /> World!</p>
$pandoc--lua filter.lua--to html5 Test.md
测试
你好
世界


非常感谢您的支持!我不知道--to=native,它能帮助我理解在引擎盖下是如何解释事物的,真是太神奇了。当然,过滤器工作得很好!
$ pandoc --lua-filter filter.lua --to html5 Test.md
<h2 id="testing">Testing</h2>
<p>Hello <br /> World!</p>