参考教程
安装并配置hexo-filter-mathjax
卸载hexo-math
博客目录下查看是否安装了hexo-math插件
npm list hexo-math
如果已经安装,将其卸载
npm uninstall hexo-math --save
安装hexo-filter-mathjax
npm install hexo-filter-mathjax --save
安装成功后,我们可以进行一些全局配置,打开hexo目录下的_config.yml文件, 在最后面添加如下的代码:
mathjax:
tags: none # or 'ams' or 'all'
single_dollars: true # enable single dollar signs as in-line math delimiters
cjk_width: 0.9 # relative CJK char width
normal_width: 0.6 # relative normal (monospace) width
append_css: true # add CSS to pages rendered by MathJax
every_page: false # if true, every page will be rendered by MathJax regardless the `mathjax` setting in Front-matter
安装公式渲染器
hexo-math默认的公式渲染器是hexo-renderer-marked,它和markdown的语法有冲突,我们将其卸载,查看是否安装了hexo-renderer-marked公式渲染器:
npm list hexo-renderer-marked
如果安装了将其卸载:
npm uninstall hexo-renderer-marked --save
再安装一个新的公式渲染器,叫做hexo-renderer-kramed,它对hexo-renderer-marked进行了改进,在hexo目录下输入下面的命令安装:
npm install hexo-renderer-kramed --save
卸载了hexo-renderer-marked后,如果不安装hexo-renderer-kramed整个网站渲染不出来,导致server lost。
全局和主题配置
安装成功后,修改以下文件的内容防止语法冲突。
打开hexo主目录下的这个文件:[BlogRoot]\node_modules\kramed\lib\rules\inline.js,然后修改下面的规则(大家最好不要删除原代码,只是将其注释掉):
//escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/
//修改为:
escape: /^\\([`*\[\]()#$+\-.!_>])/
//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/
//修改为
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/
最后在主题目录下_config.butterfly.yml,开启对mathjax的支持,如下所示:
# MathJax
mathjax:
enable: true
# See: http://mhchem.github.io/MathJax-mhchem/
mhchem: true # 化学方程式
per_page: false
公式及化学式输入测试
行间公式测试
$
f\left(
\left[
\frac{
1+\left\{x,y\right\}
}{
\left(
\frac{x}{y}+\frac{y}{x}
\right)
\left(u+1\right)
}+a
\right]^{3/2}
\right)
$
\begin{eqnarray\*}
\nabla\cdot\vec{E}&=&\frac{\rho}{\epsilon_0}\\\\
\nabla\cdot\vec{B}&=&0\\\\
\nabla\times\vec{E}&=&-\frac{\partial B}{\partial t}\\\\
\nabla\times\vec{B}&=&\mu_0\left(\vec{J}+\epsilon_0\frac{\partial E}{\partial t}\right)\\\\
\end{eqnarray\*}
$
i\hbar\frac{\partial}{\partial t}\psi=-\frac{\hbar^2}{2m}\nabla^2\psi+V\psi
$
$\sum_{i=1}^n \frac{1}{i^2} \quad and \quad \prod_{i=1}^n \frac{1}{i^2} \quad and \quad \bigcup_{i=1}^{2} R$
$f(x_1,x_2,\underbrace{\ldots}_{\rm ldots} ,x_n) = x_1^2 + x_2^2 + \underbrace{\cdots}_{\rm cdots} + x_n^2$
行内公式测试
行内公式$O(f(n))=log_2^{n}$测试
行内公式
行内公式$\ce{H2O}$和$\ce{CrO4^2-}$测试
行内公式
化学式测试
$\ce{CO2 + C -> 2 CO}$
$\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$
$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$
$\ce{x Na(NH4)HPO4 ->[\Delta] (NaPO3)_x + x NH3 ^ + x H2O}$
$\ce{Zn^2+ <=>[+ 2OH-][+ 2H+] $\underset{\text{amphoteres Hydroxid}}{\ce{Zn(OH)2 v}}$ <=>[+ 2OH-][+ 2H+] $\underset{\text{Hydroxozikat}}{\ce{[Zn(OH)4]^2-}}$}$
补丁
由于修改了[BlogRoot]\node_modules\kramed\lib\rules\inline.js的部分内容,但是node_modules依赖文件太大没有上传到github仓库无法实现修改的内容,需要增加一个补丁:
- 安装
patch-package和postinstall脚本:
npm install patch-package
- 在
package.json中添加一个postinstall脚本:
"scripts": {
"postinstall": "patch-package"
}
- 修改
node_modules/kramed/lib/rules/inline.js文件后,运行:
npx patch-package kramed
这会在项目根目录下创建一个 patches/ 文件夹,包含对 kramed 包的补丁。在部署时,Vercel 会自动运行 postinstall,并应用这些补丁。
后记
本博客中使用mathjax时出现一个bug,正常LaTex公式需要两个$,但是博客中只要一个,两个渲染不出来,比如:
$$
i\hbar\frac{\partial}{\partial t}\psi=-\frac{\hbar^2}{2m}\nabla^2\psi+V\psi
$$
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 3415226167@qq.com