2012-08-22 27 views
23

updated EnviarCómo usar Markdown con mathjax como matemáticas StackExchange

Ok Me las he arreglado para hacer de rebajas y mathjax trabajan juntos, era relativamente simple en realidad. He usado marked junto con 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 
    }) 
}); 

problema ahora es: Creo que rebaja es analizar mis matemáticas primero antes mathjax puede cambiarlo. ¿Cómo puedo solucionar esto? Creo que está fijo en Math StackOverflow, pero ¿cómo? Tengo que dejar de reducción del precio de análisis matemático

ACTUALIZACIÓN 2

Esto funciona, pero no estoy seguro si es el camino math.stackexchange lo hace, pero parece producir mismos resultados/parecidos con lo probé por lo ahora ...

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

ANTIGUA POSTAL POR DEBAJO

En el intercambio de pila de matemáticas, puedo usar MathJax con Markdown. Me pregunto qué necesito hacer eso? Puedo usar una biblioteca como marked para renderizar Markdown, pero para MathJax, parece que solo se renderiza en cargas de página. ¿Cómo puedo llamar a volver a hacer o mejor simplemente hacer cuál es necesaria (especificada por mí)

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

ACTUALIZACIÓN

creo que debería estar mirando a http://www.mathjax.org/docs/1.1/typeset.html#manipulating-individual-math-elements. Pero cuando intento

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

Dónde:

  • $text: es el elemento jQuery para mi área de texto
  • $preview: es la vista previa div

encuentro que math no está definido, por lo que parece var math = MathJax.Hub.getAllJax("preview") no está funcionando. Tengo un div#preview por cierto.

+0

Hacer MathJax antes del descuento es inteligente (el valor de corrección pasa a través de html) pero significa que las matemáticas se representarán * en todas partes *. Por ejemplo, no está claro si desea que se represente en texto 'literal'. –

Respuesta

4

La manera más rápida es proteger las matemáticas de su analizador de rebajas.

Consulte this question para obtener una respuesta detallada de Davide Cervone, incluido un enlace al código utilizado por math.SE.