hexo下LaTeX無法顯示的解決方案


今天寫博客時需要用到LaTeX,但使用了晚上說的各種方法依然無法成功,折騰了一晚上終于可以了,給同樣困惑的小伙伴一些參考。

配置信息

這是我的hexo版本和package信息(與LaTeX相關(guān)):

    "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]的基礎(chǔ)上修改了一些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變量的值做相應(yīng)的修改:

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

這一步是在原基礎(chǔ)上取消了對,{,}的轉(zhuǎn)義(escape)。
同時把第20行的em變量也要做相應(yīng)的修改:

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

更改配置文件

這里是最重要的一步,我找了好久才在[這個網(wǎng)站][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開關(guān),具體如下:

---
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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容