【问题标题】:Character escaping in Pandoc filter pandoc.Para Lua functionPandoc过滤器pandoc.Para Lua函数中的字符转义
【发布时间】:2021-01-12 23:41:22
【问题描述】:

我正在将 Pandoc 用于大型 HTML 到 Markdown 的转换项目,并且正在尝试编写 lua 过滤器来处理一些特殊情况。

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

源 HTML

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

目标降价

???+ 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

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

???+ info \"INFO\"

如何改为插入文字字符串?这是 pandoc.Para 构造函数的一个特性还是我应该在别处寻找?

【问题讨论】:

    标签: string lua pandoc


    【解决方案1】:

    转义发生在 Markdown 生成过程中,所以这里有两种选择:

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

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

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

    【讨论】:

    • 使用-t markdown-smart 效果很好!实际上我最初尝试过使用RawBlock,但是当我这样做时,我的输出中最终会出现:```{=markdown}
      ???信息“信息”+
      ```
    猜你喜欢
    • 2023-03-21
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多