Zbliżenie na równanie matematyczne wyświetlone w kodzie HTML z tagami MathML widocznymi w edytorze kodu
Image description: Zbliżenie na równanie matematyczne wyświetlone w kodzie HTML z tagami MathML widocznymi w edytorze kodu

Przewodnik inżynierski · Dostępność matematyki

Dostępność matematyki: MathML, MathJax i długa droga

Przewodnik inżynierski po stanie dostępności matematyki w sieci w 2026 r.

Dostępność matematyki
MathML, MathJax i długa droga

Przez dwadzieścia lat sieć dobrze renderowała prozę, a matematykę — źle. Natywny MathML w Chromium 109 i powoli dojrzewający Speech Rule Engine odwróciły ten trend. Ten przewodnik mapuje, jak poszczególne elementy łączą się ze sobą i po który z nich sięgać w 2026 r.

2023
Chromium wprowadza natywny MathML Core (wersja 109)
4
aktywnie używane stosy matematyczne czytników ekranu
ok. 95%
przeglądarek obsługuje teraz MathML natywnie
10 min czytania
Aktualizacja maj 2026

1. Natywny MathML w 2026 r.

Pierwszą rzeczą, którą należy powiedzieć wprost, jest to, że długa, powolna debata o tym, czy przeglądarki powinny natywnie renderować matematykę, została rozstrzygnięta. Firefox renderuje MathML od początku lat 2000; WebKit dostarczył użyteczną implementację w Safari w 2013 r.; ostatni opór, Chromium, wprowadził wreszcie MathML Core w wersji 109 w styczniu 2023 r. To jedno wydanie odblokowało platformę: do połowy 2026 r. główne silniki przeglądarek na każdym komputerze i niemal każdym telefonie obsługują MathML jako język pierwszej klasy. Wyjście awaryjne, które sieć standaryzowała przez niemal dwadzieścia lat — renderowanie matematyki jako obraz z atrybutem alt, któremu użytkownik czytnika ekranu musi ufać — nie jest już odpowiedzialnym domyślnym rozwiązaniem.

To, co zmieniło się w 2023 r., jest węższe, niż sugeruje nagłówek. Chromium nie zaimplementował całego MathML 3; zaimplementował MathML Core — podzbiór celowo ograniczony do elementów, które przeglądarki mogą renderować niezawodnie i po których technologie wspomagające mogą nawigować. Zapis matematyki elementarnej (dzielenie pisemne, przeniesienia, dodawanie w słupku) nie jest w Core. Łamanie wierszy wewnątrz długiego równania jest w Core, lecz heurystyki są zachowawcze. Niektóre zaawansowane rozciągalne operatory nadal renderują się niespójnie w różnych silnikach. Lecz kości — ułamki, pierwiastki, indeksy dolne i górne, macierze, całki, sumy, słownik operatorów — są teraz w każdym silniku, który ma znaczenie.

Konsekwencja dla dostępności jest bezpośrednia. Strona emitująca MathML bezpośrednio do DOM dostarcza wyrażenie semantyczne, które czytnik ekranu może mówić, po którym może nawigować i które może powtórzyć na innym poziomie szczegółowości. Strona emitująca obraz z atrybutem alt dostarcza jedno zdanie, do którego użytkownik czytnika ekranu nie może wejść głębiej, nie może powtórzyć i nie może skopiować do kalkulatora. Przez dziesięć lat kompromis był realny, bo Chromium nie mógł renderować MathML, a cofnięcie się do obrazów oznaczało mniej zepsutych stron. Ten kompromis już nie obowiązuje.

ok. 95%
globalnych sesji przeglądarek renderuje teraz MathML natywnie, według zagregowanego udziału Chromium 109+ od stycznia 2023 r., Firefoksa i Safari opartego na WebKit.
ok. 23 lata
między uczynieniem MathML Rekomendacją W3C (luty 1998 r., MathML 1.01) a dostarczeniem natywnej implementacji przez Chromium (styczeń 2023 r.).
ok. 0 KB
JavaScript potrzebnego do renderowania natywnego MathML — renderowanie odbywa się w silniku układu przeglądarki, a nie w głównym wątku.
MathML Core — krótko

