A chalkboard with a mathematical equation in chalk and a hand about to add another term — the visual marker for math accessibility on the web.
Image description: A chalkboard with a mathematical equation in chalk and a hand about to add another term — the visual marker for math accessibility on the web.

Engineering primer · Matematiktilgængelighed

Matematiktilgængelighed: MathML, MathJax og den lange vej

En teknisk gennemgang af tilstanden for matematiktilgængelighed på nettet i 2026: MathML Core i Chromium, MathJax som polyfill, Speech Rule Engine og anbefalinger pr. dokumenttype.

Matematiktilgængelighed
MathML, MathJax og den lange vej

I tyve år har nettet gengivet prosa godt og matematik dårligt. Naturfremstilling af MathML i Chromium 109 og en stille modnet Speech Rule Engine har endelig vendt udviklingen. Denne primer kortlægger, hvordan brikkerne passer sammen, og hvilken man skal række efter i 2026.

2023
Chromium leverer native MathML Core (v109)
4
skærmlæser-matematikstakke i aktiv brug
ca. 95%
af browsere læser nu MathML native
10 min. læsning
Opdateret maj 2026

1. Native MathML i 2026

Det første, man skal sige klart, er, at den lange, langsomme diskussion om, hvorvidt browsere bør gengive matematik native, er afgjort. Firefox har gengivet MathML siden begyndelsen af 2000’erne; WebKit leverede en brugbar implementering i Safari i 2013; den hidtidige modstander, Chromium, landede endelig MathML Core i version 109 i januar 2023. Denne ene udgivelse frigav platformen: i midten af 2026 taler de store browsermotorer på alle desktops og næsten alle telefoner MathML som et førsteklasses sprog. Flugtvejsløsningen, som nettet standardiserede på i næsten tyve år — gengiv matematik som et billede med et alt-attribut, som skærmlæserbrugeren skal have tillid til — er ikke længere det ansvarlige standardvalg.

Det, der ændrede sig i 2023, er snævrere end overskriften antyder. Chromium implementerede ikke hele MathML 3; det implementerede MathML Core, en delmængde bevidst afgrænset til de elementer, browsere kan gengive pålideligt, og som hjælpeteknologier kan navigere i. Grundskolematematisk notation (lang division, regnebær, staklægning) er ikke i Core. Linjeskift inde i en lang ligning er i Core, men heuristikkerne er konservative. Visse avancerede stretchable operatorer gengives stadig inkonsekvent på tværs af motorer. Men grundstrukturen — brøker, rodtegn, ned- og opgangsskrifter, matricer, integraler, summation, operatorordlisten — er nu i alle motorer, der betyder noget.

Den tilgængelighed smæssige konsekvens er direkte. En side, der udsender MathML direkte i DOM, leverer et semantisk udtryk, som en skærmlæser kan udtale, navigere i og genudtale i et andet detaljeringsniveau. En side, der udsender et billede med et alt-attribut, leverer en enkelt sætning, som skærmlæserbrugeren ikke kan bore sig ned i, ikke kan genudtale og ikke kan kopiere ind i en lommeregner. I ti år var afvejningen reel, fordi Chromium ikke kunne gengive MathML, og at falde tilbage til billeder betød færre ødelagte sider. Denne afvejning holder ikke længere.

ca. 95%
af globale browsersessioner gengiver nu MathML native, baseret på browserandelsaggregatet for Chromium 109+ siden jan. 2023, Firefox og WebKit-baseret Safari.
ca. 23 år
mellem MathML’s status som W3C-anbefaling (feb. 1998, MathML 1.01) og Chromiums native implementering (jan. 2023).
ca. 0 KB
JavaScript behøves for at gengive native MathML — gengivelsen sker i browserens layoutmotor, ikke på hovedtråden.
MathML Core, kort fortalt

MathML Core er den delmængde af MathML 3, browsermotorerne aftalte at levere interoperabelt. Hvis man i dag udsender MathML fra en build-pipeline, er Core målet. Grundskolematematisk notation og avancerede layoutudvidelser lever i den bredere MathML 3-specifikation; betragt dem som progressive forbedringer, der stadig drager fordel af et MathJax-fallback.

„En side, der udsender et billede med et alt-attribut, leverer en enkelt sætning, som skærmlæserbrugeren ikke kan bore sig ned i, ikke kan genudtale og ikke kan kopiere ind i en lommeregner.“

— denne artikel, afsnit 1

2. MathJax: fra renderer til polyfill

