繁体   English   中英

Pandoc 使用 Lua 过滤器将字符串替换为表

[英]Pandoc replace string with table using Lua filter

在我的文档中,我有一个占位符字符串,例如:

{{changelog}}

并想使用 Lua 过滤器将其替换为 Markdown 格式化表,如果我使用 Z744DBAD5FCAED003E713,则以下 Lua 过滤器有效:


local string = [[
| some | table |
|------|-------|
| val1 | val2  |
]]

string = [[
<table>
    <tr>
        <td>some</td>
        <td>table</td>
    </tr>
    <tr>
        <td>val1</td>
        <td>val2</td>
    </tr>
</table>
]]
function Para(elem)
    if elem.content[1].text == "{{changelog}}" then
        return pandoc.RawBlock('html', string)
      else
        return elem
      end
end

return {{ Para = Para }}

现在这可以使用变量string的 HTML 内容工作,但是我如何让它与变量string中的 Markdown 格式化内容一起工作。

要返回任意格式而不是 HTML,我们必须指示 pandoc 使用pandoc.read解析字符串:

function Para(elem)
  if elem.content[1].text == "{{changelog}}" then
    return pandoc.read(tblstring, 'html').blocks
  end
end

pandoc.read function 接受一个字符串并将其解析为 pandoc 文档,其中第二个参数是格式; 我们需要使用访问文档blocks ,因为我们对元数据不感兴趣。

我省略了return elem ,因为如果 function 不返回值,pandoc 会保留原始元素。

另一种方法是使用pandoc.Tablepandoc.utils.from_simple_table等函数构建表,但这通常需要更多工作。

另请注意, string是用于 Lua 字符串库的全局名称,因此最好为表 HTML 选择不同的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM