MathML è una specifica di basso livello per contenuti matematici e scientifici sul Web e oltre.
Una delle aggiunte chiave a HTML5 è il Mathematical Markup Language, o MathML. Dove ePub2 richiedeva di scrivere equazioni di base usando XHTML, o inserire immagini per equazioni complesse, con il supporto di MathML è ora possibile creare eBook – in formato .ePub3 – con contenuti matematici accurati e accessibili. Ciò non solo consente equazioni più chiare e scalabili per tutti, ma ha anche il potenziale per migliorare notevolmente l’accesso alle informazioni da parte dei lettori che utilizzano tecnologie accessibility.
Il MathML non è altro che un linguaggio di marcatura per descrivere la notazione matematica e catturarne sia la struttura che il contenuto. L’obiettivo del MathML è di consentire la pubblicazione, la ricezione e l’elaborazione della matematica sul World Wide Web, così come l’HTML ha abilitato questa funzionalità per il testo.
Il MathML può essere usato per codificare sia la notazione matematica che il contenuto matematico. Circa trentotto dei tag MathML descrivono strutture notazionali astratte, mentre un altro circa centosettanta fornisce un modo per specificare in modo inequivocabile il significato inteso di un’espressione.
Dichiarazione del contenuto MathML nel file OPF <manifest>
<manifest>
<item id="css1" href="mathml-style.css" media-type="text/css"/>
<item id="page1" href="mathml.xhtml" media-type="application/xhtml+xml" properties="mathml"/>
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
<item id="toc" href="toc.xhtml" media-type="application/xhtml+xml" properties="nav"/>
</manifest>
MathML in ePub3 content document
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:m="http://www.w3.org/1998/Math/MathML">
<head>
<title>Example of MathML in EPUB 3</title>
<link rel="stylesheet" type="text/css" href="mathml-style.css"/>
</head>
<body>
<m:math display="block">
<m:mrow>
<m:mi>x</m:mi>
<m:mo>=</m:mo>
<m:mfrac>
<m:mrow>
<m:mo form="prefix">-</m:mo>
<m:mi>b</m:mi>
<m:mo>±</m:mo>
<m:msqrt>
<m:msup>
<m:mi>b</m:mi>
<m:mn>2</m:mn>
</m:msup>
<m:mo>-</m:mo>
<m:mn>4</m:mn>
<m:mo></m:mo>
<m:mi>a</m:mi>
<m:mo></m:mo>
<m:mi>c</m:mi>
</m:msqrt>
</m:mrow>
<m:mrow>
<m:mn>2</m:mn>
<m:mo></m:mo>
<m:mi>a</m:mi>
</m:mrow>
</m:mfrac>
</m:mrow>
</m:math>
</body>
</html>
Output in iBooks

Il codice non è in realtà così difficile come sembra, ma sicuramente lungo da scrivere con un qualsiasi editor testuale. Per fortuna si possono trovare diversi editor di equazioni, programmi di conversione e altri software specializzati per generare il codice MathML.3 Esistono diverse versioni di tali strumenti MathML, sia software open source che prodotti commerciali.
Un editor online che consiglio — anche solo per divertirsi un po’ — è Wiris editor. Compatibile sia con MathML che con LaTex, consente di ‘disegnare’ direttamente col mouse la funzione matematica e copiarne il codice generato in pochi secondi.
Fonti
W3C Math Home
Is MathML accessible?, Peter Krautzberger
Math Tools, W3C e List of web based math editors, GitHub
Un esempio di ePub3 che dimostra il MathML (mathml-epub.zip | 3KB)