MathJax var broen, der holdt matematik på nettet læselig under den lange Chromium-kløft. Siden sin første udgivelse i 2010 tog MathJax LaTeX eller MathML i kilden og producerede stiliseret HTML eller SVG-output, som enhver browser kunne gengive. Det meste af sin levetid var det det primære gengivelseslag for matematisk indhold på nettet — Wikipedia, arXiv, MathOverflow, Stack Exchange og langt de fleste akademiske udgivelsesplatforme leverede MathJax på hver side.

Den rolle, MathJax spiller i 2026, er anderledes. Med Chromium, der gengiver MathML native, er jobbet som renderer-of-last-resort udført. Det, MathJax gør nu, og gør bedre end noget andet, er at placere sig foran legacy-LaTeX-kilder og omdanne dem til rent MathML, som browseren gengiver direkte. Versionerne v3 og v4 blev omskrevet med dette for øje: LaTeX-inputparseren er moden, MathML-outputtet er standardoverensstemmende, og runtime kan konfigureres til at udsende MathML og derefter træde til side og lade browseren overtage layoutarbeidet. Biblioteket er større end ønskværdigt på en kritisk-sti-side, men det er den mest pålidelige LaTeX-til-MathML-konverter på nettet.

MathJax v4
Open source · runtime LaTeX/MathML-konvertering
Legacy-LaTeX-korpora gengivet i browseren; rendereren bag de fleste akademiske og STEM-udgivelsesplatforme
StyrkeLaTeX-parseren håndterer den lange hale af akademiske makroer
SvaghedTung runtime; ca. 700 KB på en kritisk sti er reel
Bedst tilSider, hvis kilde er LaTeX, og som ikke kan forbehandles
KaTeX
Open source · hurtig LaTeX-renderer
Dokumentationssider, blogs og produktflader, der ønsker LaTeX uden MathJax-payload
StyrkeHurtig, lille (ca. 270 KB), synkron gengivelse
SvaghedMathML-outputtilstand forbedret, men stadig smallere dækning end MathJax
Bedst tilPerformancefølsomme flader med en mindre LaTeX-dialekt
Temml
Open source · LaTeX til rent MathML
Build-tidskonvertering: udsend MathML én gang ved publiceringstidspunktet, lever nul JavaScript ved runtime
StyrkeRent MathML-output; lille runtime-fodaftryk ved brug på byggetidspunktet
SvaghedSmallere LaTeX-dialekt end MathJax
Bedst tilStatiske sitepielines, hvor matematik er en del af bygningen
Pandoc
Open source · dokumentformatskonverter
Konverter lange LaTeX- eller Markdown-manuskripter til HTML med MathML ved publiceringstidspunktet
StyrkeHeldokumentkonvertering; leverer MathML som en outputmulighed
SvaghedIkke en runtime-renderer; CLI-drevet
Bedst tilAkademiske udgivelsespipelines og lærebøgerskonvertering

3. LaTeX til MathML i praksis: godt versus dårligt markup

Det meste matematisk indhold på nettet har en LaTeX-kilde et sted opstrøms. Spørgsmålet er, hvor LaTeX-til-MathML-konverteringen sker — på byggetidspunktet, ved runtime eller aldrig. Det mønster, der vinder på alle tilgængelighed saxer, er konvertering til MathML på byggetidspunktet med det gengivne MathML udsendt direkte i sidens HTML. Det mønster, der taber på alle akser, er at levere et billede af en LaTeX-gengivelse med et alt-attribut, der parafraserer ligningen.

Godt: MathML på siden
  • Ligningen lever i DOM som semantisk markup.
  • Skærmlæseren udtaler operator, operand og struktur — og lader brugeren navigere i deludtryk.
  • Browsere gengiver det native; nul runtime-JavaScript på den kritiske sti.
  • Søgemaskiner og AI-resuméværktøjer kan læse udtrykket som tekst.
  • Kopiér-indsæt producerer en brugbar repræsentation, ofte retur-konverterbar til LaTeX.
Den tredje mulighed, der også taber

Mange CMS-platforme leverer stadig rå LaTeX inde på siden og lader et runtime-bibliotek (ofte MathJax) opdage og konvertere det ved indlæsning. Resultatet gengives, men kun efter et script har kørt — en ikke-triviel tilgængelighed smæssig straf på langsomme netværk og en målbar layout-shift-omkostning. Konvertér på byggetidspunktet, når det er muligt; reserver runtime-konvertering til legacy-kilder, der ikke kan genopbygges.


4. Skærmlæsernavigation i matematik

At gengive matematikken er halvdelen af jobbet. Den anden halvdel er navigation: en lang ligning kan ikke lineariseres til en enkelt udtalt sætning uden at læseren mister tråden. Alle store skærmlæsere leverer nu en “matematiktilstand”, der lader brugeren gå ind i en brøk, vandre langs tæller, dykke ned i et nedgangsskrifte, springe ud til moderudtrykket og genudtale det aktuelle deludtryk i et andet detaljeringsniveau. Implementeringerne adskiller sig i modenhed, tastaturgenveje og — afgørende — hvilken tale-regelbibliotek de deler.

