想要一个完美支持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 |
|
根据自身使用的操作系统,安装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)
\]
非常完美!