Navigáció: Főoldal / III. rész / III. rész (3. fejezet)
III. rész: Részletes összehasonlítás (folytatás II.)
3. A jelölések ötvözése
Ebben a részben csak MathML-ről lesz szó, hiszen csak ebben a leírónyelvben van értelme erről beszélni.
3.1. Miért használunk kétféle jelölést?
A megjelenítő jelölés elsősorban a minden médiának megfelelő, helyes megjelenítésre helyezi a hangsúlyt. Ezért általában, a tartalom jelentése sokadrangú szempont az egyes kifejezések megjelenítésében, azok megértését, feldolgozását a felhasználóra bízza.
A tartalmi jelölés a matematikai kifejezések jelentését hangsúlyozza, maga a megjelenítés helyes formájával csak a legszükségesebb mértékben foglalkozik. Természetesen ezért a matematikai alkalmazásokban nagyobb mértékben tudjuk felhasználni az így kódolt jelöléseket.
Így tehát, ha a matematikai leírónyelvek minden hasznos tulajdonságát ki akarjuk használni (magyarul a helyes tartalom mellett a helyes megjelenést is fontosnak tartjuk), akkor a kétféle jelölési módszert ötvöznünk kell.
Természetesen ennek is megvannak a maga szabályai, amiket be kell tartanunk, ha helyes kódokat szándékozunk készíteni.
3.2. A két jelölésfajta összekapcsolása
3.2.1. Megjelenítő elemek a tartalmi elemek között
Meglehetősen behatárolt eszközök állnak rendelkezésünkre az íly módon történő összekapcsolásra, ha nem akarunk homályos kódokat készíteni. Három módon használhatjuk korlátlanul a megjelenítő elemeket a tartalmi elemek között:
- Megjelenítő elemek a tartalmi token-elemekben: A <ci> és <cn> token-elemekben engedélyezett a megjelenítő elemek használata. Ezek a kódblokkok a megjelenítő elemeknek megfelelően fognak megjelenni (azaz az <mi> és <mn> elemeknek megfelelően). Ilyenkor ne használjuk a <sep/> elemet, mert a megjelenítő úgyis figyelmen kívül hagyja.
- Megjelenítő elemek az <fn> elemben: Az <fn> elemben használhatunk megjelenítő elemeket, de vigyáznunk kell arra, hogy nem keverhetjük össze a tartalmi elemekkel, mert ez hibát okozna.
- Megjelenítő elemek a <semantics> elemben: A <semantics> elem egyik feladata, hogy a megjelenítő és a tartalmi elemek között kapcsolatot teremtsen. A legtöbb esetben a tartalmi jelölést mellett nincs sok szerepe a megjelenítő jelölésnek, de a megjelenítőtől függően hatással lehet a kifejezés megjelenítésére, erről bővebben a <semantics> elemnél beszéltem.
3.2.2. Tartalmi elemek a megjelenítő elemek között
A legfontosabb tudnivaló, hogy az így megszerkesztett kifejezésnek nagyon pontos a megjelenítése. Ilyenkor a tartalmi többletjelentés hatással van a megjelenítésre is. Általában csak a következő tartalmi elemek engedélyezettek: <apply>, <ci>, <cn>, <declare>, <fn>, <interval>, <lambda>, <list>, <matrix>, <matrixrow>, <reln>, <set>, <vector>; a műveletek, relációk nem. Fontos tudnunk azt is, hogy a megjelenítő token-elemekben tartalmi elemeket nem használhatunk.
Elmondhatjuk, hogy ebben az összekapcsolási módban a tartalmi elemek helyettesíthetőek megjelenítő elemekkel. Lássuk erre a következő példát:
<mfrac>
<mi>x</mi>
<interval closure="open-closed">
<cn>1</cn>
<cn>3</cn>
</interval>
</mfrac>
A fenti kevert jelölés tiszta megjelenítő elemekkel a következő módon állítható elő, természetesen a többletinformáció ilyenkor elveszik:
<mfrac>
<mi>x</mi>
<mfenced close="]">
<mn>1</mn>
<mn>3</mn>
</mfenced>
</mfrac>
3.3. Makrók készítése
A MathML-ben lehetőségünk van makrókat készíteni. Például készítsünk egy makrót, mely a mátrix rangját adja meg, és egy olyat, amely leegyszerűsíti a transzponált leírását. Legyen az első a <rank/>, melynek kódja:
<fn>
<semantics>
<ci><mo>rank</mo></ci>
<annotation-xml encoding="OpenMath">
<OMS cd="BasicLinAlg" name="matrix-rank"/>
</annotation-xml>
</semantics>
</fn>
Az egyszerűsítés pedig legyen a <tran> “elem”:
<apply>
<transpose/>
<ci>X</ci>
</apply>
Lássuk most a saját függvény kódolását:
<reln>
<eq/>
<apply>
<rank/>
<apply>
<times/>
<tran>u</tran>
<ci>v</ci>
</apply>
</apply>
<cn>1</cn>
</reln>
Mint a fenti példákból látjuk, makrók (vagy egész makró-könyvtárak) segítségével mennyire egyszerűen és hatásosan kombinálhatjuk a megjelenítő és tartalmi jelölésformákat.