SkærmlæserNative MathMLTale-motorNavigationModenhed
NVDA (Windows)JaMathCAT (moderne), historisk MathPlayer-tilføjelseDeludtryk-gang, detaljeringsniveauer, brailleoutputProduktionsklar
JAWS (Windows)JaMathCATDeludtryk-gang, matematik-kun gennemgangscursorProduktionsklar
VoiceOver (macOS, iOS)JaApples interne, delvist afledt af MathML-semantikElementvælger-navigation; mindre granulær end NVDA/JAWSBrugbar, mindre rig
ChromeVox (ChromeOS, Chrome)JaSpeech Rule Engine (SRE) direkteDeludtryk-gang via SRE-reglerStærk i klassekontekster
Orca (Linux)DelvisSRE via browser; Orca selv afhænger af tilgængeligt-træ-tekstBegrænset; afhænger af browserVariabel
MathPlayer, MathCAT, MathML — tre navne at holde adskilt

MathPlayer var den originale Design Science-tilføjelse, der lærte NVDA at udtale MathML; den er udfaset. MathCAT er dens moderne efterfølger — aktivt vedligeholdt, Rust-baseret, den anbefalede backend til både NVDA og JAWS i dag. MathML er selve markeringen: det input begge biblioteker forbruger. Henvisninger til MathPlayer i en spec eller leverandørdok fra 2026 er normalt historiske og bør læses som “matematik-tale-tilføjelsen” i ånd.


5. Speech Rule Engine stille i baggrunden

Bag næsten alle moderne matematik-tale-oplevelser på nettet ligger et projekt, de fleste ingeniører aldrig har hørt om: Speech Rule Engine eller SRE. SRE startede inde i Googles ChromeVox-team i midten af 2010’erne og er nu et open source-bibliotek vedligeholdt primært af Volker Sorge. Det tager MathML ind og udsender en struktureret talt form — på tværs af flere sprog, flere detaljeringsniveauer og flere regelsæt (MathSpeak, ClearSpeak, ChromeVox-classic). Det er også motoren, der driver den matematik-navigationstilgængelighed, MathJax eksponerer på sit eget gengivne output, og det refereres af både MathCAT og adskillige browser-side tilgængelighed-eksperimenter.

Grunden til, at SRE betyder noget som infrastruktur, er, at uden et kanonisk udtalelsesbibliotek ville alle skærmlæsere opfinde deres egen måde at sige x i anden plus y i anden er lig med r i anden. Med SRE konvergerer de store implementeringer mod et lille sæt sanktionerede regelsæt, hvilket betyder, at en lærer, der skriver en ligning i et lærebøgersopfordringsværktøj, nogenlunde kan forudsige, hvordan en elev, der bruger NVDA, JAWS eller ChromeVox, vil høre det. Konvergensen er ikke fuldstændig — VoiceOver er undtagelsen — men den er reel og voksende.

1

MathSpeak versus ClearSpeak

De to mest kendte regelsæt leveres inde i SRE. MathSpeak er den ældre, mere bogstavelige stil — “brøk et over to slut-brøk” — og er designet til præcision i braille-stil. ClearSpeak er nyere, mere naturlig lyd — “en halv” — og er standarden i de fleste klasserumsimplementeringer i dag. At skifte mellem de to er en detailjeringsstilpræference, ikke en anden motor.

2

Flersproget understøttelse

SRE leverer oversatte regelsæt til engelsk, fransk, tysk, italiensk, spansk og et voksende sæt yderligere sprog. Oversættelserne er ikke maskingenerede — de er skrevet af SRE-vedligeholdere og bidragydere med hjælp fra undervisere, der underviser i matematik på disse sprog. Dette er et af de få steder i webtilgængelighed, hvor lokaliseringen er tilstrækkelig komplet til at man kan stole på den.

3

Brailleoutput, ikke kun tale

SRE udsender Nemeth- og UEB-matematikbraille fra MathML, hvilket er den vej, de fleste moderne brailledisplays bruger til at gengive matematik. Den samme MathML-kilde, der driver det talte output, driver brailleoutputtet — præcis den arkitektoniske egenskab, et tilgængelighed-infrastrukturlag bør have.


6. Anbefalinger pr. dokumenttype

Det generelle princip — lever MathML, konvertér fra LaTeX på byggetidspunktet når muligt, læn dig op ad SRE for tale — gælder for alle dokumenttyper. Detaljerne skifter med fladen. Nedenfor er konkrete anbefalinger for de fire dokumentklasser, som de fleste tilgængelighed-teams leverer.

