2011-10-28 9 views
7

He estado modificando con el código de muestra siguiente. La documentación para MathJax no es muy completa. ¿Podría alguien más experiencia decirme cómo debo modificar el código a continuación para que Tex solo se analice cuando haya especificado delimitadores como $ \ alpha $. Me gustaría hacer que funcione como en math.stackexchange.Mostrar MathJax dinámicamente solo cuando hay delimitadores

<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 del futuro: cdn.mathjax.org está llegando a su final de su vida útil, comprobar https: //www.mathjax.org/cdn-shutting-down/ para consejos de migración. –

Respuesta

19

El código de ejemplo informados toma el contenido de la MathInput y reemplaza el primer elemento mathjax con la nueva "matemática" de la MathInput. Lo que quiere es componer el MathInput y crear nuevos elementos MathJax para el texto delimitado. I fijó un ejemplo jsFiddle aquí: http://jsfiddle.net/Zky72/2/

El principal cambio es en la función 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

¿Dónde aprendiste cómo hacer esto? ¿Conoces algún libro sobre javascript o mathjax? Cualquier referencia sería apreciada :) – Mark

+0

La documentación en el sitio MathJax en realidad tiene una sección sobre cómo manipular un elemento matemático en la página: http://www.mathjax.org/docs/1.1/typeset.html En cuanto a cómo para aprender JavaScript aquí hay una pregunta de stackoverflow con algunos buenos recursos: http://stackoverflow.com/questions/11246/best-resources-to-learn-javascript –

+0

Sé que esta pregunta es antigua, pero he usado esto (gracias por el camino) y hay un problema, sigue saltando a la parte superior de la página en la tecla, también si salgo en la parte que define los corchetes, se formatea TODA LA PÁGINA, ¿es esto por diseño? ¿Debo tener mucho cuidado con los corchetes ahora? –

Cuestiones relacionadas