MathML Core to podzbiór MathML 3, który silniki przeglądarek uzgodniły do interoperacyjnej implementacji. Jeśli dzisiaj emituje się MathML z potoku kompilacji, należy celować w Core. Zapisy matematyki elementarnej i zaawansowane rozszerzenia układu należą do szerszej specyfikacji MathML 3; traktować je jako ulepszenia progresywne, które nadal korzystają z rozwiązania awaryjnego MathJax.

„Strona emitująca obraz z atrybutem alt dostarcza jedno zdanie, do którego użytkownik czytnika ekranu nie może wejść głębiej, nie może powtórzyć i nie może skopiować do kalkulatora.“

— niniejszy artykuł, sekcja 1

2. MathJax: od renderera do polyfill

MathJax był mostem utrzymującym czytelność matematyki w sieci podczas długiej przerwy Chromium. Od pierwszego wydania w 2010 r. MathJax przyjmował LaTeX lub MathML w źródle i produkował stylizowane wyjście HTML lub SVG, które każda przeglądarka mogła renderować. Przez większość swojej historii był podstawową warstwą renderowania treści matematycznych w sieci — Wikipedia, arXiv, MathOverflow, Stack Exchange i zdecydowana większość akademickich platform wydawniczych dostarczały MathJax na każdej stronie.

Rola MathJax w 2026 r. jest inna. Przy Chromium renderującym MathML natywnie, zadanie renderera ostatniej szansy jest skończone. To, co MathJax robi teraz i robi lepiej niż cokolwiek innego, to stanie z przodu starszych źródeł LaTeX i przekształcanie ich w czysty MathML, który przeglądarka renderuje bezpośrednio. Wersje v3 i v4 zostały przepisane z myślą o tym: parser wejściowy LaTeX jest dojrzały, wyjście MathML jest zgodne ze standardami, a środowisko uruchomieniowe można skonfigurować tak, by emitowało MathML, a następnie ustąpiło, pozwalając przeglądarce przejąć pracę układu. Biblioteka jest cięższa, niż chciałoby się mieć na ścieżce krytycznej, lecz jest najbardziej niezawodnym konwerterem LaTeX-do-MathML w sieci.

MathJax v4
Open source · konwersja LaTeX/MathML w czasie wykonywania
Starsze korpusy LaTeX renderowane w przeglądarce; renderer stojący za większością akademickich i STEM-owych platform wydawniczych
Mocna stronaParser LaTeX obsługuje długi ogon akademickich makr
Słaba stronaCiężkie środowisko uruchomieniowe; ok. 700 KB na ścieżce krytycznej to realny problem
Najlepszy dlaStron, których źródłem jest LaTeX i które nie mogą być wstępnie przetworzone
KaTeX
Open source · szybki renderer LaTeX
Strony dokumentacyjne, blogi i powierzchnie produktowe wymagające LaTeX bez ładunku MathJax
Mocna stronaSzybki, mały (ok. 270 KB), synchroniczne renderowanie
Słaba stronaTryb wyjściowy MathML poprawiony, lecz nadal o węższym zasięgu niż MathJax
Najlepszy dlaPowierzchni wrażliwych na wydajność z mniejszym dialektem LaTeX
Temml
Open source · LaTeX do czystego MathML
Konwersja w czasie kompilacji: emitowanie MathML raz w czasie publikacji, zero JavaScript w czasie wykonywania
Mocna stronaCzyste wyjście MathML; minimalne ślad środowiska uruchomieniowego przy użyciu w czasie kompilacji
Słaba stronaMniejszy dialekt LaTeX niż MathJax
Najlepszy dlaPotoków stron statycznych, gdzie matematyka jest częścią kompilacji
Pandoc
Open source · konwerter formatów dokumentów
Konwersja długich rękopisów LaTeX lub Markdown do HTML z MathML w czasie publikacji
Mocna stronaKonwersja całego dokumentu; MathML jako jedna z opcji wyjściowych
Słaba stronaNie jest rendererem czasu wykonywania; sterowany z wiersza poleceń
Najlepszy dlaAkademickich potoków wydawniczych i konwersji podręczników

3. LaTeX do MathML w praktyce: dobre a złe znaczniki

