美文网首页
简书Markdown编辑器改进

简书Markdown编辑器改进

作者: Shihira | 来源:发表于2015-06-10 19:48 被阅读0次

简书不直接支持数学公式,这十分遗憾。在开发人员反应过来之前大概柯南都要结局了,既然自己有能力解决,那就开干了。

我预想是这样的,块级公式用带tex类的代码块:

```tex
e^{ix} = \cos x + i\sin x
```
e^{ix} = \cos x + i\sin x

然后在普通内联公式呢,就用下面的办法来实现 $\lim_{x\rightarrow 0} \frac{sin x}x$,所有由 $ 包裹的代码都将被当作Latex代码,为了防止跟其它代码混淆,规定 $ 跟 ` 之间不能有空格

`$\lim_{x\rightarrow 0} \frac{sin x}x$`
理想的效果图

方法

在Firefox的Greasemonkey或者Chrome的TamperMonkey中添加这一段UserScript:

// ==UserScript==
// @name        jianshu-extension
// @namespace   your-namespace
// @include     http://*.jianshu.com/*
// @version     1
// @grant       none
// ==/UserScript==

var base_url = "http://latex.codecogs.com/gif.latex?";

function replaceLatex() {
  $('.preview code.tex').each(function () {
    var pre = $(this).parent("pre");
    var latex = $(this).text();
    var url = base_url + encodeURI(latex);

    pre.replaceWith('<img src="'+url+'" alt="'+latex+'" '+
        'style="display: block; margin: 20px; margin-left: auto; margin-right: auto;" />');
  });
  
  $('.preview code').each(function() {
    var latex = $(this).text().match(/^\$(.+)\$$/);
    if(!latex) return; else latex = latex[1];
    var url = base_url + encodeURI(latex);
    $(this).replaceWith('');
  });
  
  $('.main textarea.text')
      .css("font-family", '"courier"')
      .css("line-height", "18px")
      .css("font-size", "14px");
}

setInterval(replaceLatex, 1000);

如果没有办法安装这个代码,直接按F12打开调试器把代码贴进去也可以。

相关文章

网友评论

      本文标题:简书Markdown编辑器改进

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