如何使用 lua 过滤器修改 Pandoc 中的内联元素?

How to modify an inline element in Pandoc using lua filter?

我是 Pandoc 的初学者,Lua 正在尝试将 Word 文档转换为 Markdown。我想将 Word 中的章节标题转换为 Markdown 中的文本段落。此外,我想在章节标题前后插入一些文字。

为此,我使用了以下 lua 过滤器 (sample.lua)

function Header(el)
    if el.level == 1 then
       return {"something before (",el.content,") something after"}
    end
end

之后我使用

进行了转换

pandoc --lua-filter=sample.lua -s file.docx -t markdown -o file.txt

其中 file.docx 只是包含一个章节标题的最小示例文档。然而,使用这个过滤器,我获得了

something before (

Chapter title

) something after

然而我想要得到的是

something before (Chapter title) something after

但是因为(如果我没记错的话)el.content 是行内元素,所以它周围有换行符。我试图通过使用 pandoc 文档和各种 lua 函数来解决这个问题,但无济于事,这就是为什么我会请求帮助。

试试这个:

function Header(el)
  if el.level == 1 then
    return {{"something before ("} .. el.content .. {") something after"}}
  end
end

原因是el.content是一个内联元素的列表,可以通过连接附加内容的列表来扩展。运算符 .. 是串联运算符;它适用于字符串和 pandoc 列表。