【时效性注意】如何让hexo支持LaTeX数学公式渲染
Hexo + $\LaTeX$
这篇文章的部分内容已经过时了,尤其是更换渲染器的部分。
kramed最后一次更新还是2017年,严重缺乏维护,且存在冲突问题,而marked目前早已支持mathjax。
hexo的默认渲染器是marked,并不支持用于渲染数学公式的mathjax。
想要让hexo支持数学公式的渲染,就需要更换渲染器。
可更换的渲染器有很多,我这里只列举个人试验成功且自认为最简单的方案。
安装过程
安装新渲染器
kramed是在marked基础上修改的,支持了mathjax。你的hexo工程目录下的node_modules中可以找到对应的渲染器文件夹。
可以在你的工程目录下用以下命令卸载marked安装kramed:
1 | npm uninstall hexo-renderer-marked --save |
修改配置文件
到主题配置文件中_config.yml,找到mathjax的部分,将mathjax的enable设为true。
1 | ... |
文章渲染标签
为加快渲染速度,渲染器只会在标签中有mathjax: true的文章中使用利用mathjax渲染。
1 | title: 如何让hexo支持LaTeX数学公式渲染 |
使用
$\LaTeX$公式属于Markdown的扩展语法,主要有两种使用方式:内联公式和行间公式
内联公式
主要是在行内所显示的公式,比如可以使用$\LaTeX$语法写$y=kx+b$。
上面这行的Markdown源码为:
1 | 主要是在行内所显示的公式,比如可以使用$\LaTeX$语法写$y=kx+b$。 |
即:单个$所括起来的内容便是内联公式。
行间公式
主要是在行间所显示的公式,比如可以:
$$
\LaTeX =kx+b
$$
上面的Markdown源码为:
1 | $$ |
即:两个$所括起来的内容便是行间公式。
问题解决
大括号渲染出错
可能是正则表达式的问题,导致
1 | \{ \} |
无法正常转义。
想要解决这个问题,只需要用别的LaTeX定界符即可:
1 | \lbrace \rbrace |
多行公式无法换行
同样是正则表达式的问题,\\被转译成了\。
简单粗暴的解决办法就是把\\换成\\\\,来暴力解决。
Try and have Fun
最后就可以开心使用了:
$$
\lbrace \LaTeX \rbrace \\
$$