更新的帖子
好的,我已经成功让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
})
});
现在的问题是:我认为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()) );
});
});
以下是旧帖
在Math StackExchange中,我可以使用Markdown和MathJax。 我想知道我需要怎么做? 我可以使用像marked
这样的库来呈现Markdown,但对于MathJax而言,它似乎只会在页面加载时呈现。 如何调用它以重新呈现或更好地仅呈现所需内容(由我指定)?
html = marked("some markdown string") // a HTML string
// is there something like
html = MathJax.parse(html)
更新
我认为我应该查看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"]);
})
场景说明:
$text
: 是我的文本区域的 jQuery 元素$preview
: 是预览div
我发现 math
是未定义的,所以似乎 var math = MathJax.Hub.getAllJax("preview")
不起作用。我有一个 div#preview
。
literal
文本中,你可能不清楚要将其呈现出来。 - Beni Cherniavsky-Paskin