Hlavní navigace

Specifikace MathML 3.0: tabulky, matice a determinanty

Martin Smola 28. 11. 2012

Další článek, ve kterém budeme pokračovat ve výkladu specifikace MathML 3.0, která, jak už bylo řečeno v minulých dílech, slouží pro zobrazování matematických vzorců ve webovém dokumentu. Minule jsme si vysvětlili pár základních tagů, pro zápis jednodušších rovnic. Dnes se podíváme na zápis matic.

Pokud již máme definovaný jmenný prostor, můžeme začít se zápisem do tagů <math></math>. Jako v každém matematickém zápisu v jazyce MathML, i při zápisu matic je potřeba nejprve použít tag <mrow>.

Nyní, pokud chceme obalit náš zápis závorkami, zapíšeme před vlastní hodnotu matice do tagu Math Operator <mo> ( </mo>.

Pro definování matice má tento jazyk tagy <mtable></mtable>. Samozřejmě jde o zápis matematické tabulky, díky níž můžeme zapisovat nejen již zmíněné matice, ale i determinanty, nebo třeba jen názorné tabulky při určování vlastností funkcí apod.

Po definování matematické tabulky, vytváříme nejprve řádky tabulky pomocí tagů <mtr></mtr>, a následně do nich jednotlivé buňky na řádce pomocí <mtd></mtd>. Číselnou hodnotu samozřejmě obalujeme ještě do Math Number, neboli <mn></mn>.

Pro větší názornost následuje ukázka jednoduché matice.

<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
  <mo> ( </mo>
  <mtable>
    <mtr>
      <mtd> <mn>3</mn> </mtd>
      <mtd> <mn>1</mn> </mtd>
      <mtd> <mn>8</mn> </mtd>
    </mtr>
    <mtr>
      <mtd> <mn>6</mn> </mtd>
      <mtd> <mn>3</mn> </mtd>
      <mtd> <mn>0</mn> </mtd>
    </mtr>
    <mtr>
      <mtd> <mn>6</mn> </mtd>
      <mtd> <mn>8</mn> </mtd>
      <mtd> <mn>8</mn> </mtd>
    </mtr>
  </mtable>
  <mo> ) </mo>
</mrow>
</math>

( 1 3 8 0 1 0 0 0 1 )

Nyní, pokud bychom chtěli, můžeme podle znalostí z minulého dílu, jednoduše dopsat matici nějaké označení (identifikátor) pomocí Math Identifier <mi></mi> před závorku, která nám matici otvírá a pomocí Math Operator, do kterého zapíšeme rovnítko. Takto:

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

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

E = ( 1 3 8 0 1 0 0 0 1 )

Pokud budeme chtít zapisovat determinanty, stačí změnit oblé závorky za svislé čáry |jako u zápisu absolutní hodnoty|. Ukázka je opět zde:

<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
	
<mi>Determinant A</mi>
<mo> = </mo>

  <mo> | </mo>
  <mtable>
    <mtr>
      <mtd> <mn>3</mn> </mtd>
      <mtd> <mn>1</mn> </mtd>
      <mtd> <mn>8</mn> </mtd>
    </mtr>
    <mtr>
      <mtd> <mn>6</mn> </mtd>
      <mtd> <mn>3</mn> </mtd>
      <mtd> <mn>0</mn> </mtd>
    </mtr>
    <mtr>
      <mtd> <mn>6</mn> </mtd>
      <mtd> <mn>8</mn> </mtd>
      <mtd> <mn>8</mn> </mtd>
    </mtr>
  </mtable>
  <mo> | </mo>
</mrow>
</math>

Determinant A = | 1 3 8 0 1 0 0 0 1 |

Pokud bychom chtěli vytvořit tabulku pro zjištění průběhu funkce, můžeme postupovat následujícím způsobem. Vytvoříme si první řádek s nulovými body. Vytvoříme oddělující čáru a pod čarou vytvoříme například dvě řádky pro zápis klesajících a rostoucích částí.

Y = | X - 1 |


1 | x - 1 | - | +
<math xmlns="http://www.w3.org/1998/Math/MathML">
    <mstyle scriptminsize="12pt">   
      <mrow>
      	<mtable>
        	<mtr>
            	<mtd>                 
                </mtd>
                <mtd>                 
                </mtd>
            	<mtd>
                 <mn> 1 </mn>
                </mtd>
            </mtr>
            <mtr>
            	<mtd>
                 <mo> | </mo>
                 <mi> x </mi>
                 <mo> - </mo>
                 <mn> 1 </mn>
                 <mo> | </mo>
                </mtd>
            	<mtd>
                 <mo> - </mo>
                </mtd>
                <mtd>
                 <mo> | </mo>
                </mtd>
                <mtd>
                 <mo> + </mo>
                </mtd>
            </mtr>
        </mtable>
      </mrow>
    </mstyle>
  </math>

Tímto bych završil dnešní díl o tabulkách, maticích a determinantech. Příště se podíváme na zápis elementárních matematických úkonů jako je sčítání, odečítání a násobení pod sebe.

Našli jste v článku chybu?

2. 12. 2012 22:28

Ve skutečnosti je toho vkládaného obsahu mnohem víc, a spousta z toho je spojena právě s HTML5 - mikroformáty, data-atributy, multimediální obsah... To vše se mohlo řešit standardy nezávislými na HTML a do HTML vkládat jednotně jako elementy z jiných jmenných prostorů. Místo toho se to všechno řeší jedním všeobjímajícím standardem, navíc se to řeší pokaždé jinak.

Ono se na to taky dá dívat opačně. Za těch "dvacet" let se toho víc nerozšířilo, protože to s uzavřeným HTML nebylo možné udělat jina…

2. 12. 2012 11:10

Díky. A to jsem tuhle část projížděl několikrát...

Ale nemůžu si pomoct, pořád v tomhle řešení nevidím jediný přínos, za to má fatální nedostatek -- pro podporu každé nové technologie bude nutné upravit standard. Přitom už se i ve světě webu minimálně 15 let ví, že standard, který nepočítá s dopřednou kompatibilitou, se nebude dodržovat. A 12 let je známé a standardizované alespoň nějaké řešení (XHTML). Nevím, zda za tím je zášť autorů standardu vůči XML, ale žádný racionální důvod mne nenapadá…

Vitalia.cz: Pečete cukroví a zbyl vám bílek?

Pečete cukroví a zbyl vám bílek?

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR