最近这几天开始准备数学建模比赛了,于是便接触到了许多的数学公式,俗话说

好记性不如烂笔头

于是我便想着开始写一些文章来记录自己的学习过程,刚好暑假搞了博客,便想着用博客来记录吧。
上个学期末就用Typora来记录了自己的Leetcode学习,当时用的就是MathJax来编写数学公式,已经有点习惯于MathJax的语法了,便继续使用,但是在这两天编写时发现许多的数学公式在渲染的时候会出现许多的问题,总是会出现渲染失败的问题,于是便去网上找了下解决方案,终于在CSDN上找到了解决方案。

教程

  1. 更换渲染引擎

    1
    2
    npm uninstall hexo-renderer-marked --save
    npm install hexo-renderer-kramed --save
  2. 解决语义冲突问题

    其实我们的MathJax在渲染数学公式的时候,大部分是因为语义冲突导致渲染失败了,我们会发现明明是渲染公式的,文字并没有写入公式里面,公式没有被渲染文字反而被渲染了,其实这种情况一般就是语义发生了冲突。

    解决方案:进入node_modules\kramed\lib\rules\inline.js,修改如下两行

    1
    2
    3
    4
    5
    -  escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
    + escape: /^\\([`*\[\]()#$+\-.!_>])/
    ...
    - em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
    + em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/
  3. 开启MathJax

如果存在两个括号导致渲染出问题的情况,可以在两个连续的括号之间加上一个空格便可以解决,如下

1
$ {\forall} v {\in} V - \{{s,t}\} $

需要改成如下便可以正确展示公式

1
$ {\forall} v {\in} V - \{ {s,t} \} $

更多关于MathJax内容,请见MathJax Documentation