Solo ciertos nodos HTML en mi sitio contienen realmente LaTeX, por lo que me gustaría poder decirle a MathJax que solo los procese. Lo que me gustaría poder hacer es algo como esto:
<script>
MathJax.Hub.Config({
tex2jax: {
restrict: document.getElementsByTagName("article")
}
});
</script>
Pero en cambio, la única forma en que podría obtener el resultado que quiero es
<body>
- "nomathjax" o algo así.ignoreClass
para excluir toda la página.<article>
como "yesmathjax".processClass
para volver a incluir esas etiquetas.Son los pasos (2) y (4) los que me molestan. Mi HTML es mío. Soy quisquilloso con eso. Lo tengo bonito, limpio y minimalista, tal como me gusta. No quiero tener que agregarle clases CSS sin sentido solo porque una biblioteca que estoy usando me necesita. En realidad, en mi caso de uso particular, es imposible para mí hacer eso; no puedo modificar el cuerpo de la página, todo lo que puedo hacer es insertar
Puedes usar
(y debe colocarse ANTES del script que carga MathJax.js). Esto restringirá las operaciones de composición tipográfica MathJax al contenido de los elementos especificados. Es una propiedad global porque se aplica a TODOS los preprocesadores.
¡Impresionante! He estado hasta la cintura en documentos sobre colas y preprocesadores durante la última hora. Los resultados de Google sobre este tema realmente parecían sugerir que no había forma de hacerlo más que processClass
. Es hora de actualizar algunos subprocesos de StackOverflow, supongo.
El problema con la solución @dpvc es que si no se encuentran elementos, Mathjax recurrirá al comportamiento predeterminado de intentar procesar todo el DOM.
El problema con la solución @dpvc es que si no se encuentran elementos, Mathjax recurrirá al comportamiento predeterminado de intentar procesar todo el DOM.
¿Hay alguna manera de evitar eso?
Claro, un truco como pasar una matriz de un solo nodo ficticio (es decir,
[document.createElement ('div')) si no hay coincidencias (es decir, nodes.length
=== 0). Pero mathjax podría hacer que pasar nulo signifique no procesar nada para
hacer esto menos pirateado, sin un cambio importante (aunque una mejor API
haría lo contrario, nulo procesar todo y matriz vacía no procesar nada).
Mi 2c
Una forma posible de manejar el caso en el que podría no haber elementos del tipo dado es la siguiente:
<script type="text/x-mathjax-config">
(function () {
var articles = document.getElementsByTagName("article");
MathJax.Hub.Config({
elements: articles,
skipStartupTypeset: (articles.length === 0)
});
})();
</script>
Comentario más útil
Puedes usar
(y debe colocarse ANTES del script que carga MathJax.js). Esto restringirá las operaciones de composición tipográfica MathJax al contenido de los elementos especificados. Es una propiedad global porque se aplica a TODOS los preprocesadores.