Navigáció: Főoldal / III. rész / III. rész (1. fejezet)

III. rész: Részletes összehasonlítás

1. A MathML megjelenítő jelölése

Mivel az OpenMath nem tartalmaz megjelenítő elemeket, ezért ezt a nyelvet csak a tartalmi elemekkel hasonlítom össze.

A példákban először mindig a MathML forma található, majd pedig a TEX példa.

1.1. A megjelenítő elemekről általában

A megjelenítő elemek a tradicionális matematika konstruktorai. Belőlük építhetjük fel az igen sokféle matematikai szimbólumokat és az igen bonyolult matematikai kifejezéseket is. A leíró nyelvek tulajdonságait figyelembe véve a megjelenítő elemek alkalmasak hangos megjelenítésre is (bár akad néhány attribútum, melyet ezen a módon nem lehet megjeleníteni), de elsősorban a tradicionálisabb, vizuális megjelenítésre készültek.

Mivel a MathML egyik legfontosabb felhasználási területe a HTML dokumentumokba való beágyazás, nem árt néhány szót szólni erről. Bár a HTML-nek is van alapszintű logikai váza (mint például a fejrész – főszöveg elválasztása, bekezdések használata, stb.), de ez (sajnos) csak ajánlás, és nem szabvány. A MathML teljes mértékben eleget tesz ezeknek az ajánlásoknak, de ennél sokkal mélyebb logikai vázzal rendelkezik.

A megjelenítő elemekkel fejezhetjük ki a matematikai jelölésrendszer szintaktikai struktúráját, ugyanúgy, mint más magas szintű szövegalapú dokumentációkban a címeket, szakaszokat, bekezdéseket. Ezért például, egy olyan egyszerű kifejezéseket, mint az x+a/b sem egyetlen <mrow> elemmel (amely a vízszintesen egymás mellé írandó karaktersorozatok megjelenítésére szolgál) írjuk le, hanem több egymásba ágyazottal, ezzel is jelezve az részkifejezésekhez kapcsolódó logikai jelentéstöbbletet. TEX-ben erre a {} zárójel-pár szolgál.

<mrow>
  <mi>x</mi>
  <mo>+</mo>
  <mrow>
    <mi>a</mi>
    <mo>/</mo>
    <mi>b</mi>
  </mrow>
</mrow>
 
x+{a/b}

Hasonlóan, a felső index nem csak a megjelenítendő karaktert jelenti, hanem az összefüggést a hatványkifejezés bázisával. Ez a struktúra egy jobb megjelenítési lehetőségről gondoskodik, és a megjelenítő rendszertől való nagyobb függetlenséget biztosít (pl. képernyőméret, stb.).

Létezik néhány különleges karakter a MathML-ben, melyeket egyes operátorok vagy más jelek helyett használunk, ilyenek pl. a &DifferentialD;, az &ExponentialE;, az &ImaginaryI; vagy a &InvisibleTimes;, az &ApplyFunction;, az &InvisibleComma;. Látszólag ezekre az matematikai jelekre nem lenne szükség, de ha logikai oldalról közelítünk meg egy kifejezést, pl. az f(x) kifejezést, akkor az ugyan láthatatlan &ApplyFunction; sokkal érthetőbbé teszi a dolgot, hogy itt valójában egy függvényről van szó.

1.2. Megjelenítő token-elemek

A token-elemek nulla vagy több karakter sorozatából vagy speciális jelekből állnak. Ezek egy része láthatatlan, csak a struktúra felépítésében van szerepük.

A MathML-ben karakterek és speciális jelek csak token-elemek részeként állhatnak, ez alól egyetlen kivétel az üres helyek valamelyik formája, erről azonban a megjelenítés során nem veszünk tudomást. Egy másik kivétel a <malignmark/> elem, mely szerepelhet token-elemek részeként (lásd később).

1.2.1. A token-elemek attribútumai

A token-elemek (az <mspace/> kivételével) megkaphatják a következő attribútumokat: fontsize (betűméret), fontweight (betűvastagság), fontstyle (dőlt-e), fontfamily (betűtípus), color (betűszín), valamint a class, style, id attribútumokat, melyek a stíluslapokkal kapcsolatban használunk. Ha szükségünk van karakterformázásra, akkor a fenti attribútumok helyett inkább használjunk stíluslapokat, hiszen azok segítségével sokkal összetettebb formázási lehetőségeink vannak.

Mivel a MathML kifejezéseket általában valamilyen szövegalapú dokumentumba ágyazzuk be, így a mi MathML kifejezéseink öröklik a befogadó szöveg beállításait. Ez alól két kivétel van, az <mn> és az <mi>, ahol az öröklött beállítások mellett a fontstyle más alapértékeket vesz fel, az <mn>-nél normál, az <mi>-nél dőlt stílusú lesz.

Ha egy attribútumnak megadott érték nem létezik, akkor a megjelenítő megpróbálja a megadott értékhez legközelebb eső, létező értékkel megjeleníteni az elemet.

A TEX-nél az egyes parancsoknál nincs lehetőségünk a fenti paraméterek beállítására, ebben a nyelvben erre külön parancsokat használunk.

A betűtípus kiválasztására a következő parancsok közül választhatunk: \rm (roman – normál talpas betű), \sl (slanted – dőlt), \it (italic – kurzív), \bf (boldface – kövér), \tt (typewriter type – írógép típus).

A betűtípusok méretét is külön parancsokkal szabályozhatjuk, meglehetősen behatárolt keretek között, “gyárilag” a következő parancsok állnak rendelkezésünkre: \tenrm (10-es nagyságú normál betű), \sevenrm (7-es nagyságú normál betű), \fiverm (5-ös nagyságú normál betű), \tenit (10-es nagyságú kurzív betű). Természetesen, ez általában nem elegendő. Ilyenkor a rendelkezésre álló betűtípus-állományokból készíthetünk saját betűméretező parancsot a \font parancs segítségével:

\font\nyolcas=cmr8
8 pontos {\nyolcas antikva}

A fenti példa alapján a "8 pontos antikva" szöveg jelenik meg. A betűtípus-állományok nevei jelzik a betűtípus tulajdonságait: b (félkövér), sl (dőlt), csc (kiskapitális), bx (kövér), ti (kurzív), ss (sans serif – talpatlan betű); ezek összetetten is állhatnak: cmbxti10, ami megfelel a kövér, dőlt 10 pontos nagyságú betűnek (a cm a computer modern rövidítése).

A TEX-ben nincs lehetőség színek megadására.

Stílusokról lásd a “III/1.3. Stílusok” alfejezetet!

1.2.2. Azonosítók

Néhány kivételtől eltekintve (felső és alsó indexek), a <mi> elem segítségével jelenítjük meg az azonosítókat (változók, függvények, szimbolikus állandók).

Az előző szakaszban már megismerkedtünk a token-elemek attribútumaival, de ismételten jegyezzük meg, hogy ennél az elemnél a fontstyle alapértelmezett értéke “italic”, azaz a betű dőlt nem vastagított.

A TEX matematikai módjában automatikusan dőlt betűs megjelenítésre vált, így erre nincs külön parancs, bár egyes függvényekre, szimbolikus állandók megjelenítésére léteznek parancsok.

Példák:

<mi> x </mi>
<mi> D </mi>
<mi> sin </mi>
<mi></mi>

Ez utóbbi példa is mutatja, hogy “üresen” is használhatjuk ezt az elemet, jelezve, hogy ide egy azonosító kívánkozna.

Ugyanez TEX-ben (természetesen az utolsó példának itt nincs értelme):

x
D
\sin

Az azonosítók körébe tartoznak a függvények is, melyeknél azonban használnunk kell az &ApplyFunction; (rövid neve &af;) műveleti jelet:

sin x

<mrow>
  <mi> sin </mi>
  <mo> &ApplyFunction; </mo>
  <mi> x </mi>
</mrow>
 
\sin x

Az egyes kifejezésekhez tartozó szöveget is általában a <mi> elemmel jelöljük (egyes esetekben célszerű lehet a fontstyle attribútumot beállítani):

1+...+n

<mrow>
  <mn> 1 </mn>
  <mo> + </mo>
  <mi> ... </mi>
  <mo> + </mo>
  <mi> n </mi>
</mrow>
 
1+\ldots+n

Hasonlóképpen jelöljük a szimbolikus állandókat is:

pi

<mi> &pi; </mi>
 
\pi

i

<mi> &ImaginaryI; </mi>
 
i

e

<mi> &ExponentialE; </mi>
 
e

1.2.3. Számok

Ezzel az elemmel jelöljük az olyan adatokat, melyeket számként szeretnénk megjeleníteni, tehát a számokat leíró szövegeket is jelölhetjük így, ha számértékként akarjuk értelmezni őket (lásd a példákat). Mint látni fogjuk, az <mn> elemmel előjel nélküli egészeket és valós számokat jelölhetünk, a többi számfajtát (pl. a negatív és komplex számok, a törtek, stb.) összetett elemformákkal jelöljük.

Az <mn> elem fontstyle attribútumának alapértelmezett értéke “normal”, tehát nem dőlt és nem vastagított.

A TEX matematikai módban automatikusan normál betűs megjelenítésre vált, ha számokat írunk, így erre nincs külön parancs, bár egyes esetekre léteznek parancsok. Érdemes megjegyezni, hogy ha számot jelentő, de nem számokat tartalmazó szöveget akarunk megjeleníteni, akkor a \text parancs segítségével írjuk be a szöveget.

Példák:

2

<mn> 2 </mn>
 
2

0,123

<mn> 0,123 </mn>
 
0,123

1.000.000

<mn> 1.000.000 </mn>
 
1.000.000

2.1e10

<mn> 2.1e10 </mn>
 
\text{2.1e10}

0xFFEF

<mn> 0xFFEF </mn>
 
\text{0xFFFF}

MCMLXIX

<mn> MCMLXIX </mn>
 
\text{MCMLXIX}

huszonegy

<mn> huszonegy </mn>
 
\text{huszonegy}

Példák a többi számfajta jelölésére (negatív számok, komplex számok, törtek, szimbolikus állandók):

-1

<mrow>
  <mo> - </mo>
  <mn> 1 </mn>
