Preface

这是个人在Hexo博客中渲染LaTeX的解决方案。

环境配置如下:

  • Node.js: v17.1.0
  • Hexo: 5.4.0
  • Butterfly: 4.1.0
  • yarn: 1.22.17

Markdown渲染引擎

首先卸载默认的markdown渲染引擎hexo-renderer-marked

$ yarn remove hexo-renderer-marked

然后安装hexo-renderer-markdown-it,该渲染引擎基于markdown-it,可以通过更多的Node.js模块扩展markdown语法,更为灵活可控:

$ yarn add hexo-renderer-markdown-it

KaTeX引擎

渲染LaTeX公式块可以使用mathjax引擎或者KaTeX引擎。公认KaTeX引擎的性能优于mathjax,因此选用KaTeX引擎。

可以通过安装markdown-it-katex以支持渲染markdown文件中的LaTeX公式块。安装方法同上。但是值得注意的是,该模块的原作者似乎已经停止维护,因此可以选用其他贡献者的fork,这里推荐@traptitech/markdown-it-katex

如果需要支持KaTeX引擎的最新特性,可以安装最新版本的KaTeX作为自己博客的依赖:

$ yarn add katex@latest

安装好之后,需要进行一些基本配置。

首先,需要配置hexo-renderer-markdown-it,以启用markdown-it的插件。在_config.yml中写入如下内容:

markdown:
plugins:
- name: "@traptitech/markdown-it-katex"
options:
strict: false # disable strict mode

然后需要配置NeXT主题,以支持公式的渲染。在_config.butterfly.yml中找到katex字段,修改为如下内容:

# KaTeX
katex:
enable: true
per_page: false
hide_scrollbar: true

其中per_page字段设置为false,是为了只在必要的页面上开启KaTeX渲染,以节省性能。如果某页面上含有LaTeX公式块,需要在对应的markdown文件的front-matter中添加:

katex: true

如果遇到kaTeX渲染出现问题,可以按照这里提供的方法进行debug。

References

  1. KaTeX Docs
  2. Butterfly themes