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 x
2, 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 az operációs
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).
-
Például az f(x) függvény x szerinti első
deriváltját így mutatják (a képlet megtekintéséhez kattints a képre):
Gecko-motor
|
Internet Explorer
|
-
A szummát pedig így jelenítik meg:
Gecko-motor
|
Internet Explorer
|
(Közvetlenül a „typical example might be:”
szöveg alatt található
a W3C Content Markup oldalán.)
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 minta
ké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…