0%

在Hexo中启用数学支持以及Github Actions部署

效果示意,首先是inline的,然后下面是从英语维基百科上抄来的带波长和时间的渲染方程。

虽然没啥内容,但是最近还是整理了一下博客,把构建迁移到了GitHub Actions。最后决定干脆加点新的功能算了。

本身的博客主题是NexT,所以就看了NexT自带的数学公式渲染方案,里面提到了主要有两种,MathJaxKatex。对比了一下发现MathJax慢但是支持的内容多。但是一瞬间我好像想起了以前看有MathJax的博客时龟速的脚本加载。虽然不知道NexT里面选取的CDN是哪个,但是还是本能的抗拒了。

这个时候我又找到了Hexo自身的数学渲染,是在构建时渲染的,所以不需要终端浏览器的脚本,但是这个数学渲染所需要的格式过于鬼畜了,是用的{% %}这种类型的token来作为数学块的分隔符。

最终在这个repo的底端发现了hexo-filter-mathjax这个库,采用了我所熟悉的$$符号作为分隔符。最终就决定采用这个库了。

这个库本身还需要其他的渲染器作为支持,可以用pandoc或者其他的,但是pandoc的处理最为完美,那就直接用吧。

在安装完hexo-filter-mathjaxhexo-renderer-pandoc后,因为我本地早已安装了pandoc,所以这个时候预览里已经可以正确显示数学公式了。(注意根据hexo-filter-mathjax的文档,需要在启用数学渲染的文章的front-matter里加入mathjax: true

剩下的事情就是为GitHub Actions里添加pandoc环境了,我构建博客使用的是sma11black/hexo-action这个workflow,fork之后在Dockerfile里apt-get的时候加上pandoc就好了。

不过GitHub里每次都要构建docker的镜像,如果想加树的话可以自行构建并托管,然后将workflow中的uses: Ai-Himmel/[email protected]替换为uses: docker://example.com/ai-himmel/hexo-action:latest就好了。