2011-10-28 8 views
7

Sono stato ottimizzato con il seguente codice di esempio. La documentazione per MathJax non è molto completa. Qualcuno potrebbe più esperienza dire come dovrei modificare il codice qui sotto in modo che Tex sia analizzato solo quando ho specificato delimitatori come $ \ alpha $. Mi piacerebbe farlo funzionare come su math.stackexchange.Visualizza MathJax in modo dinamico solo quando sono presenti delimitatori

<html> 
    <head> 
    <title>MathJax Dynamic Math Test Page</title> 

    <script type="text/x-mathjax-config"> 
     MathJax.Hub.Config({ 
     tex2jax: { 
      inlineMath: [["$","$"],["\\(","\\)"]] 
     } 
     }); 
    </script> 
    <script type="text/javascript" 
     src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full"> 
    </script> 

    </head> 
    <body> 

    <script> 
     // 
     // Use a closure to hide the local variables from the 
     // global namespace 
     // 
     (function() { 
     var QUEUE = MathJax.Hub.queue; // shorthand for the queue 
     var math = null;    // the element jax for the math output. 

     // 
     // Get the element jax when MathJax has produced it. 
     // 
     QUEUE.Push(function() { 
      math = MathJax.Hub.getAllJax("MathOutput")[0]; 
     }); 

     // 
     // The onchange event handler that typesets the 
     // math entered by the user 
     // 
     window.UpdateMath = function (TeX) { 
      QUEUE.Push(["Text",math,"\\displaystyle{"+TeX+"}"]); 
     } 
     })(); 
    </script> 
    <textarea id="MathInput" size="50" onkeyup="UpdateMath(this.value)"></textarea> 

    <div id="MathOutput"> 
    You typed: ${}$ 
    </div> 

    </body> 
    </html> 
+0

nota dal futuro: cdn.mathjax.org sta avvicinando alla fine della loro vita utile, controllare https: //www.mathjax.org/cdn-shutting-down/ per suggerimenti sulla migrazione. –

risposta

19

Il codice di esempio che hai postato prende il contenuto del MathInput e sostituisce il primo elemento mathjax con la nuova "matematica" dal MathInput. Quello che vuoi è comporre il MathInput e creare nuovi elementi MathJax per il testo delimitato. Ho installato un esempio jsFiddle qui: http://jsfiddle.net/Zky72/2/

Il cambiamento principale è nella funzione UpdateMath:

window.UpdateMath = function (TeX) { 
    //set the MathOutput HTML 
    document.getElementById("MathOutput").innerHTML = TeX; 

    //reprocess the MathOutput Element 
    MathJax.Hub.Queue(["Typeset",MathJax.Hub,"MathOutput"]); 

} 
+0

Dove hai imparato come fare questo? Conosci qualche libro su javascript o mathjax? Qualsiasi riferimento sarebbe apprezzato :) – Mark

+0

La documentazione sul sito MathJax ha in realtà una sezione su come manipolare un elemento matematico sulla pagina: http://www.mathjax.org/docs/1.1/typeset.html Per quanto riguarda come per imparare JavaScript ecco una domanda StackOverflow con alcune buone risorse: http://stackoverflow.com/questions/11246/best-resources-to-learn-javascript –

+0

So che questa domanda è vecchia, ma l'ho usata (grazie a la via) e c'è un problema, continua a saltare in cima alla pagina su key-up, anche se lascio nel bit che definisce parentesi, la INTERO PAGINA viene formattata, è questa in base alla progettazione? Devo stare molto attento con le parentesi ora? –

Problemi correlati