Mathjax: Dile a MathJax que solo procese nodos específicos

Creado en 3 feb. 2019  ·  6Comentarios  ·  Fuente: mathjax/MathJax

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

  1. Agrega una clase a <body> - "nomathjax" o algo así.
  2. Utilice la propiedad ignoreClass para excluir toda la página.
  3. Agregue una clase a las etiquetas <article> como "yesmathjax".
  4. Utilice la propiedad 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

Question

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.

Todos 6 comentarios

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>
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

memakura picture memakura  ·  5Comentarios

abhikhatri picture abhikhatri  ·  4Comentarios

josephernest picture josephernest  ·  7Comentarios

MasaYan24 picture MasaYan24  ·  4Comentarios

kiwi0fruit picture kiwi0fruit  ·  3Comentarios