Większość treści matematycznych w sieci ma gdzieś w górze strumienia źródło LaTeX. Pytanie dotyczy tego, gdzie następuje konwersja LaTeX-do-MathML — w czasie kompilacji, w czasie wykonywania czy nigdy. Wzorzec wygrywający na każdej osi dostępności to konwersja w czasie kompilacji do MathML, z wyrenderowanym MathML emitowanym bezpośrednio do HTML strony. Wzorzec przegrywający na każdej osi to dostarczanie obrazu renderowania LaTeX z atrybutem alt parafrazującym równanie.

Dobre: MathML na stronie
  • Równanie żyje w DOM jako znacznik semantyczny.
  • Czytnik ekranu mówi operator, operand, strukturę — i pozwala użytkownikowi nawigować po podwyrażeniach.
  • Przeglądarki renderują to natywnie; zero JavaScript w czasie wykonywania na ścieżce krytycznej.
  • Wyszukiwarki i summaryzatory AI mogą odczytać wyrażenie jako tekst.
  • Kopiuj-wklej produkuje użyteczną reprezentację, często możliwą do odtworzenia w LaTeX.
Trzecia opcja, która też przegrywa

Wiele platform CMS nadal dostarcza surowy LaTeX wewnątrz strony i pozwala bibliotece czasu wykonywania (często MathJax) odkryć go i przekonwertować przy załadowaniu. Wynik renderuje się, lecz dopiero po uruchomieniu skryptu — co stanowi nietrywialną karę za dostępność na wolnych sieciach i mierzalny koszt przesunięcia układu. Należy konwertować w czasie kompilacji, gdy to możliwe; rezerwować konwersję w czasie wykonywania dla starszych źródeł, których nie można przebudować.


4. Nawigacja po matematyce w czytnikach ekranu

Renderowanie matematyki to połowa zadania. Druga połowa to nawigacja: długiego równania nie można zlinearyzować do jednego mówionego zdania bez utraty miejsca przez czytelnika. Każdy główny czytnik ekranu dostarcza teraz „tryb matematyki“, który pozwala użytkownikowi wejść do ułamka, przejść wzdłuż jego licznika, wejść do indeksu dolnego, wyskoczyć do wyrażenia nadrzędnego i powtórzyć bieżące podwyrażenie na innym poziomie szczegółowości. Implementacje różnią się dojrzałością, skrótami klawiaturowymi i — co kluczowe — wspólną biblioteką reguł mowy.

Czytnik ekranuNatywny MathMLSilnik mowyNawigacjaDojrzałość
NVDA (Windows)TakMathCAT (nowoczesny), historyczny dodatek MathPlayerPrzechodzenie po podwyrażeniach, poziomy szczegółowości, wyjście brajlowskieGotowy produkcyjnie
JAWS (Windows)TakMathCATPrzechodzenie po podwyrażeniach, kursor recenzji tylko dla matematykiGotowy produkcyjnie
VoiceOver (macOS, iOS)TakWewnętrzny Apple, częściowo wywodzący się z semantyki MathMLNawigacja wybieraczem elementów; mniej szczegółowa niż NVDA/JAWSUżyteczny, mniej bogaty
ChromeVox (ChromeOS, Chrome)TakSpeech Rule Engine (SRE) bezpośrednioPrzechodzenie po podwyrażeniach za pomocą reguł SRESilny w kontekstach edukacyjnych
Orca (Linux)CzęściowoSRE przez przeglądarkę; Orca sam polega na tekście drzewa dostępnościOgraniczony; zależy od przeglądarkiZmienny
MathPlayer, MathCAT, MathML — trzy nazwy do rozróżnienia

MathPlayer był oryginalnym dodatkiem Design Science, który nauczył NVDA mówić MathML; został wycofany. MathCAT to jego nowoczesny następca — aktywnie rozwijany, oparty na Rust, zalecane zaplecze zarówno dla NVDA, jak i JAWS w 2026 r. MathML to sam znacznik: dane wejściowe, które obie biblioteki konsumują. Odwołania do MathPlayer w specyfikacji lub dokumentacji dostawcy z 2026 r. są zazwyczaj historyczne i należy je czytać w duchu jako „dodatek do mowy matematycznej“.


5. Speech Rule Engine — cicho w tle

