Cómo escribir matrices con MathML

Una matriz es una tabla de números organizada en filas y columnas. Las matrices se utilizan ampliamente en muchas ramas de las matemáticas y ciencias aplicadas. Se utilizan para resolver sistemas de ecuaciones lineales, representar transformaciones geométricas, modelar datos en inteligencia artificial o describir redes eléctricas o circuitos.

Para las personas ciegas, escribir y leer matrices puede plantear diversas barreras de accesibilidad como la incapacidad de memorizar toda la información contenida en la matriz, incompatibilidad del producto de apoyo con el formato utilizado para mostrar la matriz, limitaciones de los sistemas de formateado de texto y marcado semántico, etc. En el caso de otros perfiles de discapacidad el producto de apoyo puede encontrar problemas para navegar por los datos de la matriz o no existir una semántica suficiente para identificar filas, columnas o celdas concretas por lo que una persona que utilice un sistema de control por voz o un barredor no podrá interactuar de forma apropiada con la matriz.

Utilizando MathML podemos solucionar muchos de estos problemas ya que aporta semántica y compatibilidad con los diversos productos de apoyo. Con MathML, no solo podemos mostrar una matriz, sino también describirla de forma que cualquier persona, con o sin discapacidad, pueda acceder a su contenido.

Cómo escribir una matriz con MathML

En MathML tenemos el elemento mtable para representar matrices. Además podemos encerrarla entre corchetes utilizando el elemento mfenced como se requiere en algunos ejercicios matemáticos o de física.

El siguiente ejemplo muestra una matriz de 2×2 celdas con los valores 1, 2, 3 y 4:

<math>
<mfenced open="[" close="]">
<mtable>
<mtr>
<mtd><mn>1</mn></mtd>
<mtd><mn>2</mn></mtd>
</mtr>
<mtr>
<mtd><mn>3</mn></mtd>
<mtd><mn>4</mn></mtd>
</mtr>
</mtable>
</mfenced>
</math>

Con el elemento mtr marcamos una fila de la matriz y con mtd marcamos una celda concreta.

En el navegador la matriz se mostraría de la siguiente forma:

1 2 3 4

También podemos escribir la matriz con variables para la resolución de problemas de álgebra:

<math>
<mtable>
<mtr>
<mtd><mi>a</mi></mtd>
<mtd><mi>b</mi></mtd>
</mtr>
<mtr>
<mtd><mi>c</mi></mtd>
<mtd><mi>d</mi></mtd>
</mtr>
</mtable>
</math>

En el navegador se mostraría de la siguiente forma:

a b c d

Becas de Formación Individual de Por Talento Digital y KeepCoding

En el marco del programa Por Talento Digital, KeepCoding y Fundación ONCE han firmado un acuerdo para ofrecer becas del 80 % a personas mayores de edad y con un grado de discapacidad reconocido igual o superior al 33%.

Estas becas permiten el acceso a cualquiera de los bootcamps tecnológicos que ofrece KeepCoding en su sitio web. El objetivo es facilitar la inclusión laboral en uno de los sectores con mayor proyección de empleabilidad y transformación social.

Los bootcamps incluyen Una formación intensiva, actualizada y altamente orientada al empleo, en áreas como desarrollo web, inteligencia artificial, ciberseguridad o big data, entre otras.

Esta no es la primera colaboración entre Fundación ONCE y KeepCoding, ya en el 2012 se impartió la primera formación de KeepCoding para Fundación ONCE. Esto identifica a KeepCoding como una academia de formación digital concienciada y conocedora de las necesidades de las personas con discapacidad a la hora de recibir formación. Además, el enfoque formativo aplicado por Fernando Rodriguez suele ser divertido, eficaz y comprensible, sobre todo para los amantes de Star wars o el Señor de los anillos.

Puedes obtener más información sobre estas y otras becas ofrecidas por KeepCoding en su sitio web.

La importancia del tamaño de los elementos táctiles en la accesibilidad

Al diseñar interfaces de usuario digitales, la accesibilidad no es  opcional si queremos que todas las personas puedan acceder al contenido y la funcionalidad que ofrecemos. Uno de los aspectos más ignorados por diseñadores pero críticos del diseño accesible es el tamaño de los elementos interactivos, como botones y enlaces. Para las personas con destrezas limitadas o discapacidades motoras, los objetivos táctiles pequeños pueden suponer barreras significativas para la interacción.

Las personas con dificultades motoras pueden experimentar temblores, control muscular reducido o necesitar dispositivos de asistencia para interactuar con pantallas táctiles. Cuando los botones son demasiado pequeños o están demasiado juntos, tocar el objetivo deseado se vuelve frustrante o incluso imposible. Esto no solo afecta a personas con perfiles de discapacidad, muchos usuarios experimentan limitaciones temporales, como un dedo vendado o estar sujetando otro objeto.

Para garantizar una experiencia confortable para todas las personas las pautas de accesibilidad a los contenidos Web (WCAG) recomiendan que todos los elementos interactivos tengan al menos 44 píxeles en su lado más corto. Este tamaño asegura que los usuarios puedan tocar los botones cómodamente sin necesidad de una precisión extrema. No se trata solo del elemento en sí, el espacio entre los elementos también es igualmente importante. Proporcionar suficiente margen o relleno entre botones ayuda a evitar toques accidentales, lo que puede llevar a errores y frustración del usuario.

Este principio se alinea directamente con el criterio de éxito 2.5.8: Tamaño mínimo del objetivo, el cual establece que los objetivos interactivos deben tener al menos 24 × 24 píxeles CSS, aunque 44 × 44 sigue siendo lo más recomendado por muchas plataformas como Apple y Android para mejorar la usabilidad en dispositivos móviles.

Cómo indicar el tamaño mínimo de un elemento

En HTML y frameworks como Angular o ReactJS, se pueden usar estilos en línea o módulos CSS para aplicar tamaños mínimos y espaciado.
En SwiftUI, se puede aplicar el tamaño mínimo de marco y añadir padding para garantizar el cumplimiento de accesibilidad usando el modificador:
.frame(minWidth: , minHeight:)

En Android, se pueden usar estos modificadores en el archivo XML de la Activity o el componente a renderizar: android:minWidth=»44dp» android:minHeight=»44dp»

Escribiendo Derivadas e Integrales con MathML

MathML (Mathematical Markup Language) es un lenguaje basado en XML diseñado para describir contenido matemático de forma estructurada y accesible en la web y, en muchos casos, es una de las pocas formas de poder escribir matemáticas para personas con discapacidad visual y que puedan compartirlas con personas sin discapacidad y todos puedan leer lo mismo. Cuando tenemos que escribir matemáticas simples como operaciones aritméticas es suficiente con un documento de texto plano pero cuando tenemos que utilizar operaciones de cálculo diferencial o integral entonces necesitamos utilizar un lenguaje que nos permita estructurar el contenido que estamos escribiendo siguiendo las normas de escritura definidas por las operaciones de cálculo. Las derivadas e integrales pueden representarse fácilmente con las etiquetas adecuadas, permitiendo mostrar contenido matemático accesible en la web.

¿Qué son las derivadas?

Las derivadas son un concepto fundamental del cálculo diferencial. Representan la tasa de cambio de una función respecto a una variable.

En MathML podemos representar una derivada con el siguiente código:

<math>
<mfrac>
<mi>d</mi>
<mrow>
<mi>d</mi><mi>x</mi>
</mrow>
</mfrac>
<mi>f</mi>
<mo>(</mo>
<mi>x</mi>
<mo>)</mo>
</math>

En el navegador se visualizaría de la siguiente forma:

 
d dx f ( x )

¿Qué son las integrales?

Las integrales son el concepto central del cálculo integral. Se utilizan para calcular áreas bajo curvas, volúmenes y resolver ecuaciones diferenciales.

En MathML podemos escribir una integral siguiendo este código:

<math>
<mo>&#x222B;</mo>
<mi>f</mi>
<mo>(</mo>
<mi>x</mi>
<mo>)</mo>
<mo>d</mo><mi>x</mi>
</math>

En el navegador veríamos lo siguiente:

f ( x ) dx

Introducción a Markdown

Markdown es un lenguaje de marcado ligero diseñado para facilitar la escritura de texto formateado de manera sencilla y sin distracciones. Su propósito principal es convertir texto plano en HTML sin necesidad de aprender complejas etiquetas o reglas de maquetado.
Este formato de texto se ha convertido en una herramienta esencial para desarrolladores, escritores y creadores de contenido por su simplicidad, versatilidad y beneficios, especialmente en términos de accesibilidad y fácil mantenimiento.

Markdown fue creado por Aaron Swartz y John Gruber en 2004 con la intención de que los documentos fueran fáciles de escribir y leer en su forma original, y a la vez, que pudieran convertirse fácilmente en HTML para la web. Su estructura se basa en texto plano, lo que significa que cualquier persona puede leer y escribir Markdown con un editor de texto básico.
Markdown es ampliamente utilizado en blogs, documentación técnica, ficheros README de proyectos en GitHub, foros y mensajes en algunas redes sociales.

Dentro de las ventajas de Markdown se destacan su simplicidad y su portabilidad.
Markdown utiliza una sintaxis mínima que es fácil de aprender. No necesitas herramientas sofisticadas ni experiencia previa para comenzar a escribir.
Los archivos Markdown son simplemente texto plano, lo que significa que son extremadamente ligeros y se pueden abrir en cualquier dispositivo o sistema operativo.
Además de todo esto se ha de indicar que Markdown se puede convertir fácilmente a formatos más ricos como HTML, PDF, DOCX o incluso ePub, usando herramientas automáticas.

Cómo Escribir con Markdown

La sintaxis de Markdown es extremadamente sencilla, principalmente se utilizan algunos caracteres especiales al comienzo de línea o para indicar el comienzo y la finalización de un bloque marcado semánticamente.

Texto en Negrita y Cursiva

Para marcar en negrita un texto se usa doble asterisco.
Para marcar en  cursiva, se usa un solo asterisco.

Ejemplos:

**Este texto está en negrita**
*Este texto está en cursiva*

Encabezados

Los encabezados se crean utilizando el símbolo # al comienzo de una línea. El número de # define el nivel del encabezado (de 1 a 6).

Ejemplo:

# Encabezado de nivel 1
## Encabezado de nivel 2
### Encabezado de nivel 3

Enlaces

Los enlaces se crean utilizando corchetes para el texto y paréntesis para la URL.

Ejemplo:

Visita mi blog [Programar a ciegas](https://programaraciegas.net) para leer más artículos como este.

Listas

Se pueden crear listas ordenadas o desordenadas utilizando un marcador al comienzo de línea.

• Listas no ordenadas: Utiliza guiones (-) o asteriscos (*).
• Listas ordenadas: Usa números seguidos de un punto (1., 2., etc.).

Ejemplos:

- Elemento 1 de una lista desordenada
- Elemento 2 de una lista desordenada

1. Primer elemento de una lista ordenada
2. Segundo elemento de una lista ordenada

Imágenes

El formato que se utiliza para mostrar imágenes es similar al formato empleado para los enlaces, pero con un signo de exclamación al principio. Ejemplo:

![Texto alternativo que describe la imagen](ruta/a/la/imagen.jpg)

Bloques de Código

Para marcar bloques de código, se utiliza tres acentos graves («`) antes y después del código.

Ejemplo:

```
func saludo() {
print("¡Hola, Markdown!")
}


```

Markdown admite otras marcas para resaltar citas, maquetar datos tabulares y otros elementos semánticos.

La importancia de los encabezados para la accesibilidad web y móvil

Cuando navegamos por una interfaz web o una aplicación móvil, probablemente no somos conscientes de la importancia que tienen los encabezados. Para la mayoría de los usuarios estas marcas semánticas sólo se aprecian por un cambio de tamaño del texto o por un resaltado de su aspecto visual pero para personas con discapacidad visual o cognitiva resultan imprescindibles para comprender mejor la interfaz que están navegando.

¿Qué son los encabezados?

Los encabezados son elementos que organizan y estructuran el contenido de una página o pantalla. En HTML, estos se definen mediante marcas semánticas o etiquetas como <h1>, <h2>, <h3>, y así sucesivamente hasta <h6>. En interfaces móviles, los encabezados suelen representarse como texto destacado o títulos que dividen secciones de contenido y utilizan atributos de la API de accesibilidad para que esos bloques de texto sean identificados como encabezados semánticos.

Para los usuarios sin discapacidad visual, los encabezados facilitan una comprensión visual rápida del contenido y su jerarquía. en cambio, para los usuarios que dependen de tecnologías de asistencia como lectores de pantalla, los encabezados son mucho más que un simple formato: son un mapa estructural que permite moverse rápidamente por la página o la app.

Por ejemplo, una persona ciega que usa un lector de pantalla puede saltar entre los encabezados para encontrar secciones específicas sin tener que escuchar todo el contenido desde el principio. Esto es especialmente útil en páginas con mucho texto o pantallas móviles con varias secciones de información.
Para las personas con discapacidad cognitiva esta estructura de encabezados les permite asimilar y comprender cómo se ha estructurado la información y los elementos de navegación en la interfaz.

Encabezados en WCAG

Las Pautas de Accesibilidad para el Contenido Web (WCAG) incluyen un criterio específico que aborda la correcta implementación de los encabezados. Este criterio está relacionado con el principio de Perceptible y se resume así:

Criterio 2.4.10 – Encabezados de sección (Section Headings)

Este criterio establece que, si el contenido está dividido en secciones, cada una debe contar con un encabezado descriptivo que refleje su propósito o tema. Esto no solo mejora la navegación, sino también la comprensión del contenido. Puedes leer más detalles sobre el criterio 2.4.10 en la página oficial del W3C.

Para cumplir con este criterio debemos asegurarnos de:
• Usar encabezados de forma jerárquica y lógica (por ejemplo, <h1> para el título principal, <h2> para subtítulos, etc.).
• Los encabezados deben ser descriptivos. Un encabezado como “Servicios” es claro, pero uno como “Más información” es ambiguo.
• Evitar saltos innecesarios en los niveles de encabezado (por ejemplo, pasar de un <h1> directamente a un <h3> sin un <h2> intermedio).

Buenas prácticas

A la hora de estructurar los contenidos de una interfaz web o de una pantalla de una aplicación es aconsejable seguir los siguientes puntos:
1. Respetar una estructura jerárquica

El encabezado principal de la página o pantalla debe ser un <h1>. A partir de ahí, usa <h2> para las subsecciones principales, <h3> para las subsecciones de estas, y así sucesivamente. Esto crea un flujo lógico que las tecnologías de asistencia pueden interpretar fácilmente.

Ejemplo en HTML:

<h1>Recetas saludables</h1>
<h2>Desayunos</h2>
<h3>Zumos y batidos saludables</h3>
<h3>Tostadas con aguacate</h3>
<h2>Cenas</h2>
<h3>Ensaladas ligeras</h3>
<h3>Sopas nutritivas</h3>

2. Prohibido usar encabezados para aplicar un estilo visual a un texto

Es común usar etiquetas de encabezado simplemente porque hacen el texto más grande o más llamativo. Esto es un error, ya que confunde a los usuarios de lectores de pantalla. Si es necesario aplicar un estilo concreto a un texto grande sin que sea un encabezado, es aconsejable usar estilos CSS en lugar de etiquetas como <h1>.

3. Los encabezados deben ser claros y concisos

Un buen encabezado es breve y refleja con precisión el contenido de su sección. Por ejemplo, “Configuración avanzada” es mejor que “Detalles sobre las configuraciones avanzadas”.

Cómo comprobar la accesibilidad de los encabezados

Muchas herramientas automatizadas para la detección de barreras de accesibilidad identifican la mayoría de problemas relacionados con el criterio WCAG 2.4.10. Tanto Wave como Lighthouse o Axe pueden detectar si falta algún encabezado o si se han utilizado de manera incorrecta.
En cualquier caso es muy recomendable realizar una verificación manual utilizando un lector de pantallas como NVDA, VoiceOver, TalkBack o JAWS. Todos estos lectores de pantalla incorporan funciones para navegar por encabezados o mostrar una lista con los encabezados detectados.