Pandoc:Lua过滤器,用于将{{helloworld}}替换为<;部门>;abc</部门>;
在中,我找到了pandoc lua过滤器的示例:Pandoc:Lua过滤器,用于将{{helloworld}}替换为<;部门>;abc</部门>;,lua,pandoc,Lua,Pandoc,在中,我找到了pandoc lua过滤器的示例: return { { Str = function (elem) if elem.text == "{{helloworld}}" then return pandoc.Emph {pandoc.Str "Hello, World"} else return elem end end, } } 我想用abc替换{{helloworld}}。我的尝试: r
return {
{
Str = function (elem)
if elem.text == "{{helloworld}}" then
return pandoc.Emph {pandoc.Str "Hello, World"}
else
return elem
end
end,
}
}
我想用abc
替换{{helloworld}}
。我的尝试:
return {
{
Str = function (elem)
if elem.text == "{{helloworld}}" then
return pandoc.RawInline('html','<div>abc</div>')
else
return elem
end
end,
}
}
返回{
{
Str=功能(元素)
如果elem.text==“{{helloworld}}”,则
返回pandoc.RawInline('html','abc')
其他的
返回元素
结束
完,,
}
}
…但这给了我以下输出:
<p></p>
<div>abc</div>
<p></p>
abc
我怎样才能去掉空的p
-标记
其他信息
我将标记转换为html,我的标记文件如下所示:
报纸上说:
函数的输出必须产生与相同类型的元素
输入。这意味着作用于内联元素的过滤器函数
必须返回nil、内联或内联列表以及
过滤块元素的函数必须返回nil、块或
块元素的列表。如果出现这种情况,Pandoc将抛出错误
被侵犯了
您希望将输出呈现为块(abc
),但输入(Str
)是内联的。这就是它不起作用的原因。将Str
(内联)更改为Para
(块),elem.text
更改为element.content[1]。text
和RawInline
更改为RawBlock
,它将工作:
返回{
{
Para=功能(elem)
如果elem.content[1].text==“{{helloworld}}”,则
返回pandoc.RawBlock('html','abc')
其他的
返回元素
结束
完,,
}
}
尝试将RawInline
替换为RawBlock
,将Str
替换为段落