Pandoc 过滤器 pandoc.Para Lua 函数中的字符转义

我正在使用 Pandoc 进行大规模的 HTML 到 Markdown 转换项目,并尝试编写 lua 过滤器来处理一些特殊情况。

我要处理的最常见情况是将特别格式化的信息框转换为 pymarkdown summary/detail formatting

源 HTML

<div class="special-info-block">
  <p class="title">INFO</p>
</div>

目标 Markdown

???+ info "INFO"

我可以使用此函数替换 "INFO":

function Div(el)
   if el.classes[2] == "special-info-block" and pandoc.utils.stringify(el.content[1]) == "INFO" then
      el.content[1] = pandoc.Para('??? info "INFO"+')
      return el
   end
end

但生成的 markdown 会转义 INFO 周围的引号:

???+ info \"INFO\"

我该如何插入字面字符串呢?这是 pandoc.Para 构造函数的一个特点,还是我应该寻找其他地方呢?

点赞
用户2425163
用户2425163

转义是在生成 Markdown 时发生的,所以有两个选项:

  1. 使用 -t markdown-smart 调用 pandoc,这将指示 Markdown 写入器将引号视为普通字符;

  2. 创建一个原始的 Markdown 块而不是一个段落,以获得对输出的最大控制力:el.content[1] = pandoc.RawBlock('markdown', '??? info "INFO"+')

这两种方法都应该得到所需的结果,但第二种方法可能更可取。

2020-12-17 15:05:57