Autor: Martin Kot

Datum: 8.12.2000

MathML (Mathematical Markup Language)

  1. Historie MathML
  2. Spojení MathML s jinými Web technologiemi
    1. Existující matematické "markup" jazyky
    2. Rozšiřující mechanizmy pro HTML
    3. Mechanismy rozšíření schopností prohlížeče
  3. Systematika MathML prvků
    1. Prezentační ML
    2. Významové ML
    3. Spojení prezentačního a významového ML
  4. MathML interface
  5. Odkazy v MathML
  6. Další příklady využití MathML
  7. Zdroje informací

Matematika užívá pro vyjádření svých myšlenek komplikovanou 2D notaci. Ta se vyvíjela po staletí a vyvíjí se dál. Mimo to se ještě liší podle národů (např. formát desetinných čísel v USA a ČR ). Národní konvence a tištěný text obecně, dělají výrazy čitelnější a srozumitelnější. Problém vzniká při snaze vložit tyto výrazy do Web stránek a jejich zobrazení v prohlížečích. Web reprezentuje změnu v potřebách pro uložení znalostí. Velkou roli zde hraje provázanost údajů. Je důležité sdělovat matematické vědomosti takovým způsobem, aby umožňoval automatické zpracovaní těchto údajů, vyhledávání a indexování a jejich nové využití v jiných aplikacích. Proto World Wide Web Consorcium vytvořilo MathML pro usnadnění vývoje matematiky ve prostředí WWW.

Historie MathML

Problém kódování matematiky pro počítačové zpracování je mnohem starší než Web. Vznikaly různé způsoby kódování založené na ASCII znakové sadě. Nejznámější a nejrozšířenější se stal TeX, který byl již v roce 1992 hodně rozšířen.

Od svého založení Web demonstroval, že je velmi efektivní prostředek k zpřístupnění informací. I když byl Web zpočátku vytvořen vědci pro vědce, možnost vkládat matematické výrazy do HTML je velmi limitovaná. V současnosti je většinou matematika na Webu zobrazovaná v GIF obrázcích. Ty jsou ovšem obtížně modifikovatelné a vytvořitelné. Tyto obrázky mimoto zabírají také dost místa. Při použití značkovacího jazyka se renderování přesouvá na počítač klienta a kódování založené na takovém jazyku zabírá většinou méně místa než obrázek.

W3C uznalo, že nedostatek podpory pro vědeckou komunikaci je vážný problém. Dave Raggett zahrnul návrh na HTML Math do pracovního návrhu HTML 3.0. V dubnu 1995 se problém matematického jazyka projednával na konferenci v Darmstadtu. V listopadu 1995 představili zástupci Wolfram Research svůj návrh na vloženi matematiky do HTML 3.0. V březnu 1997 na shromáždění Digital Library Initiative v Champaign-Urbana byl zformulován HTML Math Editorial Review Bord. V následujících letech tato skupina rostla a byla formálně reorganizována na W3C Math working group.

Spojení MathML s jinými Web technologiemi

Původní návrh matematiky HTML byl jednoduchým, přímým rozšířením HTML, které mělo být přirozeně implementovatelné v prohlížečích. S rozvojem Webu však bylo jasné, že by měl vzniknout obecný rozšiřující mechanismus a matematika by měla být jen jeden z druhů strukturovaných dat, které by měly být integrovatelné do Webu s použitím tohoto mechanizmu.

Bylo dáno, že integrování MathML do Webu by mělo být realizováno jako nějaké rozšíření. Je velmi důležité, aby MathML a MathML software mohly dobře spolupracovat s existujícím prostředím Webu. MathML bylo navrženo se třemi různými způsoby zakomponování do existujícího prostředí:

Existující matematické "markup" jazyky

Asi největší vliv na matematické "markup" jazyky měl v posledních dvou desetiletích TeX. Ten tvoří v podstatě standard ve vědecké komunitě. Protože v TeXu existovalo mnoho dokumentů a mnoho lidí bylo zvyklých v něm pracovat, bylo prioritou návrhu MathML možnost konverze TeX matematiky do MathML formátu. Proveditelnost této konverze byla ukázána na prototypu takového softwaru.

