Palaa sisällysluetteloon

MathML-koodin perusteet

Tällä sivulla selitetään perusteita MathML-koodin kirjoittamisesta.

MathML-koodi perustuu käytännössä kahteen standardiin: MathML 3 (englanniksi) ja MathML Core (englanniksi). Koko MathML-kehitystä voi seurata W3C:n MathML-sivuilla (englanniksi).

MathML 3 ja MathML Core eroavaisuudet

MathML 3 on laajempi, mutta vanhempi versio MathML-standardista. Sen haasteena oli, että juurikaan mikään selain ei ryhtynyt työhön tukemaan sitä. Monissa selaimissa tämä standardi ei ole voimassa, mutta joitain sen vanhoja ominaisuuksia saatetaan tukea esimerkiksi Mozilla Firefoxissa.

MathML Core on suppeampi standardi, jota nykyiset, suurimmat selaimet tukevat.

Unicode-merkit

Apuvälineiden toiminta perustuu siihen, että merkit on lisätty oikealla tavalla. Nettiympäristössä erilaiset merkit perustuvat Unicode-merkkeihin.

Voit tarkistaa ja kopioida itsellesi talteen tärkeitä Unicode-merkkejä.

MathML-koodin käyttäminen

math-elementti

Kaikki matematiikka kirjoitetaan math-elementin sisälle.

Lähtökohtaisesti math-elementti ei tarvitse attribuutteja toimiakseen, mutta EPUB-kirjoissa (e-kirjoissa) kannattaa käyttää muotoa:


<math xmlns="http://www.w3.org/1998/Math/MathML">
    ...
</math>
    

Näiden perusteiden esimerkeissä tätä attribuuttia ei aina kirjoiteta.

Luvut

Luvut ja niiden kaikki osat merkitään mn -elementin ("math-number") sisään:

Selaimessa: 2

Koodina:


<math>
    <mn>2</mn>
</math>
            

Selaimessa: 0,453

Koodina:


<math>
    <mn>0,453</mn>
</math>
            

Selaimessa: 0,777…

Koodina:


<math>
    <mn>0,777&#x2026;</mn>
</math>
            

Selaimessa: −7

Koodina:


<math>
    <mn>−7</mn>
</math>
            

Selaimessa: 2

Koodina:


<math>
    <mn>2</mn>
</math>
            

Tuhaterottimena käytetään sitovaa välilyöntiä. Tämä estää luvun hajoamisen useille riveille, jos rivin pituus on lyhyt.

Selaimessa: 5 655 715

Koodina:


<math>
    <mn>5&nbsp;655&nbsp;715</mn>
</math>
            

Muuttujat, funktiot ja yksiköt

Muuttujia, funktioita, yksiköitä ja muita vastaavia symboleita, jotka tarkoittavat esimerkiksi suuretta, merkitään mi-elementillä ("math-identifier").

Selaimessa: b

Koodina:


<math>
    <mi>b</mi>
</math>
        

Selaimessa:

Koodina:


<math>
    <mi>∞</mi>
</math>
        

Selaimessa: α,π

Koodina:


<math>
    <mi>α</mi>
    <mo>,</mo>
    <mi>π</mi>
</math>
        

Funktiotkin merkitään samalla mi-elementillä. Ne esitetään normaalina tekstinä automaattisesti, eikä kursiivilla, koska ne koostuvat useammasta kirjaimesta.

Selaimessa: cos,ln

Koodina:


<math>
    <mi>cos</mi>
    <mo>,</mo>
    <mi>ln</mi>
</math>
        

Yksiköiden ei ole tarkoitus olla kursiivilla, joten ne saa näyttämään normaalilta kirjoitukselta mathvariant="normal"-attribuutilla.

Esimerkiksi litran lyhenne selaimessa: l

Koodina:


<math>
    <mi mathvariant="normal">l</mi>
</math>
        

Laskutoimitukset ja operaattorit

Laskutoimitusoperaattorit merkitään mo -elementin ("math-operator") sisään.

Selaimessa: 10 + 7 = 17

Koodina:

            
<math>
    <mn>10</mn>
    <mo>+</mo>
    <mn>7</mn>
    <mo>=</mo>
    <mn>17</mn>
</math>

        

Selaimessa: 10 · 4 = 40

Koodina:

            
<math>
    <mn>10</mn>
    <mo>·</mo>
    <mn>4</mn>
    <mo>=</mo>
    <mn>40</mn>
</math>
            
        

Kaikenlaiset sulkeet ovat myös operaattoreita.

Selaimessa: 20 ( 10 + 7 ) = 3

Koodina:

            
<math>
    <mn>20</mn>
    <mo>−</mo>
    <mo>(</mo>
    <mn>10</mn>
    <mo>+</mo>
    <mn>7</mn>
    <mo>)</mo>
    <mo>=</mo>
    <mn>3</mn>
</math>
            
        

Selaimessa: α+x

Koodina:


<math>
    <mi>α</mi>
    <mo>+</mo>
    <mi>x</mi>
</math>
        

Pilkku on operaattori, kun esitetään pisteitä koordinaatistossa, alkioita joukossa tai muuten listataan asioita MathML-koodissa.

Selaimessa: { 1 , 2 , 3 }

Koodina:

            
<math>
    <mo>{</mo>
    <mn>1</mn>
    <mo>,</mo>
    <mn>2</mn>
    <mo>,</mo>
    <mn>3</mn>
    <mi>&#x2026;</mi> 
    <mo>}</mo>
</math>

Erityisoperaattorit, kuten integraali, sarjan summamerkintä tai nabla ovat operaattoreita.

Selaimessa: , Σ ,

Koodina:

            
<math>
    <mo>∫</mo>
    <mo>,</mo>
    <mo>Σ</mo>
    <mo>,</mo>
    <mo>∇</mo>
</math>

Funktiot ja näkymättömät merkit

Funktioita merkitään myös mi-elementeillä. Funktiot voivat olla yhden tai useamman merkin pituisia.

Funktioita kirjoittaessa täytyy muistaa näkymätön merkki, joka tarkoittaa "funktion käyttöä".

Selaimessa: f ( x )

Koodina:


<math>
    <mi>f</mi>
    <mo>&#x2061;</mo>
    <mo>(</mo>
    <mi>x</mi>
    <mo>)</mo>
</math>
        

mi-elementtiä käytetään myös valmiiksi määriteltyihin ja vakiintuneisiin funktioihin, kuten trigonometrisiin funktioihin ja logaritmifunktioihin.

Selaimessa: sin ( x )

Koodina:


<math>
    <mi>sin</mi>
    <mo>&#x2061;</mo>
    <mo>(</mo>
    <mi>x</mi>
    <mo>)</mo>
</math>
        

Selaimessa: ln ( x )

Koodina:


<math>
    <mi>ln</mi>
    <mo>&#x2061;</mo>
    <mo>(</mo>
    <mi>x</mi>
    <mo>)</mo>
</math>
        

Selaimessa: 2 ( x y )

Koodina:


<math>
    <mn>2</mn>
    <mo>&#8290;</mo>
    <mo>(</mo>
    <mi>x</mi>
    <mo>−</mo>
    <mi>y</mi>
    <mo>)</mo>
</math>
        

Juuret

Neliöjuurimerkintä tehdään mqsrt-elementin avulla ja muut juurimerkinnät tehdään mroot-elementin avulla.

Selaimessa: 2

Koodina:


<math>
    <msqrt>
        <mn>2</mn>
    </msqrt>
</math>
        

Selaimessa: h + 2

Koodina:


<math>
    <msqrt>
        <mi>h</mi>
        <mo>+</mo>
        <mn>2</mn>
    </msqrt>
</math>
        

Muiden juurimerkintöjen kirjoittamisessa on tärkeää, että elementit ovat oikeassa järjestyksessä.

mroot-elementin tapauksessa juurrettava (eli juurimerkin alla oleva luku tai lauseke) tulee järjestyksessä ennen juuren indeksiä (eli juurimerkin päällä oleva luku tai lauseke).

