Matematiktillgänglighet
MathML, MathJax och den långa vägen
I tjugo år renderade webben prosa väl och matematik dåligt. Inbyggt MathML i Chromium 109 och en Speech Rule Engine som sakta mognat har äntligen vänt trenden. Den här genomgången kartlägger hur pusselbitarna passar ihop och vilken man ska välja 2026.
1. Inbyggt MathML 2026
Det viktigaste att säga rakt ut är att den långa, utdragna debatten om huruvida webbläsare bör rendera matematik inbyggt är avgjord. Firefox har renderat MathML sedan tidigt 2000-tal; WebKit lanserade en användbar implementation i Safari 2013; den siste i ledet, Chromium, landade slutligen MathML Core i version 109 i januari 2023. Den enstaka versionen låste upp plattformen: i mitten av 2026 talar de stora webbläsarmotorerna på alla skrivbord och nästan alla telefoner MathML som ett förstaklassspråk. Den nödutgång som webben standardiserat på i nästan tjugo år — rendera matematiken som en bild med ett alt-attribut som skärmläsaranvändaren tvingas lita på — är inte längre det ansvarsfulla standardalternativet.
Det som ändrades 2023 är smalare än rubriken antyder. Chromium implementerade inte hela MathML 3; det implementerade MathML Core, en delmängd avsiktligt avgränsad till de element som webbläsare kan rendera tillförlitligt och som hjälpmedel kan navigera. Elementärmatematisk layout (lång division, minnessiffror, staplad addition) ingår inte i Core. Radbrytning inne i en lång ekvation ingår i Core men heuristiken är konservativ. Vissa avancerade stretchbara operatorer renderas fortfarande inkonsekvent mellan motorer. Men ryggraden — bråk, rötter, sub- och superscript, matriser, integraler, summation, operatorlexikonet — finns nu i varje motor som räknas.
Den tillgänglighetsmässiga konsekvensen är direkt. En sida som sänder ut MathML direkt till DOM levererar ett semantiskt uttryck som en skärmläsare kan tala, navigera och tala om på en annan detaljeringsnivå. En sida som sänder ut en bild med ett alt-attribut levererar en enda mening som skärmläsaranvändaren inte kan gå djupare i, inte kan be om en upprepning av och inte kan kopiera in i en kalkylator. I tio år var avvägningen verklig eftersom Chromium inte kunde rendera MathML och att falla tillbaka på bilder innebar färre trasiga sidor. Den avvägningen gäller inte längre.
MathML Core är den delmängd av MathML 3 som webbläsarmotorerna enades om att leverera interoperabelt. Om du sänder ut MathML från en byggpipeline i dag, rikta in dig mot Core. Elementärmatematiska notationer och avancerade layouttillägg finns i den bredare MathML 3-specifikationen; behandla dem som progressiva förbättringar som fortfarande drar nytta av en MathJax-fallback.
”En sida som sänder ut en bild med ett alt-attribut levererar en enda mening som skärmläsaranvändaren inte kan gå djupare i, inte kan be om en upprepning av och inte kan kopiera in i en kalkylator.”
2. MathJax: från renderer till polyfill
MathJax var bryggan som höll matematiken på webben läsbar under det långa Chromium-glappet. Från sin första release 2010 tog MathJax LaTeX eller MathML i källan och producerade formaterad HTML- eller SVG-utdata som vilken webbläsare som helst kunde rendera. Under större delen av sin historia var det det primära renderingslagret för matematiskt innehåll på webben — Wikipedia, arXiv, MathOverflow, Stack Exchange och den stora majoriteten av akademiska publiceringsplattformar använde MathJax på varje sida.
Rollen MathJax spelar 2026 är annorlunda. Med Chromium som renderar MathML inbyggt är sista-utvägens-renderarjobbet gjort. Vad MathJax gör nu, och gör bättre än något annat, är att sitta framför äldre LaTeX-källor och omvandla dem till ren MathML som webbläsaren renderar direkt. Dess v3- och v4-releaser skrevs om med detta i åtanke: LaTeX-inläsaren är mogen, MathML-utdata är standardskompatibel, och körtiden kan konfigureras att sända ut MathML och sedan träda åt sidan och låta webbläsaren ta över layoutarbetet. Biblioteket är större än man vill ha på en kritisk väg, men det är den mest pålitliga LaTeX-till-MathML-konverteraren på webben.
3. LaTeX till MathML i praktiken: bra kontra dålig markup
Det mesta matematiska innehållet på webben har en LaTeX-källa någonstans uppströms. Frågan är var LaTeX-till-MathML-konverteringen sker — vid byggtid, i körtid eller aldrig. Mönstret som vinner på varje tillgänglighetsaxel är konvertering till MathML vid byggtid, med den renderade MathML sänd direkt till sidans HTML. Mönstret som förlorar på varje axel är att leverera en bild av en LaTeX-rendering med ett alt-attribut som parafraserar ekvationen.
- Ekvationen lever i DOM som semantisk markup.
- Skärmläsaren talar operator, operand, struktur — och låter användaren navigera i deluttryck.
- Webbläsare renderar det inbyggt; noll JavaScript i körtid på kritisk väg.
- Sökmotorer och AI-sammanfattare kan läsa uttrycket som text.
- Kopiering och inklistring ger en användbar representation, ofta konverterbar tillbaka till LaTeX.
- Ekvationen är en platt bild; strukturen är osynlig för hjälpmedel.
- Skärmläsaren talar den enda alt-meningen; ingen navigering, ingen upprepning, ingen kontroll av detaljnivå.
- Bilden skalas dåligt med läsarzoom och operativsystemets textstorlek.
- Sökmotorer och AI-verktyg ser “bild av ekvation” och inget mer.
- Kopiering och inklistring ger en PNG; läsaren kan inte flytta matematiken till en kalkylator.
Många CMS-plattformar levererar fortfarande rå LaTeX inne i sidan och låter ett körtidsbibliotek (ofta MathJax) hitta och konvertera den vid laddning. Resultatet renderas, men först efter att ett skript körs — en inte obetydlig tillgänglighetsstraff på långsamma nätverk och en mätbar kostnad i form av layoutförskjutning. Konvertera vid byggtid när du kan; reservera körtidskonvertering för äldre källor du inte kan bygga om.
4. Skärmläsarens matematiknavigering
Att rendera matematiken är halva jobbet. Den andra halvan är navigering: en lång ekvation kan inte linjäriseras till en enda talad mening utan att läsaren tappar bort sig. Varje stor skärmläsare levererar nu ett “matematiläge” som låter användaren stega in i ett bråk, gå längs täljaren, gå ned i ett subscript, hoppa tillbaka till moderuttrycket och tala om det aktuella deluttrycket på en annan detaljeringsnivå. Implementationerna skiljer sig åt i mognad, i tangentkombinationer, och avgörande nog i vilket talets regelbibliotek de delar.
| Skärmläsare | Inbyggt MathML | Talmotor | Navigering | Mognad |
|---|---|---|---|---|
| NVDA (Windows) | Ja | MathCAT (modern), historiskt MathPlayer-tillägg | Deluttrycksgång, detaljnivåer, punktskriftsutdata | Produktionsklar |
| JAWS (Windows) | Ja | MathCAT | Deluttrycksgång, matematikspecifik granskningskursor | Produktionsklar |
| VoiceOver (macOS, iOS) | Ja | Apples intern, delvis härledd från MathML-semantik | Objektväljare-navigering; mindre detaljerat än NVDA/JAWS | Användbart, mindre rikt |
| ChromeVox (ChromeOS, Chrome) | Ja | Speech Rule Engine (SRE) direkt | Deluttrycksgång via SRE-regler | Stark i klassrumsmiljöer |
| Orca (Linux) | Delvis | SRE via webbläsare; Orca själv förlitar sig på tillgänglighetsträdstext | Begränsat; beror på webbläsare | Varierande |
MathPlayer var det ursprungliga Design Science-tillägget som lärde NVDA att tala MathML; det har fasats ut. MathCAT är dess moderna efterträdare — aktivt underhållet, Rust-baserat, rekommenderad bakände för både NVDA och JAWS i dag. MathML är själva markup: indata som båda biblioteken konsumerar. Hänvisningar till MathPlayer i en specifikation eller leverantörsdokument från 2026 är vanligen historiska och bör läsas som “matematiktalstillägget” i anda.
5. Speech Rule Engine — tyst i bakgrunden
Bakom nästan varje modern matematik-talupplevelse på webben finns ett projekt som de flesta ingenjörer aldrig hört talas om: Speech Rule Engine, eller SRE. SRE startade inom Googles ChromeVox-team i mitten av 2010-talet och är nu ett bibliotek med öppen källkod som underhålls främst av Volker Sorge. Det tar MathML som indata och sänder ut en strukturerad talad form — på flera språk, med flera detaljnivåer och flera regeluppsättningar (MathSpeak, ClearSpeak, ChromeVox-classic). Det är också motorn som driver matematiknavigeringen MathJax exponerar på sin egna renderade utdata, och det refereras av både MathCAT och flera webbläsarsidiga tillgänglighetsexperiment.
Anledningen till att SRE är viktig infrastruktur är att utan ett kanoniskt uttalstalsbibliotek skulle varje skärmläsare uppfinna sitt eget sätt att säga x i kvadrat plus y i kvadrat är lika med r i kvadrat. Med SRE konvergerar de stora implementationerna mot ett litet antal sanktionerade regeluppsättningar, vilket innebär att en lärare som skriver en ekvation i ett läroboksredigeringsverktyg ungefär kan förutsäga hur en elev som använder NVDA, JAWS eller ChromeVox kommer att höra den. Konvergensen är inte fullständig — VoiceOver är undantaget — men den är verklig och växande.
MathSpeak mot ClearSpeak
De två mest kända regeluppsättningarna ingår i SRE. MathSpeak är den äldre, mer bokstavliga stilen — “bråk ett delat med två slut-bråk” — och designades för punktskriftsprecision. ClearSpeak är nyare, mer naturligt klingande — “en halv” — och är standard i de flesta klassrumsdriftsättningar i dag. Att byta mellan de två är en preferens för detaljnivåstil, inte en annan motor.
Flerspråkigt stöd
SRE levereras med översatta regeluppsättningar för engelska, franska, tyska, italienska, spanska och ett växande antal ytterligare språk. Översättningarna är inte maskinöversatta — de har skapats av SRE:s underhållare och bidragsgivare med hjälp av lärare som undervisar matematik på dessa språk. Det här är ett av de få ställen inom webbtillgänglighet där lokaliseringen är genuint tillräckligt fullständig för att förlita sig på.
Punktskriftsutdata, inte bara tal
SRE sänder också ut Nemeth- och UEB-matematikpunktskrift från MathML, vilket är vägen de flesta moderna punktskriftsdisplayer använder för att rendera matematik. Samma MathML-källa som driver talutdata driver punktskriftsutdata — vilket är exakt den arkitekturella egenskap ett tillgänglighetsinfrastrukturlager förväntas ha.
6. Rekommendationer per dokumenttyp
Den allmänna principen — leverera MathML, konvertera från LaTeX vid byggtid när möjligt, förlita dig på SRE för tal — gäller för alla dokumenttyper. Detaljerna förskjuts med ytan. Nedan följer konkreta rekommendationer för de fyra dokumentklasser som de flesta tillgänglighetsteam levererar.
Webbartiklar och blogginlägg
Om plattformen stödjer det, rendera MathML direkt i inläggskroppen — de flesta statiska webbplatsgeneratorer kan anropa Temml eller Pandoc vid byggtid och sända ut MathML till HTML. Om plattformen är ett äldre CMS som bara accepterar LaTeX, ladda MathJax v4 i MathML-utdataläge och låt det konvertera i körtid, men cacha aggressivt. Leverera inte PNG:er av ekvationer.
Akademiska tidskriftsartiklar
Korpusen är överväldigande LaTeX, och publiceringsflödet är rätt ställe att konvertera. Pandoc, MathJax i batchläge eller utgivarens egna LaTeXML-flöde kan sända ut HTML med MathML och en PDF i samma körning. Tillgänglighetsvinsten är stor: en skärmläsaranvändare som läser en artikel online får navigerbara ekvationer snarare än en PDF vars matematik är rasteriserad. Para HTML/MathML-utdata med en taggad PDF-release för offlineläsning.
Läroböcker och långa kursmaterial
EPUB 3 med inbäddad MathML är standarden, och moderna läsystem (Apple Books, Thorium, ACE-testade produktionsläsare) hanterar det korrekt. Författa en gång i MathML, leverera samma EPUB till seende användare och skärmläsaranvändare, och förlita dig på SRE-drivet tal i hjälpmedelslagret. Undvik att baka in ekvationer i rasterbilder även om typografin ser bättre ut — tillgänglighetskostnaden är inte värd ytfinishen.
Klassrumsbilder och direktundervisning
Bilder är den rörigaste ytan — PowerPoint och Google Presentationer hanterar var för sig matematik på olika sätt, och presentationsläge faller ofta tillbaka på bilder. Det försvarbara standardalternativet 2026 är att skapa matematiken i ett bildverktyg som exporterar MathML (eller att komponera bilder som HTML), och att dela ett parallellt HTML- eller EPUB-handout med samma ekvationer som MathML före föreläsningen. Handouten, inte bildspelet, är den artefakt en skärmläsarelev kan navigera under och efter lektionen.
Över alla fyra dokumenttyper gäller samma enda princip: sänder ut MathML, låt webbläsaren rendera det, låt SRE-drivet tal och punktskrift hantera hjälpmedelslagret, och behandla varje flöde som producerar en ekvationsbild som ett fel att åtgärda. Webbläsarmotorernas konvergens 2023 gjorde denna princip äntligen överkomlig. Skärmläsarnas konvergens mot SRE gjorde den äntligen konsekvent.
Slutsats: den långa vägen och vart den nu leder
Matematiktillgänglighet på webben har varit den långsammaste av de stora tillgänglighetsgränserna att mogna. Standarderna var klara 1998. Skärmläsarna var klara, på ett grundläggande sätt, i mitten av 2000-talet. Webbläsarmotorerna tog ända till 2023. Integrationen mellan dessa tre lager — markup, rendering, tal — klickade verkligen på plats under andra halvan av det året, när MathCAT ersatte MathPlayer inuti NVDA, när JAWS antog samma bakände, och när ChromeVox och MathJax konvergerade mot samma underliggande Speech Rule Engine.
Arbetet som återstår finns i kanterna. Elementärmatematisk notation finns inte i MathML Core, och plattformarna som lär tidig aritmetik måste fortfarande falla tillbaka på MathML 3-tillägg eller bilder. VoiceOvers matematiknavigering är användbar men mindre detaljerad än vad Windows-användare får. Webbläsarradbrytning inne i mycket långa ekvationer är konservativ, och vissa stretchbara operatorer renderas fortfarande ojämnt mellan motorer. Det här är verkliga problem och värda att åtgärda. De är inte samma typ av problem som “Chromium kan inte rendera matematik alls” var under decenniet före 2023.
För ett ingenjörsteam som lanserar en ny produktyta 2026 med matematiskt innehåll på den är det försvarbara standardalternativet: sänder ut MathML, generera det från LaTeX vid byggtid när källan tillåter, faller tillbaka på MathJax v4 för äldre LaTeX du inte kan förbehandla, och lita på skärmläsarstacken — NVDA plus MathCAT, JAWS plus MathCAT, ChromeVox plus SRE, VoiceOver nativt — att hantera tallagret. Den långa vägen är inte slut. Men för första gången leder den någonstans läsbart.
”Standarderna var klara 1998. Webbläsarmotorerna tog ända till 2023. Integrationen klickade äntligen på plats under andra halvan av det året.”