1

Webartkler og blogindlæg

Hvis platformen understøtter det, gengiv MathML direkte i indlægsteksten — de fleste statiske sitegeneratorer kan kalde Temml eller Pandoc på byggetidspunktet og udsende MathML i HTML. Hvis platformen er et legacy-CMS, der kun accepterer LaTeX, indlæs MathJax v4 i MathML-outputtilstand og lad det konvertere ved runtime, men cache aggressivt. Lever ikke PNG-billeder af ligninger.

2

Akademiske tidsskriftsartikler

Korpuset er overvejende LaTeX, og udgivelsespipeline er det rette sted at konvertere. Pandoc, MathJax i batch-tilstand eller forlagets egen LaTeXML-pipeline kan udsende HTML med MathML og en PDF i samme kørsel. Tilgængelighed-gevinsten er stor: en skærmlæserbruger, der læser en artikel online, får navigerbare ligninger frem for en PDF, hvis matematik er rasteriseret. Par HTML/MathML-outputtet med en tagged PDF-udgave til offlinelæsning.

3

Lærebøger og langt kursusindhold

EPUB 3 med indlejret MathML er standarden, og moderne læsesystemer (Apple Books, Thorium, ACE-testede produktionslæsere) håndterer det korrekt. Forfat én gang i MathML, lever den samme EPUB til synende og skærmlæserbrugere, og stol på SRE-drevet tale i hjælpeteknologilaget. Undgå at bage ligninger ind i rasterbilleder, selv om typografien ser bedre ud — tilgængelighed-omkostningen er ikke polereringen værd.

4

Klasserumsslides og liveundervisning

Slides er den rodigste flade — PowerPoint og Google Slides håndterer hver matematik forskelligt, og præsentationstilstand falder ofte tilbage til billeder. Det forsvarlige standardvalg i 2026 er at forfatte matematikken i et slideværktøj, der eksporterer MathML (eller at komponere slides som HTML), og at dele et parallelt HTML- eller EPUB-handout med de samme ligninger som MathML inden foredraget. Handoutet, ikke slidedækket, er det artefakt, en skærmlæserstuderende kan navigere i under og efter undervisningen.

Ét princip, fire flader

På tværs af alle fire dokumenttyper gælder det samme princip: udsend MathML, lad browseren gengive det, lad SRE-drevet tale og braille håndtere hjælpeteknologilaget, og betragt enhver pipeline, der producerer et ligningsbillede, som en fejl, der skal rettes. Browsermotor-konvergensen i 2023 gjorde dette princip endelig overkommeligt. Skærmlæser-konvergensen mod SRE gjorde det endelig konsekvent.


Konklusion: den lange vej og dertil den nu fører

Matematiktilgængelighed på nettet har været den langsomste af de store tilgængelighed-fronter at modnes. Standarderne var klar i 1998. Skærmlæserne var klar, på et basalt niveau, i midten af 2000’erne. Browsermotorerne tog til 2023. Integrationen mellem disse tre lag — markup, gengivelse, tale — klikkede kun virkelig på plads hen over anden halvdel af det år, da MathCAT erstattede MathPlayer inde i NVDA, da JAWS adopterede den samme backend, og da ChromeVox og MathJax konvergerede mod den samme underliggende Speech Rule Engine.

Det arbejde, der er tilbage, ligger i kanterne. Grundskolematematisk notation er ikke i MathML Core, og de platforme, der underviser i aritmetik i de tidlige klassetrin, er stadig nødt til at falde tilbage på MathML 3-udvidelser eller billeder. VoiceOveres matematik-navigation er brugbar, men mindre granulær end det, Windows-brugere får. Browserlinjeskift inde i meget lange ligninger er konservativt, og visse stretchable operatorer gengives stadig ujævnt på tværs af motorer. Disse er reelle problemer og værd at løse. De er ikke den samme slags problem som “Chromium kan slet ikke gengive matematik” var i årtiet før 2023.

For et ingeniørteam, der leverer en ny produktflade i 2026 med matematisk indhold, er standardvalget: udsend MathML, generér det fra LaTeX på byggetidspunktet, når kilden tillader det, fald tilbage på MathJax v4 til legacy-LaTeX, der ikke kan forbehandles, og stol på skærmlæser-stakken — NVDA plus MathCAT, JAWS plus MathCAT, ChromeVox plus SRE, VoiceOver native — til at håndtere talelaget. Den lange vej er ikke slut. Men for første gang fører den et sted hen, der er læseligt.

„Standarderne var klar i 1998. Browsermotorerne tog til 2023. Integrationen klikkede endelig på plads hen over anden halvdel af det år.“

— denne artikel, konklusion