</mrow>
 
-1

2+3i

<mrow>
  <mn> 2 </mn>
  <mo> + </mo>
  <mrow>
    <mn> 3 </mn>
    <mo> &InvisibleTimes; </mo>
    <mi> &ImaginaryI; </mi>
  </mrow>
</mrow>
 
2+3i

1/2

<mfrac>
  <mn> 1 </mn>
  <mn> 2 </mn>
</mfrac>
 
\frac12

Jegyezzük meg a következőket:

pi

<mi> &pi; </mi>
 
\pi

e

<mi> &ExponentialE; </mi>
 
e

1.2.4. Operátorok

Az <mo> elem jeleníti meg a műveleteket, és más, műveleti jelként használt jeleket. Ez utóbbi csoportot két részre oszthatjuk: az elsőbe a különféle záró- és elválasztójelek tartoznak, a másodikba pedig a matematikai felüljelzések (pl. a komplementer jele).

A fent már megismert attribútumokon kívül az <mo> a következőket kaphatja meg: form, fence, separator, lspace, rspace, stretchy, symmetric, maxsize, minsize, largeop, movablelimits, accent. Az egyes attribútumokról a későbbiekben részletesebben is szót ejtünk.

A TEX-ben ennek az elemnek az egyes műveleti jelek ill. parancsok begépelése felel meg.

Példák a műveleti jelek szokásos jelölésére:

+

<mo> + </mo>
 
+

<

<mo> &lt; </mo>
 
<

<mo> &le; </mo>
 
\leq

++

<mo> ++ </mo>
 
++

Σ

<mo> &sum; </mo>
 
\sum

.NEM.

<mo> .NEM. </mo>
 
.NEM.

és

<mo> és </mo>
 
\'es

“láthatatlan szorzásjel”

<mo> &InvisibleTimes; </mo>

Ez utóbbira a TEX-ben nincs megfelelő parancs.

Példák a záró- és elválasztójelek használatára (Fontos, hogy ezekben a példákban nem a fence és separator attribútumok használatát mutatjuk be!):

(a+b)

<mrow>
  <mo> ( </mo>
  <mrow>
    <mi> a </mi>
    <mo> + </mo>
    <mi> b </mi>
  </mrow>
  <mo> ) </mo>
</mrow>
 
(a+b)

[0,1)

<mrow>
  <mo> [ </mo>
  <mrow>
    <mn> 0 </mn>
    <mo> , </mo>
    <mn> 1 </mn>
  </mrow>
  <mo> ) </mo>
</mrow>
 
[0,1)

f(x,y)

<mrow>
  <mi> f </mi>
  <mo> &ApplyFunction; </mo>
  <mrow>
    <mo> ( </mo>
    <mrow>
      <mi> x </mi>
      <mo> , </mo>
      <mi> y </mi>
    </mrow>
    <mo> ) </mo>
  </mrow>
</mrow>
 
f(x,y)

A matematika jelölésben használunk néhány, úgynevezett “láthatatlan műveletet”, melyek vizuálisan valóban nem látszanak, de logikailag szükséges őket jelölni. Ezek a következők:

&InvisibleTimes; (röviden: &it;): xy

<mrow>
  <mi> x </mi>
  <mo> &InvisibleTimes; </mo>
  <mi> y </mi>
</mrow>
 
xy

&ApplyFunction; (röviden: &af;): f(x) vagy sin x

<mrow>
  <mi> f </mi>
  <mo> &ApplyFunction; </mo>
  <mrow>
    <mo> ( </mo>
    <mi> x </mi>
    <mo> ) </mo>
  </mrow>
</mrow>
<mrow>
  <mi> sin </mi>
  <mo> &ApplyFunction; </mo>
  <mi> x </mi>
</mrow>
 
f(x)
\sin x

&InvisibleComma; (röviden: &ic;): m alsóindex 1,2

<msub>
  <mi> m </mi>
  <mrow>
    <mn> 1 </mn>
    <mo> &InvisibleComma; </mo>
    <mn> 2 </mn>
  </mrow>
</msub>
 
m_{12}

Mint látjuk, TEX-ben ezeket nem kell külön jelölni.

A legtöbb matematikai jelnek megvan a tradicionális jele, amelybe beletartozik a körülötte lévő üres hely is. Ezt a MathML megpróbálja szabályosan megjeleníteni, ám vannak olyan helyzetek, mikor ugyanazt a szimbólumot többféle határoló üres hellyel használhatjuk. Erre a legjobb példa a “ + ” jel: ha összeadást jelölünk vele, akkor mindkét oldalán egyforma üres hely van, de ha a “pozitív” jelzésére használjuk, akkor csak a bal oldalán. Erre használjuk a form attribútumot. Három értéke lehet: “prefix” (ha csak előtte kell üres hely), “infix” (ha mindkét oldalon), “postfix” (ha csak utána kell). A fenti okból nem lehet egyértelmű alapértelmezést adni neki, de néhány szabályt azért felállíthatunk:

  • Ha a vonatkozó műveleti jel az első az <mrow> attribútumai között, akkor “prefix” lesz az alapértelmezés.
  • Ha a vonatkozó műveleti jel az utolsó az <mrow> attribútumai között, akkor “postfix” lesz az alapértelmezés.
  • Minden más esetben (pl. ha a műveleti jel nem része egyetlen <mrow>-nak sem), akkor “infix” az alapértelmezett.

A nyitó zárójeleknek “prefix”, a záróknak “postfix”, az elválasztójeleknek “infix” az alapértelmezésük, de néhány esetben ez függhet a környezettől is.

A műveleti jelek köré a megszokottól eltérő méretű üres helyet rendelhetünk az lspace és az rspace segítségével (a kezdő “l” a bal, az “r” a jobb oldalt jelöli). Az értéket a már előzőekben említett em nevű mértékegységben kell megadni, a mértékegység kiírása nélkül.

TEX-ben erre nincs szükség, hiszen matematikai módban a matematikai stílusnak megfelelően jeleníti meg az ilyen operátorok körüli üres helyeket. Arra azonban lehetőségünk van, hogy egy adott operátor körül ne jelenjen meg üres hely, ilyenkor tegyük a műveleti jelet {} jelek közé: {+}.

Négy attribútum van, amely segítségével megnyújthatjuk az egyes műveleti jeleket. Ezek: a stretchy, a symmetric, a maxsize, és a minsize. Ha egy műveleti jel stretchy attribútumának “true” az értéke (ez az alapértelmezés), akkor, ha szükséges, a megjelenítő rendszer meg fogja nyújtani a szükséges elemeket. Ez azt jelenti, hogy az adott jel minden irányban megnő. A növekedés mértékét a maxsize és minsize attribútumokkal szabályozhatjuk. Ezek értéke egy szám, amely a nyújtás szám-szoros értékét jelenti. Végül a negyedik attribútummal, a symmetric-kel az adott karakter tengelyéhez viszonyított függőleges szimmetriáját állíthatjuk be (ha “true”, akkor szimmetrikus lesz a nyújtás). Nem négyzetes mátrixnál vehetjük nagy hasznát, ha “false”-ra állítjuk.

TEX-ben erre parancsok sorozata áll rendelkezésünkre, melyek a következő formájúak (a legkisebbtől a legnagyobbig): \bigx, \Bigx, \biggx, \Biggx; ahol az x a helyzetet mutatja (l – bal oldal, m – közép, r – jobb oldal), erre az üres helyek helyes elrendezése miatt van szükség.

A másik módszer a \leftx, \rightx parancs pár használata, ahol x helyén a zárójel alakját kell megadni. Mindig párban és azonos zárójellel kell őket használni. Ha arra van szükségünk, hogy egy adott kifejezés két oldalán különböző zárójeleket adjunk meg, akkor az egyik oldalon használjuk a “.” határoló jelet:

(a]

\left(n\left.\right]\right.

A következő példa a szabályos (a/b) forma helyett a (a/b) tört formát adja:

<mrow>
  <mo maxsize="1"> ( </mo>
  <mfrac>
    <mi> a </mi>
    <mi> b </mi>
  </mfrac>
  <mo maxsize="1"> ) </mo>
</mrow>
 
(\frac ab)

Jegyezzük meg, hogy a két zárójel független egymástól, tehát csak egy maxsize="1" megadása eltérő méretű zárójelet eredményez.

A függőleges nyújtás szabályai:

  • Ha a nyújtani kívánt részkifejezés egy <mrow> vagy egy <mtd> része, akkor nyújtás a részkifejezés teljes méretére terjed ki, más esetekben pedig a megadott maxsize, minsize párban megadott értékekre.
  • Ha a symmetric="true", akkor ez magasabb prioritású, mint a maxsize, minsize párban megadott értékek.

A legtöbb zárójel, a &sum;, az &int;, a /, valamint a függőleges nyilak automatikusan megnyúlnak.

A vízszintes nyújtás szabályai:

  • Ha a nyújtani kívánt részkifejezés egy <munder>, <mover>, <munderover>, vagy egy <mtd> része, akkor nyújtás a részkifejezés teljes méretére kiterjed.
  • Más esetben csak a kifejezés magjában található műveletre terjed ki a hatása.

A legtöbb vízszintes nyíl és felüljelzés automatikusan megnyúlik.

Lássunk egy példát a vízszintes nyúlásra is:

<mrow>
  <mi> x </mi>
  <mover>
    <mo> &RightArrow; </mo>
    <mtext> leképzés </mtext>
  </mover>
  <mi> y </mi>
</mrow>
 
x@>lek\'epz\'es>>y

A fenti kód az x leképezés y kifejezést eredményezi.

A largeop attribútum megnöveli a műveleti jel megjelenítési méretét, ha az <mstyle> elem displaystyle attribútuma “true”-ra van állítva. A nagyobb műveleti jelekre legjobb példa az integráljel (&int;).

Erre a TEX a \displaystyle parancsot használja.

Ha a movablelimits attribútum “true”-ra van állítva, akkor a felül- és alulírások felső ill. alsó indexként jelennek meg. Erre jó példa a szumma (&sum;). Hasonló módon működik az accent attribútum is a felüljelzésekkel kapcsolatban. TEX-ben a movablelimitstrue” értékének a \nolimits, “false” értékéneke pedig a \limits parancs fele meg, melyek után kell megadni a vonatkozó felül- és alulírásokat.

A separator attribútum egy automatikus sortörést csinál, a form attribútum értékétől függően a művelet előtt, vagy után. TEX-ben erről nekünk kell gondoskodnunk.

A fence attribútum vizuálisan nem jelenik meg, akkor van értelme használni, ha valamilyen különleges, nem vizuális megjelenítőn kívánjuk bemutatni kifejezéseinket, ilyenkor ez az attribútum többletinformációt ad a zárójelezésről. Nincs megfelelője TEX-ben.

1.2.5. Szövegek

Az <mtext> elemmel tetszőleges szöveget helyezhetünk el a kifejezésekben, úgy, hogy az változtatás nélkül megjelenik. Általában a kifejezésekhez nem szervesen kapcsolódó megjegyzéseket hozzáfűzésére használjuk.

Az <mtext> elemben használhatunk olyan karaktereket (főként üres helyeket), melyek más elemeknél nem jelennének meg. Ilyenek pl. a &ThinSpace;, a &NegativeThinSpace;, vagy a &ZeroWidthSpace;. (Lásd az A Függeléket!)

Ez az elem a fejezet elején már említett karakterformázó attribútumokat kaphatja meg.

Néhány példa a használatára:

<mtext> 1. tétel: </mtext>
<mtext> &ThinSpace; </mtext>
<mtext> &ThickSpace;&ThickSpace; </mtext>
<mtext> /* egy megjegyzés */ </mtext>

Szöveges kifejezések létrehozására használhatjuk az <ms> elemet is. Alapértelmezésben idézőjelekkel közrezárt szöveget ír le. Leginkább számítógépes algebrát használó rendszerekkel (pl. programozási nyelvekkel) való kommunikációra használható. Sohasem használhatjuk olyan szövegek jelölésére, amelyet <mtext>, <mo>, vagy <mi> elemmel írunk le.

Az <ms> elemben leírt szöveg Unicode karaktereket tartalmazhat, a különleges karakterek közül a legtöbbnek megfelel valamilyen MathML műveleti jel. Például, ha az angol “és” jelet (“&” – neve: ampersand) kívánjuk leírni, akkor azt a következő módon tehetjük:

<ms>&amp;</ms>

de ha a jel nevét (“&amp;”) akarjuk lejegyezni, akkor a következő formát kell használnunk:

<ms>&amp;amp;</ms>

Természetesen ebben az elemben is érvényes az üres helyekről már elmondottak, úgyhogy használatakor legyünk erre tekintettel.

A már ismertetett attribútumok mellett az <ms> elemnek van két sajátja is: az lquote és az rquote, melyek segítségével átírhatjuk az alapértelmezett idézőjeleket (&quot;).

Egyes esetekben a szöveget érdemesebb a <mo> vagy <mi> elemek segítségével megjeleníteni, ha jelentésük inkább kapcsolódik a műveletekhez, vagy azonosítókhoz. A 'Létezik olyan delta>1, amelyre igaz, hogy f(x)<1' matematikai jelekkel leírva kifejezést “érthetőbben” leírhatjuk úgy is, hogy: 'Létezik olyan delta>1, amelyre igaz, hogy f(x)<1' szöveggel leírva, megjeleníteni pedig a következő kóddal tudjuk:

<mrow>
  <mo> Létezik olyan </mo>
  <mrow>
    <mrow>
      <mi> &delta; </mi>
      <mo> &gt; </mo>
      <mn> 0 </mn>
    </mrow>
    <mo> amelyikre </mo>
    <mrow>
      <mrow>
        <mi> f </mi>
        <mo> &ApplyFunction; </mo>
        <mrow>
          <mo> ( </mo>
          <mi> x </mi>
          <mo> ) </mo>
        </mrow>
      </mrow>
      <mo> &lt; </mo>
      <mn> 1 </mn>
    </mrow>
  </mrow>
</mrow>

Egy másik példa lehet az 1+...+n, melynek kódja a következő:

<mrow>
  <mn> 1 </mn>
  <mo> + </mo>
  <mi> ... </mi>
  <mo> + </mo>
  <mi> n </mi>
</mrow>

A nem szervesen kapcsolódó szövegre is álljon itt egy példa: “1. tétel: ha x>1, akkor x2>x”. Kódja:

<mrow>
  <mtext> 1, tétel: ha </mtext>
  <mi> x </mi>
  <mo> &gt; </mo>
  <mn> 1 </mn>
  <mtext> , akkor </mtext>
  <msup>
    <mi> x </mi>
    <mn> 2 </mn>
  </msup>
  <mo> &gt; </mo>
  <mi> x </mi>
</mrow>

Ha HTML környezetbe ágyazzuk be a fenti szöveget, akkor célszerűbb a tényleges szöveget HTML-ben megírni, és csak a matematikai kifejezéseket MathML-ben, ezzel is jelezve, hogy a szöveg nem szerves része a kifejezésnek.

TEX matematikai módjában szövegek írására használjuk a \text parancsot. Itt {} jelek között bármilyen szöveget megadhatunk, az illeszkedni fog a környező kifejezések tulajdonságaihoz (méret, betűtípus, stb.), de normál írással (és nem dőlten) jelenik meg. Szóközöket a normál szövegírásnak megfelelően használhatunk, tehát nincs szükség külön vezérlő parancsokra. Ha lehetőségünk van rá, egyszerűbb, ha csak a matematikai kifejezések miatt kapcsolunk át matematikai módba, egyébként normál szöveges módban írjuk dokumentumunkat.

Ha csak néhány karaktert kell szövegként kezelni, használhatjuk az egyúttal betűtípusváltó \roman, \bold, \slanted, \italic parancsokat. Több karakteres szöveg esetén használjuk a {} zárójelpárt!

Példák:

'Létezik olyan delta>1, amelyre igaz, hogy f(x)<1' szöveggel leírva

$\text{L\'etezik olyan} \delta >0\text{, amelyikre}f(x)<1$

vagy

L\'etezik olyan $\delta >0$, amelyikre $f(x)<1$

12th

12^{\roman{th}}

1.3. Stílusok

Az <mstyle> elemet az egyes kifejezések stílusainak megváltoztatására használjuk. Több vonatkozó argumentum esetén azokat egy <mrow> elembe kell zárni.

Egy elem valamely attribútumát kétféle képen tudjuk beállítani, vagy magának az elemnek a nyitótagjában, vagy az <mstyle> elem vonatkozó attribútumának beállításával. A két beállítás között azonban van egy kis különbség: ha egy olyan attribútumot állítunk be az <mstyle> elem segítségével, amely nem öröklött, hanem van valamilyen alapértelmezése (pl.: az <mfrac> elem linethickness attribútuma, melynek alapértelmezése 1), akkor az az összes beágyazott utód elemre vonatkozik, míg az adott elemnél történő beállítás csak az adott elemre. Egyetlen kivétel van, az <mpadded> elem, melyre nem vonatkoznak az <mstyle> elem beállításai.

Minden argumentum örökli az <mstyle> elem beállításait, míg felül nem bíráljuk azt.

A már ismert közös attribútumokon kívül az <mstyle>-nak a következő saját attribútumai lehetnek: displaystyle, scriptlevel, scriptsizemultiplier, scriptminsize, color, background.

A displaystyle befolyással van egyes más elemek attribútumaira (mint pl. az <mo> elem movablescripts attribútuma). Általános szokás, hogy ezt az attribútumot “true”-ra állítjuk, kivéve a törteknél, a gyökvonásnál, a táblázatoknál és mátrixoknál, ahol ez az érték “false” lesz, ezzel esetleg kisebb betű és határoló üres hely méretre adva lehetőséget.

A scriptlevel-lel a betűtípusok méretét tudjuk beállítani. Minél nagyobb értéket adunk az attribútumnak, annál kisebb lesz a betű mérete (mint az indexekben). Ha előjel nélkül adjuk meg az értéket, akkor a megadott értékre állítjuk be az attribútumot. Ha előjellel adjuk meg, akkor az előjeltől függően az aktuális értéket növeljük vagy csökkentjük. A fontsize attribútum módosítása nincs hatással a scriptlevel-re.

A scriptlevel megváltoztatásával a változás mértékétől függően a sciptsizemultiplier értéke automatikusan megsokszorozódik. Például, ha a scriptlevel-t növeljük kettővel, akkor a betűk mérete a scriptsizemultiplier-szeresére változik kétszer egymás után. Ha a scriptlevel értékét 2-re állítjuk, úgy, hogy előtte 3 volt, akkor a betűméret elosztódik a scriptsizemultiplier értékével.

A scriptsizemultiplier alapértéke megközelítőleg négzetgyök 0,5, ezért kapunk kisebb betűméretet a scriptlevel növelésével. Hogy megelőzzük a szövegek olvashatatlanságát, a scriptminsize értékénél kisebb érték alá nem csökkenhet a betűk mérete. A minimum értéket a már ismert mértékegységekben adhatjuk meg, de itt legtöbbször a pt-t használjuk.

Amelyik megjelenítő képes a többszintű stíluslapok megjelenítésére, ott e stíluslapok használatával is beállíthatjuk a fenti attribútumok értékét. Itt viszont figyelembe kell venni azt a tényt, hogyha ugyanarra az elemre beállítunk értékeket a scriptlevel-ben és egy stíluslapon is, akkor a megjelenítő először a scriptlevel beállításait végzi el, majd a stíluslapét.

Ha egy elem fontsize attribútumát egy stíluslap segítségével is és egy scriptlevel-lel is beállítottuk, akkor annak utódának beállításakor az öröklés után a stíluslap beállításai történnek meg először.

A color attribútummal az elem és a hozzá tartozó rajzolatok (törtvonal, gyökjel, stb.) színét adhatjuk meg.

A background attribútummal az elem hátterének színét állíthatjuk be. Alapértéke az “átlátszó” (“transparent”), a beállított értékek nem öröklődnek.

A fenti két attribútum értékét a HTML-ben már megszokott, három vagy hatjegyű színkódokkal - melyeket egy kettős kereszt előz meg -, vagy pedig a HTML-színnevekkel (pl.: “#0000FF”, “#00F” vagy “blue”) állíthatjuk be. A background attribútumnál engedélyezett a “transparent” szöveg megadása is. Természetesen ezeket az értékeket is definiálhatjuk egy stíluslapon.

TEX-ben ennek az elemnek konkrét megfelelője nincs, attribútumai közül a displaystyle attribútumhoz közel áll a TEX \displaystyle parancsa, hasonlóan a scriptlevellel megfeleltethető a \scriptstyle és a \scriptscriptstyle, bár TEX-ben ezek fix méretűek (az index és az index indexét jelölhetik) és csak konkrét beállításokat végezhetünk velük, nem lehet örökíteni a tulajdonságokat. Színbeállításra TEX nincs lehetőségünk.

Az általam is bemutatni kívánt TEX implementáció, az AMS-TEX lehetővé teszi stílusállományok használatát, melyeket a \documentstyle paranccsal tölthetünk be (a stílusállományok alapértelmezett kiterjesztése .sty). Az AMS-TEX esetén azonban ekkor szükség van az amstex.tex dokumentum előzetes megnyitására is:

\input amstex
\documentstyle{amsppt}
saját beállítások
\document
ide jön a dokumentumunk
\enddocument

Ha ez megtörtént, akkor a stílusállományban előre definiált stílusokat mint parancsokat használhatjuk.

Az <mo> elemnél látott zárójelnyújtás példája:

<mrow>
  <mo maxsize="1"> ( </mo>
  <mfrac>
    <mi> a </mi>
    <mi> b </mi>
  </mfrac>
  <mo maxsize="1"> ) </mo>
</mrow>

átírva az <mstyle> elemre:

<mstyle maxsize="1">
  <mrow>
    <mo> ( </mo>
    <mfrac>
      <mi> a </mi>
      <mi> b </mi>
    </mfrac>
    <mo> ) </mo>
  </mrow>
</mstyle>
 
(\frac ab)

1.4. Üres helyek kihagyása

Üres helyek megadására háromféle lehetőségünk van: az <mspace/>, az <mpadded> és az <mphantom> elemek segítségével.

Az <mspace/> elem segítségével egy általunk az attribútumaiban meghatározott üres helyet hozhatunk létre, mely csak az utána álló elemekre vonatkozik.

A használható attribútumok: a width (oldalirányban), a height (fent) és a depth (lent). Mindhárom alapértelmezése 0, tehát ha használjuk ezt az elemet, mindenképpen adjunk valamilyen értéket nekik.

Az <mspace/> elemen kívül számos más elem rendelkezik azzal a tulajdonsággal, hogy valamilyen üres helyet hozzunk létre vele, erre az egyes elemek tárgyalásánál kitérünk.

Az <mpadded> elem segítségével úgy jeleníthetjük meg annak tartalmát, hogy az a környező üres helyeket saját szánk íze szerint beállított módon jelenítse meg. Ha több elemet ágyazunk bele, akkor azokat egy <mrow> elembe kell zárni. Hatása – az <mspace/> elemmel ellentétben – csak a közrezárt elemekre vonatkozik.

Saját attribútumai: width, lspace, height, depth. A width attribútum a “keret” szélességét határozza meg, növelésével a jobb oldalon növekszik az üres hely. Az lspace hasonló a width-hez, de ez a bal oldali üres helyért felelős. A height az alapvonaltól (a normál szöveg legtöbb betűjének alsó szélétől) számított felfelé irányuló magasságot jelöli, a depth pedig szintén az alapvonaltól számított, de lefelé irányuló magasságot (“mélységet”) adja meg. Értékeiket több módon lehet megadni: konkrét számérték megadásával, növeléssel/csökkentéssel (hasonlóan a scriptlevel-hez), vagy százalékos megadással. Számérték megadásakor használhatunk mértékegységet is. Létezik még egy érdekesebb megadási mód is, amikor az ún. “pszeudo-mértékkel” adjuk meg az értéket. Ennek módja a következő: magadjuk számmal (vagy százalékkal) a kívánt szorzót és utána mértékegységnek az attribútumok valamelyikét.

Példák az attribútumok megadására: mind a depth="100% height" és a depth="1.0 height" megadása azt jelenti, hogy az elem mélysége és magassága egyforma legyen. A depth="105%" forma a mélység 1,05-szeresét jelenti. A következő két példa ismét ugyanazt jelenti, a mélység legyen kétszeres: depth="+100%" vagy depth="200%".

A következő példák ugyanazt az eredményt adják, nem változtatnak a kiírás kiterjedésén:

<mpadded width="+0em"> ... </mpadded>
<mpadded width="+0%"> ... </mpadded>
<mpadded width="-0em"> ... </mpadded>
<mpadded width="- 0 height"> ... </mpadded>
<mpadded width="100%"> ... </mpadded>
<mpadded width="100% width"> ... </mpadded>
<mpadded width="1 width"> ... </mpadded>
<mpadded width="1.0 width"> ... </mpadded>
<mpadded> ... </mpadded>

Legyünk óvatosak az <mpadded> használatával, mivel nincsenek alapértelmezett attribútumok, a különböző megjelenítők más-más formában adhatják vissza az általunk készített kifejezéseket. Ezért ne próbálkozzunk a “negatív üres helyek” segítségével különleges jeleket létrehozni, mert valószínű, hogy azt egy másik megjelenítővel máshogy fogjuk látni. Ráadásul ezek a megoldások értelmezhetetlenek egy hangos megjelenítő, vagy egy számítógépes algebrai rendszer számára. Magyarul: ne üres hellyel próbáljunk jelentést adni a kifejezéseknek! Ha mégis ezt szeretnénk használjuk inkább a <semantics> elemet.

Lássuk például a következő hibás MathML kódot:

<mrow>
  <mpadded width="0">
    <mi> C </mi>
  </mpadded>
  <mspace width="0.3em"/>
  <mtext> | </mtext>
</mrow>

A fenti példa látszólag egy függőlegesen áthúzott nagy C betűt hivatott volna megjeleníteni, ami azonban valójában értelmetlen. Próbálkozzunk inkább a következő formával:

<semantics>
  <mrow>
    <mpadded width="0">
      <mi> C </mi>
    </mpadded>
    <mspace width="0.3em"/>
    <mtext> | </mtext>
  </mrow>
  <annotation-xml encoding="mathml">
    <mi> &DoubleStruckCapitalC; </mi>
  </annotation-xml>
</semantics>

Látszólag ugyanaz jelenik meg, de a hozzáfűzött <annotation-xml> elem segítségével a nem vizuális felhasználó számára is értelmessé tettük kifejezésünket.

Fontos megjegyezni, hogy az <mstyle> elem beállításai nincsenek hatással az <mpadded> beállításaira!

Az <mphantom> elem vizuálisan nem jelenik meg, de az általa fizikailag elfoglalt hely megmarad, magyarul az így leírt elem helyett a méretének megfelelő üres hely kerül megjelenítésre (hangos megjelenítés esetén az üres helyet szünet jelképezi). Az <mphantom> elem teljesen úgy viselkedik, mint egy <mrow> elem, azzal a különbséggel, hogy ez utóbbi nem látszik.

Az elemnek nincsen saját attribútuma.

A következő példában a tört számlálójában és nevezőjében található, megegyező változók pontosan egymás alá kerülnek kiírásra:

x+y+z / x+z

<mfrac>
  <mrow>
    <mi> x </mi>
    <mo> + </mo>
    <mi> y </mi>
    <mo> + </mo>
    <mi> z </mi>
  </mrow>
  <mrow>
    <mi> x </mi>
    <mphantom>
      <mo form="infix"> + </mo>
      <mi> y </mi>
    </mphantom>
    <mo> + </mo>
    <mi> z </mi>
  </mrow>
</mfrac>

Az <mo> elem form attribútumának “infix” beállítása az üres helyek helyes szélessége miatt szükséges (e nélkül a + “prefix” lenne). A fenti példa egy másik megoldása a form állítása nélkül:

<mfrac>
  <mrow>
    <mi> x </mi>
    <mo> + </mo>
    <mi> y </mi>
    <mo> + </mo>
    <mi> z </mi>
  </mrow>
  <mrow>
    <mi> x </mi>
    <mphantom>
      <mo> + </mo>
    </mphantom>
    <mphantom>
      <mi> y </mi>
    </mphantom>
    <mo> + </mo>
    <mi> z </mi>
  </mrow>
</mfrac>

A TEX automatikusan kezeli a kifejezések körüli üres helyeket. Azonban lehetőségünk van vízszintesen plusz hely kihagyására, a következő parancsokkal (a legkisebb helykihagyástól a legnagyobbig): \,, \;, (“\” jel és egy szóköz), \quad, \qquad. Üres hely csökkentése a \! paranccsal lehetséges (akár többször is egymásután. Erre az esetre egy másik megoldás a műveleti jeleknél, ha {} zárójelek közé tesszük őket, ekkor a rendszer nem hagy a műveleti jel előtt és után üres helyet.

Függőleges helykihagyásra két lehetőségünk van, azonban ezeket csak kizárólagos matematikai módban (a $$ nyitó és záró karakterek közözött) használhatjuk. Az egyik a \spreadlines (mátrixok esetén \spreadmatrixlines) parancs, melyet rögtön a nyitó $$ jelek után kell használni és a matematikai mód zárásáig érvényes. A másik parancs a \vspace, amelyet az után a sor után kell beírni, ami után ki akarjuk hagyni a helyet. Ez utóbbi csak olyan parancsoknál használható, amelyek nyitó és záró paranccsal is rendelkeznek (pl. \align, lásd később). Mindkét esetben a megismert mértékegységekkel, {} zárójelek közözött kell megadni a kihagyni kívánt üres hely nagyságát.

1.5. Normál szövegektől eltérő szerkezetek

Ebben a fejezetben az alapjelölések (pl. törtek, gyökök) leírásával foglalkozó elem kerül bemutatásra.

1.5.1. Kifejezések csoportba rendezése

Az <mrow> elemet több részkifejezés (általában valamilyen műveletei jellel összekapcsolt kifejezés) csoportba rendezésére szolgál.

Ennek az elemnek nincsenek saját argumentumai, csak a már az előző fejezetben megismert általános attribútumokat kaphatja meg.

Az <mrow> elem tipikusan egymás után sorban megjelenítendő elemeket kapcsolja össze. Határoló üres helyek tekintetében a felsorolt elemek a meghatározók, az <mrow> elem külön nem jelenít meg üres helyet.

Az <mrow> elemeket egymásba ágyazhatjuk, ha egy kifejezés logikája azt megkívánja.

TEX-ben a {} zárójel pár felel meg ennek az elemnek, bár nem mindig azonos helyzetben használjuk. A {} jeleket olyan parancsok után is használnunk kell, amelyek egyetlen karakterre vonatkoznak, de a zárójelek használatával az egész zárójeles kifejezésre kiterjeszthetők (\roman{ha}). Használatos még az üres helyek elnyomására is ({+}) Sokszor, a MathML-lel ellentétben, nem használjuk.

2x+y-z

<mrow>
  <mrow>
    <mn> 2 </mn>
    <mo> &InvisibleTimes; </mo>
    <mi> x </mi>
  </mrow>
  <mo> + </mo>
  <mi> y </mi>
  <mo> - </mo>
  <mi> z </mi>
</mrow>
 
2x+y-z

(x,y)

<mrow>
  <mo> ( </mo>
  <mrow>
    <mi> x </mi>
    <mo> , </mo>
    <mi> y </mi>
  </mrow>
  <mo> ) </mo>
</mrow>
 
(x,y)

1.5.2. Törtek

Az <mfrac> elemet használjuk törtek, binomiális együtthatók megjelenítésére.

Egy saját attribútuma van, a linethickness, mely segítségével a törtvonal vastagságát állíthatjuk be, alapértelmezése 1 (normál törtvonal). Binomiális együtthatóknál ezt 0-ra kell beállítani, emeletes törteknél alkalmazhatjuk a főtörtvonal megvastagítására a 2-es értéket. Ezeket az értékeket helyettesíthetjük kulcsszavakkal is: “thin” (0), “medium” (1), “thick” (2).

TEX-ben a számos parancs felel meg ennek az elemnek. Az egyszerű törteket a \frac paranccsal, a binomiális együtthatókat pedig a \binom paranccsal jeleníthetjük meg. Létezik parancs olyan törtek előállítására, amelyek egyúttal tartalmazza a zárójeleket is, ez a \fracwithdelims, melynél először a zárójelek alakját kell megadni, majd a tört tagjait (ekkor a zárójelek közelebb kerülnek a törthöz, mint a \left, \right parancsoknál). Létezik parancs a más vastagságú törtvonalra is, a \thickfrac mely után a \thickness paranccsal kell megadni a vonalvastagságot (0,4 az alapvastagság), majd a tört tagjait. Ennek a zárójeles változata a \thickfracwithdelims parancs.

Ezek a parancsok a normál nagyságú írásnál kisebb törteket/binomiális együtthatókat jelenítenek meg. Ha ennél nagyobbra van szükség, akkor használjuk a \dfrac és a \dbinom parancsokat (ezeknek nincs zárójeles változatuk).

Léteznek még lánctörtek írására alkalmas parancsok, a \cfrac, az \lfrac és az \rfrac, melyeket a \endcfrac paranccsal zárunk le. Különbség köztük a számláló elhelyezésében van (a c középen, az l bal oldalon, az r jobb oldalon helyezi el a számlálót).

A fenti lehetőségeken kívül léteznek még speciális törtleírási parancsok is. Megadásuk módja: számláló \parancs nevező. A parancsok: \over (normál tört), \atop (binomiális együttható), \above (vastag törtvonal); ugyanezek zárójelekkel: \overwithdelims, \atopwithdelims, \abovewithdelims; sőt binomiális együttható típusú kifejezésekhez van kerek zárójeles (\choose), szögletes zárójeles (\brack) és kapcsos zárójeles (\brace) parancs is.

Lássunk egy példát a binomiális együtthatóra: Binomiális együttható

<mrow>
  <mo> ( </mo>
  <mfrac linethickness="0">
    <mi> a </mi>
    <mi> b </mi>
  </mfrac>
  <mo> ) </mo>
</mrow>
 
\binom{a}{b}

Egy másik példa egy emeletes törtre: a/b /c/d

<mfrac linethickness="2">
  <mfrac>
    <mi> a </mi>
    <mi> b </mi>
  </mfrac>
  <mfrac>
    <mi> c </mi>
    <mi> d </mi>
  </mfrac>
</mfrac>
 
{a\over c}\above{c\over d}

Egy általánosabb példa: 1+négyzetgyök 5 / 2

<mfrac>
  <mrow>
    <mn> 1 </mn>
    <mo> + </mo>
    <msqrt>
      <mn> 5 </mn>
    </msqrt>
  </mrow>
  <mn> 2 </mn>
</mfrac>
 
frac{1+\sqrt5}2
{1+\sqrt5}\over2

1.5.3. Gyökös kifejezések

A gyökvonás kifejezésére két lehetőségünk van, négyzetgyök esetén az <msqrt> elemet kell használni, más kitevő esetén pedig az <mroot> elemet. A két elemnek nincsen saját attribútuma.

Hasonlóan a MathML-hez, TEX-ben az \sqrt és a \root (és a hozzá tartozó \of) parancsok szolgálnak a gyökvonás leírására.

négyzetgyök 5

<msqrt>
  <mn> 5 </mn>
</msqrt>
 
\sqrt5

köbgyök a

<mroot>
  <mi> a </mi>
  <mn> 3 </mn>
</mroot>
 
\root 3 \of a

1.5.4. Zárójelek

Az <mfenced> elem segítségével zárójelezhetjük kifejezéseinket. Ha az elemnek több argumentuma van, akkor azok közé elválasztójelek kerülnek.

Rögtön lássunk két példát, összehasonlítva a már megismert módszerekkel.

Az első egy egyszerű (x):

<mfenced>
  <mi> x </mi>
</mfenced>

vagy

<mrow>
  <mo> ( </mo>
  <mi> x </mi>
  <mo> ) </mo>
</mrow>

A második pedig az (x,y) kódja:

<mfenced>
  <mi> x </mi>
  <mi> y </mi>
</mfenced>

vagy

<mrow>
  <mo> ( </mo>
  <mrow>
    <mi> x </mi>
    <mo> , </mo>
    <mi> y </mi>
  </mrow>
  <mo> ) </mo>
</mrow>

Az <mfenced> elemnek három saját attribútuma van: az open, a close és a separators; alapértelmezésük rendre “(”, “)”, “,”.

Egy általános <mfenced> elem a következőképpen néz ki:

<mfenced open="nyitó zárójel" close="záró zárójel" separators="1. elválasztójel ... (n-1).
     elválasztójel
">
  1. argumentum
  ...
  n. argumentum
</mfenced>

Alternatív módon az <mfenced> elem behelyettesíthető a következő formával:

<mrow>
  <mo fence="true"> nyitó zárójel </mo>
  <mrow>
    1. argumentum
    <mo separator="true"> 1. elválasztójel </mo>
    ...
    <mo separator="true"> (n-1). elválasztójel </mo>
    n. argumentum
  </mrow>
  <mo fence="true"> záró zárójel </mo>
</mrow>

Az open és close tetszőleges szövegek, a nyitó és záró zárójeleket írjuk le velük. A separator a argumentumokat elválasztó jeleket leíró szöveg, megadása nem kötelező, ebben az esetben nem lesznek elválasztójelek az egyes argumentumok között. Ha túl sok elválasztójelet adunk meg, a feleslegeseket figyelmen kívül hagyja a megjelenítő. Ha viszont túl keveset, akkor az utolsónak megadott jel fog a szükséges számban ismétlődni. A fenti attribútumokban szereplő üres helyeket nem vesszük figyelembe, viszont megadásuknál használhatunk speciális jeleket is.

Ha az <mfenced> elemet tartalom nélkül adjuk meg, akkor egy egyszerű zárójelpárt kapunk eredményül.

Ha egy teljes kifejezést akarunk zárójelezni, akkor azt helyezzük egy <mrow>-ba, különben a kifejezés összes eleme után elválasztójel fog megjelenni (lásd az első példát).

Egy megjegyzés: ha lehet, ne használjuk összeadandó kifejezéseknél a “+” jelet elválasztójelként!

TEX-ben ilyen lehetőségünk nincs, a zárójeleket és az elválasztójeleket külön-külön meg kell adnunk. Érdemes megjegyezni azt, hogy zárójelezéskor használjuk a \left és \right parancsokat, mert ezek dinamikusan változnak a kifejezés méretétől függően.

Példák:

(a+b)

<mfenced>
  <mrow>
    <mi> a </mi>
    <mo> + </mo>
    <mi> b </mi>
  </mrow>
</mfenced>
 
\left(a+b\right)

Jegyezzük meg, hogy <mrow> nélkül az (a,+,b) formát kaptuk volna.

[0,1)

<mfenced open="[">
  <mn> 0 </mn>
  <mn> 1 </mn>
</mfenced>
 
\left[0,1\right)

f(x,y)

<mrow>
  <mi> f </mi>
  <mo> &ApplyFunction; </mo>
  <mfenced>
    <mi> x </mi>
    <mi> y </mi>
  </mfenced>
</mrow>
 
f(x,y)

1.6. Indexek és ékezetek

Ebben a szakaszban az alapelem körüli indexelemeket mutatjuk be. A matematikai jelölésrendszer fontos részei az alsó és felső indexek. Ezeken kívül a MathML tartalmaz még néhány hasonló, különleges helyű leíróelemet. Ezekre legjobb példa az egyes kifejezések határoló értékeinek megadása az alapelem alatt és/vagy felett.

Természetesen ezekre az elemekre is hatással van a már bemutatott <mstyle> elem scriptlevel és displaystyle attribútuma, mely része a környezeti beállításoknak. Az itt következő elemeknél explicit módon nem lehet e tulajdonságokat beállítani, erre egy külön <mstyle> elem megadása ad módot.

1.6.1. Indexek

Az alapelemhez tartozó alsó indexet az <msub>, a felső indexet az <msup>, mindkettőt egyszerre az <msubsup> elemmel írhatjuk le.

Az <msub> saját attribútuma a subscriptshift, mely az alapvonaltól való minimális távolságot határozza meg lefelé. Bármilyen vertikális mértékegységben megadható (általában az ex-et használjuk). Ugyanígy az <msup> saját attribútuma a subscriptshift, mely felfelé határozza meg a távolságot. Az <msubsup> elemnél mindkét attribútum használható. Ez utóbbi elem és az <msub> - <msup> elemek együttes használatában az a számottevő különbség, hogy az <msubsup> elemnél a két index között vízszintes irányban kisebb a távolság.

Az <mmultiscripts> elemnek a segítségével összetettebb indexeket és elő-indexeket tudunk leírni. Az elem általános formája a következő:

<mmultiscripts>
  alap
  1. alsóindex
  1. felsőindex
  ...
  n. alsóindex
  n. felsőindex
  [ <mprescripts/> elő-alsóindex elő-felsőindex ]
</mmultiscripts>

Jegyezzük meg, hogy az első argumentum mindig az alapelem, ezt követik az alsó- és felsőindexek (ebben a sorrendben), melyek mindig párban állnak. Ha a páros valamelyik tagját nem akarjuk megjeleníteni, akkor az helyett a <none/> elemet kell használnunk. Az elő-indexeket is hasonlóan kell megadnunk, de jeleznünk kell a helyüket a <mprescripts/> üres elemmel, mely mindig az összes normál index felsorolása után található. Használata csak akkor kötelező, ha ténylegesen megadunk elő-indexeket.

Az <mprescripts/> csak a <mmultiscripts> elembe ágyazva használható.

Ha nem kívánunk elő-indexeket megjeleníteni, akkor az <mmultiscripts> elem páratlan argumentumot tartalmaz, ha igen, akkor párosat. A fent már említett két attribútumot kaphatja meg.

A fenti elemek az index argumentumra vonatkozólag eggyel növelik az <mstyle> elem scriptlevel attribútumát, a displaystyle attribútumot pedig “false”-ra állítják.

TEX-ben az alsó index megadási módja a azonosító_alsóindex, a felső indexé a azonosító^felsőindex. Több index esetén, valamint az elő-indexek bevezetésére használjuk a {} zárójeleket.

z alsóindex 2

<msub>
  <mi> z </mi>
  <mn> 2 </mn>
</msub>
 
z_2

z felsőindex 2

<msup>
  <mi> z </mi>
  <mn> 2 </mn>
</msup>
 
z^2

integrál 1 0 e felsőindex x dx

<mrow>
  <msubsup>
    <mo> &int; </mo>
    <mn> 0 </mn>
    <mn> 1 </mn>
  </msubsup>
  <mrow>
    <msup>
      <mi> &ExponentialE; </mi>
      <mi> x </mi>
    </msup>
    <mo> &InvisibleTimes; </mo>
    <mrow>
      <mo> &DifferentialD; </mo>
      <mi> x </mi>
    </mrow>
  </mrow>
</mrow>
 
\int_0^1e^1dx

alsóindex 0 F alsóindex 1 (;a;z)

<mrow>
  <mmultiscripts>
    <mi> F </mi>
    <mn> 1 </mn>
    <none/>
    <mprescripts/>
    <mn> 0 </mn>
    <none/>
  </mmultiscripts>
  <mo> &ApplyFunction; </mo>
  <mrow>
    <mo> ( </mo>
    <mrow>
      <mo> ; </mo>
      <mi> a </mi>
      <mo> ; </mo>
      <mi> z </mi>
    </mrow>
    <mo> ) </mo>
  </mrow>
</mrow>
 
{}_{0}F_{1}(;a;z)

R alsóindex i felsőindex j alsóindex k alsóindex l (ahol k és l különböző indexek)

<mmultiscripts>
  <mi> R </mi>
  <mi> i </mi>
  <none/>
  <none/>
  <mi> j </mi>
  <mi> k </mi>
  <none/>
  <mi> l </mi>
  <none/>
</mmultiscripts>
 
R_{i}{}^{j}{}_{k}{}_l

1.6.2. Ékezetek a kifejezések körül

Az indexekhez hasonlóan az alá és föléírások megjelenítésére három elem létezik, az <munder>, az <mover>, és az <munderover>.

E három elemmel olyan kifejezések írhatók le, ahol az alapszámhoz valamilyen aláírt (<munder>), föléírt (<mover>), vagy alá- és föléírt (<munderover>) argumentum tartozik.

Az <munder> saját attribútuma az accentunder, az <mover> elemé pedig az accent. Az <munderover> elemhez mindkettő használható. Az attribútumok azt határozzák meg, hogy az argumentum hogyan viselkedjen. Ha értékük “true”, akkor közelebb kerül az alapértékhez, mint “false” esetében.

Ha az alap egy műveleti jel, és a movablelimits és a displaystyle beállítása rendre "true" és "false", akkor az accentunder értékét nem vesszük figyelembe. Tipikusan olyan szimbólumoknál alkalmazzuk, mint a &sum;.

Mindhárom elem az argumentumra vonatkozólag eggyel növeli az <mstyle> elem scriptlevel attribútumát, ha az accentunderfalse”, a displaystyle attribútumot pedig “false”-ra állítja.

TEX-ben több módja van a kifejezések alá és fölé történő írásának. A legegyszerűbb módja az \underset mit \to mi alá, vagy az \overset mit \to mi fölé parancspáros. Speciális módja a már fent említett kapcsos zárójelezés, melyre külön parancsok léteznek: \underbrace vagy \overbrace (csak a zárójelet jeleníti meg) és az \undersetbrace mit \to mi alá vagy az \oversetbrace mit \to mi alá parancspáros. Ha vízszintes vonalat kell húzni a kifejezés alá vagy fölé, arra az \underline vagy az \overline parancs szolgál. A MathML accentunder és accent argumentumnak nincs megfelelője. Ha csak egy karakter fölé akarunk valamilyen ékezetet tenni, akkor annak egyszerűbb módjai az ékezetparancsok.

MathML-ben többszintű alá- és föléírást a <munder> vagy <mover> egymásba ágyazásával hozhatunk létre. TEX-ben erre külön parancsok vannak, az aláírásra az \Sb ... \endSb parancspár; a föléírásra pedig az \Sp ... \endSp parancspár, ahol az egyes sorokat a \\ paranccsal választjuk el egymástól. A sorok távolságának megváltoztatására használhatjuk a \vspace parancsot, megadva utána az üres hely nagyságát.

Van egy módja a felül és alulírásnak, amelyeket általában az ún. nagyoperátoroknál (pl. integrál, szumma, stb.) használunk, melyet a \limits paranccsal adunk meg, mely után az indexeknek megfelelően határozzuk meg az értékeket.

A MathML <munderover> elemének a fenti parancsok együttes használata felel meg.

x+y+z alsókapcsoszárójellel

<munder accentunder="true">
  <mrow>
    <mi> x </mi>
    <mo> + </mo>
    <mi> y </mi>
    <mo> + </mo>
    <mi> z </mi>
  </mrow>
  <mo> &UnderBrace; </mo>
</munder>
 
\underbrace {x+y+z}

lim n tart +végtlenhez, m tart -végtelenhez A

<munder accentunder="true">
  <munder accentunder="true">
    <mrow>
      <mo> lim </mi>
      <mi> A </mo>
    </mrow>
    <mrow>
      <mi> n </mi>
      <mo> &rightarrow; </mo>
      <mn> +&infinity; </mn>
    </mrow>
  </munder>
  <mrow>
    <mi> m </mi>
    <mo> &rightarrow; </mo>
    <mn> -&infinity; </mn>
  </mrow>
</munder>
 
\lim\Sb n\to +\infty \\ m\to -\infty\endSb A

x circumflex

<mover accent="false">
  <mi> x </mi>
  <mo> &hat; </mo>
</mover>
 
\^x

x+y+z felülvonás

<mover accent="true">
  <mrow>
    <mi> x </mi>
    <mo> + </mo>
    <mi> y </mi>
    <mo> + </mo>
    <mi> z </mi>
  </mrow>
  <mo> &OverBar; </mo>
</mover>
 
\overline {x+y+z}

integrál 0 végtelen x

<mrow>
  <munderover>
    <mo> &int; </mo>
    <mn> 0 </mn>
    <mi &infinity; </mi
  </munderover
  <mi> x </mi>
</mrow>
 
\int\limits_0^\infty x

1.7. Táblák és mátrixok

1.7.1. Táblák, mátrixok felépítése

Mátrixok, tömbök és más táblák leírására a <mtable>, <mtr> és <mtd> elemeket használjuk. Ezek az elemek nagyon hasonlítanak a HTML <TABLE>, <TR> és <TD> elemeire, azzal a különbséggel, hogy a MathML-ben számos speciális attribútumot használunk a matematikai formák (diagramok, blokkmátrixok, stb.) megjelenítéséhez.

Az <mtable> elemmel tudunk táblákat vagy mátrixokat készíteni. Az <mtable> elemben használhatunk <mtr> és <mtd> elemeket, ezek használata azonban nem kötelező, ekkor egy egysoros-egyoszlopos táblát kapunk. Bánjunk körültekintően az <mtr> és <mtd> elemekkel, mert nagymértékben ezektől függ táblánk megjelenése.

Az <mtr> elem segítségével jeleníthetjük meg a tábla ill. mátrix sorait. Csak az <mtable> elembe ágyazva használhatjuk. Egy <mtr> elem egy sort határoz meg. A benne elhelyezett argumentumok balról jobbra haladva írják le a tábla egyes celláit.

Ha egy <mtr> elemben kevesebb értéket adunk meg, mint ugyanannak a táblának a többi <mtr> eleménél, akkor a hiányzó hely üres <mtr> elemmel töltődik fel.

Az <mtd> elemmel jeleníthetjük meg egy tábla vagy mátrix egy bejegyzését. Csak az <mtr> elembe ágyazva használhatjuk.

Ha az <mtd> elemben egynél több argumentumot kívánunk megjeleníteni, akkor azt egy <mrow> elembe kell beágyazni.

A legtöbb esetben a táblákat valamilyen zárójellel használjuk, ezt azonban az <mtable> elem nem tartalmazza, ezért általában egy <mrow> vagy <mfenced> elem veszi körbe a táblát.

Az <mtable> elemnek a következő saját attribútumai lehetnek: align, rowalign, columnalign, groupalignment, alignmentscope, rowspacing, columnspacing, rowlines, columnlines, frame, framespacing, equalrows, equalcolumns, displaystyle. Az <mtr> elemnek három saját attribútuma van: a rowalign, a columnalign és a groupalign.

Az <mtd> a következő attribútumokat kaphatja meg: rowspan, columnspan, rowalign, columnalign, groupalign.

Az align attribútum azt írja le, hogy a tábla hová legyen rendezve a környezet figyelembe vételével. Értékei lehetnek: “top, bottom, center, baseline, axis”; alapértelmezése “axis”. Minden esetben a környezet alapvonalához igazít a paraméternek megfelelően. “Top/bottom” esetén a felső/alsó sor, “center” és “baseline” esetén a tábla közepe, “axis” esetén a tábla vízszintes tengelye lesz az alapvonalon. A fenti értékek után megadható egy sorszám is (1-től maximum sorszámig), mellyel azt jelezzük, hogy felülről számítva hányadik sorra lesz érvényes a megadott paraméter.

A rowalign és a columnalign attribútum azt írja le, hogy a sorok/oszlopok hogyan legyenek rendezve. Sorokra vonatkozóan a “top, bottom, center, baseline, axis” értékeket veheti fel, oszlopokra vonatkozóan pedig a “left, center, right” értékek valamelyikét. Természetesen több sor/oszlop esetén minden egyes sorra/oszlopra megadhatunk egy értéket egymástól szóközzel elválasztva. Például egy négyoszlopos tábla esetén a columnalign értéke a következő lehet: “left right center center”. Ha több értéket adunk meg, mint amennyi szükséges, a felesleges elemeket figyelmen kívül hagyja. Ha kevesebb értéket adunk meg, mint amennyire szükség lenne, az utolsó értéket használja a hiányzók helyett.

A groupalign és alignmentscope attribútumokkal az <maligngroup/> és <malignmark/> elemeknél ismerkedünk meg. Alapértelmezésük “{left}” és “true”.

A rowspacing és columnspacing attribútummal határozhatjuk meg a sorok/oszlopok közé kerülő üres helyeket (lásd még a framespacing attribútumot is!). Alapértelmezésük rendre “1.0ex” és “0.8em”.

A rowlines és columnlines attribútumok azt határozzák meg, hogy milyen üres helyek kerüljenek a sorok/oszlopok közé. Három értéket vehet fel: “none, solid, dashed”, alapértelmezés a “none”. “Solid” esetén szélesebb üres helyek, “dashed” esetén keskenyebbek kerülnek a sorok/oszlopok közé. A kezdő és záró sorok/oszlopok elé/mögé kerülő üres helyeket a frame attribútumban határozhatjuk meg.

A frame és framespacing attribútumokat akkor használjuk, ha valamilyen keretet akarunk a táblánk köré készíteni. Ha a frame értéke “none”, akkor a framespacing értékét nem vesszük figyelembe. Ha az érték nem “none”, akkor a framespacing-ben megadott értékű lesz a keret és az első sor/oszlop között az üres hely. Alapértelmezésben a frame értéke “none”, ezen kívül a “solid” és a “dashed” értékeket veheti fel. A framespacing megadásakor először az oszlopok közti távolságot kell megadni (alapértelmezés: “0.4 em”), majd a sorok közöttit (alapértelmezés: “0.5 ex”).

Az equalrows és equalcolumns attribútumok “true” beállítása esetén az összes sor/oszlop egyforma hosszúságú/szélességű lesz. Alapértelmezés mindkettőnél “true”.

A displaystyle attribútumról már az <mstyle> elemnél szót ejtettünk. Alapértelmezése “false”, ez azt jelenti, hogy a tábla valamilyen kifejezés része, “true” esetén a cellákat külön-külön kifejezéseknek tekintjük. Beállításával a scriptlevel nem változik.

A rowspan és columnspan értékkel a sor/oszlop magasságát/szélességét határozhatjuk meg. Alapértelmezése mindkettőnek 1.

TEX esetén több parancs pár áll rendelkezésünkre mátrixok készítésére, de ezek alapjában csak zárójelezésükben különböznek egymástól: \matrix - \endmatrix (zárójel nélkül), \pmatrix - \endpmatrix (kerek zárójellel), \bmatrix - \endbmatrix (szögletes zárójellel), \vmatrix - \endvmatrix (függőleges vonallal), \Vmatrix - \endVmatrix (dupla függőleges vonallal). A mátrix sorait \\ paranccsal választjuk el.

Ha szöveg közé kívánjuk helyezni a mátrixot, akkor használjuk a \smallmatrix - \endsmallmatrix parancspárt, mely kisebb méretű megjelenítést tesz lehetővé.

Formázásra csak vízszintes irányban van lehetőség, mégpedig a \format parancs segítségével, melyet a nyitó mátrixparancs után kell használnunk, a következőképpen: minden egyes oszlopra vonatkozóan meg kell adnunk az illesztés irányát (\l – balra, \r – jobbra, \c – középre), és esetleg a kihagyandó hely méretét a már megismert módon (pl. \quad-dal).

Táblázatok előállítása TEX-ben egy kicsit másként működik. Legegyszerűbb formája, mikor olyan táblázatot kell létrehoznunk, ahol balra illesztve, keret nélkül állnak az oszlopok, ezt a \settabs paranccsal végezhetjük el.

Ennek is két módja van, az első, ha egyforma szélességű oszlopaink vannak, akkor a parancs formátuma: \settabs szélesség\columns \+...\cr... Ekkor a \columns parancs után soroljuk fel a sorokat, \+ paranccsal kezdve, a tagokat & jellel elválasztva és \cr paranccsal lezárva.

Másik módja változó szélességű oszlopok esetén használatos, ekkor a \settabs parancs után elsőnek, egy formátumsorban kell megadni az oszlopok szélességét (célszerű felsorolni az oszlopok legszélesebb elemeit). Látszólag ez a formátumsor ugyanúgy néz ki mint a többi sor (\+...&...\cr), de ez nem fog látszani.

Ha nem balra igazított táblázatot, vagy vonalakkal elválasztott táblázatra van szükségünk, akkor használjuk a \halign parancsot. Felépítése hasonlít a \settabs második használatára, de itt nincsenek nyitó \+ parancsok, és a felsorolást {} zárójelek közé kell tenni: \halign {formátumsor\cr...\cr}. Ennél a parancsnál nem soroljuk fel a formátumsorban az elemeket, hanem # jelekkel adjuk meg az oszlopok számát (az elválasztójel itt is a &, mint a mátrixoknál). Az egyes # jelek mellett megadhatjuk az illesztés irányát a \hfil (gyenge illesztő), \hfill (erős illesztő), \hss (kiemelő) parancsokkal: ha az oszlopot balra igazítjuk, akkor a # jel mögé, ha jobbra, akkor elé, ha középre, akkor mindkét oldalra el kell helyeznünk valamelyiket. Az egyes oszlopjelek előtt meghatározhatjuk azok betűtípusait, méreteit. Elhelyezhetünk a formátumsorban olyan szöveget, amelyek minden egyes sorban ismétlődik, meghatározhatjuk az oszlopelválasztó vonalainkat, valamint itt kell beállítanunk az oszlopok közötti távolságot is. Amennyiben azonos távolságot akarunk hagyni minden oszlop között, használjuk a \tabskip elemet:\tabskip=méret\halign{...}.

Sorokra vonatkozóan a következő parancsokat kell megjegyeznünk. Teljes táblázat szélességű vízszintes vonalat a \noalign{\hrule} kombinációval húzhatunk. Két sor között helyet hagyhatunk ki a \noalign{\\vskip méret} parancskombinációval. Lehetőségünk van egy sorban a cellák egyesítésére is, ezt a \multispan paranccsal tehetjük meg, mely után meg kell adni az egyesítendő cellák számát, majd kapcsos zárójelek között a megjelenítendő szöveget és formázó parancsait, mivel ilyenkor nem érvényesek a formátumsorban megadott paraméterek (pl. \multispan3{\hfill\bf Adatok\hfill}\cr). Ha egy adott sorra nem akarjuk alkalmazni a formátumsorban megadott beállításokat, akkor az adott sor elejére írjuk be az \omit parancsot, ami után megadhatjuk az esetleges lokális beállításainkat is, természetesen az egyes celláknak megfelelően. Ekkor erre a sorra az \omit után megadott beállítások lesznek érvényben. Ha olyan táblázatot készítünk, amelyben nincs minden sor közöztt elválasztó vonal, akkor a használjuk az \offinterlineskip - \par parancspárt ({\offinterlineskip\halign{...}\par}), ilyenkor a vonalakkal nem elválasztott sorok közelebb kerülnek egymáshoz, szebb képet eredményezve.

márix 1-0-0 0-1-0 0-0-1

<mrow>
  <mo> ( </mo>
  <mtable>
    <mtr>
      <mtd><mn>1</mn></mtd>
      <mtd><mn>0</mn></mtd>
      <mtd><mn>0</mn></mtd>
    </mtr>
    <mtr>
      <mtd><mn>0</mn></mtd>
      <mtd><mn>1</mn></mtd>
      <mtd><mn>0</mn></mtd>
    </mtr>
    <mtr>
      <mtd><mn>0</mn></mtd>
      <mtd><mn>0</mn></mtd>
      <mtd><mn>1</mn></mtd>
    </mtr>
  </mtable>
  <mo> ) </mo>
</mrow>
 
\pmatrix 1&0&0 \\ 0&1&0 \\ 0&0&1 \endpmatrix

1.7.2. Egyenletek illesztése

A jobb megjelenés érdekében egyenletrendszereket illeszthetünk egymáshoz az <maligngroup/> és az <malignmark/> elemek segítségével.

Lássuk a következő példát:

8.44x+55y=0 és 3.1x-0.7y=-1.1

A fenti egyenletrendszert horizontálisan formázva a következő alakot kapjuk:

8.44x+55 y= 0 és 3.1 x-0.7y=-1.1

Mint látjuk, itt egy egyszerű horizontális formázás történt, de ha nem ismertük volna a vertikális elrendezést, nem hajthattuk volna végre.

Jelen pillanatban az <mtable> elem az egyetlen olyan eszköz, mely lehetőséget ad a fenti sorba rendezésre. A MathML későbbi változataiba talán bekerül egy <malignscope> elem, mely alkalmasabb lehet az ilyen sorba rendezésekre, de egyelőre csak táblák segítségével tudjuk megoldani problémánkat. Fontos tudnunk, hogy az <mtable> elem alignmentscope attribútumának értékét "true"-ra kell állítani (ez az alapértelmezés), mert “false” esetén a megjelenítő nem feszi figyelembe a horizontális rendezést.

Hogy a fenti elvárásoknak eleget tudjunk tenni, szükség van ún. sorbaállítási csoportok létrehozására, melyeket majd horizontálisan illeszteni tudunk a kívánalmaknak megfelelően.

A sorbaállítási csoportoknak egy láthatatlan <maligngroup/> elemmel kell kezdődnie, mely a megfelelő horizontális üres helyet reprezentálja. A fenti egyenletrendszerben minden egyes tényező, azonosító, műveleti jel előtt áll egy <maligngroup/> elem, az egyenlőség mindkét oldalán.

Az <maligngroup/> elemhez csak a következő fajta elemek kapcsolódhatnak: <mrow>, <mstyle>, <mphantom>, <mfenced>, <maction>, <semantics> és természetesen a token-elemek. Ezeknek megfelelően kell tehát kialakítani az egyes kifejezések (jelen esetben az egyenletrendszer) egyes tagjainak leírását.

Ha vannak olyan soraink, amelyeket nem akarunk csoportosítani, ott egyszerűen ne használjuk a <maligngroup/> elemet!

A fent létrehozott csoportokon belül kialakíthatunk egy-egy olyan pontot, amelyhez fogunk majd igazítani. Ezt a pontot két módon jelölhetjük ki: az egyik mód az <malignmark/> elem segítségével, a másik az egyes csoportok, vagy a tábla groupalign attribútumával. Ha az <malignmark/> elemmel tesszük, akkor az edge attribútumban beállíthatjuk az igazítás irányát (“left” vagy “right”, alapértelmezés a “left”).

A másik módszer szerint a groupalign beállításával adhatjuk meg az igazítási pontot. A groupalign a következő értékeket veheti fel: “left, center, right, decimalpoint” (ha jól megnézzük, ezek az értékek megfelelnek a Word szövegszerkesztő tabulátorainak igazításához). Nincs alapértelmezés, az érték öröklődik. Ezért például célszerű az egyes oszlopokhoz tartozó értékeket megadni az <mtable> elemnél, így az itt megadott értékek majd továbböröklődnek a csoportok számára.

Hogy érthetőbb legyen a fenti “zavaros” megfogalmazás, álljon itt a fenti “igazított” egyenletrendszer MathML kódja:

<mtable groupalign="{decimalpoint left left decimalpoint left left
     decimalpoint}">
  <mtd>
    <mrow>
      <mrow>
        <maligngroup/>
        <mn> 8.44 </mn>
        <mo> &InvisibleTimes; </mo>
        <maligngroup/>
        <mi> x </mi>
      </mrow>
      <maligngroup/>
      <mo> + </mo>
      <mrow>
        <maligngroup/>
        <mn> 55 </mn>
        <mo> &InvisibleTimes; </mo>
        <maligngroup/>
        <mi> y </mi>
      </mrow>
    </mrow>
    <maligngroup/>
    <mo> = </mo>
    <maligngroup/>
    <mn> 0 </mn>
  </mtd>
  <mtd>
    <mrow>
      <mrow>
        <maligngroup/>
        <mn> 3.1 </mn>
         <mo> &InvisibleTimes; </mo>
        <maligngroup/>
        <mi> x </mi>
      </mrow>
      <maligngroup/>
      <mo> - </mo>
      <mrow>
        <maligngroup/>
        <mn> 0.7 </mn>
        <mo> &InvisibleTimes; </mo>
          <maligngroup/>
          <mi> y </mi>
      </mrow>
    </mrow>
    <maligngroup/>
    <mo> = </mo>
    <maligngroup/>
    <mrow>
      <mo> - </mo>
      <mn> 1.1 </mn>
    </mrow>
  </mtd>
</mtable>

A fenti egyenletillesztésre a TEX-ben is van parancs, de itt csak egyetlen ponton kapcsolhatjuk össze az egyenleteinket és csak kizárólagos matematikai módban használhatjuk ($$). Az erre szolgáló parancs az \eqalign, melynél kapcsos zárójelben kell megadni az egyenleteket, \cr paranccsal elválasztva őket egymástól. Az illesztés helyét a & jel segítségével adjuk meg, az illesztési hely elé kell beszúrni. A fenti egyenletrendszerekben látható üres helyeket a már megismert módszerekkel adhatjuk meg (pl. \quad). A második egyenletrendszer TEX-ben:

$$\eqalign{8.44x+55\quad y&=\quad 0\cr 3.1\quad x-0.7y&=-1.1}$$

1.8. Egyéb elemek

1.8.1. Hibakezelés

Az <merror> elem kiírja a tartalmát, mint egy hibaüzenetet, eltérő formában, mint a környezete (pl. piros színnel, villogó tartalommal, más háttérszínnel, stb. – ez a megjelenítőtől függ). Tartalma bármilyen matematikai kifejezés lehet. Ha több elemet tartalmaz, akkor azokat egy <mrow> elembe kell zárni.

Nincsen saját attribútuma.

Főként olyan programok használják, amelyek MathML kódot készítenek, ezzel az elemmel jelezve a szintaktikai hibákat. Általában ilyenkor a programok legenerálják a hiba fajtáját, majd az eredeti kifejezést, olyan pontosan, ahogy csak lehet, hogy minél könnyebb legyen a hiba javítása. Az elem kihasználtsága, tehát, főként a programozón múlik.

TEX-ben nincs megfelelője.

Példa egy hibás bemenetre (nincs olyan MathML elem, hogy <mfraction>):

<mfraction>
  <mrow>
    <mn> 1 </mn>
    <mo> + </mo>
    <msqrt>
      <mn> 5 </mn>
    </msqrt>
  </mrow>
  <mn> 2 </mn>
</mfraction>

Egy program ekkor a következő kódot generálhatja:

<merror>
  <mtext> Ismeretlen elem: &lt;mfraction&gt;; argumentumai:&nbsp; </mtext>
  <mrow>
    <mn> 1 </mn>
    <mo> + </mo>
    <msqrt>
      <mn> 5 </mn>
    </msqrt>
  </mrow>
  <mtext> &nbsp;és&nbsp; </mtext>
  <mn> 2 </mn>
</merror>

OpenMath-ban van egy error objektum, az <OME>, mely hasonlóan használható. Példa a nullával való osztásra:

<OMOBJ>
  <OME>
    <OMS cd=”arith” name=”DivisionByZero”/>
    <OMA>
      <OMS cd=”arith” name=”divide”/>
      <OMV name=”x”/>
      <OMI>0</OMI>
    </OMA>
  </OME>
</OMOBJ>

1.8.2. Vezérlő szerkezetek

Az <maction> elemmel vezérlő szerkezeteket készíthetünk MathML kifejezésekből. Ha egy más alkalmazásból próbálunk kapcsolódni MathML kódú kifejezéseinkhez, például egy standard XML-nyelvű dokumentumból kapcsolódnánk hozzá (<element-name ... href="...">), akkor célszerű ezt az elemet használni.

Két attribútuma lehet: az actiontype és a selection, melyek közül az elsőt kötelező megadni.

Az actiontype attribútumban szerepel a kiválasztott esemény típusa. Részletesen később a példáknál.

A selection attribútumban határozzuk meg a <maction> elem argumentumaiként felsorolt részkifejezések közül melyiket kívánjuk választani. Alapértelmezése 1, maximum értéke a <maction> elem alatt felsorolt részkifejezések száma lehet, mindig pozitív egész szám. Ha olyan részkifejezésre hivatkozunk, amelyik nem létezik, akkor hibát kapunk.

Lássunk néhány példát (jegyezzük meg, hogy a következő példákban maga a hivatkozás URL-je nem szerepel, tehát ebben a formában a példák nem használhatóak):

<maction actiontype="toggle" selection="pozitív egész szám”>
  (első kifejezés)
  (második kifejezés)
  ...
</maction>

Ebben az esetben a megjelenítő megjeleníti azt az alkalmazást, amelyre a felhasználó kattintott, a selection-ben megadott számú kifejezéssel kezdve. Tipikus felhasználása az oktatásban, hosszú számítógépes algebrai kimeneteknél illetve illusztrációknál van.

<maction actiontype="statusline">
  (kifejezés)
  (üzenet)
</maction>

Ebben az esetben a kifejezés megjelenítődik, és ha a felhasználó rákattint, vagy az egeret fölé viszi a böngésző státussorába kiíródik az üzenet.

<maction actiontype="tooltip">
  (kifejezés)
  (üzenet)
</maction>

Hasonló az előzőhöz, azzal a különbséggel, hogyha az egeret egy bizonyos ideig a kifejezés felett tartjuk, akkor megjelenik egy felbukkanó segítő tipp.

<maction actiontype="highlight" other="color='#ff0000'">
  kifejezés
</maction>
<maction actiontype="highlight" other="background='#ff0000'">
  kifejezés
</maction>

Ebben az esetben, ha az egeret az adott kifejezés fölé visszük, az kiemeltté válik az other attribútumban megadott színeket használva.

<maction actiontype="menu" selection="pozitív egész szám">
  (1. menüpont)
  (2. menüpont)
  ...
</maction>

Ez a típus egy felbukkanó menüt jelenít meg, lehetőséget biztosítva a kifejezések bemutatására. Több ilyen menü is egymásba ágyazható.

Ennek az elemnek nincsen TEX megfelelője.

<<< Előző   |   Következő >>>