mathzhaoliang

请教一个关于 hugo 渲染 markdown 的问题

  •  
  •   mathzhaoliang · May 12, 2020 · 3422 views
    This topic created in 2371 days ago, the information mentioned may be changed or developed.

    我的问题是这样的:我在使用 hugo 的时候,使用的是外部的渲染程序 pandoc,因为它对 latex 处理的比较好.但是 pandocc 会把代码块转换为一个类 sourceCode,这一点跟默认的 md 渲染是不同的,默认出来的类就是 code. 现在我想使用外部 cdn 网站上的 prismjs 这个工具来高亮代码,但是它不认识 sourceCode 类,导致代码无法高亮.请教大家有什么好的办法解决没有?

    5 replies  •  2020-05-13 17:45:48 +08:00
    1KN6sAqR0a57no6s
    1KN6sAqR0a57no6s
    May 12, 2020
    1
    改一下 pandoc 源码,把 sourceCode 换成 code
    phy25
    phy25
    May 12, 2020 via Android
    2
    ernest
    ernest
    May 12, 2020
    3
    hugo pipeline 在 template 里拿到 Content 正则匹配替换下也行吧
    krjt
    krjt
    May 12, 2020❤️1
    4
    这个只要写一个 pandoc filter [1] 把 CodeBlock 转换成 RawBlock "html" 就好了,具体的 AST node 可以在这里 [2] 找到,如果不会用 Haskell 也有提供 lua 和 python 的库的。我之前写的 karasu [3] 里面其实有不少例子。

    [1]: https://pandoc.org/filters.html
    [2]: https://hackage.haskell.org/package/pandoc-types-1.20/docs/Text-Pandoc-Definition.html
    [3]: https://github.com/Krasjet/karasu/tree/master/src/Karasu/Pandoc/Filters
    mathzhaoliang
    mathzhaoliang
    OP
    May 13, 2020
    5
    多谢指点。我暂时通过更换 highlisht.js 来高亮解决的。我想到了手写 filter 这个方案,但是我不知道应该在哪里插入代码,我都不知道 hugo 是在何时调用 pandoc 来渲染 md 文件的。我只是在文件头部里面指定了 `markup: pandoc` 然后它自动渲染的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1622 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:28 · PVG 16:28 · LAX 00:28 · JFK 03:28
    ♥ Do have faith in what you're doing.