1.1 Matematika a její zápis
1.2 Původ a cíle
1.2.1 Historie MathML
1.2.2 Omezení HTML
1.2.3 Požadavky na matematické značkování
1.2.4 Cíle projektu MathML
1.3 Role MathML na webu
1.3.1 Stávající matematické značkovací jazyky
1.3.2 Mechanismus rozšíření HTML
1.3.3 Mechanismus rozšíření prohlížeče
1.4 Přehled MathML
1.4.1 Taxonomie prvků MathML
1.4.2 Označení zobrazení
1.4.3 Označení obsahu
1.4.4 Kombinace prezentace a obsahu
1.5 MathML v dokumentech
1.6 Příklady MathML
1.6.1 Zobrazení příkladů značek
1.6.2 Příklady označení obsahu
1.6.3 Příklady smíšených značek
1.7 Syntaxe a gramatika MathML
1.7.2 Příklad syntaxe XML
2.1 Mozilla a Firefox
2.2 Microsoft Internet Explorer
MathML (Mathematical Markup Language) je značkovací jazyk založený na XML pro matematické aplikace. Byl vyvinut konsorciem WWW (W3C) a přijat jako doporučení. současná verze je Mathematical Markup Language (MathML) verze 2.0 (druhé vydání), schváleno 21. října 2003.
MathML implementuje dva "úhly pohledu" matematického značení. Jedním z jeho typů je Presentation Markup, který popisuje vizuální formu reprezentace matematického vzorce. Druhým je Content Markup, který vyjadřuje sémantický obsah.
MathML zohledňuje nejen prezentaci, ale také význam prvků vzorce. Vyvíjí se také matematický sémantický značkovací systém, který doplní MathML. Jmenuje se OpenMath.
1.2.1 Historie MathML
Úkol prezentovat matematické informace pro počítačové zpracování a elektronické komunikační prostředky vznikl dávno před nástupem internetu. Dříve bylo běžnou praxí, že vědci psali články v nějaké formě založené na znacích ASCII a poté si je posílali prostřednictvím e-mailem. Několik matematických značkovacích jazyků, zejména T E X, bylo široce používáno již v roce 1992, tedy dříve, než měl web tak prominentní postavení.
Síť se od počátku osvědčila jako velmi účinná metoda zpřístupnit informace velkému počtu lidí. I když byl World Wide Web původně koncipován a implementován vědci pro vědce, možnosti začlenění matematických výrazů do HTML byly extrémně omezené. V současné době je většina matematických informací na webu prezentována ve formě textu grafické obrázky vědecké výrazy (ve formátu GIF nebo JPEG) nebo jako celé dokumenty PDF.
World Wide Web Consortium (W3C) pochopilo, že hlavním problémem je nedostatek základů pro vědeckou komunikaci. Již v roce 1994 předložil Dave Raggett návrh na zahrnutí HTML Math do prototypu HTML 3.0. Na konferenci v Darmstadtu v dubnu 1995 se konal kulatý stůl o matematickém zápisu. V listopadu téhož roku předložili zástupci Wolfram Research týmu W3C návrh na implementaci podpory matematiky v HTML. Schůzka Iniciativy digitální knihovny v Champaign-Urbana v květnu 1996 sehrála důležitou roli při sbližování mnoha zúčastněných stran. Toto setkání vyústilo ve vytvoření redakční rady pro HTML Math. Následně toto pracovní skupina rostla a v březnu 1997 byla formálně přeformována jako první W3C Math Working Group. Druhá W3C Math Working Group byla založena v červenci 1998.
Projekt MathML odráží zájmy a názory různých skupin specialistů. Mnoho ve vývoji MathML si zaslouží zvláštní zmínku. Týká se to například otázky přístupnosti, kde byly obzvláště hmatatelné potíže. T. V. Raman udělal v tomto směru velký kus práce. Neil Soiffer a Bruce Smith z Wolfram Research se podělili o své zkušenosti s řešením problémů matematické reprezentace získané během práce na projektu Mathematica 3.0. Jejich nápady měly důležitý vliv na strukturu pohledových prvků. Paul Topping z Design Science také přispěl k matematickému formátování a úpravám. MathML velmi těží z partnerství s řadou členů pracovních skupin spojených s další prací na kódování matematických informací v SGML a v komunitách počítačové algebry. Patří mezi ně Stephen Buswell ze StiloTechnologies, NicoPoppelier z ElsevierScienceStéphaneDalmas z INRIA (SophiaAntipolis), StanDevitt z WaterlooMaple, AngelDiaz a RobertS. Sutor z IBM a StephenM. Watt z University of Western Ontario. MathML byl také ovlivněn projektem OpenMath, prací pracovní skupiny ISO 12083 a prací Stilo Technologies na fragmentu DTD pro „sémantickou“ matematiku. Americká matematická společnost hrála klíčovou roli ve vývoji MathML. Zástupci této organizace se mimo jiné stali předsedy obou W3C Math Working Groups. Od května 1996 do března 1997 kapelu vedl Ron Whitney. Patrick Ion byl spolupředsedou skupiny od března 1997 do června 1998 s Robertem Minerem z Geometry Center a od července 1998 s Angelem Diazem z IBM.
Cíle vývoje MathML vyžadují flexibilní a rozšiřitelný systém matematických zápisů, který umožňuje interakci s externími programy a vysoce kvalitní zobrazení v různých informačních prostředích. Ale každý značkovací jazyk, který splňuje všechny tyto požadavky, je poměrně komplikovaný.
Pro mnoho uživatelských skupin, jako jsou studenti, je zároveň důležité mít snadný způsob, jak do webových stránek zahrnout matematické výrazy. Podobně pro další skupiny, např. pro uživatele systému T E X, nejlepší řešení existoval by systém, který by umožňoval přímé začlenění značek do webových stránek pomocí jazyka, jako je T E X. Obecně platí, že různé skupiny uživatelů vyžadují různé formy vstupu a výstupu, které nejlépe vyhovují jejich potřebám. Systém pro umísťování matematických dokumentů na web by proto v ideálním případě měl poskytovat jak specializované služby pro vstup a výstup, tak i obecné služby pro výměnu a zobrazování informací v různých informačních prostředích.
V praxi vede přezkum toho, co by měl matematický standard poskytovat v síti pro specializované a obecné potřeby, k myšlence vrstvené architektury. První úroveň zahrnuje standardní výkonné nástroje pro výměnu, zpracování a zobrazení matematických dat. Druhá úroveň zahrnuje specializované nástroje určené pro konkrétní skupiny uživatelů, pomocí kterých můžete snadno kódovat matematické informace pro distribuci omezenému okruhu uživatelů.
MathML je navrženo pro označení matematických informací na nižší, obecnější úrovni dvouvrstvé architektury. To zahrnuje označení složité notační a sémantické struktury v přísné, pravidelné formě, kterou lze snadno zpracovat zobrazovacími, vyhledávacími a indexovacími nástroji a dalšími matematickými aplikacemi.
V důsledku toho není značkování MathML určeno k přímému použití autory. MathML je čitelný pro člověka, což hodně pomáhá při ladění, ale ve všech případech kromě těch nejjednodušších je příliš složité na ruční kódování. Místo toho budou muset autoři používat speciální editory vzorců, převodníky a další specializované software pro tvoření MathML dokumenty. Alternativně mohou některé vykreslovací programy a systémy podpory matematických dokumentů převádět jiné vstupní formáty do MathML za běhu.
V některých ohledech je MathML podobný jiným nízkoúrovňovým komunikačním formátům, jako je jazyk PostScript vyvinutý společností Adobe. Můžete vytvářet PostScriptové soubory různé způsoby, v závislosti na vašich potřebách: odborníci je vytvářejí a upravují ručně, autoři je vytvářejí pomocí textové procesory, designéři - ilustrátoři a tak dále. Pokud máte PostScriptový soubor, můžete jej distribuovat velmi širokému publiku, protože PostScriptová zobrazovací zařízení, jako jsou tiskárny a prohlížeče obrazovky, jsou široce dostupná.
Jedním z důvodů rozvoje MathML jako značkovacího jazyka na obecné komunikativní úrovni je stimulace rozvoje matematického software Sítě nejvyšší úrovně. MathML je způsob koordinace úsilí vývojářů softwarových modulů vytvářet a zobrazovat matematický materiál. Zjednodušení vývoje funkčních částí velký systém, MathML může stimulovat vývoj programů, které budou velmi užitečné pro potenciální uživatele.
Autoři mohou vytvářet dokumenty MathML pomocí nástrojů, které nejlépe vyhovují jejich potřebám. Studenti mohou preferovat vizuální editory vzorce s možností uložit bloky značek MathML do souboru XHTML. Výzkumníci mohou používat balíčky počítačové algebry, které automaticky kódují matematické informace, aby je kolegové mohli převzít z webové stránky a zpracovat je. Vydavatelé akademických časopisů mohou používat program, který převádí značky T E X do HTML a MathML. Bez ohledu na způsob vytvoření webové stránky obsahující MathML jsou dostupné všechny výhody společné komunikační vrstvy. Různé programy, které pracují s MathML, mohou být použity na stejném dokumentu pro výstup do řeči a tisku, stejně jako pro vstup do systému počítačové algebry a pro jeho správu jako součást velkého archivu webových dokumentů. Pro kvalitní tisk matematických dokumentů ve formátu MathML zpětný převod do standardní systémy layouty včetně T E X, který je speciálně vytvořen pro tento účel. Konečně lze očekávat, že MathML bude časem integrován do dalších oblastí, kde se vyskytují matematické vzorce, jako jsou tabulky, agregační balíčky a inženýrské nástroje.
W3C Math Working Group spolupracuje s různými softwarovými společnostmi, aby zajistila, že různé nástroje MathML budou brzy dostupné, včetně nástrojů pro generování a zobrazování dokumentů. Aktuální seznam programů, které pracují s MathML, je umístěn na stránce Math World Wide Web Consortium.
Původní koncept HTML Math byl jednoduše rozšířit sadu HTML tagů a poskytnout tak přímou interpretaci v prohlížeči. Ještě předtím však explodující růst sítě jasně ukázal, že je zapotřebí mechanismus globálního rozšíření a matematické informace jsou pouze jedním z typů strukturovaných dat, které lze pomocí takového mechanismu integrovat do webu.
Vzhledem k tomu, že MathML má být integrován do webu jako rozšíření, je velmi důležité, aby MathML a programy, které jej používají, mohly dobře spolupracovat se stávajícím webovým prostředím. Zejména MathML musí být navržen s ohledem na tři typy interakce. Za prvé, pro vytváření matematického obsahu je důležité, aby existující matematické značkovací jazyky mohly být převedeny na MathML a aby byla možnost vytvářet dokumenty MathML přidána do stávajících editorů. Za druhé, mělo by být možné vložit značky MathML do značek HTML jako jejich doplněk, v takovém případě bude v budoucnu k dispozici prohlížečům, vyhledávače a všechny typy webových aplikací, které nyní pracují s HTML. A konečně musí být možné zobrazit MathML vložený do HTML, moderní prohlížeče i když výsledek není zdaleka ideální. S přechodem z HTML na XHTML budou všechny výše uvedené požadavky ještě nezbytnější.
World Wide Web je zcela mezinárodní. Matematika je jazyk používaný po celém světě. Matematický zápis ve vědě a technice úzce souvisí s národními jazyky. W3C si klade za cíl být konstruktivní silou při přinášení komunikace do světa. Vývojáři MathML proto čelili problému internacionalizace. Není známo, že by tato verze MathML byla nekompatibilní s jazyky se zápisem zleva doprava. Zápis zleva doprava je v MathML 2 standardní a je jasné, že potřeba psát matematické vzorce do textů v některých národních jazycích zatím nevznikla. Takzvaná „obousměrná technologie“ se teprve vyvíjí a nejlepší podporu vzorce je v této souvislosti úkolem pro budoucí vývoj.
1.7.1 Syntaxe a gramatika MathML
MathML je založen na (Extensible Markup Language), což znamená, že jeho syntaxe se řídí pravidly syntaxe XML a jeho gramatika je definována pomocí DTD (Document Type Definition). Jinými slovy, podrobnosti pro použití značek, atributů, entit a všeho ostatního jsou definovány ve specifikaci jazyka XML, zatímco podrobnosti o prvcích a atributech MathML, vnoření prvků atd. jsou definovány v MathML DTD.
W3C ve snaze zvýšit snadnost a flexibilitu používání XML na webu a podporovat vytváření modulárních aplikací XML zjistilo, že základní forma DTD není dostatečně flexibilní. Proto byla vytvořena pracovní skupina W3C pro vývoj schémat XML, což jsou dokumenty specifikace a měly by nahradit DTD. MathML 2.0 je navržen tak, aby matematikům umožnil plně využít nové webové technologie. Existuje tedy schéma pro MathML.
MathML také kromě toho definuje pravidla syntaxe a gramatiky hlavní pravidla, kterou zdědí jako XML aplikaci. Tato pravidla umožňují MathML reprezentovat podstatně více informací, než je možné s čistým XML, aniž by je museli představovat velký počet nové prvky a používají výrazně složitější DTD nebo schémata. Nevýhodou zavedení specifických pravidel MathML je samozřejmě to, že vygenerované dokumenty nemohou být zpracovány procesory a validátory XML.
Existují dva hlavní typy dalších pravidel gramatiky a syntaxe MathML. První typ zahrnuje nastavení dalších kritérií pro hodnoty atributů. Například v čistém XML není možné vyžadovat, aby hodnota atributu byla kladné celé číslo. Druhý typ pravidla definuje podrobnější omezení pro podřízené prvky (jako je jejich pořadí), než jaká jsou uvedena v DTD nebo dokonce schématech. XML například nemůže určit, že s prvním podřízeným prvkem by se mělo zacházet jinak než se zbytkem.
1.7.2 Příklad syntaxe XML
Protože MathML je založeno na XML, používá specifikace MathML terminologii XML. Data XML se skládají ze znaků Unicode (které zahrnují normální znaky ASCII), odkazů na entity (neformálně nazývané entity), jako je např.<, которые обычно представляют расширенные символы, и элементы, такие как
Prvky často obsahují další data XML, nazývaná jejich „obsah“ nebo „tělo“, mezi značkami „open“ a „end“, stejně jako v HTML. Nechybí ani „prázdné prvky“ jako např
Protože se v XML rozlišují velká a malá písmena, názvy prvků a atributů MathML rozlišují velká a malá písmena. Specifikace MathML pro čitelnost definuje většinu z nich malými písmeny.
Ve formální diskusi o značkách XML se rozlišuje mezi prvkem, jako je mrow, a značkami, které jej definují.
1.7.3 Podřízené prvky versus argumenty
Mnoho prvků MathML vyžaduje určitý počet podřízených prvků nebo dává podřízeným prvkům na konkrétní pozici další význam. Jak bylo uvedeno výše, tento typ omezení je specifický pro MathML a nelze jej specifikovat pomocí syntaxe a gramatiky XML. Když podřízený prvek daného prvku MathML tyto požadavky splňuje dodatečné podmínky, budeme o tom mluvit jako argument a ne o podřízený prvek zdůraznit specifičnost jeho použití. Všimněte si, že výraz "argument" se používá v tomto technickém smyslu, pokud není uvedeno jinak.
Některé prvky mají různé požadavky na počet nebo typ argumentů. Tyto dodatečné požadavky jsou popsány pro každý konkrétní prvek.
1.7.4 Hodnoty atributů MathML
Podle specifikace jazyka XML musí být atributy prvků zadány v jedné z následujících forem:
atribut-name="value"
atribut-name="value"
kde mezery kolem znaku "=" jsou volitelné.
Názvy atributů se v textu specifikace objevují jednoprostorovým písmem, stejně jako příklady.
Hodnoty atributů, které v MathML mohou být řetězcem libovolných znaků, musí být uzavřeny ve dvojitých ("") nebo jednoduchých ("") uvozovkách. Hodnota atributu může obsahovat typ uvozovek, které se nepoužívají k uzavření celé hodnoty.
MathML používá pro hodnoty atributů složitější syntaxi než obecná syntaxe XML specifikovaná MathML DTD. Tato dodatečná pravidla jsou pro aplikace MathML a jejich porušení je chybou MathML, ale nemohou být sledována procesory XML. Syntaxe hodnot pro prvky MathML je definována v tabulce atributů a následuje popis každého prvku pomocí níže popsané notace. Když aplikace MathML zpracovává hodnoty atributů, všechny mezery, kromě těch, které oddělují jednotlivá slova nebo čísla, jsou ignorovány. Znaková data mohou být zahrnuta do hodnot atributů přímo nebo pomocí referenčních entit.
Zejména znaky ", ", & a< могут быть включены в значения атрибутов MathML (когда это разрешено синтаксисом) с использованием сущностей ",",& и <, соответственно.
MathML DTD, deklaruje typy většiny hodnot atributů jako řetězec CDATA. To vám umožní zvýšit kompatibilitu se stávajícím softwarem založeným na SGML a XML a rozšířit seznam předdefinovaných hodnot. Stejná úvaha platí pro schémata XML.
1.7.4.1 Syntaktické zápisy používané ve specifikaci MathML
K popisu syntaxe specifické pro MathML pro platné hodnoty atributů používá tento dokument následující konvence a zápisy.
Notový zápis | Co dělá |
číslo | desetinné celé číslo nebo racionální číslo (řetězec číslic s jednou desetinnou čárkou), případně začínající znakem "-" |
nepodepsané číslo | desítkové celé číslo nebo reálné číslo, bez znaménka |
celé číslo | dekadické celé číslo, případně začínající znakem "-". |
kladné celé číslo | celé desítkové číslo, bez znaménka, nikoli 0 |
tětiva | libovolný řetězec (vždy plná hodnota atributu) |
charakter | jeden znak bez mezer nebo odkazující entita MathML; případně odděleny mezerami |
#rrggbb | barva ve formátu RGB; Tři páry hexadecimálních číslic v příkladu č. 5599dd definují podíl červené, zelené a modré na stupnici x00 až xFF, který vytváří jasnou azurovou. |
h-jednotka | horizontální jednotka délky (povolené jednotky jsou uvedeny níže) |
v-jednotka | vertikální jednotka délky (povolené jednotky jsou uvedeny níže) |
css-fontfamily | |
css-color-name | vysvětleno níže v podsekci CSS |
další slova kurzívou | vysvětleno v textu, pro každý atribut zvlášť |
formulář + | jednu nebo více instancí "formuláře". |
formulář* | žádný nebo více výskytů "form" |
f1 f2...fn | jedna instance každého formuláře, po sobě, volitelně oddělená mezerou |
f1 | f2 |... | fn | kteroukoli z výše uvedených forem |
volitelná instance "formuláře". | |
(formulář) | stejně jako právě forma |
neoznačená slova | slova zahrnutá doslovně v hodnotách atributu (pokud nejsou součástí vysvětlující fráze) |
znaky v uvozovkách | znaky doslovně zahrnuté v hodnotě atributu (například „+“ nebo „+“) |
Priorita operace, od nejvyšší po nejnižší:
formulář + nebo formulář *
f1 f2... fn (sekvence tvarů)
f1 | f2 |... | fn (jedna z forem)
Typ tětiva může obsahovat libovolné znaky, které jsou definovány v hodnotách atributů XML CDATA. V MathML nejsou žádná pravidla syntaxe tětiva může být součástí hodnoty atributu, nikoli celou hodnotou.
Sousední klíčová slova a čísla v hodnotách atributů musí být odděleny mezerami, s výjimkou identifikátorů jednotek následujících za čísly (jak je uvedeno v syntaxi znaků h-unit a v-unit). Mezery nejsou povinné, ale jsou povoleny mezi kterýmkoli z výše uvedených tokenů, s výjimkou (z důvodu kompatibility CSS) bezprostředně před identifikátory jednotek, mezi znaky a čísly „-“, mezi # a rrggbb nebo rgb.
Hodnoty pro číselné atributy, které určují rozměry a musí být závislé na aktuálním písmu, mohou být zadány v jednotkách spojených s písmem nebo v zadaných absolutních jednotkách (popsáno níže). Vodorovné rozměry jsou obvykle uvedeny v em a svislé rozměry v ex. Za číslem bezprostředně následují identifikátory em nebo ex. Například horizontální odsazení z operátoru "+" se obvykle zadává v ems, ačkoli mohou být použity i jiné jednotky. Jednotky související s písmem jsou preferovány před absolutními jednotkami, protože umožňují zvětšit nebo zmenšit velikost vykreslovaného prvku na základě aktuální velikosti písma.
U většiny číselných atributů jsou možné hodnoty omezeny na určitou podmnožinu, ostatní hodnoty nejsou chyby (pokud není uvedeno jinak), ale mapovač je zaokrouhlí nahoru nebo dolů na nejbližší platnou hodnotu. Sada platných hodnot může záviset na rendereru a není definována MathML.
Pokud může číselná hodnota podle syntaxe atributu obsahovat znaménko mínus („-“), jako je číslo nebo celé číslo, není chybou ji použít, když záporné hodnoty nejsou významné. Místo toho musí být hodnota zpracována aplikací, jak je popsáno v předchozím odstavci. Explicitní uvedení znaménka plus ("+") jako součásti číselné hodnoty je zakázáno, pokud není výslovně uvedeno v syntaxi (jako "+" nebo "+"), a jeho přítomnost může změnit význam hodnoty atributu (např. popsané v každém z těchto atributů).
Symboly h-unit, v-unit, css-fontfamily a css-color-name jsou diskutovány v následujících podsekcích.
1.7.4.2 Atributy s jednotkami
Některé atributy přijímají vodorovné a svislé rozměry jako čísla následovaná „identifikátorem jednotky“ (často označovaným jako „jednotka“). Symboly syntaxe h-unit a v-unit odkazují na horizontální a vertikální rozměry. Možné měrné jednotky a velikosti, na které se vztahují, jsou uvedeny v tabulce níže; jsou stejné pro horizontální a vertikální rozměry, ale syntaktické symboly jsou odlišné (jako připomínka směru, který používají).
Identifikátory jednotek a jejich sémantický význam jsou převzaty z. Syntaxe čísla následovaného identifikátorem v MathML však není totožná se syntaxí v CSS, protože čísla v CSS nemohou končit desetinnou čárkou a mohou začínat znaménkem „+“.
Platné horizontální a vertikální jednotky v MathML:
Typografické jednotky em a ex jsou dále diskutovány v části "Další poznámky".
% je "relativní jednotka"; když je hodnota atributu uvedena jako n% (pro libovolnou číselnou hodnotu n), je hodnota definována jako výchozí hodnota vynásobená n dělená 100. Výchozí hodnota (nebo způsob, jak ji lze získat, pokud se nejedná o konstantu) je popsán v atributové tabulce pro každý prvek a jeho význam je popsán v následné dokumentaci atributů. (Prvek mpadded má svou vlastní syntaxi pro % a neumožňuje jeho použití jako identifikátor jednotky)
Pro konzistenci s CSS mohou být jednotky délky v MathML volitelné. V tomto případě je znak jednotky v syntaxi atributu uzavřen v hranatých závorkách, například číslo . Význam hodnoty atributu bez jednotek je popsán v dokumentaci pro každý atribut; obvykle se zadané číslo vynásobí výchozí hodnotou. (V tomto případě je číslo nnn bez jednotky ekvivalentní číslu nnn vynásobenému 100 a se znakem %. Například
Výjimečně (také pro kompatibilitu s CSS) číselné hodnoty nula nevyžadují identifikátor jednotky, i když to syntaxe vyžaduje. V tomto případě nezáleží na přítomnosti nebo nepřítomnosti identifikátoru jednotky, protože jakékoli číslo vynásobené 0 je 0.
Pro většinu atributů v této specifikaci jsou jednotky použité v typografické sadě zvoleny jako standardní měrné jednotky; není-li uvedena konkrétní hodnota veličiny, jsou standardní měrné jednotky obvykle uvedeny v tabulce nebo v popisu atributu. Nejčastěji používané jednotky jsou em nebo ex. Lze však použít jakoukoli jednotku, pokud není v popisu konkrétního atributu uvedeno jinak.
Všimněte si, že některé atributy, jako je framepacing in
Je obvyklé používat jednotky ex hlavně pro vertikální rozměry a em pro horizontální rozměry, i když to není podmínkou. Tyto měrné jednotky závisí na písmu použitém k zobrazení prvku, v jehož atributech jsou použity, a na jeho velikosti. Je tedy třeba je interpretovat po atributy jako fontfamily a fontsize, pokud se vyskytují na stejném prvku, protože změna aktuálního fontu nebo jeho velikosti může změnit velikost jednotek.
Definice délky každé měrné jednotky (ale ne syntaxe MathML pro hodnoty délky) je stejná jako v CSS, kromě toho, že písmo nastavuje speciální hodnoty pro em a ex, které se liší od hodnot definovaných v CSS (velikost písma a "x" - výška).
1.7.4.3 Atributy kompatibilní s CSS
Některé z níže uvedených atributů MathML odpovídají vlastnostem zobrazení textu definovaným v CSS1. To se provádí tak, aby vykreslovací moduly mohly při definování výchozích hodnot atributů dotazovat prostředí CSS na příslušné vlastnosti.
Schopnost definovat vlastnosti stylu pomocí atributů MathML a CSS má také nevýhody. Přinejmenším je to matoucí a v nejhorším to způsobí, že rovnice neúmyslně změní význam při změně CSS pro celý dokument. Proto jsou tyto atributy zastaralé. MathML 2.0 zase zavádí čtyři nové atributy matematického stylu. Tyto atributy používají booleovské hodnoty k lepšímu vyjádření abstraktních kategorií symbolů používaných v matematice a poskytují jasné oddělení mezi MathML a CSS.
Následující tabulka mapuje zastaralé atributy stylu MathML 1.01 na jejich protějšky CSS:
Pořadí, ve kterém jsou atributy a šablony stylů zpracovávány.
CSS nebo podobné šablony stylů mohou specifikovat změny vlastností zobrazení prvků MathML. Protože vlastnosti zobrazení mohou být změněny jak atributy prvku, tak rendererem, je nutné určit pořadí, ve kterém ke změnám dochází z různých zdrojů. Příkladem automatického vyjednávání je situace s velikostí písma. V případě "absolutních" změn, jako je nastavení nové hodnoty vlastnosti nezávisle na staré hodnotě (na rozdíl od "relativních" změn, jako je zvýšení nebo násobení číslem), jsou účinné pouze nejnovější absolutní změny, takže zdroj změn s nejvyšší prioritou musí být zpracován jako poslední.
V případě CSS by pořadí, ve kterém jsou zpracovávány změny ovlivňující vlastnosti zobrazení prvku MathML z různých zdrojů, mělo být: (změněno jako první; nejnižší priorita)
Automatické změny vlastností nebo atributů na základě typu nadřazeného prvku a pozice prvku v nadřazeném prvku (jak je uvedeno výše o změnách velikosti písma podle úrovně skriptu; takové změny obvykle aplikuje samotný nadřazený prvek před vykreslením vlastností zobrazení na aktuální prvek
Z čtenářských stylů: styly, které ne prohlásil za "důležité"
Explicitně nastavené atributy aktuálního prvku MathML
Ze stylů čtenáře: styly, které jsou deklarovány jako "důležité" (poslední úprava; nejvyšší priorita).
Všimněte si, že pořadí změn provedených šablonami stylů CSS je definováno v samotném CSS (toto je pořadí definované CSS2). Následující vysvětlení platí pouze pro případ, kdy dochází ke změnám v tomto pořadí kvůli přesné specifikaci atributů MathML.
Vysvětlení: Atributy zobrazení v MathML jsou podobné atributům zobrazení HTML (jako je align), které musí být podle pořadí definovaného v CSS zpracovány se stejnou prioritou. Navíc tato volba přednosti umožňuje čtenářům rozhodnout se definováním stylů CSS jako „důležitých“, které z jejich nastavení by mělo přepsat explicitní nastavení MathML. Vzhledem k tomu, že výrazy MathML sestávající z prvků obsahu nebo prezentace jsou primárně určeny k vyjádření významu a „grafické znázornění“ (pokud existuje) by v tom mělo napomáhat (ale není důležité samo o sobě), je pravděpodobné, že čtenáři budou chtít své preference stylu dostal přednost. Hlavní výjimkou je situace, kdy atributy zobrazení změní význam výrazu.
1.7.4.4 Výchozí hodnoty atributů
Výchozí hodnoty atributů MathML jsou obvykle uvedeny spolu s podrobným popisem odpovídajícího prvku. Výchozí hodnoty v tabulkách atributů v normálním písmu jsou přesné (pokud to nejsou jasná vysvětlení), pasáže psané kurzívou popisují, jak lze výchozí hodnoty vypočítat.
Výchozí hodnoty deklarované jako zděděné jsou převzaty z vykreslovacího prostředí, jak je popsáno pro mstyle, nebo v některých případech popsaných samostatně z hodnot jiných atributů okolních prvků nebo z konkrétní části těchto hodnot. Vždy se používá hodnota, kterou lze přesně zadat, pokud je známa; nikdy nezávisí na obsahu nebo atributech daného prvku, pouze na jeho prostředí. (Jeho význam při použití však může záviset na těchto atributech nebo obsahu)
Výchozí hodnoty popsané jako automatické musí vykreslovač vypočítat takovým způsobem, aby vytvořil vysoce kvalitní obraz. Způsob, jak toho dosáhnout, není obvykle specifikován ve specifikaci MathML. Vždy se používá hodnota, kterou lze přesně zadat, pokud je známa; ale většinou záleží na obsahu prvku a případně na prostředí displeje.
Další popisy výchozích hodnot psané kurzívou, které se vyskytují v tabulkách atributů, jsou vysvětleny samostatně pro každý atribut.
Jednoduché nebo dvojité uvozovky, které musí být uzavřeny v hodnotách atributu umístěného v úvodní značce XML, nejsou uvedeny v syntaxi hodnot v tabulce atributů, ale jsou uvedeny v textu příkladů.
Všimněte si, že obecně neexistují žádné hodnoty, které by bylo možné přesně přiřadit k atributům MathML a napodobovat efekt jejich absence pro atributy, které jsou zděděné nebo automatické. Určení "zděděno" nebo "automatické" rozhodně nebude fungovat a není vůbec povoleno. Navíc i pro atributy zobrazení (pro které jsou zde uvedeny konkrétní výchozí hodnoty) je nutné použít prvek mstyle ke změně prvků, které obsahuje. Proto MathML DTD definuje většinu výchozích hodnot atributů prezentace jako #IMPLIED, což zabraňuje procesorům XML přidávat k těmto atributům jakékoli speciální výchozí hodnoty. Schéma MathML funguje stejným způsobem.
1.7.4.5 Hodnoty atributů v MathML DTD
V XML DTD mohou být povolené hodnoty atributů definovány jako generické řetězce nebo mohou být omezeny různými způsoby (výčtem možných hodnot nebo určením konkrétního datového typu). Volba typu atributu XML ovlivňuje rozsah, v jakém lze provést ověření pomocí DTD.
MathML DTD definuje formální typy atributů XML pro všechny atributy MathML, včetně výčtů platných hodnot v některých případech. Obecně je však MathML DTD poměrně laxní, často definuje hodnoty atributů jako řetězce; to je provedeno tak, aby bylo kompatibilní s SGML analyzátory, které umožňují, aby více atributů jednoho prvku MathML mělo stejnou hodnotu (jako je pravda a nepravda), a aby bylo možné rozšířit seznam předdefinovaných hodnot.
Současně, i když lze hodnotu atributu definovat jako řetězec v DTD, v MathML jsou platné pouze určité hodnoty, jak je popsáno výše a ve zbývající části této specifikace. Mnoho atributů například vyžaduje číselné hodnoty. Následující část popisuje platné hodnoty atributů pro každý prvek. Nedostatek rigidity v DTD však neznamená, že tyto požadavky nejsou součástí MathML nebo že je nemůže vynutit konkrétní renderer MathML.
Kromě toho je MathML DTD poskytován jako pohodlí; ačkoli je zamýšlena plná kompatibilita s textem specifikace, v případě rozporu platí text.
1.7.5 Atributy společné všem prvkům MathML
Pro usnadnění použití stylizačních mechanismů, jako jsou XSLT a CSS2, mají všechny prvky MathML kromě atributů popsaných pro každý prvek také atributy class, style a id. Vykreslovací moduly MathML, které nepodporují CSS, mohou tyto atributy ignorovat. MathML definuje hodnoty těchto atributů jako generické řetězce, i když pro ně stylové enginy mají přísnější syntaxi. V MathML je tedy pro ně platná jakákoliv hodnota.
Aby byla zajištěna kompatibilita s propojovacími mechanismy, mají všechny prvky MathML atribut xlink: href.
Všechny prvky MathML mají také atribut xref pro použití v paralelním značkování. id se také používá v tomto kontextu.
Každý prvek MathML, jako dědictví z MathML 1.0, také přijímá zastaralý atribut other, který měl předat nestandardní atributy bez porušení MathML DTD. Vykreslovací moduly MathML jsou povinny zpracovat tento atribut pouze v případě, že reagují na všechny nestandardní atributy MathML. Použití druhého atributu se však důrazně nedoporučuje, protože v MathML existují jiné způsoby, jak sdělit konkrétní informace.
1.7.6 Sbalení mezer ve vstupu
MathML ignoruje prázdné znaky, které se vyskytují mimo tokeny. Znaky jiné než mezery zde nejsou povoleny. Znaky mezer vyskytující se v obsahu tokenů jsou na koncích odstraněny, to znamená, že jsou odstraněny všechny znaky mezer na začátku a konci obsahu. Prázdné znaky v obsahu prvků MathML jsou sbaleny kónicky, to znamená, že každá sekvence 1 nebo více takových znaků je nahrazena 1 (někdy nazývaným znakem null).
V MathML, stejně jako v XML, bílé znaky označují jednoduchou mezeru, tabulátor, nový řádek nebo nový řádek, tedy znaky s kódy Unicode U+0020, U+0009, U+000A, U+000D.
Například,
ekvivalentní
Autoři, kteří si přejí umístit prázdné znaky na začátek nebo konec obsahu tokenu nebo sekvenci více než jednoho prázdného znaku, aby nebyly ignorovány, musí použít jiné nezobrazitelné bílé znaky. Například porovnat
Věta 1:
Když je zobrazen první příklad, nejsou žádné mezery před slovem "Věta", jedna mezi "Věta" a "1: " a žádná za "1: ". Ve druhém příkladu se zobrazí jedna mezera před slovem "Věta", dvě mezery před "1: " a žádná za "1: ".
Všimněte si, že atribut xml: space nelze v této situaci použít, protože procesory XML předávají prázdné znaky v tokenech procesoru MathML; k odstranění dochází podle pravidel zpracování MathML.
Pro bílé znaky vyskytující se mimo obsah tokenů mi, mn, mo, ms, mtext, ci, cn a anotací je nutné použít prvek mspace, na rozdíl od prvku mtext obsahujícího pouze prázdné znaky.
2. Možnosti moderních prohlížečů při práci s MathML
Jako testovací případ demonstrující schopnosti prohlížečů byla vytvořena jednoduchá XHTML stránka obsahující příklady obou značek. Popisujeme hlavní požadavky na něj. Nejprve to musí být platný dokument XHTML, tj.
být platným xml dokumentem;
kořenový prvek musí být prvek html ve jmenném prostoru XHTML, jako je tento:
"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd">
Fragmenty MathML musí patřit do jmenného prostoru MathML, například:
Testovací případ, který se používá níže: test. xhtml.
2.1 Mozilla a Firefox
Použitá verze: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv: 1.7 5) Gecko/20041107 Firefox/1.0.
Mozilla a Firefox postavené na stejném jádru mají vestavěné možnosti vykreslování značek MathML. Pravda, zatím jsou omezeny pouze na podporu pro označení zobrazení. V našem testovacím případě se tedy fragment označení zobrazení zobrazil správně, což se o označení obsahu říci nedá.
Řešením tohoto problému může být použití speciálních XSLT stylů "XSLT stylesheets for MathML". Tento přístup je možný, protože podpora pro transformace XSLT je zabudována do prohlížeče. Chcete-li to provést, musíte si stáhnout sadu stylů XSLT a v prvním řádku naší stránky uvést odkaz na soubor záhlaví mathml. xsl:
xml-stylesheet type="text/xsl" href="mathml. xsl"? >
Z bezpečnostních důvodů umožňuje Mozilla styly XSLT umístěné v jiné doméně zdrojového zobrazení MathML se zvýrazněním výběru. Pravda, při použití content markup a XSLT stylů neuvidíme zdrojový kód, ale výsledek transformace.
Mezi další funkce patří integrace s vyhledávači. Když je vybrán fragment vzorce, kontextová nabídka vám umožní odeslat dotaz do vyhledávače.
Ale zatím je to rezerva do budoucna, protože takové hledání zatím nepřineslo výsledky.
2.2 Microsoft Internet Explorer
Použitá verze: 6.0.2800.1106 (SP1; Q867801; Q823353; Q833989)
Prohlížeč Microsoftu nemá vestavěnou podporu pro MathML. Pro správné zobrazení matematických vzorců můžete použít volně distribuovaný plugin MathPlayer.
Kromě samotného zobrazení matematických značek umožňuje rychle kopírovat zápis MathML. Pokud si přejete, můžete vzorec pro lepší přehlednost zvětšit:
Mezi nedostatky je třeba poznamenat nemožnost vybrat nebo zkopírovat fragment matematického výrazu. Neexistuje také žádný způsob (jako v Mozille) správně zkopírovat vzorec s okolním textem.
2.3 Opera
Použitá verze: 7.54u1 (Build 3918; Platforma Win32; Systém Windows 2000; Java není nainstalována).
Tento prohlížeč v této fázi svého vývoje nemá schopnost správně zobrazovat značky MathML.
Seznam použité literatury
1. Dorofeev A.V., Fedotov A.M. Elektronické publikace v prostředí internetu a mnohonásobnost kódování ruského jazyka // Computational technologies, 1997, v.2, N 3, s.31-44.
2. Oleinik O.V., Tolkacheva E.M., Fedotov A.M. Elektronické edice a prezentace matematických textů na WWW // Computational technologies, 1997, v.2, N 3, s.60-67.
3. Shokin Yu.I., Fedotov A.M., Znamensky S.V. Elektronické publikace a problémy mnohosti kódování ruského jazyka // Informační technologie a výpočetní systémy, 1997, N 2, s. 90-101.
4. Znamensky S.V. Standardizace ruského TeXu: utopie nebo nevyhnutelnost // Computational technologies, 1997, v.2, N 3, s.51 - 59.
5. Galaktionov V.V. Extensible Mark-up Language (XML): Průmyslový standard, který definuje novou generaci internetové softwarové architektury. Komunikace JINR, Р10-2000-44, Dubna, 2000.
6. Mityunin V.A. Přehled nástrojů pro publikování a prohlížení matematických dokumentů na internetu - http://mathmag. spbu.ru/article/4/
7. Matematika na webu: Zpráva o stavu – http://www.dessci.com/ webmath /status/
8. Včetně matematického zápisu na webových stránkách – http://mathforum.org/typeseting/
9. MathML 1.01 – http://www.w3.org/TR/REC-MathML/
10. MathML 2.0 – http://www.w3.org/TR/MathML2/
S rozšiřováním globálních počítačových sítí (zejména internetu) bylo nutné do ní umisťovat mimo jiné i matematické texty.
Jazyk MathML je podmnožinou jazyka XML (např X napínatelný M arkup L anguage - Extensible Markup Language), který se často používá k vytváření dalších jazyků. Toto použití XML je dnes zcela přirozené a dobře se osvědčilo v jiných případech, kdy použití HTML k přenosu nových typů dat narazilo na omezení formátu. K dnešnímu dni W3C zveřejnilo 2. vydání verze 2.0 jazykové specifikace MathML, která naznačuje životaschopnost a udržitelnost projektu.
Značkovací jazyky založené na XML:
- Wireless Markup Language (WML): datový formát pro WAP (bezdrátová) zařízení (mobilní telefony);
- Jazyk synchronizované multimediální integrace (SMIL):
- Určuje dočasné rozvržení, vzhled atd. pro multimediální prezentace;
- Určuje pořadí, ve kterém jsou multimediální soubory přehrávány;
- K prohlížení je nutný přehrávač kompatibilní se SMIL (AMBULANT, MS IE6);
- Návod a příklady: http://www.multimedia4everyone.com/
- Scalable Vector Graphics (SVG): pro popis dvourozměrné vektorové grafiky;
- Mathematical Markup Language (MathML): popsat matematický zápis (vzorce);
- Chemical Markup Language (CML): pro reprezentaci chemických vzorců;
- jiný.
Mezi cíle stanovené pracovní skupinou W3C Mathematics Working Group při vytváření MathML byly:
- Poskytování kódování matematických materiálů pro komunikaci všech úrovní vzdělávacího a vědeckého typu;
- poskytování kódování jak matematické symboliky, tak jejích významů;
- podpora vytváření šablon a dalších technik matematických úprav;
- zajištění převodu do jiných matematických formátů jak čistě prezentačního a sémantického charakteru, tak z těchto formátů do vytvořeného matematického značkovacího jazyka. Výstupní formáty by měly zahrnovat prostředky pro zobrazování grafických informací, syntézu řeči, reprezentaci textu ve formě vhodné pro vstup do systémů počítačové algebry, kompatibilitu s jinými jazyky pro popis matematických textů, jako je TAR, schopnost zobrazovat „čistý“ text ( tj. bez matematických symbolů a výrazů), možnost tisknout texty v různých formách, včetně výstupu v Braillově písmu. Současně mohou konverze mezi různými formáty vést ke ztrátě informací;
- schopnost přenášet informace s přihlédnutím k vlastnostem konkrétních vizualizačních programů;
- podpora efektivních procesů procházení dlouhých matematických výrazů;
- poskytování rozšiřitelnosti (způsoby, které nejsou předem známy).
Obecným principem používání MathML je, že matematické konstrukce jsou vnořeny do běžného HTML dokumentu a (pokud prohlížeč nebo speciální program podporuje tuto specifikaci) jsou adekvátně reprodukovány, když je dokument stažen ze sítě.
První věc, se kterou se musíte v MathML vypořádat a co odlišuje tento značkovací jazyk od jeho analogů, je použití dvou způsobů kódování výrazů. Jeden z nich je založen na přímém přenosu syntaxe vzorce ( prezentace), druhý naopak odráží sémantiku výrazu ( obsah). Prezentační značky popisují matematickou symboliku s výrazy, které jsou vytvořeny pomocí některých schémat odvození a určují způsoby, jak umístit podvýrazy, jako jsou zlomky, horní a dolní indexy. Sémantické značení popisuje matematické objekty a funkce, kde pro každý uzel je sestaven strom výrazů podle nějakého specifického schématu a větve tohoto stromu odpovídají podvýrazům.
V současné době lze webové stránky vytvořené pomocí MathML prohlížet v následujících prohlížečích (znak „+“ znamená, že fungují i novější verze):
- Okna:
o IE 5.0 s pluginem Techexplorer
- Macintosh:
o IE 5.0+ s pluginem Techexplorer
Mozilla 0.9.9+
- Linux/Unix:
o Netscape 6.1 s pluginem Techexplorer
Mozilla 0.9.9+
o Amaya, všechny verze (pouze Presentation MathML)
Všechny prvky MathML jsou rozděleny do tří skupin: prvky zastoupení, Prvky obsah a rozhraní Prvky.
Prvky pohledu popisují vizuálně orientovanou dvourozměrnou strukturu matematického zápisu. Například prvek mrow obvykle se používá k označení vodorovné řady částí výrazu a prvku msup, který označuje horní index. Každý prvek zobrazení obvykle odpovídá jednomu typu schématu zápisu, jako je řádek, horní index, dolní index a tak dále. Jakýkoli vzorec se skládá z částí, které se mohou skládat z nejjednodušších prvků, jako jsou čísla, písmena nebo jiné symboly.
Nejdůležitější prvky reprezentace jsou mi , mn a mo , které se používají k reprezentaci identifikátorů, čísel a operátorů. Tyto prvky jsou obvykle zobrazeny v různých stylech: čísla jsou v latince, identifikátory jsou kurzívou a kolem operátorů je ponecháno nadbytečné bílé místo.
Z hlediska značek je většina prvků MathML definována otevírací a zavírání tagy, které omezují obsah prvku. Některé prvky, jako jsou provozní značky (
Podívejme se podrobněji na některé prvky nezbytné pro uspořádání matematických vzorců, přičemž jako příklad použijeme prezentační značky.
Tokeny (prvky tokenu) představují jednotlivé znaky, jména, čísla, označení atd. V zásadě mohou mít tokeny jako obsah pouze znaky.
MathML ignoruje prázdné znaky, které se vyskytují mimo tokeny. Znaky jiné než mezery zde nejsou povoleny. Znaky mezer vyskytující se v obsahu tokenů jsou na koncích odstraněny, to znamená, že jsou odstraněny všechny znaky mezer na začátku a konci obsahu. Znaky mezer v obsahu prvků MathML jsou kanonicky sbaleny, to znamená, že každá sekvence 1 nebo více takových znaků je nahrazena 1 (někdy nazývaným znakem null).
Hlavní prvky
Indexy
Některé matematické operace, které lze s tagem použít
Podívejme se na některé příklady vzorců v MathML.
1) sin 2 α + cos 2 α \u003d 1
Řecké písmeno α se získá pomocí kódu α (připomeňme, že se používá Unicode).
Výsledek
Připomínáme také, že abyste mohli pracovat s MathML v Internet Exploreru, musíte si nainstalovat MathPlayer.
Každý soubor obsahující značky MathML musí mít řádky před záhlavím dokumentu
Kromě toho se každý kód MathML otevře se značkou
a uzavřena štítkem.
Zvažte prvky pro uspořádání tabulek a matic.
Příklad 2
V případě potřeby je nutné vyhledat různé matematické symboly v tabulce kódování Unicode.
Příklad.
Příkladů s integrály lze nalézt poměrně značné množství, takže se jimi zde nebudeme zdržovat, doporučujeme čtenáři seznámit se s příklady na uvedeném zdroji.
Jak bylo uvedeno výše, MathML umožňuje prezentační a sémantické reprezentace. Zde jsme se zaměřili na prezentační jako nejstravitelnější a nejpoužívanější. Abychom si však dali alespoň nějakou představu o druhé možnosti, zvažte malý ilustrativní příklad a napište jej ve dvou vyobrazeních.
Příklad. x 2 - 6x + 9 = 0
Psaní vzorců v MathML je samozřejmě poměrně zdlouhavý úkol a vyžaduje určité úsilí. Avšak ti, kteří v LaTeXu pracovali dostatečně dlouho, příliš rozdílů nezaznamenají. Častěji však uživatel upřednostňuje použití různých nástrojů. Jmenujme alespoň některé.
Za prvé, matematické balíčky, řekněme Mathematica nebo Maple, vám umožňují ukládat vzorce v nich napsané ve formátu MathML.
Tento zdroj používá skript Java ASCIIMathML.js (ver 2.0; září 2007; http://www1.chapman.edu/~jipsen/mathml/asciimath.html, autor Peter Jipsen) spuštěný na počítači uživatele, který se načte, když stažením ukázkové stránky http://www1.chapman.edu/~jipsen/mathml/asciimathdemo.html . Zejména tento zdroj lze tedy využít lokálně: stačí uložit zmíněnou ukázkovou html stránku a můžete převádět jednoduché vzorce bez připojení k internetu.
Závěrem poznamenáváme, že MathML jako značkovací nástroj je také vhodný pro generování různých matematických úloh (viz příklady výše). Zároveň lze k programování využít například JavaScript, uživatel si pak bude moci vygenerovat libovolný počet možností úloh podle svého uvážení. Můžete také zajistit generování odpovědí na všechny úkoly, což je velmi jednoduché.
Očekáváme, že čtenářovo seznámení s prostředky uspořádání matematických textů nekončí a následně si bude moci samostatně vybrat nástroj, který ho zajímá, a možná i aplikovat popsané technologie v praxi.
Literatura a internetové zdroje
Před HTML5 bylo používání vzorců skutečnou bolestí v zadku. Posuďte sami: v roce 2005 bylo nutné mít po ruce buď speciální prohlížeč, nebo rozdělit text do pořádného HTML a vložit z obrázků či PDF. Vyhledávání a další operace editace a/nebo výstupu na obrazovku/papír byl nejednoznačný úkol, kterému byly věnovány celé monografie.
V roce 2012 už to bylo jednodušší. Nyní můžete připojit potřebné pluginy (Firemath pro FireFox a Daum Equation Editor pro Chrome). Ale nejednoznačnost standardů (a podpory) nás vlastně donutila napsat stejný článek pro každý z prohlížečů (a pro jejich verze). Nebo pozdravte uživatele kouzelným pozdravem „Váš prohlížeč je třeba aktualizovat/přidat rozšíření“.
Nepříjemný? - Ano! Bylo časově náročné najít univerzální řešení? - Ano! Nutí vás přemýšlet, jaký typ nahrávky je lepší (prezentace nebo obsah), jaký konvertor použít (a těch známých je jen asi tucet)? - ANO! ANO! ANO!
V důsledku toho se publikační práce změnila ve vývoj dvou nebo tří značkovacích lexikonů a studium provozu alespoň jednoho programu transkodéru.
Nyní, s příchodem HTML5, jsou věci mnohem jednodušší. Má nový kontejner