随着Github page升级到207版本,kramdown被升级到2.3.0,然后,原先的Latex(基于Katex)不能正常显示了。

正如Github 在release里面提到的:

NOTE: This release changes the way Math is converted. It will now output inside backslash-square-brackets: \[\]. You may need to update your JavaScript (usually the MathJax library) to support this.

然后,发现了一堆的同样的问题:

Karmdown官方文档关于Math的支持,真的是寥寥数语,云里雾里。 Math Block

只能到处找现成的解决方案,找到一篇Blog,试图去使用同样的方法来解决,遇到一堆的问题:

  • ‘Gem install’ 和 ‘Gem update’的速度问题

一如既往,长城内外的区别。解决方法是使用国内镜像:

source "https://gems.ruby-china.com"

Karmdown官方文档关于Katex支持,延续了Jekyll一贯的风格,语焉不详之外,把所有的东西都指向了那个号称2.0版本之前一直内置、2.0版本就被剔除的Katex的转换包。

Note: Until kramdown version 2.0.0 this math engine was part of the kramdown distribution.

打开这个数年没有维护的repo,更加是文档缺少,连一个example都没有。在github上搜索了一下关于这个包的引用,似乎只有基于Jekyll的Fastpages默认使用了这个converter,随便找了几个repo,貌似没有一个真正把Katex用起来的。

为了试试这个converter,去Clone了Personal-website, 安装了这个converter(Gemfile添加并手动bundle install),然而没有任何效果。

仔细看了看math-katex的文档,看到它要求一个javascript的runtime,试图安装列在最前面的therubyracer,发现又一个2年多没有更新的repo,还在V8引擎的3.0+版本,而V8引擎已经是版本8.0+了。即便修改了国内镜像源,这个包依旧没办法安装成功。

  • 前台的问题用前台方案解决

本来已经打算放弃Katex,回归Karmdown一直被视为正统的Mathjax了,已经在估算所有Blog所需的工作量了,同时也在后悔当初为了Katex而耗费的千辛万苦。但还是打算瞅瞅Katex的文档看看是不是能直接支持backslash-square-brackets的新方法。

皇天不负有心人,在AutoRender页面,发现了下述delimiter的设置:

[
  {left: "$$", right: "$$", display: true},
  {left: "$", right: "$", display: false},
  {left: "\\(", right: "\\)", display: false},
  {left: "\\[", right: "\\]", display: true}
]

所以,需要做的就是,在需要转载数学公式的页面(Post)上,加上以下这段script:

    document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement( document.body, {
        delimiters: [
          {left: "$$", right: "$$", display: true},
          {left: "$", right: "$", display: false},
          {left: "\\(", right: "\\)", display: false},
          {left: "\\[", right: "\\]", display: true}
          ]}
        );
    });

貌似已经可以完美解决这个问题了。试了试,果然! :laugh:

是为之记。
Alva Chien
2020.08.09