Proyecto BlindTex para matemáticas accesibles con LaTeX

El proyecto BlindTex es un proyecto orientado a convertir expresiones matemáticas escritas en LaTeX a lenguaje natural, con el objetivo de facilitar su lectura mediante productos de apoyo como lectores de pantalla y dispositivos braille. La idea es la de transformar una sintaxis pensada para composición matemática en una salida más cercana al lenguaje hablado para recorrer el contenido y entender y recorrer con mayor facilidad.

El proyecto se presenta como una herramienta de accesibilidad especializada en la conversión de ecuaciones escritas en LaTeX a lenguaje natural. Su enfoque está dirigido a reducir barreras de acceso al conocimiento científico y técnico para personas ciegas o con baja visión.

LaTeX es uno de los formatos más utilizados para escribir fórmulas matemáticas, artículos científicos, apuntes técnicos y documentación universitaria.

Un contenido puede estar bien escrito para ser renderizado visualmente. Pero eso no implica que sea fácil de interpretar de forma auditiva. Una expresión como una fracción, una raíz o una potencia puede volverse ambigua o muy difícil de seguir si no se expresa con una estructura verbal clara. BlindTex trabaja justamente sobre ese problema.

La herramienta no se limita a “leer caracteres”, sino que se intenta trasladar la estructura matemática a una forma verbal. En la documentación del repositorio se muestra como ejemplo la conversión de una fracción escrita en LaTeX a una salida como fracción 2 sobre 3 más 4 finFracción, dando una idea más clara de la jerarquía de la expresión matemática.

Instalación y uso

BlindTex puede instalarse desde Python con usando pip y se debe ejecutar desde la terminal.

El proyecto incluye una web pública de presentación y una aplicación web para probar conversiones, lo que ayuda a acercar la herramienta tanto a desarrolladores como a potenciales usuarios finales o docentes interesados en experimentar con ella.

Software libre y posibilidad de colaboración

BlindTex se distribuye como proyecto de código abierto bajo licencia GPL-3.0 y mantiene su código en GitHub.

Escritura básica de MathML en un contenido web

En un artículo anterior se describió El lenguaje de marcado MathML (Mathematical Markup Language)

 y sus posibles usos para representar expresiones matemáticas complejas de manera que sean comprensibles para los navegadores y accesibles para usuarios con discapacidades visuales mediante lectores de pantalla.

Con la integración de MathML en HTML5, es más sencillo incluir fórmulas matemáticas en páginas web sin necesidad de imágenes o scripts externos.

En este artículo, exploraremos las etiquetas principales de MathML: <math>, <mrow>, <mn>, <mo>, y <mi>, y veremos ejemplos de cómo se utilizan para estructurar contenido matemático.

Etiqueta math

La etiqueta <math> es el contenedor raíz para cualquier expresión MathML. Todo el contenido matemático debe estar encapsulado dentro de esta etiqueta para que los navegadores lo reconozcan como tal.

Ejemplo:

<math>
<!-- Contenido MathML aquí -->
</math>

Etiqueta mn

La etiqueta <mn> se usa para representar números. Cada número en una expresión debe estar envuelto en una etiqueta <mn>.

Ejemplo:

<math>
<mn>3</mn>
<mo>+</mo>
<mn>4</mn>
<mo>=</mo>
<mn>7</mn>
</math>

Este código se mostraría de la siguiente forma:

3 + 4 = 7

Etiqueta mo

La etiqueta <mo> se utiliza para operadores. Esto incluye símbolos como el signo más, menos, multiplicación, división, paréntesis, y otros operadores matemáticos.

Ejemplo:

<math>
<mn>50</mn>
<mo>-</mo>
<mn>8</mn>
<mo>=</mo>
<mn>42</mn>
</math>

Este ejemplo se visualiza de la siguiente forma:

508=42

Etiqueta mrow

La etiqueta <mrow> se utiliza para agrupar elementos de manera secuencial. Es similar a un “contenedor” que asegura que el contenido se trate como una sola unidad lógica. Esto es especialmente útil cuando se necesita aplicar operadores a un grupo de elementos. Por ejemplo si se desean escribir varias líneas con operaciones matemáticas:

<math>
<mrow>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
</mrow>

<mrow><mi>p</mi>
<mo>+</mo>
<mi>q</mi>
</mrow>
</math>

Este código se mostraría de la siguiente forma:

x+y p+q

En futuros artículos veremos construcciones más complejas utilizando MathML.