Dalším markup jazykem je ISO 12083 vytvořený společenstvím SGML. Protože matematiku zahrnutá v ISO 12083 sdílí mnoho aspektů s TeXem a protože vynucuje přísnější strukturu a regularitivitu než TeX, většina prací zaručující kompatibilitu MathML a TeXu je aplikovatelná i na ISO 1283.

Rozšiřující mechanismus pro HTML

Úspěch HTML vedl k enormnímu tlaku na začlenění různých datových typů a softwarových aplikací do Webu. každý nový formát kladl nové požadavky na HTML a na prohlížeče. Bylo jasné, že musí vzniknout pobecný mechanismus pro začlenění nových typů do HTML. Jako takový vhodný mechanismus se nabízel XML. XML (Extensible Markup Language) je navržen jako zjednodušená verze SGML, metajazyka užívaného k definici gramatiky HTML jazyka. Jedním z cílů XML je být vhodný pro užití na Webu. XML má jako jednu z hlavních vlastností rozšířitelnost, proto může sloužit i jako mechanismus pro rozšiřování HTML. XML gramatika a syntaxe umožňují automatické zpracování a údržbu velkých sbírek dokumentů.

Mechanismy rozšíření schopností prohlížeče

MathML je založené na style sheetech. Přesto, že ty umožňují prohlížeči přirozené zobrazení MathML, je nutné rozšířit možnosti prohlížeče prostřednictvím nějakých elementů pro zobrazení MathML. Kvůli zpracovávaní prostřednictvím vkládaných elementů a pro vzájemnou komunikaci mezi vědeckými systémy obecně není style sheet model úplně ideální. Proto MathML specifikace definuje model založený na atributech, který se ukazuje velmi efektivní pro vysoce kvalitní zobrazení komplikovaných matematických výrazů v mnoha nezávislých implementacích.

Systematika MathML prvků

Prvky MathML se dají rozdělit do tří kategorií:

př. Vyjádření výrazu (a+b)2

a) prezentační forma b) významová forma
    <msup>
      <mfenced>
        <mrow>
          <mi>a</mi>
          <mo>+</mo>
          <mi>b</mi>
        </mrow>
      </mfenced>
      <mn>2</mn>
    </msup>

      
    <apply>
      <power/>
      <apply>
        <plus/>
        <ci>a</ci>
        <ci>b</ci>
      </apply>
      <cn>2</cn>
    </apply>
      

Prezentační ML

MathMl pro prezentace obsahuje 28 prvků, které připouští přes 50 atributů. Většina z nich představuje nějaké "layout" schéma, které obsahuje další prezentační prvky. Druhou skupinu tvoří symboly jako čísla, jména atd.

Výčet prvků:

Symboly:

<mi> identifikátor
<mn> číslo
<mo> operátor, závorky nebo oddělovač
<mtext> text
<mspace/> mezera
<ms> řetězec

Obecné layout schémata:

<mrow> skupina jakéhokoliv počtu podvýrazů řazených horizontálně
<mfrac> tvoří zlomek z dvou podvýrazů
<msqrt> druhá odmocnina
<mroot> obecná odmocnina
<mstyle> změna stylu
<merror> uzavírá syntaktickou chybu preprocesoru
<mpadded> umístí mezery okolo obsahu
<mphantom> udělá obsah neviditelný, ale zachová jeho velikost
<mfenced> uzavře obsah do závorek

Schémata textů a krajních hodnot:

<msub> připojí k obsahu dolní index
<msup> připojí k obsahu horní index
<msubsup> připojí k obsahu dvojici horní a dolní index
<munder> připojí prvek pod obsah
<mover> připojí prvek nad obsah
<munderover> připojí dvojici prvků pod a nad obsah
<mmultiscripts>

Tabulky a matice:

<mtable> tabulka nebo matice
<mtr> řádek v tabulce nebo matici
<mtd> jedna položka v matici nebo tabulce
<maligngroup/> a <malignmark/> značky pro zarovnávání

Oživující výrazy:

<maction> připojí akci k podvýrazu

Významové ML

MathMl pro prezentace obsahuje okolo 75 prvků, které připouští mnoho atributů. Většina z nich představuje prázdné prvky korespondující s širokou škálou operatorů, relací a pojmenovaných funkcí. Tato verze MathML přímo kóduje strukturu stromu matematického výrazu. Základním pravidlem je, že listy stromu tvoří základní matematické objekty jako čísla, identifikátory atd. Vnitřní uzly představují nějakou funkci nebo jinou matematickou konstrukci.

Výnamným tagem této kategorie je apply. První prvek jeho obsahu musí být operátor. Ten je aplikován na ostatní prvky těla. Tento způsob zápisu odpovídá prefixové notaci.

Př. Zapsání výrazu (a-b)+10

  <apply>
    <plus/>
    <apply>
      <minus/>
      <ci>a</ci>
      <ci>b</ci>
    </apply>
    <cn>10<cn>
  </apply>

Spojení prezentačního a významového ML

Různé formy ML jsou určené pro různé úlohy. Někdy je proto vhodné zapsat stejný výraz několika způsoby najednou a nechat aplikaci, aby si vybrala ten, který je pro daný typ úlohy vhodnější. Pro spojení MathML výrazů různých notací se užívá tag semantics. Jednou z možností jeho použití je spojení významového výrazu a prezentačního výrazu jako sémantické poznámky. V tomto případě může autor určit nestandardní notaci, která se užije při zobrazení významového výrazu.

Připojení významové poznámky k prezentačnímu výrazu Připojení prezentační poznámky k významovému výrazu
<semantics>

  <mrow>
    <msubsup>
      <mo>&int;</mo>
      <mn>0</mn>
      <mi>t</mi>
    </msubsup>
    <mfrac>
      <mrow>
        <mo>&dd;</mo>
        <mi>x</mi>
      </mrow>
      <mi>x</mi>
    </mfrac>
  </mrow>

  <annotation-xml encoding="MathML-Content">
    <apply>
      <int/>
      <bvar><ci>x</ci></bvar>
      <lowlimit><cn>0</cn></lowlimit>
      <uplimit><ci>t</ci></uplimit>
      <apply>
        <divide/>
        <cn>1</cn>
        <ci>x</ci>
      </apply>
    </apply>
  </annotation-xml>

</semantics>
<semantics>

  <apply>
    <int/>
    <bvar><ci>x</ci></bvar>
    <lowlimit><cn>0</cn></lowlimit>
    <uplimit><ci>t</ci></uplimit>
    <apply>
      <divide/>
      <cn>1</cn>
      <ci>x</ci>
    </apply>
  </apply>

  <annotation-xml 
       encoding="MathML-Presentation">
    <mrow>
      <msubsup>
        <mo>&int;</mo>
        <mn>0</mn>
        <mi>t</mi>
      </msubsup>
      <mfrac>
        <mrow>
          <mo>&dd;</mo>
          <mi>x</mi>
        </mrow>
        <mi>x</mi>
      </mfrac>
    </mrow>
  </annotation-xml>

</semantics>

  

MathML interface

Při zapojování MathML do HTML je nutno dodržet tři hlavní body.

MathML kód se v HTML uvozuje tagem math. Ten má atributy:

Celý obsah tagu math v HTML dokumentu by měl být vnímán jako MathML kód.

    <xml version="1.0" encoding="iso-8859-1"?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>HTML with MathML</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>

    <body>
    <p>Tento dokument HTML může obshovat kód MathML.</p>

    <p>
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <mrow>
        <mo>(</mo>
        <mi>x</mi>
        <mo>+</mo>
        <mi>y</mi>
        <mo>)</mo>
      </mrow>
    </math>
    </p>

    <p>A za matematikou normálně pokračuje HTML.</p>
    </body>
    </html>

MathML může tvořit také samostatný dokument. V tomto případě jde vlastně o standardní XML dokument, ve kterém je opět užit tag math.

  <?xml version="1.0" encoding="iso-8859-1"?>

      <math xmlns="http://www.w3.org/1998/Math/MathML">
      <msqrt>
        <mfrac>
          <mrow>
            <mi>u</mi>
            <mo>+</mo>
            <mn>5</mn>
          </mrow>
          <mn>999</mn>
        </mfrac>
      </msqrt>
    </math>

Odkazy v MathML

Do MathML kódu je možno do kteréhokoliv prvku vkládat odkazy. Provádí se to standardním XML způsobem.

  <math xmlns="http://www.w3.org/1998/Math/MathML">
    <msqrt>
      <mi xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
      xlink:href="mathinhtm.htmlREFERAt12.HTM">t</mi>
    </msqrt>
  </math>

Další příklady využití MathML

Zdroje informací