Failure is success if we learn from it.
Malcolm Forbes

MathML

A MathML (Mathematical Markup Language) – ahogy a nevéből is kitűnik – matematikai képletek és kifejezések (többek között) a világhálón való megjelenítésére született, az XML-típusú (eXtensible Markup Language) leíró nyelvek egyike. Az igény rá akkora volt, hogy a World Wide Web Consortium (W3C) már a múlt század végén megjelentette az ajánlását. Azóta sokat fejlődött, ám a matematikai képletek ábrázolása még mindig kihívás: különleges grafikai megoldásokat kíván. Nézzünk például egy négyzetgyökös kifejezést:

A nem is olyan régi, Gecko-motorral meghajtott (pl. Mozilla Firefox 2.x változatú) böngészők a gyökjel vízszintes szára alatti területet tömör téglalappal töltik ki, ami letolja a gyökjel alatti számot és/vagy kifejezést (jelen esetben az x-et). El kell ismerni, hogy még a 3.x változatú Firefox megjelenítése sem kifogástalan. Ki tudja, hogy ezen böngészőkben hogyan nézne ki, ha a számítógépre telepítenénk az ajánlott betűtípusokat? Talán rendbe jönne… de ne vágjunk elébe a dolgoknak! (Az egyszerűbb képletek hagyományos HTML-kódolással szöveg közben is kezelhetők; ilyen a hatvány, például az x2, de az x<sup>2</sup> kódból nem derül ki, hogy a kettes hatványkitevő-e vagy felső index.)

Kódolás

A matematikai képletek leírására a W3C alapvetően kétféle feljelölést ajánl: helyezi előtérbe. Külön lapon olvasható a vegyes markupolás ajánlása. (A felsoroltak XML-állományok, de elérhető a Presentation Markup, a Content Markup, illetve a Combining Presentation and Content Markup HTML-változata is azok számára, akiknek a böngészője nem tudja értelmezni a MathML-t. Bennük képlet csak elvétve – képként – szerepel.)

A Content Markup sajátossága, hogy a képletek tartalmát egzakt módon írja le, ezért, ha megfelelő értelmező áll rendelkezésre, (ha a kifejezés változókat is tartalmaz, konkrét értékek behelyettesítésével) akár eredmény is számítható. Határozottan alkalmas nagyobb matematikai adatbázisokban való keresésre is. Az elve „lengyel logiká”-ra épül (ha jól mondom): külön kell előírni a műveletet, majd az argumentumo(ka)t, és minden műveletet apply elem fog közre, ahogy például az ax + b kifejezés kódjában is megfigyelhető.

Ezzel szemben a Presentation Markup kifejezetten a megjelenítéssel foglalkozik (még ha tartalmi elemeket is magában foglal). Az x + a / b képlet kódjában is látható, hogy a tagelés jelzésértékű: az mi az azonosítót, az mo az operátort szimbolizálja. Ebben a kódolásnemben stílusolásra is van lehetőség, ám előfordulhat, hogy a képlet eredeti tartalmát vissza sem lehet fejteni gépi úton.

A képletek két módon helyezhetők el az oldalon. Vagy úgy, hogy az oldal maga X(HT)ML-állomány és akkor a képletek kódja közvetlenül beágyazható a HTML-kódok közé (csak a megfelelő stíluslapról és/vagy DTD-ről kell gondoskodni), vagy a képletet külön XML-fájlba kell tenni, és azt kell beemelni valamilyen módon a HTML-oldalra. Ezen a lapon erre iframe-eket (inline frame) használtam.

Böngészők és bővítmények

Flock, Mozilla, Mozilla Firefox, Netscape és SeaMonkey

A Gecko-motorral működő böngészők telepítés után nyomban képesek értelmezni a MathML-t. Nincs is velük semmi tennivaló. Hacsak… mi legyen a betűtípusokkal? Különös tekintettel a gyökjelre, amit elrettentésül az oldal élére tettem. A Mozillának van betűtípus-kínálata és biztató képe is (igaz, 2002. januári)… de nem akarok túlbuzgóbb lenni az átlagos felhasználónál. Van viszont egy remek hírem! Ezek a böngészők ma már szintén értelmezik a Content Markupot! Ez mintegy két éve nem ment…

Microsoft Internet Explorer és Safari

E két böngésző nem tartalmazza natív módon a MathML-értelmezőt (mindkettőt a rendszerrel együtt adják – Windowshoz az egyiket és Apple-höz a másikat –, mintha a rendszerszállítók nem törődnének a vásárlóval), de letölthető és telepíthető melléjük ingyenes bővítmény. Az IE-hez a Design Science kínálja már évek óta a MathPlayert. Meglepetés, hogy a 2.1b változata már a kettős- és körintegrál karaktert is tartalmazza (lásd lejjebb a Stokes-tételt a képletek között), amit nagyon hiányoltam korábban. Egyébként ez az ő verzió-ellenőrző oldalukon látható minta:

Van még egy MathML-értelmező bővítmény, az Integre Techexplorer, amit kevésbé kedvelek az eltérő (és valljuk be, többnyire rosszabb) megjelenítése miatt, valamint a felhasználás feltételei is szigorúbbak. A Safari bővítményéről semmit sem tudok (azt olvastam, hogy a Design Science nem, a Techexplorer támogatja az OS X-en futó programot).

Opera

Ez a böngésző árván maradt, mint a kisujjam. Még bővítményről sem tudok, amit telepíteni lehetne mellé, amivel a MathML-t értelmezni tudná…

Összefoglaló

Csodák csodája! Mindegyik böngésző hajlandó ugyanazt az XML-állományt értelmezni (már amelyik egyáltalán képes). Nem kell különbséget tenni böngészőnként. (Csak zárójelben jegyzem meg, azért ért meglepetés: a Mozilla 1.7.12-es és a Netscape 8.1-es változata lokális környezetben fanyalog a stíluslap értelmezésekor; és naná, hogy a képlet helyett hibaüzenettel kedveskedik. A Netscape 9.0-ás – nekem teljesen új – változatában ezt a hibát kiküszöbölték…)

A böngészők eltérően jeleníthetik meg a Content Markupolt képleteket (a példákat a W3C specifikáló oldaláról vettem).

De a tisztán Presentation Markup sem feltétlenül jelenti mindegyiküknek ugyanazt. Nézd csak meg az Explorerrel (hmm… MathPlayer is kell hozzá) és egy Gecko-motorossal a vektoriális szorzatot. Megtalálod egy kicsit lejjebb, a mintaképletek között. Különben érdemes egy kicsit bóklászni a W3C MathML Test Suite képletrengetegében is. Sok érdekességet fogsz látni.

Az oldal letöltésekor (kinyitásakor) ellenőrizhető, hogy a vendég milyen böngészőt használ. Sőt, ha Explorerrel akarja megnézni a lapot, az is észlelhető, hogy a gépén telepítve lett-e a MathPlayer, illetve annak melyik változata. Probléma esetén tájékoztatni lehet (kell) a felhasználót. Hasonlóképpen célszerű tudatni, hogy az Opera alkalmatlan az oldal érdemi megtekintéséhez (ha történetesen azt a böngészőt futtatja a látogató). Ezen az oldalon mindez meg is történik…

Képletek

Néhány, három csoportba sorolt képletet is előkészítettem a MathML-értelmezés bemutatására. (Ha a képletet nem az alábbi négyzetben, hanem külön ablakban akarod látni, kattints a képlet neve melletti  ábrára!)
Presentation Markup
Ceva-tétel |  
inverz mátrix |  
kanonikus alak |  
vektoriális szorzat |  

Content Markup
Hilbert-transzformáció |  
hiperbolikus paraboloid |  
permutáló mátrix |  
potenciálfüggvény |  

Vegyes
finomszerkezeti állandó |  
kamatos kamat |  
Stokes-tétel |  
szétválasztható differenciálegyenlet |  

És végül itt az összes képlet egy csokorban.
Az eredeti képletek a Magyar Nagylexikon Kiadó Zrt. szellemi tulajdonát képezik. A fentieket véletlenszerűen választottam ki egy nagyobb halomból.
Készült:
Utolsó módosítás:
Sütijóváhagyás:
2007. 06. 15.
2008. 03. 28.
2015. 08. 20.
MathML 2.0 Valid HTML 4.01 Transitional Valid CSS level 2
© Tuna András, 2006–2015