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.