小编jcr*_*jcr的帖子

Pandoc Lua 过滤器:如何指定 Span 元素的属性

我有一个包含原始 LaTeX 命令的 Markdown 文档。我正在尝试使用带有 Pandoc (2.0.1.1) 的Lua 过滤器将 LaTeX 命令转换为更便携的命令。特别是,指定文本语言的命令应转换为带有lang属性的跨度。问题是我不知道如何将属性传递给pandoc.Span构造函数。这是我对过滤器的尝试(filter.lua):

function RawInline(elem)
  if elem.format == "tex" then
    text = string.match(elem.text, "\\textspanish{(.+)}")
    if text then
      contents = {pandoc.Str(text)}
      attrs = pandoc.Attr("",{},{lang = "es-SP"})
      return pandoc.Span(contents, attrs)
    end
  else
    return elem
  end
end
Run Code Online (Sandbox Code Playgroud)

使用示例:

echo '\textspanish{hola}' | pandoc -f markdown -t native --lua-filter=filter.lua
Run Code Online (Sandbox Code Playgroud)

输出为[Para [Span ("",[],[]) [Str "hola"]]],跨度上没有属性。

如果我将名称和/或类传递给pandoc.Attr,它们就会通过,例如attrs = pandoc.Attr("name",{"class"},{lang = "es-SP"})产生[Para [Span ("name",["class"],[]) [Str …

lua pandoc

6
推荐指数
1
解决办法
2171
查看次数

标签 统计

lua ×1

pandoc ×1