Selaimessa: 9 3

Koodina:


<math>
    <mroot>
        <mn>9</mn>
        <mn>3</mn>
    </mroot>
</math>
        

Selaimessa: 9 n = 3

Koodina:


<math>
    <mroot>
        <mn>9</mn>
        <mi>n</mi>
    </mroot>
    <mo>=</mo>
    <mn>3</mn>
</math>
        

Murtoluvut ja teksti matematiikassa

Murtolukujen kirjoittamiseen käytetään mfrac-elementtiä. Tässäkin järjestyksellä on väliä.

Osoittaja (murtolukuviivan yläpuolella) kirjoitetaan ensin ja sen jälkeen nimittäjä (murtolukuviivan alapuolella).

Selaimessa: 12 27

Koodina:


<math>
    <mfrac>
        <mn>12</mn>
        <mn>27</mn>
    </mfrac>
</math>
        

Jos MathML-koodin keskelle pitää kirjoittaa normaalia tekstiä, niin se tehdään erillisen mtext-elementin avulla.

Selaimessa: osoittaja nimittäjä

Koodina:


<math>
    <mfrac>
        <mtext>osoittaja</mtext>
        <mtext>nimittäjä</mtext>
    </mfrac>
</math>
        

Lukujen ja lausekkeiden ryhmittely

MathML-koodissa pitää erikseen käyttää ryhmittelyelementtiä mrow, kun useampi luku tai lauseke halutaan esimerkiksi murtoluvun osoittajaksi tai nimittäjäksi.

mrow-elementti on kuin näkymättön sulkumerkintä, joka kertoo MathML-koodin kautta selaimelle tai lukuohjelmalle, miten matematiikka esitetään.

Selaimessa: 1 5 6

Koodina:


<math>
    <mfrac>
        <mrow>
            <mn>1</mn>
            <mo>−</mo>
            <mn>5</mn>
        </mrow>
        <mn>6</mn>
    </mfrac>
</math>
        

Selaimessa: 256 n + 1

Koodina:


<math>
    <mroot>
        <mn>256</mn>
        <mrow>
            <mi>n</mi>
            <mo>+</mo>
            <mn>1</mn>
        </mrow>
    </mroot>
</math>
        

Ylä- ja alaindeksit

Eksponentti tai yläindeksi merkitään msup-elementillä ("math-superscript").

Selaimessa: 5 2

Koodina:


<math>
    <msup>
        <mn>5</mn>
        <mn>2</mn>
    </msup>
</math>
        

mrow-elementtiä käytetään ryhmittelemään ylä- tai alaindeksin lausekkeita.

Selaimessa: 5 2 + 5

Vastaavasti alaindeksi merkitään msub-elementillä ("math-subscript").

Koodina:


<math>
    <msup>
        <mn>5</mn>
        <mrow>
            <mn>2</mn>
            <mo>+</mo>
            <mn>5</mn>
        </mrow>
    </msup>
</math>
        

Selaimessa: h 2

Koodina:


<math>
    <msub>
        <mi>h</mi>
        <mn>2</mn>
    </msub>
</math>
        

Selaimessa: h 2 , 3

Koodina:


<math>
    <msub>
        <mi>h</mi>
        <mrow>
            <mn>2</mn>
            <mo>,</mo>
            <mn>3</mn>
        </mrow>
    </msub>
</math>
        

MathML-koodissa on erikseen elementti ylä- ja alaindeksille samaan aikaan msubsup.

Selaimessa: h 5 3

Koodina:


<math>
    <msubsup>
        <mi>h</mi>
        <mn>5</mn>
        <mn>3</mn>
    </msubsup>
</math>
        

Selaimessa: a b

Koodina:


<math>
    <msubsup>
        <mo>∫</mo>
        <mi>a</mi>
        <mi>b</mi>
    </msubsup>
</math>
        

Selaimessa: ( h / 2 ) 5 3

Koodina:


<math>
    <msubsup>
        <mrow>
            <mo>(</mo>
            <mi>h</mi>
            <mo>/</mo>
            <mn>2</mn>
            <mo>)</mo>
        </mrow>
        <mn>5</mn>
        <mn>3</mn>
    </msubsup>
