- ¿Habéis intentado preguntar alguna duda de mates por correo, Whatsapp o Telegram alguna vez?
- Es una pesadilla. Acaba siendo una mezcla de código en \LaTeX \space sin renderizar y lenguaje natural
La alternativa en Telegram hasta ahora era usar un bot. De hecho fue un compañero, Analca3, el que diseñó un bot para aportar esta característica: LaTeX2IMGbot .
Esto tiene el inconveniente de que sólo pueden usarse bots en los grupos, manda el código \LaTeX \space ya renderizado, de forma que no se puede recuperar lo escrito.
Hace poco otro compañero descubrió ChatJax. Básicamente es una función de \texttt{Javascript} que introduce una etiqueta \texttt{<script>} con el código necesario por \texttt{MathJax}, y que al estar codificada como una línea de HTML, puede guardarse como un marcador de forma que cuando le demos, activaremos \texttt{MathJax} en la página actual.
Empecé usando \texttt{ChatJax}, pero me di cuenta de que tenía un gran problema.
Otros dos marcadores para activar desactivar la cola de \texttt{MathJax}, que proporcionan en la misma página de la UCLA desde donde he enlazado ChatJax. Inconveniente: 3 marcadores sólo para usar \LaTeX \space en Telegram.
Mi solución:
Crear un Javascript instalable con \texttt{GreaseMonkey} (en el caso de Firefox), para no tener que preocuparme de manejar 3 marcadores cada vez que quiero escribir algo en \LaTeX, que además sólo afecte a la conversación ya enviada, y no al recuadro de Escribe un mensaje…
Yo no sé JavaScript. Y esto está hecho en JavaScript. Pero sólo hacen falta conocimientos básicos.
\tiny
(function(){
if(window.MathJax===undefined){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML";
var config = 'MathJax.Hub.Config({' + '
extensions: ["tex2jax.js"],' + 'tex2jax: {
inlineMath: [["$","$"],["\\\\\\\\\\\\(","\\\\\\\\\\\\)"]],
displayMath: [["$$","$$"],["\\\\[","\\\\]"]], processEscapes: true },'
+ 'jax: ["input/TeX","output/HTML-CSS"]' + '});'
+ 'MathJax.Hub.Startup.onload();';
if (window.opera) {
script.innerHTML = config}
else {script.text = config} document.getElementsByTagName("head")[0].appendChild(script);
(doChatJax=function(){
window.setTimeout(doChatJax,1000);
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
})();
}
else{
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
}
})();
Conocer la estructura básica de un documento HTML:
- \texttt{<body>}
- \texttt{<div>}
- \texttt{<header>}
- \texttt{class=”tengo-hermanos”}
- \texttt{id=”hijo-unico”}
Tener paciencia para leer la documentación de MathJaX hasta que encuentras:
var math = document.getElementById("MathExample");
MathJax.Hub.Queue(["Typeset",MathJax.Hub,math]);
\begin{center} \LARGE Gracias por la atención! \end{center}