想要一个完美支持LaTeX的Hexo渲染器!

起因

当初是因为需要在文章内使用多行LaTeX时发现渲染并没有正常进行,所以做了点调查。发现Hexo作为支持Markdown的博客框架,对不同的需求的用户,有多种Markdown渲染器可供选择。

渲染器

Hexo渲染器的种类大致分为以下几种。

  • hexo-renderer-marked
  • hexo-renderer-kramed
  • hexo-renderer-markdown-it
  • hexo-renderer-markdown-it-plus
  • hexo-renderer-pandoc

渲染器的区别

Marked: Hexo默认使用的渲染器是Marked,主要支持文章书写和一些简单的LaTeX公式,在写多行LaTeX时会把换行的\\渲染成\所以会引起渲染错误的问题。不支持Mathjax,以及emoji表情。Marked渲染器不支持并不代表它本身有问题,更多需要考虑到开发初衷以及受众用户群体的问题,并不是说支持越多东西越好。Issue #2127 作者也在这个Issue中表明Marked并不支持复杂LaTeX。

Kramed: Kramed是基于Marked上fork的,使得其支持Mathjax。但是已经年久失更会有很多Bug,没人维护。我之前使用这个渲染器的时候,网站会停留在加载页面以后进不去等发生一些未知的错误。

Markdown-it plus: 这俩也是原版和扩展的关系。我遇到问题的时候并没有很多用这个渲染器来解决问题的文章,所以我也没怎么倒腾过。Markdown-it在2022年1月有人接管继续维护的样子。也有在逐步更新,所以以后会不会支持LaTeX可以观望一下。

Pandoc: 支持Mathjax,支持各类语法,代价就是比较繁冗,速度比较慢。是目前重度使用LaTeX的用户,最简单的一种方式。简单安装之后开启math选项即可。

Pandoc使用方法

卸载旧渲染器,安装hexo-renderer-pandoc。

1
2
npm uninstall hexo-renderer-marked
npm install hexo-renderer-pandoc

根据自身使用的操作系统,安装Pandoc的本地服务。参考官网Pandoc - Installing

推荐选择一些支持Pandoc的主题,不然有可能会出现与原渲染器渲染页面样式不同的问题。自己动手能力强的,自定义样式也无伤大雅。
安装完成后在主题的_config.yml里设置开启math,指定math引擎。

就能愉快的使用LaTeX了。像下面这样。
\[ w=\frac{\sum_{i=1}^{m} y_{i}\left(x_{i}-\bar{x}\right)}{\sum_{i=1}^{m} x_{i}^{2}-\frac{1}{m}\left(\sum_{i=1}^{m} x_{i}\right)^{2}} \]
\[ b=\frac{1}{m} \sum_{i=1}^{m}\left(y_{i}-w x_{i}\right) \]
非常完美!


想要一个完美支持LaTeX的Hexo渲染器!
https://warmwinter.ml/2022/05/renderer-and-latex/
作者
Neal
发布于
2022年5月3日
许可协议