在手册中,我找到了 pandoc lua-filter 的示例:
return {
{
Str = function (elem)
if elem.text == "{{helloworld}}" then
return pandoc.Emph {pandoc.Str "Hello, World"}
else
return elem
end
end,
}
}
Run Code Online (Sandbox Code Playgroud)
我想替换{{helloworld}}为<div>abc</div>. 我的尝试:
return {
{
Str = function (elem)
if elem.text == "{{helloworld}}" then
return pandoc.RawInline('html','<div>abc</div>')
else
return elem
end
end,
}
}
Run Code Online (Sandbox Code Playgroud)
...但这给了我以下输出:
<p></p>
<div>abc</div>
<p></p>
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱空p标签?
附加信息
我从 markdown 转换为 html,我的 markdown 文件如下所示:
手册说:
\n\n\n\n\n函数\xe2\x80\x99s 的输出必须产生与输入类型相同的元素。这意味着作用于内联元素的过滤函数必须返回 nil、内联或内联列表,而过滤块元素的函数必须返回 nil、块或块列表之一元素。如果违反此条件,Pandoc 将抛出错误。
\n
您希望输出呈现为块 ( <div>abc</div>),但输入 ( Str) 是内联的。这就是它不起作用的原因。Str将(Inline)更改为Para(Block)、elem.texttoelement.content[1].text和RawInlineto RawBlock,它将起作用:
return {\n {\n Para = function (elem)\n if elem.content[1].text == "{{helloworld}}" then\n return pandoc.RawBlock(\'html\',\'<div>abc</div>\')\n else\n return elem\n end\n end,\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2018 次 |
| 最近记录: |