Za niemal każdym nowoczesnym doświadczeniem mowy matematycznej w sieci stoi projekt, o którym większość inżynierów nigdy nie słyszała: Speech Rule Engine, czyli SRE. SRE powstał wewnątrz zespołu ChromeVox Google w połowie lat 2010. i jest teraz biblioteką open source utrzymywaną głównie przez Volkera Sorge. Przyjmuje MathML jako wejście i emituje ustrukturyzowaną formę mówioną jako wyjście — w wielu językach, na wielu poziomach szczegółowości i w wielu zestawach reguł (MathSpeak, ClearSpeak, ChromeVox-classic). Jest też silnikiem napędzającym zachowanie nawigacyjne dla matematyki, które MathJax udostępnia we własnym wyrenderowanym wyjściu, i jest przywoływany zarówno przez MathCAT, jak i kilka eksperymentów z dostępnością po stronie przeglądarki.

Powód, dla którego SRE ma znaczenie jako infrastruktura, jest taki, że bez kanonicznej biblioteki wymowy każdy czytnik ekranu wymyślałby własny sposób wymawiania x do kwadratu plus y do kwadratu równa się r do kwadratu. Dzięki SRE główne implementacje zbliżają się do małego zestawu zatwierdzonych zestawów reguł, co oznacza, że nauczyciel piszący równanie w narzędziu do tworzenia treści do podręcznika może z grubsza przewidzieć, jak uczeń używający NVDA, JAWS lub ChromeVox je usłyszy. Konwergencja nie jest kompletna — VoiceOver jest wyjątkiem — ale jest realna i rośnie.

1

MathSpeak a ClearSpeak

Dwa najbardziej znane zestawy reguł są wbudowane w SRE. MathSpeak to starszy, bardziej dosłowny styl — „ułamek jeden przez dwa koniec ułamka“ — zaprojektowany z myślą o precyzji w stylu brajlowskim. ClearSpeak jest nowszy, bardziej naturalnie brzmiący — „jedna druga“ — i jest domyślny w większości wdrożeń edukacyjnych. Przełączanie między nimi to preferencja stylu szczegółowości, a nie inny silnik.

2

Wsparcie wielojęzyczne

SRE dostarcza przetłumaczone zestawy reguł dla języka angielskiego, francuskiego, niemieckiego, włoskiego, hiszpańskiego i rosnącego zestawu dodatkowych języków. Tłumaczenia nie są generowane maszynowo — zostały napisane przez osoby utrzymujące SRE i współpracowników z pomocą nauczycieli nauczających matematyki w tych językach. To jedno z niewielu miejsc w dostępności internetowej, gdzie lokalizacja jest naprawdę wystarczająco kompletna, by na niej polegać.

3

Wyjście brajlowskie, nie tylko mowa

SRE emituje brajl Nemeth i UEB-math z MathML, co jest ścieżką, z której korzysta większość nowoczesnych monitorów brajlowskich do renderowania matematyki. To samo źródło MathML, które napędza wyjście mówione, napędza wyjście brajlowskie — co jest dokładnie tą właściwością architektoniczną, którą powinna mieć warstwa infrastruktury dostępności.


6. Rekomendacje według typu dokumentu

Ogólna zasada — dostarczaj MathML, konwertuj z LaTeX w czasie kompilacji gdy to możliwe, opieraj się na SRE do mowy — stosuje się do każdego typu dokumentu. Szczegóły zmieniają się wraz z powierzchnią. Poniżej konkretne rekomendacje dla czterech klas dokumentów, które najczęściej wydają zespoły ds. dostępności.

1

Artykuły internetowe i posty na blogu

Jeśli platforma to obsługuje, należy renderować MathML bezpośrednio do treści postu — większość generatorów stron statycznych może wywołać Temml lub Pandoc w czasie kompilacji i emitować MathML do HTML. Jeśli platforma jest starszym CMS akceptującym tylko LaTeX, należy załadować MathJax v4 w trybie wyjściowym MathML i pozwolić mu konwertować w czasie wykonywania, lecz agresywnie buforować. Nie należy dostarczać PNG równań.

2

Artykuły w czasopismach naukowych

Korpus jest w przeważającej mierze LaTeX, a potok wydawniczy jest właściwym miejscem na konwersję. Pandoc, MathJax w trybie wsadowym lub własny potok LaTeXML wydawcy mogą emitować HTML z MathML i PDF w tym samym przebiegu. Zysk w zakresie dostępności jest duży: użytkownik czytnika ekranu czytający artykuł online otrzymuje równania z możliwością nawigacji zamiast PDF, w którym matematyka jest rastryzowana. Należy połączyć wyjście HTML/MathML z wersją tagowanego PDF do czytania offline.

