520 字
3 分钟
Hexo 5 katex 数学公式渲染
2022-08-13

前言#

老实说如何在 hexo 中渲染数学公式卡了我非常长的时间,可能是版本问题,我试过网上很多种下载插件的方式,但都没办法用:

Hexo-无法渲染数学公式

我这里始终显示 CDN 接口连接超时,所以我就开始尝试使用 KaTeX 的本地渲染。

Step1: 获取 KaTeX#

前往 KaTeX/KaTeX,下载最新的 Release。

解压后将文件夹放入可访问路径中,注意:是从外部可访问的路径!

Step2: 安装 hexo-math#

首先,在 hexo 中安装 hexo-math

Terminal window
npm install hexo-math

然后,在 hexo 的 _config.yml 配置文件中增加如下内容:

# hexo-math
math:
enable: true
engine: katex

Step3: 配置 hexo#

最后,我们需要将 KaTeX 的接口添加到 hexo 中。

这里根据安装的主题不同有所差异,例如我安装的 Next 主题,路径就是:

theml >> next >> layout >> _partials >> head >> head.swig

head.swig 中增加 KaTeX 的接口:

<link rel="stylesheet" href="xxx/katex.min.css" crossorigin="anonymous">
<script defer src="xxx/katex.min.js" crossorigin="anonymous"></script>
<script defer src="xxx/contrib/auto-render.min.js" crossorigin="anonymous"></script>

打个公式测试一下,a_1=b^1+1

a1=b1+1a_1=b^1+1

其他#

注意事项#

1. 公式内容需要在一行内结束,如果换行会因为渲染器问题导致内容无法连贯(多行内容是通过<p></p>标签进行分割),使 KaTeX 按格式无法检索到公式。

2. 公式中出现了部分 Markdown 语法中的关键词,例如_^等,渲染器会在 KaTeX 之前完成渲染,导致数学公式无法渲染。

两种方法,第一种是通过在这些符号前增加 \ 来提示渲染器跳过这些特征符号,第二种是对公式内容增加 html 标签使渲染器跳过整个公式内容的渲染,例如 <a>xxx<\a><p>xxx<\p>

吐槽: 在 VS Code 里,公式增加 <p> 就无法渲染,但 <a> 可以?

单行和内联公式#

head.swig 中增加如下内容:

<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false},
],
throwOnError : false
});
});
</script>

添加完成后,使用 $$ 就表示单行公式,使用 $ 表示就表示行内嵌入公式(内联)。

Hexo 5 katex 数学公式渲染
https://fuwari.vercel.app/posts/建站/hexo/hexo-5-katex数学公式渲染/
作者
Asuwee
发布于
2022-08-13
许可协议
CC BY-NC-SA 4.0