Vítejte u dnešního dílu o specifikaci MathML 3.0. Vysvětlíme si zápis sčítání, odečítání, násobení a dělení „pod sebe“. Tato část specifikace má svoje vlastní tagy, které si postupně rozebereme a uvedeme si několik příkladů od každé početní operace.
Hlavním tagem, definujícím tyto matematické operace, které specifikace popisuje jako dvojrozměrný matematický zápis výpočtu, je <mstack></mstack>. V překladu něco jako matematická/ý „hromada“, „stoh“… Do těchto tagů zapisujeme vše, co se má zobrazovat jako „dvojrozměrný“ zápis.
Jeden z podstatných tagů pro zápis tohoto druhu početních operací je horizontální čára, kterou lze využít nejen zde, ale i například v zápisu soustav rovnic. Zapisujeme ji nepárovým tagem <msline/> „Math Stack Line“.
Jednotlivé řádky následně obalujeme do tagů <msrow></msrow>, „Math Stack Row“.
Ostatní čísla a operátory, zapisujeme stejně, jako v ostatních oblastech MathML 3.0. Tedy <mn> 478 </mn> „Math Number“ a <mo> + </mo> „Math Operator“.
Pro zajímavost si uvedeme ještě nepárový tag <none/>, který nám vytvoří prázdný znak.
Bohužel jsme se pomalu prokousali k části MathML, kterou ještě žádný velký prohlížeč nepodporuje, avšak na podpoře se pracuje a s budoucími verzemi prohlížečů bude jistě specifikace plně podporována.
Sčítání a odečítání
Součet a rozdíl pod sebe vytvoříme tedy následovně:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack> <!-- Tag obalující celý zápis -->
<mn>251</mn> <!-- Horní číslo, není v <msrow></msrow> -->
<msrow> <mo>+</mo> <none/> <mn>48</mn> </msrow> <!-- Ostatní řádky kromě první a poslední s výsledkem, obalujeme do <msrow></msrow> -->
<msline/> <!-- Horizontální čára, oddělující výpočet od výsledku -->
<mn>299</mn> <!-- Výsledek pod čarou -->
</mstack> <!-- uzavření dvourozměrného zápisu -->
</math>
Asi není třeba zvlášť vysvětlovat odečítání, které má stejný zápis, jen změníme znaménko:
Násobení
Další šikovný tag je <msgroup></msgroup>. „Math Stack Group“ je skupina odřádkovaných čísel, kterým lze nastavit, o kolik se další řádka odsadí od předchozí. To využijeme především u násobení a dělení. Zápis poté vypadá takto:

<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<msgroup>
<mn>123</mn>
<msrow><mo>×<!-- Znak násobení --></mo><mn>321</mn></msrow>
</msgroup>
<msline/> <!-- první horizontální čára -->
<msgroup shift="1"> <!-- odsazení jednotlivých řádků -->
<mn>123</mn>
<mn>246</mn>
<mn>369</mn>
</msgroup>
<msline/> <!-- druhá horizontální čára -->
</math>
Dělení
U dělení pod sebe používáme stejných triků jako u násobení jen u tagu <msgroup> nastavíme hodnotu shift=„-1“. Řádky se nám tedy budou odsazovat o jeden znak směrem doprava. (Opačně jak u násobení s hodnotou shift=„1“.) Tag <msgroup> použijeme v tomto případě na odsazování dvojic, které budou tvořeny vnořenými <msgroup> s defaultním shift=„0“. Pro <msline/> použijeme atribut length=„2“, tedy horizontální čára přes dva znaky.
Výsledek poté vypadá následovně:

<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstack>
<msgroup>
<mn>1306</mn>
<msrow><mo>:</mo><mn>3</mn><mo>=</mo><mn>435,3</mn></msrow>
</msgroup>
</msgroup shift="1">
<msgroup>
<mn>12</mn>
<msline length="2"/>
</msgroup>
<msgroup>
<mn>10</mn>
<mn>9</mn>
<msline length="2"/>
</msgroup>
<msgroup>
<mn>16</mn>
<mn>15</mn>
<msline length="2"/>
</msgroup>
<msgroup>
<mn>1</mn>
<mn>9</mn>
<msline length="2"/>
</msgroup>
<msgroup>
<mn>1</mn>
</msgroup>
</msgroup>
</math>
Naučili jsme se opět mnoho nového ohledně specifikace MathML 3.0. Doufám, že bude tímto článkem rozšířeno povědomí o těchto vlastnostech specifikace a tím i přispěno k její budoucí podpoře v prohlížečích. Tímto bych ukončil dnešní díl a těšte se na příští týden.