</math>
        

Selaimessa: ( 5 3 ) 3

Koodina:


<math>
    <msup>
        <mrow>
            <mo>(</mo>
            <mfrac>
                <mn>5</mn>
                <mn>3</mn>
            </mfrac>
            <mo>)</mo>
        </mrow>
        <mn>3</mn>
    </msup>
</math>
        

Ylä- ja alamerkinnät

mover- ja munder-elementit mahdollistavat toisten merkkien kirjoittamisen toisen elementin päälle tai alle.

Selaimessa: x

Koodina:


<math>
    <mover>
        <mi>x</mi>
        <mo>‾</mo>
    </mover>
</math>
        

Selaimessa: lim x 4

Koodina:


<math>
    <munder>
    <mi>lim</mi>
        <mrow>
            <mi>x</mi>
            <mo>→</mo>
            <mn>4</mn>
        </mrow>
    </munder>
</math>
        

Ala- ja ylämerkintää voi kirjoittaa myös sisäkkäin.

Selaimessa: 2 , 7 , 12 , 17 , , n + 5 N kpl

Koodina:


<math>
    <munder>
        <mrow>
            <munder>
                <mrow>
                    <mn>2</mn>
                    <mo>,</mo>
                    <mn>7</mn>
                    <mo>,</mo>
                    <mn>12</mn>
                    <mo>,</mo>
                    <mn>17</mn>
                    <mo>,</mo>
                    <mo>…</mo>
                    <mo>,</mo>
                    <mn>n</mn>
                    <mo>+</mo>
                    <mn>5</mn>
                </mrow>
                <mo>&#x23DF;</mo>
            </munder>
        </mrow>
        <mtext>N kpl</mtext>
    </munder>
</math>
        

Vastaavasti kuin ylä- ja alaindeksille, niin ylä- ja alamerkinnälle on myös yhdistetty munderover-elementti.

Selaimessa: n = 1

Koodina:


<math display="block">
    <munderover>
        <mo>Σ</mo>
        <mrow>
            <mi>n</mi>
            <mo>=</mo>
            <mn>1</mn> 
        </mrow>
        <mi>∞</mi>
    </munderover>
</math>
        

Suuret operaattorit ja matemaattisen sisällön rivitys

Suuria operaattoreita ovat esimerkiksi sarjoissa käytettävä sigma (∑) tai tulossa käytettävä pii (∏).

Unicode-merkkeinä nämä ovat

Edellisessä esimerkissä summaoperaattori ∑ esitettiin omalla rivillään. Se tehdään display-attribuutin avulla. Sillä on kaksi mahdollista arvoa:

Kaikella MathML-koodilla kirjoitetulla matematiikalla on oletuksena display="inline", sitä ei tarvitse kirjoittaa erikseen koodiin. Se mahdollistaa matematiikan kirjoittamisen tekstin sekaan luontevasti.

display-attribuutin arvo vaikuttaa erityisesti suurien operaattoreihin ulkonäköön.

Selaimessa: n = 1

Koodina:


<math display="block">
    <munderover>
        <mo>Σ</mo>
        <mrow>
            <mi>n</mi>
            <mo>=</mo>
            <mn>1</mn> 
        </mrow>
        <mi>∞</mi>
    </munderover>
</math>
        

Ilman display="block"-attribuuttia lauseke sopii paremmin riville muun tekstin kanssa.

Selaimessa: n = 1

Koodina:


<math>
    <munderover>
        <mo>Σ</mo>
        <mrow>
            <mi>n</mi>
            <mo>=</mo>
            <mn>1</mn> 
        </mrow>
        <mi>∞</mi>
    </munderover>
</math>
        

Tällä tavoin rivillä voi olla suurikin operaattori n = 1 , mutta se silti rivitetään tekstin tasolle. Tässäkin voi jo huomata, miten riviväli suurenee merkinnän vuoksi.

Koodina:


