2

我有一个 markdown 文件,其中包含一些 HTML 标签,特别是其中一个<br>标签,我想在使用 pandoc 转换为 HTML 时替换该标签。问题是<br />由于与一些抱怨<br>. 我在运行转换时确实尝试了以下 Lua 过滤器,但它没有做任何事情:

filter.lua

function LineBreak (elem)
    return {
        pandoc.RawInline('html', '<br />')
    }
end

我正在使用 Pandoc 版本2.13运行以下命令和以下测试文件:

Test.md

## Testing

Hello <br> World!

pandoc --lua-filter filter.lua --to html5 Test.md

我也尝试过指定--to html4,但输出仍然相同。有没有办法用 Lua 过滤器做到这一点?

4

1 回答 1

2

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

[Header 2 ("testing",[],[]) [Str "Testing"]
,Para [Str "Hello",Space,RawInline (Format "html") "<br>",Space,Str "World!"]]

有趣的部分是<br>被解析为RawInline (Format "html") "<br>",而不是换行符。所以我们可以修改过滤器以匹配它:

function RawInline (raw)
  if raw.format == 'html' and raw.text == '<br>' then
    return pandoc.RawInline('html', '<br />')
  end
end

这给出了预期的结果:

$ pandoc --lua-filter filter.lua --to html5 Test.md
<h2 id="testing">Testing</h2>
<p>Hello <br /> World!</p>
于 2021-05-19T18:32:22.123 回答