javascript - ¿Cómo recuperar o reiniciar MathJax?
mathjax main (2)
Necesito MathJax para volver a verificar toda mi página.
Quiero decir, cuando se crea la página, todo va muy bien. Pero necesito llamarlo después de window.onload para volver a rastrear la página, ya que sus contenidos han cambiado mientras tanto.
¿Cómo haría tal cosa?
Encontré que la forma más sencilla de hacer actualizaciones dinámicas con MathML es dejar que MathJax haga los cambios de contenido (en lugar de la función jQuery .html (s), por ejemplo). Luego procesa las operaciones matemáticas mientras cambia el contenido.
<script type="text/javascript">
function updateMathContent(s) {
var math = MathJax.Hub.getAllJax("mathdiv")[0];
MathJax.Hub.Queue(["Text", math, s]);
}
</script>
...
<div id="mathdiv">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
</math>
</div>
Así que simplemente use la función para reemplazar todo el contenido del div con el nuevo MathML y funcionará. (El guión va en la cabeza)
Nota: Si tiene un div matemático vacío y agrega MathML más tarde, obtendrá un error de guión. Pero si las etiquetas matemáticas están presentes sin nada dentro de la llamada a updateMathContent funcionará.
Ver http://docs.mathjax.org/en/latest/typeset.html :
Si está escribiendo una página web dinámica donde el contenido que contiene las matemáticas puede aparecer después de que MathJax ya haya compilado el resto de la página, entonces tendrá que decirle a MathJax que busque las matemáticas en la página nuevamente cuando se produzca ese nuevo contenido. Para hacer eso, necesitas usar el método
MathJax.Hub.Typeset()
. Esto hará que los preprocesadores (si hay alguno cargados) vuelvan a ejecutarse en la página, y luego MathJax buscará las matemáticas no procesadas en la página y las compilará, sin modificar las matemáticas que ya se hayan compilado.Sin embargo, no debes simplemente llamar a este método directamente. [En su lugar] debe poner en cola la acción de composición tipográfica, [usando este] comando:
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
Demostración aquí: http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic.html