美文网首页
hexo下LaTeX无法显示的解决方案

hexo下LaTeX无法显示的解决方案

作者: zealscott | 来源:发表于2018-02-10 20:42 被阅读0次


    今天写博客时需要用到LaTeX,但使用了晚上说的各种方法依然无法成功,折腾了一晚上终于可以了,给同样困惑的小伙伴一些参考。

    配置信息

    这是我的hexo版本和package信息(与LaTeX相关):

        "hexo": "^3.5.0",
        "hexo-math": "^3.0.4",
        "hexo-renderer-kramed": "^0.1.4",
    

    安装插件

    首先我们需要安装Mathjax插件

    npm install hexo-math --save

    更换Hexo的markdown渲染引擎,[hexo-renderer-kramed][1]引擎是在默认的渲染引擎[hexo-renderer-marked][2]的基础上修改了一些bug,两者比较接近,也比较轻量级。

    npm uninstall hexo-renderer-marked --save
    npm install hexo-renderer-kramed --save

    解决语义冲突

    由于LaTeX与markdown语法有语义冲突,在markdown中,斜体和加粗可以用*或者_表示,在这里我们修改变量,将_用于LaTeX,而使用*表示markdown中的斜体和加粗。
    在博客根目录下,进入node_modules\kramed\lib\rules\inline.js,把第11行的escape变量的值做相应的修改:

      //escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
      escape: /^\\([`*\[\]()#$+\-.!_>])/,
    

    这一步是在原基础上取消了对,{,}的转义(escape)。
    同时把第20行的em变量也要做相应的修改:

      //  em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
      em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
    

    更改配置文件

    这里是最重要的一步,我找了好久才在[这个网站][3]中找到适用的解决办法。
    进入到主题目录,找到_config.yml配置问题,把mathjax默认的false修改为true,并更换cdn的url,具体如下:

    # MathJax Support
    mathjax:
      enable: true
      per_page: true
      #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML
      cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML
    

    写博客

    在每次需要用LaTeX渲染的博文中,在文章的Front-matter里打开mathjax开关,具体如下:

    ---
    title: index.html
    date: 2018-2-8 21:01:30
    tags:
    mathjax: true
    --
    

    测试

    输入:

    $$lim_{1\to+\infty}P(|\frac{1}{n}\sum_i^nX_i-\mu|<\epsilon)=1, i=1,...,n$$  
    

    看是否能正常显示。
    [1]: https://github.com/sun11/hexo-renderer-kramed
    [2]: https://github.com/hexojs/hexo-renderer-marked
    [3]: https://github.com/iissnan/hexo-theme-next/issues/1774

    相关文章

      网友评论

          本文标题:hexo下LaTeX无法显示的解决方案

          本文链接:https://www.haomeiwen.com/subject/wwshtftx.html