3

Podręczniki i długie kursy e-learningowe

EPUB 3 z wbudowanym MathML to standard, a nowoczesne systemy czytania (Apple Books, Thorium, certyfikowane przez ACE readery produkcyjne) obsługują go poprawnie. Należy raz napisać w MathML, dostarczać ten sam EPUB widzącym i korzystającym z czytnika ekranu użytkownikom oraz polegać na mowie napędzanej przez SRE w warstwie technologii wspomagających. Należy unikać baking równań do obrazów rastrowych, nawet jeśli typografia wygląda lepiej — koszt dostępności nie jest wart szlifu.

4

Slajdy do zajęć i nauczanie na żywo

Slajdy to najbardziej nieporządna powierzchnia — PowerPoint i Google Slides inaczej obsługują matematykę, a tryb prezentera często wraca do obrazów. Rozsądnym domyślnym rozwiązaniem w 2026 r. jest tworzenie matematyki w narzędziu do slajdów eksportującym MathML (lub komponowanie slajdów jako HTML) i udostępnianie równoległego handoutu HTML lub EPUB z tymi samymi równaniami jako MathML przed wykładem. Handout, a nie prezentacja slajdów, jest artefaktem, po którym student korzystający z czytnika ekranu może nawigować podczas zajęć i po nich.

Jedna zasada, cztery powierzchnie

We wszystkich czterech typach dokumentów obowiązuje ta sama jedna zasada: emituj MathML, niech przeglądarka go renderuje, niech mowa i brajl napędzane przez SRE obsługują warstwę technologii wspomagających, a każdy potok produkujący obraz równania traktuj jako błąd do naprawienia. Konwergencja silników przeglądarek w 2023 r. sprawiła, że ta zasada stała się wreszcie przystępna. Konwergencja czytników ekranu na SRE sprawiła, że stała się wreszcie spójna.


Podsumowanie: długa droga i dokąd teraz prowadzi

Dostępność matematyki w sieci była najwolniej dojrzewającą z głównych granic dostępności. Standardy były gotowe w 1998 r. Czytniki ekranu były gotowe, w podstawowym sensie, w połowie lat 2000. Silniki przeglądarek zajęły czas do 2023 r. Integracja między tymi trzema warstwami — znacznik, render, mowa — tak naprawdę kliknęła w drugiej połowie tamtego roku, gdy MathCAT zastąpił MathPlayer wewnątrz NVDA, gdy JAWS przyjął to samo zaplecze i gdy ChromeVox i MathJax zbiegły się na tym samym podstawowym Speech Rule Engine.

Praca, która pozostaje, dotyczy krawędzi. Zapis matematyki elementarnej nie jest w MathML Core, a platformy nauczające arytmetyki wczesnoszkolnej nadal muszą cofać się do rozszerzeń MathML 3 lub do obrazów. Nawigacja po matematyce w VoiceOver jest użyteczna, lecz mniej szczegółowa niż to, co dostają użytkownicy Windows. Łamanie wierszy w przeglądarce wewnątrz bardzo długich równań jest zachowawcze, a niektóre rozciągające się operatory nadal renderują się nierównomiernie w różnych silnikach. To są realne problemy warte naprawienia. Nie są to te same problemy co „Chromium w ogóle nie renderuje matematyki“, którym była poprzednia dekada przed 2023 r.

Dla zespołu inżynieryjnego dostarczającego nową powierzchnię produktową w 2026 r. z treścią matematyczną, rozsądnym domyślnym rozwiązaniem jest: emituj MathML, generuj go z LaTeX w czasie kompilacji gdy źródło to umożliwia, cofaj się do MathJax v4 dla starszego LaTeX, którego nie można wstępnie przetworzyć, i ufaj stosowi czytnika ekranu — NVDA plus MathCAT, JAWS plus MathCAT, ChromeVox plus SRE, VoiceOver natywnie — do obsługi warstwy mowy. Długa droga się nie skończyła. Lecz po raz pierwszy prowadzi gdzieś czytelnego.

„Standardy były gotowe w 1998 r. Silniki przeglądarek zajęły czas do 2023 r. Integracja kliknęła wreszcie w drugiej połowie tamtego roku.“

— niniejszy artykuł, podsumowanie