<p>Tällä tavoin rivillä voi olla suurikin operaattori 
<math displaystyle="true">
    <munderover>
        <mo>∑</mo>
        <mrow>
            <mi>n</mi>
            <mo>=</mo>
            <mn>1</mn> 
        </mrow>
        <mi>∞</mi>
    </munderover>
</math>, mutta se silti rivitetään tekstin tasolle. 
Tässäkin voi jo huomata, miten riviväli suurenee merkinnän 
vuoksi.</p>
        

Monirivinen matematiikka

Monirivinen matematiikka esitetään yleensä mtable-elementin avulla. Monirivistä matematiikkaa ovat esimerkiksi yhtälöparit, yhtälöryhmät, matriisit, determinantit ja yhtälönratkaisu.

mtable-elementtiin sisälle merkitään taulukon rivit mtr-elementillä (math table row) ja rivien sisään taulukon solut mtd-elementillä (math table data cell).

Yhtälönratkaisussa taulukkorakenne auttaa järjestämään lausekkeet oikeisiin kohtiin.

Selaimessa: x + y = 7 x = 7 y

Koodina:


<math display="block">
    <mtable>
    <mtr>
        <mtd>
            <mi>x</mi>
            <mo>+</mo>
            <mi>y</mi>
        </mtd>
        <mtd>
            <mo>=</mo>
        </mtd>
        <mtd>
            <mn>7</mn>
        </mtd>
    </mtr>
    <mtr>
        <mtd>
            <mi>x</mi>
        </mtd>
        <mtd>
            <mo>=</mo>  
        </mtd>
        <mtd>
            <mn>7</mn>
            <mo>−</mo>
            <mi>y</mi>
        </mtd>
    </mtr>
    </mtable>
</math>
    

Selaimessa: ( 0 3 4 3 2 1 0 9 3 0 2 1 6 2 9 0 )

Koodina:


<math>
    <mrow>
        <mo>(</mo>
        <mtable>
            <mtr>
            <mtd>
                <mn>0</mn>
            </mtd>
            <mtd>
                <mn>3</mn>
            </mtd>
            <mtd>
                <mn>4</mn>
            </mtd>
            <mtd>
                <mn>3</mn>
            </mtd>
            </mtr>
            <mtr>
            <mtd>
                <mn>2</mn>
            </mtd>
            <mtd>
                <mn>1</mn>
            </mtd>
            <mtd>
                <mn>0</mn>
            </mtd>
            <mtd>
                <mn>9</mn>
            </mtd>
            </mtr>
            <mtr>
            <mtd>
                <mn>3</mn>
            </mtd>
            <mtd>
                <mn>0</mn>
            </mtd>
            <mtd>
                <mn>2</mn>
            </mtd>
            <mtd>
                <mn>1</mn>
            </mtd>
            </mtr>
            <mtr>
            <mtd>
                <mn>6</mn>
            </mtd>
            <mtd>
                <mn>2</mn>
            </mtd>
            <mtd>
                <mn>9</mn>
            </mtd>
            <mtd>
                <mn>0</mn>
            </mtd>
            </mtr>
        </mtable>
        <mo>)</mo>
    </mrow>
</math>
        

Sulkeet venyvät suurimman elementin mukaisiksi ellei sitä rajata mrow-elementin avulla. Tämä on tärkeä huomioida, kun samalla rivillä on erikokoisia lausekkeita.

Selaimessa: f ( x ) = { 1 , jos  x < 0 0 , jos  x = 0 1 , jos  x > 0

Koodina:


<math>
    <mi>f</mi>
    <mo>&#x2061;</mo>
    <mrow>
        <mo>(</mo>
        <mi>x</mi>
        <mo>)</mo>
    </mrow>
    <mo>=</mo>
    <mrow>
        <mo>{</mo>
        <mtable>
            <mtr>
                <mtd>
                    <mo>−</mo>
                    <mn>1</mn>
                    <mtext>,&nbsp;jos&nbsp;</mtext>
                    <mi>x</mi>
                    <mo>&lt;</mo>
                    <mn>0</mn>
                </mtd>
            </mtr>
            <mtr>
                <mtd>
                    <mn>0</mn>
                    <mtext>,&nbsp;jos&nbsp;</mtext>
                    <mi>x</mi>
                    <mo>=</mo>
                    <mn>0</mn>
                </mtd>
            </mtr>
            <mtr>
                <mtd>
                    <mn>1</mn>
                    <mtext>,&nbsp;jos&nbsp;</mtext>
                    <mi>x</mi>
                    <mo>&gt;</mo>
                    <mn>0</mn>
                </mtd>
            </mtr>
        </mtable>
    </mrow>
</math>
        

Lukuarvojen ja yksiköiden merkitseminen

Yksiköiden merkitsemiseen on oma tapansa, jotta ne näkyvät oikein. Lisätietoa yksiköiden merkitsemisestä MathML Nordic Guidelines -dokumentissa.

Selaimessa: 100 m

Koodina:


<math>
    <mn>100</mn>
    <mo rspace="0.25em">&#x2062;</mo>
    <mi mathvariant="normal" intent=":unit">m</mi>
</math>
        

Selaimessa: 100 m / s 2

Koodina:


<math>
    <mn>100</mn>
    <mo rspace="0.25em">&#x2062;</mo>
    <mrow>
        <mi mathvariant="normal" intent=":unit">m</mi>
        <mo>/</mo>
        <msup>
            <mi mathvariant="normal" intent=":unit">s</mi>
            <mn>2</mn>
        </msup>
    </mrow>
</math>
        

Matematiikka osana muuta tekstiä

Matemaattista tekstiä kirjoitetaan niin, että se on osana muuta tekstiä. Se tarkoittaa, että matemaattisia kaavoja ei kirjoiteta lähtökohtaisesti omaan itsenäiseen elementtiinsä, vaan esimerkiksi kappale-elementin (p) sisälle.

Matemaattiset lausekkeet voivat myös päättää virkkeen tai niiden jälkeen voi tulla jokin muu välimerkki.

Selaimessa:

"Jos lisäksi on voimassa kaikilla alkioilla a,bG siten, että ab=ba, sanotaan, että ryhmä on kommutatiivinen eli vaihdannainen. Kommutatiivista ryhmää kutsutaan nimellä Abelin ryhmä."

Koodina:


<p>"Jos lisäksi on voimassa kaikilla alkioilla 
<math>
    <mi>a</mi>
    <mo>,</mo>
    <mi>b</mi>
    <mo>∈</mo>
    <mi>G</mi>
</math>
siten, että 
<math>
    <mi>a</mi>
    <mo>∘</mo>
    <mi>b</mi>
    <mo>=</mo>
    <mi>b</mi>
    <mo>∘</mo>
    <mi>a</mi>
</math>, sanotaan, että ryhmä on kommutatiivinen eli 
vaihdannainen. Kommutatiivista ryhmää kutsutaan nimellä
Abelin ryhmä.
        

Tämä pätee myös block-tyyliseen matematiikkaan. Tällöin välimerkit ja muut merkit pitää kirjoittaa matematiikan 'sisään'.

Selaimessa:

"Ryhmän G esitys n-dimensioisessa reaalisessa vektoriavaruudessa on ryhmähomomorfismi ρ : G GL ( n , R ) .

Se on ryhmähomomorfismi ryhmästä yleiseen lineaariryhmään."

Koodina:


"Ryhmän <math><mi>G</mi></math> esitys 
<math><mi>n</mi></math>-dimensioisessa reaalisessa 
vektoriavaruudessa on ryhmähomomorfismi 
<math display="block">
    <mi>ρ</mi>
    <mo>:</mo>
    <mi>G</mi>
    <mo>→</mo>
    <mi>GL</mi>
    <mo>(</mo>
    <mi>n</mi>
    <mo>,</mo>
    <mi>R</mi>
    <mo>)</mo>
    <mtext>.</mtext>
</math>
<p>Se on ryhmähomomorfismi ryhmästä 
yleiseen lineraariryhmään."</p>
        
Palaa sisällysluetteloon