MathJax - Hexo Next渲染LaTex数学公式
MathJax是一个JavaScript插件,可以在前端实现对LaTex数学公式的解析渲染。
MathJax - Hexo Next渲染LaTex数学公式
0 MathJax
MathJax | Beautiful math in all browsers
Beautiful math in all browsers
A JavaScript display engine for mathematics that works in all browsers. No more setup for readers. It just works.
MathJax是一个JavaScript显示引擎,可以在浏览器端渲染数学公式。
1 Next的配置文件
我采用的Hexo静态Web框架,Hexo主题功能完善,包含了MathJax配置选项。
1 | # --------------------------------------------------------------- |
- 启用
math
渲染支持enable: true
; - 默认渲染模式是
per_page: true
,表示渲染每一个front-matter
中包含mathjax: true
的页面; - 默认引擎是
mathjax
,也可以选用katex
引擎; - CDN选项采用默认配置即可。
2 更换MarkDown渲染引擎
Hexo默认的MarkDown引擎marked
不支持MathJax。
在渲染生成静态页面时,marked
没有跳过MathJax段(使用%% ... %%
或% ... %
标记),而是会对MathJax
段内的内容进行MarkDown解析,例如:%% <math exprs>_<math exprs>_<math exprs>
中,成对小下划线_ _
被解析为MarkDown格式符,被渲染为<em><math exprs></em>
的HTML标签,在前端会显示为斜体。这就意味着,前端加载MathJax再解析的时候,公式内容已经被替换修改过了,不再是LaTex
公式。
在以下公式中,成对的小下划线会被错误解析为MarkDown的斜体:
1 | $$ |
通过在博客目录下执行以下命令更换MarkDown渲染引擎即可:
1 | npm uninstall hexo-renderer-marked --save |
- 卸载默认的
marked
渲染引擎; - 安装支持
MathJax
的kramed
渲染引擎。
重新生成Hexo站点后,即可看到正常渲染的内容:
1 | hexo clean |
\[ {\mathcal L}_{cyc}(G,F)={\mathbb E}_{x \sim p_{data}(x)}[{\|F(G(x))-x\|}_{1}]+{\mathbb E}_{y \sim p_{data}(y)}[{\|G(F(y))-y\|}_{1}] \]
确认无误后再进行部署:
1 | hexo g -d |
3 常见问题
3.1 跨平台同步修改后的hexo环境?
通过GitHub对项目源代码进行同步,在新环境执行:
1 | npm install |
即可自动部署完成所需NPM包组件。
可以在Hexo的站点目录下查看package.json
获悉该站点的主要包:
1 | { |
对站点NPM包的安装、卸载、升级更新都会自动修改该记录文件。