Skip to content

Latest commit

 

History

History
130 lines (92 loc) · 3.94 KB

tex-for-telegram.org

File metadata and controls

130 lines (92 loc) · 3.94 KB

Tex for Telegram

Why?

  • ¿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

Alternativas

LaTex2IMGbot

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.

ChatJax

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.

ChatJax

Empecé usando \texttt{ChatJax}, pero me di cuenta de que tenía un gran problema.

./latex-in-telegram-unsent.png

./latex-in-telegram-sent.png

Solución

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…

JavaScript

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]);
   }
})();

Conocimientos básicos de HTML y MathJax

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]);

Resultado

\begin{center} \LARGE Gracias por la atención! \end{center}