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.
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.
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.“
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.
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.
- 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.
- Równanie to płaski obraz; struktura jest niewidoczna dla technologii wspomagających.
- Czytnik ekranu mówi jedno zdanie alt; brak nawigacji, powtórzenia, kontroli szczegółowości.
- Obraz skaluje się słabo przy powiększeniu czytnika i powiększeniu tekstu systemu operacyjnego.
- Wyszukiwarki i narzędzia AI widzą „obraz równania“ i nic więcej.
- Kopiuj-wklej produkuje PNG; czytelnik nie może przenieść matematyki do kalkulatora.
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 ekranu | Natywny MathML | Silnik mowy | Nawigacja | Dojrzałość |
|---|---|---|---|---|
| NVDA (Windows) | Tak | MathCAT (nowoczesny), historyczny dodatek MathPlayer | Przechodzenie po podwyrażeniach, poziomy szczegółowości, wyjście brajlowskie | Gotowy produkcyjnie |
| JAWS (Windows) | Tak | MathCAT | Przechodzenie po podwyrażeniach, kursor recenzji tylko dla matematyki | Gotowy produkcyjnie |
| VoiceOver (macOS, iOS) | Tak | Wewnętrzny Apple, częściowo wywodzący się z semantyki MathML | Nawigacja wybieraczem elementów; mniej szczegółowa niż NVDA/JAWS | Użyteczny, mniej bogaty |
| ChromeVox (ChromeOS, Chrome) | Tak | Speech Rule Engine (SRE) bezpośrednio | Przechodzenie po podwyrażeniach za pomocą reguł SRE | Silny w kontekstach edukacyjnych |
| Orca (Linux) | Częściowo | SRE przez przeglądarkę; Orca sam polega na tekście drzewa dostępności | Ograniczony; zależy od przeglądarki | Zmienny |
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.
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.
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ć.
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.
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ń.
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.
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.
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.
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.“