我的问题是这样的:我在使用 hugo 的时候,使用的是外部的渲染程序 pandoc,因为它对 latex 处理的比较好.但是 pandocc 会把代码块转换为一个类 sourceCode
,这一点跟默认的 md 渲染是不同的,默认出来的类就是 code
. 现在我想使用外部 cdn 网站上的 prismjs 这个工具来高亮代码,但是它不认识 sourceCode
类,导致代码无法高亮.请教大家有什么好的办法解决没有?
1
1KN6sAqR0a57no6s 2020-05-12 08:47:12 +08:00
改一下 pandoc 源码,把 sourceCode 换成 code
|
2
phy25 2020-05-12 11:21:23 +08:00 via Android
|
3
ernest 2020-05-12 11:25:36 +08:00
hugo pipeline 在 template 里拿到 Content 正则匹配替换下也行吧
|
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 |
5
mathzhaoliang OP 多谢指点。我暂时通过更换 highlisht.js 来高亮解决的。我想到了手写 filter 这个方案,但是我不知道应该在哪里插入代码,我都不知道 hugo 是在何时调用 pandoc 来渲染 md 文件的。我只是在文件头部里面指定了 `markup: pandoc` 然后它自动渲染的。
|