Hexo and Mathjax

前言

最近把個人博客換到Hexo的時候,還是發(fā)現(xiàn)和 Mathjax 的語法不是很兼容,其實我比較喜歡寫latex,所以希望寫Markdown的時候語法盡量貼近latex,這樣二者轉(zhuǎn)換的時候就不需要那么多修改,而且最近可能會嘗試做一個符合自己需求和 latex 和 Markdown 的轉(zhuǎn)化器,當(dāng)然使用 pandoc 也是一個選擇。

在網(wǎng)上查了比較多的資料,無非前篇一律,而且有些失去時效性,Hexo默認(rèn)的Markdown 渲染器是 hexo-renderer-marked,其中的正則表達(dá)式的匹配已經(jīng)更新,所以可能以前的方法沒那么好用了,本文就是基于這個目的,加上自己的實踐。

也是基于修改 marked.js 中匹配下劃線_等的正則表達(dá)式來修改語法,使得 Mathjax 能夠正確渲染

引入 Mathjax

Use hexo-math plugins for convenience.

步驟:

  • npm install hexo-math --save 下載。
  • hexo-math 1.0.6 或者以上的版本,已經(jīng)不需要 hexo math install。
  • _config.yml 中添加 Mathjax 的配置:
# MathJax Support
math:
  engine: 'mathjax'
  mathjax:
    src: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js
    config: 
      # MathJax config
      tex2jax:
        inlineMath: [ ['$','$'], ["\\(","\\)"] ]
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
        processEscapes: true
      TeX:
        equationNumbers:
          autoNumber: "AMS"
      extensions: ["tex2jax.js"]
      jax: ["input/TeX", "output/HTML-CSS"]
  • 在所有需要啟用 Mathjax 的 post 的 header 處添加:
mathjax: true

修改 marked.js 文件

修改 marked.js 文件的目的是:

  • 在公式中使用以下三個符號:\{,\},\\,原來會將這三個符號進行轉(zhuǎn)義,失去大括號、換行等效果。
  • 在公式中使用_,兩個_ 會被解析成斜體。

marked.js 中修改原有的escape,em,br的正則表達(dá)式:

escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]^_`|~])/, 
em: /^\*([^\s*<\[])\*(?!\*)|^\*([^\s<"][\s\S]*[?^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,
br: /^( {2,})\n(?!\s*$)/,

最后使用 hexo clean 清下cache,hexo s重啟服務(wù)器,本地中上述問題就可以正常顯示了。

注意:

  • 測試的hexo-renderer-marked的版本是0.7.0,暫時沒有發(fā)現(xiàn)公式的其他渲染問題。
  • 修改后不能使用的原有的markdown的語法:
    • 不能使用兩個_轉(zhuǎn)化斜體,可以使用兩個*替代:斜體。
    • 不能使用\\進行換行,行末兩個空格,或者用空行都可以。

后言

暫時沒發(fā)現(xiàn)問題。。。

?著作權(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)容

  • 引言 人腦有限,對于同一個問題,也許當(dāng)時花了許久時間解決了,然而過了一段時間,只留下一個印象,當(dāng)再次需要解決時,還...
    Kiven_1994閱讀 1,425評論 1 2
  • 在上一篇中已經(jīng)用 Hexo 做出了簡單的博客。但這僅僅是基礎(chǔ),在基礎(chǔ)之上,還有許多工作需要完成,包括但不限于下述問...
    蘇尚君閱讀 4,620評論 6 6
  • 在Hexo中渲染MathJax數(shù)學(xué)公式 在用markdown寫技術(shù)文檔時,免不了會碰到數(shù)學(xué)公式。常用的Markdo...
    ShallowLearner閱讀 29,832評論 22 31
  • 碩鼠碩鼠,無食我黍!三歲貫女,莫我肯顧。逝將去女,適彼樂土。樂土樂土,爰得我所。 碩鼠碩鼠,無食我麥!三歲貫女,莫...
    風(fēng)雨洛神賦閱讀 1,684評論 0 8
  • 今早起來照例寫更文,卡殼的時候就去點抽獎。第一次得了20沒在意,收了后繼續(xù)點,等待的時候文思想翻飛。 記得有個帖寫...
    樺菁閱讀 69評論 1 1

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