# MathJax

MathJax es una biblioteca javascript que permite visualizar fórmulas matemáticas en navegadores web, utilizando los lenguajes de marcado LaTeX, MathML y ASCIIMathML. MathJax se publica como software de código abierto bajo la licencia Apache.
El proyecto MathJax comenzó en 2009 como sucesor de una biblioteca JavaScript anterior, llamada jsMath. y está gestionado por la American Mathematical Society. El proyecto fue fundado por la American Mathematical Society, Design Science y la Sociedad de matemáticas aplicadas e industriales, y cuenta con el apoyo de numerosos patrocinadores como el American Institute of Physics y Stack Exchange.
MathJax es utilizado por sitios web tales como ArXiv, ScienceDirect de Elsevier, MathSciNet, n-category cafe, MathOverflow, Wikipedia, Scholarpedia, publicaciones de Project Euclid, IEEE Xplore, Publons, Coursera y All-Russian Mathematical Portal.

## Características

MathJax se descarga como parte de una página web, examina la página en busca de marcado matemático y genera la información matemática correspondiente. De este modo, MathJax no requiere de ninguna instalación de software o tipos de letra adicionales en el sistema del lector. Esto permite que MathJax funcione en cualquier navegador con soporte JavaScript, incluidos los dispositivos móviles.
MathJax puede mostrar información matemática utilizando una combinación de HTML y CSS o utilizando el soporte nativo de MathML del navegador, en caso de que esté disponible. La manera exacta en que MathJax compone las expresiones matemáticas está determinada por las capacidades del navegador del usuario, los tipos de letras disponibles en el sistema del usuario y los parámetros de configuración. MathJax v2.0-beta introdujo el renderizado SVG.
Cuando se utiliza composición tipográfica de HTML y CSS, MathJax maximiza la calidad de la visualización utilizando tipos de letras matemáticas si están disponibles y empleando imágenes para los navegadores más antiguos. Para los navegadores más modernos que admiten tipos de letra web, MathJax proporciona una variedad de tipografías web, que MathJax descarga según sea necesario. Si el navegador no es compatible con tipos de letras web, MathJax comprueba si hay tipos de letras compatibles en el sistema del usuario. Si esto tampoco sirve, MathJax proporciona imágenes de los símbolos necesarios. MathJax puede ser configurado para que muestre tipos de letras web, tipos de letras locales o imágenes.
MathJax utiliza tipos de letra STIX para mostrar expresiones matemáticas en las páginas web. Si se instalan las fuentes en el equipo local, se mejora la velocidad de composición de MathJax.
MathJax puede mostrar la notación matemática escrita en los lenguajes de marcado LaTeX o MathML. Dado que MathJax está pensado solo para la visualización de matemáticas, y siendo LaTeX un lenguaje de diseño de documentos, MathJax sólo admite el subconjunto de LaTeX utilizado para describir la notación matemática.
MathJax también apoya la accesibilidad a las matemáticas exponiendo MathML a través de su API al software de tecnologías de apoyo, así como a los atributos básicos "role" de WAI-ARIA y los más antiguos "altext".
La arquitectura de MathJax está diseñada para soportar la adición de lenguajes de entrada y métodos de visualización en el futuro a través de módulos cargados dinámicamente. MathJax también incluye un API de JavaScript para enumerar e interactuar con las instancias matemáticas de una página.

## Compatibilidad con navegadores web

MathJax puede mostrar matemáticas en los navegadores más populares, como Internet Explorer 6, Firefox 3, Google Chrome 0.3, Safari 2.0, Opera 9.5, iPhone/iPad Safari y el Navegador de Android.
Algunas versiones antiguas de los navegadores no soportan tipos de letra web (con la construcción CSS @font-face), por lo que tienen que usar el modo de imagen MathJax. La lista de compatibilidad de los navegadores está disponible en el sitio oficial.

## Soporte para extensiones

MathJax puede ser fácilmente añadido a muchas plataformas web populares.

## Node.js

MathJax puede ser usado en NodeJS desde la versión 3. Para la versión 2, la compatibilidad se proporciona con la librería MathJax-node.

## Compatibilidad con editores de ecuaciones

Cualquier ecuación de MathJax que se muestre en un navegador compatible puede copiarse en formato MathML o LaTeX a través del menú contextual "Show Math as" o mediante el botón de la página. Luego puede ser pegado en cualquier editor de ecuaciones que soporte MathML o LaTeX, como Mathematica, MathType, MathMagic, Firemath para ser reutilizado.
Las ecuaciones generadas en formato MathML o LaTeX por cualquier editor de ecuaciones de terceros pueden utilizarse en páginas web habilitadas para MathJax.

## Soporte para TeX

MathJax replica los comandos del entorno matemático de LaTeX. Los comandos matemáticos de AMS-LaTeX están soportados a través de extensiones. MathJax también soporta macros de TeX y diversos formatos como \color y \underline.

## Soporte para MathML

MathJax incluyó soporte parcial para MathML 2.0 y algunas construcciones de MathML 3.0 en su versión beta 2. MathJax soporta la visualización de MathML y, a partir de la versión 2.2, proporciona soporte experimental para el contenido de MathML.
En su versión 3.0, MathJax ha sido reescrito por completo, y su uso y configuración es significativamente diferente a la de la versión 2. El formato interno de MathJax es esencialmente MathML (con algunas adiciones) y ,debido a esto, proporciona la capacidad de convertir a y desde la notación MathML.

## Servidores CDN

El sitio de MathJax ha estado proporcionando una red de distribución de contenidos (CDN) donde el JavaScript necesario para que MathJax funcione puede ser cargado por el navegador en tiempo de ejecución desde el CDN. Esto simplifica la instalación y asegura que siempre se utilice la última versión de la biblioteca. Con el tiempo, el uso del servidor ha crecido de 1.3 TB por mes de tráfico en 2011 a 70 TB por mes en 2017. Debido al aumento del costo de alojamiento del servidor, el servidor principal de CDN se cerró a finales de abril de 2017. Hay disponibles servidores CDN alternativos de terceros.