Hexo and Mathjax

前言

最近把个人博客换到Hexo的时候,还是发现和 Mathjax 的语法不是很兼容,其实我比较喜欢写latex,所以希望写Markdown的时候语法尽量贴近latex,这样二者转换的时候就不需要那么多修改,而且最近可能会尝试做一个符合自己需求和 latex 和 Markdown 的转化器,当然使用 pandoc 也是一个选择。

在网上查了比较多的资料,无非前篇一律,而且有些失去时效性,Hexo默认的Markdown 渲染器是 hexo-renderer-marked,其中的正则表达式的匹配已经更新,所以可能以前的方法没那么好用了,本文就是基于这个目的,加上自己的实践。

也是基于修改 marked.js 中匹配下划线_等的正则表达式来修改语法,使得 Mathjax 能够正确渲染

引入 Mathjax

Use hexo-math plugins for convenience.

步骤:

  • npm install hexo-math --save 下载。
  • hexo-math 1.0.6 或者以上的版本,已经不需要 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 文件的目的是:

  • 在公式中使用以下三个符号:\{,\},\\,原来会将这三个符号进行转义,失去大括号、换行等效果。
  • 在公式中使用_,两个_ 会被解析成斜体。

marked.js 中修改原有的escape,em,br的正则表达式:

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

最后使用 hexo clean 清下cache,hexo s重启服务器,本地中上述问题就可以正常显示了。

注意:

  • 测试的hexo-renderer-marked的版本是0.7.0,暂时没有发现公式的其他渲染问题。
  • 修改后不能使用的原有的markdown的语法:
    • 不能使用两个_转化斜体,可以使用两个*替代:斜体
    • 不能使用\\进行换行,行末两个空格,或者用空行都可以。

后言

暂时没发现问题。。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言 人脑有限,对于同一个问题,也许当时花了许久时间解决了,然而过了一段时间,只留下一个印象,当再次需要解决时,还...
    Kiven_1994阅读 1,336评论 1 2
  • 在上一篇中已经用 Hexo 做出了简单的博客。但这仅仅是基础,在基础之上,还有许多工作需要完成,包括但不限于下述问...
    苏尚君阅读 4,524评论 6 6
  • 在Hexo中渲染MathJax数学公式 在用markdown写技术文档时,免不了会碰到数学公式。常用的Markdo...
    ShallowLearner阅读 29,549评论 22 31
  • 硕鼠硕鼠,无食我黍!三岁贯女,莫我肯顾。逝将去女,适彼乐土。乐土乐土,爰得我所。 硕鼠硕鼠,无食我麦!三岁贯女,莫...
    风雨洛神赋阅读 1,423评论 0 8
  • 今早起来照例写更文,卡壳的时候就去点抽奖。第一次得了20没在意,收了后继续点,等待的时候文思想翻飞。 记得有个帖写...
    桦菁阅读 41评论 1 1