2012-08-22 9 views
23

AKTUALISIERT POSTWie Markdown verwenden, um mit Mathjax wie Math Stack

Ok ich habe es geschafft, Abschlags und Mathjax zusammenarbeiten, um zu machen, war es relativ einfach, eigentlich. Ich habe zusammen mit MathJax verwendet.

Problem ist jetzt: Ich denke Markdown analysiert meine Mathe, bevor MathJax es ändern kann. Wie behebe ich das? Ich denke, es ist auf Math StackOverflow festgelegt, aber wie? Ich brauche Abschlag zu stoppen Mathe Parsen

UPDATE 2

Dies funktioniert, aber nicht sicher, ob seine die Art und Weise math.stackexchange es tut, aber es scheint mit ähnlichen/gleichen Ergebnisse zu produzieren, was ich getestet, so weit ...

$(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())); 
    }); 
}); 

ALTE POST UNTER

Im Mathe-Stackexchange kann ich MathJax mit Markdown verwenden. Ich frage mich, was muss ich tun? Ich kann eine Bibliothek wie marked verwenden, um Markdown zu rendern, aber für MathJax scheint es, dass es nur beim Laden von Seiten gerendert wird. Wie kann ich es nennen neu zu machen oder besser nur machen was benötigt wird (von mir angegeben)

html = marked("some markdown string") // a HTML string 
// is there something like 
html = MathJax.parse(html) 

UPDATE

Ich glaube, sollte ich bei http://www.mathjax.org/docs/1.1/typeset.html#manipulating-individual-math-elements suchen. Aber wenn ich versuche

$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"]); 
}) 

Wo:

  • $text: ist das jQuery Element für meine TextArea-
  • $preview: ist die Vorschau div

Ich finde, dass math nicht definiert ist, so scheint es var math = MathJax.Hub.getAllJax("preview") funktioniert nicht. Ich habe eine div#preview BTW.

+0

Das Ausführen von MathJax vor dem Markdown ist schlau (Markdown übergibt HTML), bedeutet aber, dass Mathe * überall * dargestellt wird. Zum Beispiel ist es unklar, dass Sie es in 'literal' Text gerendert werden wollen. –

Antwort

4

Der schnellste Weg ist, die Mathematik vor Ihrem Markdown-Parser zu schützen.

Eine detaillierte Antwort von Davide Cervone finden Sie unter this question, einschließlich eines Links zu dem von math.SE verwendeten Code.