如何将Markdown与MathJax一起使用,如Math StackExchange

Jie*_*eng 24 javascript markdown mathjax

更新后的帖子

好吧,我已经设法使Markdown和MathJax一起工作,实际上它相对简单.我marked和MathJax一起使用过.

$(function() {
    var $text       = $("#text"), // the markdown textarea
        $preview    = $("#preview"); // the preview div

    $text.on("keyup", function() {
        $preview.html( marked($text.val()) ); // parse markdown
        MathJax.Hub.Queue(["Typeset", MathJax.Hub, "preview"]); // then let MathJax do its job
    })
});
Run Code Online (Sandbox Code Playgroud)

现在的问题是:我认为markdown在MathJax改变它之前解析我的数学.我该如何解决?我认为它固定在Math StackOverflow上,但如何?我需要停止markdown来解析数学

更新2

这是有效的,但不确定它是否与math.stackexchange的方式相同,但它似乎与我到目前为止测试的结果产生相似/相同的结果...

$(function() {
    var $text       = $("#text"),
        $preview    = $("#preview");

    $text.on("keyup", function() {
        $preview.html( $text.val() );
        MathJax.Hub.Queue(["Typeset", MathJax.Hub, "preview"]);
    });

    MathJax.Hub.Register.MessageHook("End Process", function (message) {
        $preview.html( marked($preview.html()) );
    });
});
Run Code Online (Sandbox Code Playgroud)

老张贴下面

在math stackexchange中,我可以将MathJax与Markdown一起使用.我想知道我需要做什么?我可以使用像marked渲染Markdown 的库,但对于MathJax,它似乎只是在页面加载时呈现.如何调用它来重新渲染或更好地渲染所需的内容(由我指定)

html = marked("some markdown string") // a HTML string
// is there something like
html = MathJax.parse(html)
Run Code Online (Sandbox Code Playgroud)

UPDATE

我想我应该看看http://www.mathjax.org/docs/1.1/typeset.html#manipulating-individual-math-elements.但是,当我尝试

$text.on("keyup", function() {
    $preview.html( marked($text.val()) );
    var math = MathJax.Hub.getAllJax("preview");
    console.log(math);
    MathJax.Hub.Queue(["Text", math, "a+b"]);
})
Run Code Online (Sandbox Code Playgroud)

哪里:

  • $text:是我的textarea的jQuery元素
  • $preview:是预览 div

我发现这math是未定义的,所以似乎var math = MathJax.Hub.getAllJax("preview")不起作用.我有一个div#preview顺便说一句.

Pet*_*ger 5

最快的方法是保护数学免受降价解析器的影响。

请参阅此问题以获取 Davide Cervone 的详细答案,其中包括 math.SE 使用的代码的链接。