V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mathzhaoliang
V2EX  ›  分享发现

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

  •  
  •   mathzhaoliang · 2020-05-12 08:24:10 +08:00 · 2225 次点击
    这是一个创建于 1664 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2020-05-13 17:45:48 +08:00
    1KN6sAqR0a57no6s
        1
    1KN6sAqR0a57no6s  
       2020-05-12 08:47:12 +08:00
    改一下 pandoc 源码,把 sourceCode 换成 code
    phy25
        2
    phy25  
       2020-05-12 11:21:23 +08:00 via Android
    ernest
        3
    ernest  
       2020-05-12 11:25:36 +08:00
    hugo pipeline 在 template 里拿到 Content 正则匹配替换下也行吧
    krjt
        4
    krjt  
       2020-05-12 20:47:40 +08:00   ❤️ 1
    这个只要写一个 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
        5
    mathzhaoliang  
    OP
       2020-05-13 17:45:48 +08:00
    多谢指点。我暂时通过更换 highlisht.js 来高亮解决的。我想到了手写 filter 这个方案,但是我不知道应该在哪里插入代码,我都不知道 hugo 是在何时调用 pandoc 来渲染 md 文件的。我只是在文件头部里面指定了 `markup: pandoc` 然后它自动渲染的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2634 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:06 · PVG 15:06 · LAX 23:06 · JFK 02:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.