0%

【时效性注意】如何让hexo支持LaTeX数学公式渲染

Hexo + $\LaTeX$

这篇文章的部分内容已经过时了,尤其是更换渲染器的部分。

kramed最后一次更新还是2017年,严重缺乏维护,且存在冲突问题,而marked目前早已支持mathjax

hexo的默认渲染器是marked,并不支持用于渲染数学公式的mathjax

想要让hexo支持数学公式的渲染,就需要更换渲染器。

可更换的渲染器有很多,我这里只列举个人试验成功且自认为最简单的方案。

安装过程

安装新渲染器

kramed是在marked基础上修改的,支持了mathjax。你的hexo工程目录下的node_modules中可以找到对应的渲染器文件夹。

可以在你的工程目录下用以下命令卸载marked安装kramed

1
2
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save

修改配置文件

到主题配置文件中_config.yml,找到mathjax的部分,将mathjaxenable设为true

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
# Math Formulas Render Support
math:
# Default (true) will load mathjax / katex script on demand.
# That is it only render those page which has `mathjax: true` in Front-matter.
# If you set it to false, it will load mathjax / katex srcipt EVERY PAGE.
per_page: true

# hexo-renderer-pandoc (or hexo-renderer-kramed) required for full MathJax support.
mathjax:
enable: true
# See: https://mhchem.github.io/MathJax-mhchem/
mhchem: false

# hexo-renderer-Markdown-it-plus (or hexo-renderer-Markdown-it with Markdown-it-katex plugin) required for full Katex support.
katex:
enable: false
# See: https://github.com/KaTeX/KaTeX/tree/master/contrib/copy-tex
copy_tex: false
...

文章渲染标签

为加快渲染速度,渲染器只会在标签中有mathjax: true的文章中使用利用mathjax渲染。

1
2
3
4
5
title: 如何让hexo支持LaTeX数学公式渲染
date: 2021-09-04 23:19:58
tags: [hexo, 博客搭建]
categories: hexo
mathjax: true

使用

$\LaTeX$公式属于Markdown的扩展语法,主要有两种使用方式:内联公式行间公式

内联公式

主要是在行内所显示的公式,比如可以使用$\LaTeX$语法写$y=kx+b$。

上面这行的Markdown源码为:

1
主要是在行内所显示的公式,比如可以使用$\LaTeX$语法写$y=kx+b$。

即:单个$所括起来的内容便是内联公式。

行间公式

主要是在行间所显示的公式,比如可以:
$$
\LaTeX =kx+b
$$
上面的Markdown源码为:

1
2
3
$$
\LaTeX =kx+b
$$

即:两个$所括起来的内容便是行间公式。

问题解决

大括号渲染出错

可能是正则表达式的问题,导致

1
\{ \}

无法正常转义。

想要解决这个问题,只需要用别的LaTeX定界符即可:

1
\lbrace \rbrace

多行公式无法换行

同样是正则表达式的问题,\\被转译成了\

简单粗暴的解决办法就是把\\换成\\\\,来暴力解决。

Try and have Fun

最后就可以开心使用了:
$$
\lbrace \LaTeX \rbrace \\
$$