在Pandoc的Markdown输出中使用围栏代码块

3

是否有一种方法可以使 pandoc 在输出 markdown 时使用围栏代码块(即使用三个反引号),而不是缩进四个空格?


这由fenced_code_attributes扩展控制,该扩展应默认启用。您使用什么命令来输出Markdown? - Waylan
1
只需要运行 pandoc index.html -o index.md 命令。但我认为你可能读错了。据我所知,fenced_code_attributes 选项是用于在读取 markdown 时支持对围栏代码块添加属性的,与写入 markdown 没有任何关系。 - Timmmm
Tann awesomebox - DG'
2个回答

3

可以使用Lua过滤器“手动”创建块输出:

local fenced = '```\n%s\n```\n'
function CodeBlock (cb)
  -- use pandoc's default behavior if the block has classes or attribs
  if cb.classes[1] or next(cb.attributes) then
    return nil
  end
  return pandoc.RawBlock('markdown', fenced:format(cb.text))
end

将上述内容保存到文件中,然后通过--lua-filter选项将该文件传递给pandoc。


看起来 --lua-filter 现在改成了 --filter - Guildenstern
它们是不同的:--filter(或 -F)需要一个JSON过滤器,即一个以pandoc的JSON作为输入并生成JSON输出的程序,然后将其读回pandoc中。 --lua-filter(或 -L)选项需要一个Lua过滤器,由内置在pandoc中的Lua解释器运行。 - tarleb
我明白了,谢谢。我的问题只是我的 pandoc(1) 版本太旧了,所以我没有这个选项。 - Guildenstern

0

就我个人而言:我在Org中使用源代码块,例如:

#+begin_src 
select * from universe;
#+end_src

这些代码块是使用缩进转换而来的:

pandoc --from=org --to=markdown --output=output.md input.org

但是如果我添加了sql(或者java或其他任何语言),Pandoc将切换到围栏块:

#+begin_src sql
select * from universe;
#+end_src

输出:

``` {.sql}
select * from universe;
```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接