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

2020-05-12 08:24:10 +08:00
 mathzhaoliang

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

2029 次点击
所在节点    分享发现
5 条回复
YuxiangLuo
2020-05-12 08:47:12 +08:00
改一下 pandoc 源码,把 sourceCode 换成 code
phy25
2020-05-12 11:21:23 +08:00
ernest
2020-05-12 11:25:36 +08:00
hugo pipeline 在 template 里拿到 Content 正则匹配替换下也行吧
krjt
2020-05-12 20:47:40 +08:00
这个只要写一个 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
2020-05-13 17:45:48 +08:00
多谢指点。我暂时通过更换 highlisht.js 来高亮解决的。我想到了手写 filter 这个方案,但是我不知道应该在哪里插入代码,我都不知道 hugo 是在何时调用 pandoc 来渲染 md 文件的。我只是在文件头部里面指定了 `markup: pandoc` 然后它自动渲染的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/670775

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX