Mendelova univerzita v Brně Provozně ekonomická fakulta
Možnosti konverze matematických objektů v soudobém programovém vybavení Bakalářská práce
Adam Hanuš
Vedoucí práce:: RNDr. Tomáš Hála, Ph. D. Brno 2013
MÍSTO TÉTO STRANY VLOŽ ORIGINÁL ZADÁNÍ PRÁCE
Děkuji RNDr. Tomáši Hálovi za vedení, podporu a cenné připomínky při tvorbě této práce. Poděkování také patří mým nejbližším za skvělé studijní zázemí, které mi poskytují.
Prohlašuji, že jsem tuto práci vyřešil samostatně s použitím literatury, kterou uvádím v seznamu.
V Brně dne 20. května 2013
5
Abstract H, A. Conversion options of the mathematical objects in the contemporary software. Bachelor thesis. Brno, 2013. This bachelor thesis presents the current possibilities of conversion of the mathematical objects. There is a compilation of the contemporary software for a mathematical notation and furthemore, there are the results of conversion with the quality valorization of conversion between several formats, that support displaying and writting mathematics. The most important part of the thesis is the implementation of the converter of the mathematical objects, using a XSL style and an available freeware XSL processors. Also, it is focused on describtion of options of the math objects display in MathML and TeX languages.
Key words: conversion, converter, MathML, mathematical objects, TeX, XSL, XSLT
6
Abstrakt H, A. Možnosti konverze matematických objektů v soudobém programovém vybavení. Bakalářská práce. Brno, 2013. Tato bakalářská práce se zabývá možnostmi konverze matematických objektů. V dokumentu je sestaven přehled soudobého programového vybavení pro zápis matematiky a taktéž jsou zde provedeny konverze s hodnocením kvality konverze mezi různými formáty, které podporují zobrazení a zápis matematických objektů. Nejdůležitějším bodem práce je implementace konvertoru matematických objektů za pomocí stylu XSL a veřejně dostupných procesorů XSL. Práce také popisuje způsoby zobrazení matematických objektů v jazyce MathML a TeX.
Klíčová slova: konverze,konvertor, MathML, matematické objekty, TeX, XSL, XSLT
7
Obsah 1
Úvod a cíl práce 1.1 1.2
2
Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Teoretická východiska
2.1 2.2
11
Historie matematického zápisu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formáty pro zápis matematiky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Textový formát MS Word (DOC) . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Textový formát Office Open XML (DOCX) . . . . . . . . . . . . . . . . 2.2.3 Open Document Format (ODT, ODF) . . . . . . . . . . . . . . . . . . . . . 2.2.4 OpenOffice Math Format (SXM) . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5 Textový formát (TXT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6 MathML (MML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7 Extensible Markup Language (XML) . . . . . . . . . . . . . . . . . . . . . 2.2.8 TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.9 Postscript (PS), JPG, GIF, PNG a jiné grafické formáty . . . . . . . 2.2.10 Portable Document Format (PDF) . . . . . . . . . . . . . . . . . . . . . . . . 2.2.11 HyperText Markup Language (HTML) . . . . . . . . . . . . . . . . . . . . 2.2.12 Rich Text Format (RTF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.13 Starmath formát (SMF) a podobné formáty kancelářských balíku založených na OpenOffice . . . . . . . . . . . . 2.2.14 Standard Generalized Markup Language (SGML) . . . . . . . . . . . 2.3 Programové vybavení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Apache OpenOffice.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 LibreOffice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Microsoft Office . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4 CAS nástroje (Maple, Maxima, Mathematica,…) . . . . . . . . . . . . 2.3.5 Moodle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.6 DragMath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.7 MathCast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.8 Formula Sheet Equation Editor . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.9 Lyx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.10 MathMagic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.11 MathType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13 13 14 14 15 15 15 16 16 17 17 18 18 19 19 19 20 20 20 21 21 21 21 22 22 22 23 23 23
8
2.3.12 2.3.13 3
Google Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Panel pro matematický zápis ve Windows 7 . . . . . . . . . . . . . . . 24
Konverze 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13
4
Určení kvality konverze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Microsoft Office 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OpenOffice.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Google Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editor Math balíku OpenOffice.org (LibreOffice) . . . . . . . . . . . . . . . . MathType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MathCast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MathMagic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DragMath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lyx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formula Sheet Equation Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Panel pro matematický zápis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Závěr a doporučení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hlubší souvislosti matematické sazby 4.1
TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Srovnání TEXu a LATEXu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.2 Ukázky matematických prostředí . . . . . . . . . . . . . . . . . . . . . . . . 4.1.3 Tvorba matematického seznamu . . . . . . . . . . . . . . . . . . . . . . . . 4.1.4 Mezera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.5 Text v matematické formuli . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.6 Písmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7 Základní matematické konstrukce . . . . . . . . . . . . . . . . . . . . . . . 4.1.7.1 Matematické akcenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7.2 Aritmetické operace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7.3 Zlomky a závorky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7.4 Indexy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7.5 Kombinační čísla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7.6 Integrály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7.7 Mocniny a odmocniny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 MathML a HTML a jeho podpora v prohlížečích . . . . . . . . . . . . 4.2.2 Syntax a sémantika MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 Prezentační zápis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25 25 26 27 28 29 31 32 33 35 36 37 37 37 39 39 40 40 42 42 43 43 44 44 45 45 46 47 47 47 48 48 49 50
9
5
4.2.4 Základní matematické konstrukce . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.1 Základní aritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.2 Zlomek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.3 Odmocniny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.4 Indexy a exponenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.5 Text v matematické formuli . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.5 Významové značení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.6 Spojení prezentačního a významového značení . . . . . . . . . . . . .
52 52 52 54 55 55 56 59
Konvertor matematických objektů
61
5.1
Dostupná technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XML a MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Použití XPath v XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XSLT procesory a parsery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Podpora XSLT v prohlížečích . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Jak to funguje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Jmenný prostor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Elementy XSL souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Módy šablon a priorita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Metodika řešení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Šablona pro zlomek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Šablona pro zmenšený zlomek . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Šablona pro index a exponent . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.4 Šablona pro integrál s mezemi na místě indexu a exponentu . . 5.3.5 Šablona pro integrál s mezemi nad a pod znakem integrálu . . . 5.3.6 Šablona pro matice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.7 Šablona pro kombinační číslo . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.8 Šablona pro různé druhy závorek . . . . . . . . . . . . . . . . . . . . . . . . 5.3.9 Šablona pro goniometrické funkce . . . . . . . . . . . . . . . . . . . . . . . 5.3.10 Šablona pro akcenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.11 Šablona pro operátory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.12 Šablona pro mezery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Implementace konvertoru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5
6
Diskuze
61 61 62 62 63 63 64 64 65 66 66 67 68 68 68 69 69 69 69 70 70 70 71 71 73
10
7
Závěr
75
8
Literatura
76
Literatura
76
10 Seznam tabulek
81
11 Seznam obrázků
82
12 Přílohy
83
12.1
Screenshoty testovaných programů
. . . . . . . . . . . . . . . . . . . . . . . . . . 83
Úvod a cíl práce
11
1 Úvod a cíl práce 1.1 Úvod V době neustálého rozvoje počítačových technologií je orientace ve všech dostupných programech a formátech docela složitou záležitostí. Přitom to není tak dávno, kdy pro jeden účel člověk používal vždy jen několik programových nástrojů. Skoro stejně tak dávno je i od doby, kdy člověk začal přemýšlet, jak co nejlépe zapsat matematické objekty pomocí počítačů. Jedním z nejstarších pokusů je sázecí systém TEX, který se narozdíl od např. značkovacího jazyka ISO 12038 nebo unixového preprocesoru eqn používá dodnes a rozhodně jeho popularita nijak výrazně neklesá. Žádné z novějších aplikací totiž zatím nepřinesly lepši typografický výstup nebo tak "texovsky" úžasnou přizpůsobitelnost a programovatelnost. Na druhou stranu je celkově trochu složitější na pochopení z důvodu neinteraktivnosti. O nic lepší uživatelskou přívětivost nemá ani jazyk konsorcia W3C nazvaný MathML či koncept OpenMath. Prvně jmenovaný se dostal do povědomí lidí už v devadesátých letech a nyní patří společně s TEXem ke špičce nástrojů pro tvorbu matematiky. Většina lidí je dnes zvyklá na editační logiku kancelářských balíků typu MS Office a jejich WYSIWYG rozhraní. Důvodem úspěchu těchto druhů formátů je následování trendu vývojářů spočívající v co největším zjednodušování a zpřístupnění masám. Daní za to je ne příliš přesvědčivý grafický výsledek a řada dalších problémů nejen ve věci konverze. Tato práce poukazuje na dostupné formy zápisu matematiky. Snaží se rozebrat výhody a nevýhody jednotlivých formátů a konverze mezi nimi, proniknout hlouběji do sazby matematiky v systémech TEX a MathML a na základě literárních opor, vlastního výzkumu a bádání implementovat konvertor matematických objektů.
1.2 Cíl práce Hlavním cílem této práce je vytvořit konvertor matematických objektů. Nutným prostředkem ke splnění požadavku je prozkoumání současných programových nástrojů na tvorbu matematických objektů. Dále také určení kvality konverze u některých vybraných programů a formátů a srovnání jejich přesnosti v interpretaci matematiky. Práce se především soustředí na systémy TEX a MathML, jejichž formáty budou
Úvod a cíl práce
12
použity v implementační části práce a analyzuje také problematiku zápisu matematiky v souvislosti se zobrazením na webu. Bakalářská práce také v souvislosti s řešením praktické části podrobněji zkoumá transformační možnosti formátu XML a současné nástroje k tomu potřebné. Jsou zde uvedeny obecně platné postupy pro tvorbu matematických rovnic, tudíž může práce z části sloužit jako jednodušší manuál k jejich tvorbě.
Teoretická východiska
13
2 Teoretická východiska 2.1 Historie matematického zápisu S možností nějakým způsobem zapsat matematický objekt se setkáváme už při samotném vzniku počítačů. Podle matematické organizace Wolfram Research byly úplně první počítače vyvinuty přímo za účelem vědeckých výpočtů. Také první z programovacích jazyků FORTRAN (FORmula TRANslation) byl uzpůsoben k překladu matematických objektů do počítačem přijatelné formy. Vzhledem k tomu, že vstupní a výstupní proudy byly u prvních počítačů limitovány jednoduchou sekvencí znaků, bylo normální psát vzorce typu a^2+a/x^2 =c^2 jako jedoduchou posloupnost znaků a**2+a/x**2=c**2. V praxi to vypadalo tak, že se pomocí jednoduchého textového editoru zapsal vzorec, který se následně předložil jako vstupní výraz počítači a ten si ho převedl do sobě známé vnitřní reprezentace a přiřadil každému znaku jeho konkrétní 𝑎 význam (např. výraz byl zapsán jako a/b). (Wolfram Research, 2013) 𝑏 Jak ale jistě cítíme, tento postup psaní jen pomocí sady ASCII asi nedokázal řešit nějaké složitější matematické zápisy. Zápis matematických vzorců se dlouhou dobu řešil pomocí bitmapového obrázku, což sebou ale neslo několik nedostatků jako je obtížná modifikovatelnost a vytvořitelnost. V osmdesátých letech se začal velice masově rozšiřovat systém TEX, založen Donaldem Knuthem a v roce 1989 se stal standardem v zápisu matematiky také na webu. Ve stejném období byl Brianem Kernighanem a Lorindou Cherry vytvořen preprocesor eqn, umožňující zobrazení a zápis matematických vzorců, pro již známý unixový program troff na formátování textu. (Kernighan, 1978) Později se objevila možnost zápisu vzorce do webových stránek pomocí Java-apletů WebEQ (Web EQuation), kde je vzorec obsažen uvnitř zdrojového kódu jako hodnota a jeho zápis vychází z TEXu. (Grimmich, 2004) Dalším používaným značkovacím jazykem byl ISO 12083, vycházející ze SGML. Matematika použitá v tomto jazyce sdílí dost aspektů s TEXem. Vynucuje přísnější strukturu a regularitu než TEX, proto je většina prací kompatibilních s TEXem také aplikovatelná na ISO 12083. (Grimmich, 2004) TEXnastavil vysokou laťku v přesném vizuálním ztvárnění, z čehož vycházela v devadesátých letech organizace W3C a představila rozšíření tehdy již hojně používaného jazyka HTML o nové matematické prvky a později i úplně nový jazyk, nazvaný
Teoretická východiska
14
MathML, založený na značkovacím jazyce XML. Bylo to přesněji v roce 1997, kdy byla poprvé představena první specifikace MathML. Zpočátku byl jazyk MathML vytvořen pro přesné zachycení matematiky na webu, ale později se stal důležitým formátem pro přenos matematických dat a komunikaci pro širokou škálu vědeckých a matematických aplikací. (Design Science, 2013) Za zmínku také stojí značkovací jazyk OpenMath z roku 2000, který byl vytvořen v Helsinkách asociací OpenMath s důrazem na zachycení významu a sémantiky matematické rovnice. (OpenMath, 2013)
2.2 Formáty pro zápis matematiky V této kapitole se seznámíme s použitelnými formáty pro zápis matematických objektů. V dnešní době se každodenně potkáváme s desítkami a stovkami různých formátů, protoje čím dál těžší a těžší správně vybrat takový software a formát, který by nejlépe zachytil podobu a význam námi myšlené matematické formule. Tento mírný chaos je dán tím, že teoreticky každá nově vytvořená aplikace může přijít se svým jedinečným formátem, ikdyž se třeba v konečném důsledku ukáže, že se jedná o ekivalent již existujícího formátu s jiným názvem. Postupně se podíváme na formáty, se kterými pracují všeobecně nejpoužívanější kancelářské balíky, editory nebo i jiný software s možností zápisu matematiky.
2.2.1 Textový formát MS Word (DOC) Jedná se o formát vytvořený společností Microsoft, od devadesátých let používaný v textovém procesoru Microsoft Word, který je součástí kancelářského balíku Microsoft Office. Dříve během osmdesátých let byl používán jako souborová přípona plain textu (neformátovaná posloupnost textových znaků) (Doc(computing), 2013). V roce 2007 byl nahrazen novějším a úspornějším formátem DOCX, přesto se stále hojně používá a podporují ho i nejnovější verze textových procesorů. Podpora matematiky v tomto formátu je i není. Matematická rovnice se do dokumentu vkládá jako objekt, pomocí externího editoru rovnic (v některých verzích MS Office je modul nutný manuálně doinstalovat). Použitý integrovaný editor je zjednodušenná verze aplikace MathType od společnosti Design Science.
Teoretická východiska
15
2.2.2 Textový formát Office Open XML (DOCX) Od roku 2007 zavedla firma Microsoft do svého kancelářského balíku nové formáty založené na XML a ZIP nazývané Office Open XML. Jak uvádí společnost Microsoft (Microsoft, 2013), nové formáty zaručují transparentnost a kompatibilitu pro všechny již exstující nebo nové soubory Microsoft Office. Vydáním nového formátu si Microsoft sliboval hlavně zvýšení bezpečnosti souborů, snížení pravděpodobnosti poškození souboru, snížení velikosti souboru a sdílení dat v různých systémech uchování. (Docx, 2007) S formátem DOCX vydal Microsoft pro své Office 2007 aplikaci pro tvorbu matematických objektů. Se starším formátem DOC je kompatibilita řešená tím, že se výsledná rovnice překonvertuje do dokumentu jako obrázek. Starý objektový způsob vkládání rovnice pomocí MS Equation Editor zůstal zachován i v tomto formátu. Po řadě kontroverzí byl i Office Open XML přijat jako standard ISO.
2.2.3 Open Document Format (ODT, ODF) Formát OpenDocument (celým názvem OASIS Open Document Format for Office Applications) je otevřený souborový formát založený na formátu XML a ZIP, používaný aplikacemi OpenOffice.org nebo třeba LibreOffice. Od 3. května 2006 je zařazen mezi standardy Mezinárodní organizací pro normalizaci jako standard ISO 26300. (Open Document, 2008) Stejně jako formát DOCX, i otevřený odt umí přenášet matematické objekty. V kancelářském balíku OpenOffice.org se o to stará samostatný editor Math, který se automaticky spouští ve všech součástech OpenOffice, pokud chceme vložit matematický objekt. K intepretaci matematiky je použit jazyk MathML, jehož zdrojový kód dostaneme jednodušše po extrahování formátu ODT. Math má dokonce svůj skriptovací jazyk a vzorce můžeme tvořit buď pomocí jednoduchého WYSIWYG menu, nebo přímo psaním kódu.
2.2.4 OpenOffice Math Format (SXM) Otevřený formát pro zápis matematických formulí na bázi XML. Nativní formát aplikací typu OpenOffice.org, StarOffice, atd. do té doby, než byl vyvinut novější Open-
Teoretická východiska
16
Document formát.
2.2.5 Textový formát (TXT) Obyčejný textový formát, neboli plain text nám umožňuje napsat matematický vzorec pouze pomocí kláves dostupných na klávesnici, respektive pomocí znaků ASCII (Unicode) sady. Samozřejmě, že nikdy nedostaneme moc graficky uspokojivý výsledek. Pro zachycení nejjednodušších matematických operací nicméně tento formát stačí. Jako formu plain textu můžeme brát také AsciiMath. Psaní matematiky za použité ASCII znaků je vhodné, pokud mluvíme o jednoduchých výrazech k zaslání například v e-mailové zprávě. Máme jistotu, že co je napsané pomocí ASCIIMathu, dokáže přečíst úplně každý bez ohledu na to, jestli jeho prohlížeč podporuje matematickou sazbu. Zlomek zapíšeme například takto: 1/(2x) nebo 1 -- . 2x
2.2.6 MathML (MML) Mathematical Markup Language vychází z rodiny jazyka XML, vytvořeného konsorciem W3C a současně je součástí jazyka HTML5. Je známo, že na vědecké půdě je kladen důraz na přesnost a kvalitu zápisu, proto byl jazyk MathML navržen tak, aby splnil veškeré pestré požadavky vědecké komunity. Jeho tvůrci si vytyčily tyto nejdůležitější cíle (W3C, 2013): 1. Zobrazit matematický materiál vhodný pro výuku a vědecké výpočty na všech úrovních 2. Ukázat v matematickém zápisu i význam výrazu 3. Zprostředkovávat konverzi z a do jiných matematických formátů, včetně prezentačních a sémantických. Výstupní formáty by měly zahrnovat: grafické displeje, další matematické typografické jazyky jako TEX, zobrazování jednoduchého textu, tiskárny a Braillovo písmo. 4. Poskytovat rozšiřitelnost a být integrovatelný do šablon a jiných forem pro zápis vzorců 5. Kód by měl být bezproblémově čitelný pro člověka a jednodušše upravitelný
Teoretická východiska
17
a vytvořitelný softwarem Zápis matematických vzorců v jazyce MathML je na pohled objemnější než zápis například v TEXu a pro člověka je i hůře čitelný jeho obsah, ale právě jeho struktura umožňuje valné využití např. ve webových prohlížečích či jiných matematických programech. Velkou výhodou je možnost uchování jak struktury, tak i významu matematického textu. K zápisu se používají významové (určují přímý význam matematické formule, jedná-li se o vektor, množinu, apod.) a prezentační (určují, jakým způsobem se bude vzorec zobrazovat) elementy (W3C, 2013).
2.2.7 Extensible Markup Language (XML) XML je značkovací jazyk vytvořený konsorciem W3C jako zjednoduššená verze jazyka SGML. Umožňuje vývojáři vytvářet nové značky. Hlavním cílem XML je zápis struktury dokumentu. Struktura XML dokumentu se dělí na logickou (rozděluje dokument do pojmenovaných jednotek nazývaných elementy) a fyzickou (umožňuje pojmenovat a uložit samostatné části dokumentu). (Kosek, 2000) K upravování dokumentu formátu XML stačí obyčejný textový editor. Jazyk XML je uznávaný jako standard a existuje k němu mnoho api (application programming interface). Hlavní použitelnost XML (Faigl, 2013): 1. Publikování na webu — pomocí značek se dobře vyhledává 2. Publikování v různých formátech — využití konverze XML do libovolného formátu 3. Výměna strukturovaných dat — odstranění problému kompatibility
2.2.8 TEX Od vzniku sázecího systému TEX amerického matematika Donalda Knutha již uplynulo hodně let, ale i přes to a přes svoji uživatelskou nepřívětivost je to stále výborný nástroj pro sázení matematiky. Byl koneckonců vyvinut pro matematické a vědecké účely a především na akadamické půdě si pořád drží své místo. Nutno podotknout, že se za léta vývoje čím dál méně bavíme o základním TEXu, ale spíše o jeho uživatelsky přívětivějších nadstavbách (balíků maker) jako jsou plainTEX, MikTEX nebo LATEX. Sázecí systém TEX má svůj speciální matematický mód pro tvoření matematických formulí aktivovaný a deaktivovaný párovým znakem dolaru nebo dvojznakem
Teoretická východiska
18
dolaru. K použití TEXu potřebujeme zpravidla jeho odpovídající implementaci, která zahrnuje kromě samotného překladače a sad řídicích sekvencí pro různá použití také prohlížeče, konvertory a jiné doplňky. (Grafika, 2004) Pro sazbu matematiky se nejlépe hodí rozšíření Ams-LATEX, které poskytuje velké množství příkazů, rozšiřujících možnosti matematické sazby a také velké množství nových symbolů.
2.2.9 Postscript (PS), JPG, GIF, PNG a jiné grafické formáty Rastrové obrázky jsou bezesporu důležitou a dodnes velmi používanou formou zobrazení matematických formulí. Příkladem je obrovsky populární webová encyklopedie Wikipedia, která sice ke generování matematických vzorců používá systém TEX, ale ve výsledném zobrazení na webu jsou použity pouze grafické formáty. Zobrazení matematiky pomocí obrázku má však několik úskalí (EVLM, 2013): • Každá matematická formule je uložena v samostatném obrázku. Velikost dokumentu by se mohla rapidně zvětšit s počtem a kvalitou vložených obrázků. • Velikost, font, styl a jiné možnosti není možné nastavit v dokumentu. Jsou spjaté přímo s konkrétním obrázkem. • Matematické objekty uložené jako obrázek nelze kopírovat a vkládat do jiných aplikací. • Rovnice v obrázcích se hůře čtou, vidí a jsou méně kvalitní, než okolní text v prohlížeči. Tento problém se ještě rozšíří v okamžiku tisku. Rozlišení obrázků bývá kolem 70 dpi, zatímco okolní text je v křivkách, tedy bezztrátový.
2.2.10 Portable Document Format (PDF) Formát pro přenositelné dokumenty byl vyvinut jako univerzální souborový formát firmou Adobe. Pdf soubory jsou jednodušše uložitelné a přenositelné nezávisle na systému a hardwaru. Matematické vzorce vložené do souboru formátu PDF jsou ve velmi dobré kvalitě a svým rozlišením jsou vhodné i pro tisk. Určitou nevýhodu může být použití speciálního softwaru pro prohlížení a editaci. Ve webových prohlížečích se o korektní zobrazení PDF obsahu starají přídavné moduly. Je důležité říci, že formát PDF, naproti třeba TEXu nebo MathML neslouží k přímému vytvoření matematických vzorců, ale dá se spíše připodobnit ke grafickým formátům. (Portable Document Format, 2013)
Teoretická východiska
19
2.2.11 HyperText Markup Language (HTML) Značkovací jazyk HTML byl první rozšířenou aplikací jazyka SGML. Nabízí možnost zápisu spíše jednodušší matematiky. Jazyku totiž chybí dostatečné množství značek pro různé matematické struktury. Výhodou je nutnost použití pouze jednoduchého HTML editoru a znalost jednoho jazyka k dobrání se kýženému výsledku. Podle zvoleného kódování máme možnost vložit do HTML kódu znaky podle čísla v ASCII tabulce. To lze provést zápisem číslo. Pro zobrazení matematických objektů, které nejsou pokryty párovými znaky jazyka musíme sáhnout po běžně používaných znacích. Známý vzorec pro výpočet kořenů polynomu vypadá v jazyce HTML takto:
<pre> -b ± Sqrt(b<sup>2 - 4ac) x = ------------------2a Aktuální verze HTML 5.0 již podporuje vnitřní použití MathML tagů. Ke správnému zobrazení je nutný prohlížeč podporující MathML. (Tutorialspoint, 2013)
2.2.12 Rich Text Format (RTF) Textový formát vytvořený společností Microsoft v roce 1987. Podporuje jak plain text, tak také objekty OLE, kresby nebo komentáře. Rich text formát je možné editovat v prosté textové podobě, tudíž k jeho otevření nepotřebujeme žádný speciální editor.
2.2.13 Starmath formát (SMF) a podobné formáty kancelářských balíku založených na OpenOffice Formát pro matematický zápis aplikace StarMath kancelářského balíku StarOffice. Vlastnosti jsou stejné jako u formátu sxm. Takovýto podobný formát mají i ostatní
Teoretická východiska
20
balíky typu OpenOffice.
2.2.14 Standard Generalized Markup Language (SGML) Většina probíraných formátů a jazyků vychází z normy SGML (Standard Generalized Markup Language). SGML je značkovací metajazyk, od roku 1986 je standardem ISO 8879 pro textové a kancelářské systémy (SGML, 2013). Pro matematické využití se ale ukázal býti příliš složitý. (Kamthan, 2000)
2.3 Programové vybavení Pokud zamýšlíme vytvořit nějaký druh matematického objektu, máme prakticky tři možnosti. Buď využijeme jeden z textových editorů (procesorů), který nějakým způsobem podporuje tvorbu vzorců nebo formuli vytvoříme ve WYSIWYG editoru a následně ji do dokumentu uložíme jako rastrový obrázek, nebo jako část kódu (TEX, MML), pokud práci s ním daný editor podporuje. Poslední volbou pro zdatnější uživatelé je ruční vytvoření kódu, pokud máme dostatečné znalosti syntaxe. Do výběru programů byly zahrnuty nejznámější placené i otevřené kancelářské balíky, pak také samostatné matematické editory a software pracující pouze ve webovém prostředí.
2.3.1 Apache OpenOffice.org V balíku OpenOffice se o matematiku stará modul Math, který se automaticky spouští ve všech součástech OpenOffice, pokud chceme vložit matematický objekt. Druhou možností je manuální spuštění Mathu jako samostatného editoru. Velmi zajímavá je možnos dvojího způsobu vytváření matematického výrazu. Základní obrazovka je totiž rozdělena na dvě části. V jedné vidíme přímo vykreslený vzorec (můžeme zde vkládat objekty z ne moc bohaté nabídky) a v druhé jeho zápis ve vnitřní syntaxi. Výhoda tkví v možnosti zápisu vlastní matematické formule s přiměřenou znalostí skriptovacího jazyka (který se tolik neliší například od TEXu). Export matematických objektů je možný do formátu PDF s nastavením ztrátovosti, HTML, RTF, TXT, MathML 1.01 a nativních ODF a SXM. (OpenOffice, 2013)
Teoretická východiska
21
2.3.2 LibreOffice LibreOffice je otevřený kancelářský balík používající formáty Open document. Stejně jako v sadě OpenOffice.org je jeho součástí kromě jiných i aplikace Math. (LibreOffice, 2013)
2.3.3 Microsoft Office Kancelářský balík od firmy Microsoft využívá od verze z roku 2007 k psaní vzorců svoji vlastní aplikaci. Druhou, starší alternativou je externí program od společnosti Design Science s názvem Equation editor, který vkládá vzorec do dokumentu v podobě objektu. K balíku MS Office bylo vyvinuto bezpočet různých pluginů, které umožňují pracovat s formáty jako TEX (např Aurora) nebo MathML (MathType SDK), nativně ale tyto formáty podporovány nejsou a musíme si vystačit s interním formátem oMath (Office Open XML Math) pro zápis matematických objektů. (Microsoft, 2013). Odlišné chování vzorců vytvořených oběma způsoby si ukážeme v další kapitole.
2.3.4 CAS nástroje (Maple, Maxima, Mathematica,…) Skupina složitějších vědecko-algebraických aplikací, které podporují vykreslování grafů, matematické výpočty,atd. Programy často využívají svůj programovací jazyk k vytváření skriptů, který je možný převádět do dostupných jazyků, jako jsou C++, Java, atd. Soubory je možné ve většině případů exportovat do známých formátů jako XML nebo TEX a tím zajistit výbornou přenositelnost mezi odlišnými systémy. Z důvodu větší komplexnosti jsou tyto nástroje poměrně dosti drahé. (CAS, 2013)
2.3.5 Moodle Moodle je modulové objektově orientované dynamické vzdělávací prostředí, které umožňuje vytvářet on-line kurzy k výuce. Disponuje příjemným uživatelským roz-
Teoretická východiska
22
hraním, neklade přílišné požadavky na počítačovou gramotnost a nevyžaduje ke spuštění žádný speciální prohlížeč. Moodle k editaci textu využívá jednoduchý editor, svými funkcemi podobný nejznámějším textovým procesorům. K tvorbě matematických objektu je použita v Moodle nadstavba DragMath. (Dougiamas, 2013)
2.3.6 DragMath DragMath je open-source editor matematických rovnic napsaný v programovacím jazyku JAVA. Matematické výrazy zvládne exportovat do několika jazyků, včetně MathML, LATEXu nebo Maplu. Aplikace je spustitelná přímo v internetovém prohlížeči. (Dragmath, 2010) Tvorba vzorců probíhá trochu krkolomně stylem WYSIWYG stejně jako například v MathTypu. Každý matematický objekt má v hlavním menu svoji šablonu, která se po kliknutí přímo přenese na hlavní obrazovku s prázdnými místy pro doplnění.
2.3.7 MathCast MathCast je open-source editor rovnic vytvořený v jazyce JavaScript. K implementaci starších verzí posloužil jazyk C++. Rovnice vytvořené v editoru MathCast můžeme exportovat jako obrázek nebo MathML kód. (Mathcast, 2013)
2.3.8 Formula Sheet Equation Editor Jedná se o on-line aplikaci spustitelnou v prohlížeči s výstupem do formátu TEX, PDF a PNG. Umožňuje také jedním kliknutím kopírovat matematické objekty do MS Word 2007 a novějších verzí (formát DOCX). Kompatibilita s MS Equation editorem je perfektní.
Teoretická východiska
23
2.3.9 Lyx Lyx je textový procesor, založený na principu WYSIWYM (What you see is what you mean). Kombinuje v sobě složitost a rozmanitost TEXového, resp. LATEXového zápisu s jednoduchostí grafického rozhraní a paletového výběru po vzoru Wordu. (Lyx, 2013) Exportovat soubory lze do formátů PDF, LATEX, TXT nebo postscript. Zápis matematických vzorců zvládne i začátečník díky obrazovému menu a časem se i naučí i TEXovou syntaxi, protože editor obsahuje také náhled zdrojového kódu.
2.3.10 MathMagic Velice rozšířeným nástrojem na tvorbu rovnic je program MathMagic od společnosti InfoLogic, který je dostupný pro platformy Mac OS X, Windows a Android. Jedná se o editor na podobné úrovni jako MathType. Hotové matematické vzorce lze exportovat do formátů TEX, LATEX, MathML nebo AsciiMath. Jeho velkou výhodou je také spolupráce s webovou aplikací Google documents a matematickým softwarem Wolfram Alpha nebo Zoho, s jejichž formáty si MathMagic skvěle rozumí. Samozřejmostí je export do formátů obrázků PDF, JPEG, GIF nebo třeba PNG. MathMagic je vyvíjen od roku 1998 a v dnešní době je nabízen ve třech verzích, Personal edition, Lite edition nebo Pro edition. Nainstalovaná aplikace zabere kolem 30 MB volného místa na disku a její cena je od 49 dolarů za verzi pro studenty po 695 dolarů za Pro verzi s dvouletým bezplatným upgradem (Mathmagic, 2013).
2.3.11 MathType Tento program od společnosti Design Science je velice mocným nástrojem na tvorbu matematických vzorců a jejich následné kódování do TEXu (LaTEXu) nebo MathML nebo jen prosté uložení do některého z obrázkových formátů. MathType podporuje znakovou sadu Unicode, mezinárodní znaky a umožňuje jejich zadávání přímo z klávesnice. Jako doplněk na vkládání rovnic se používá ve známých aplikacích jako jsou MS Word, Corel WordPerfect nebo LibreOffice.
Teoretická východiska
24
K tvorbě matematických rovnic je uživateli k k dispozici kromě WYSIWYG menu s přednastavenými výrazy také možnost zadávání vzorců skrze dotykovou obrazovku pomocí stylusu. K dispozici je uživateli 30denní zkušební verze zdarma, poté je nutné si produkt zakoupit za 97 dolarů (57 dolarů pro studenty). Nároky na hardware jsou naprosto minimální. (Design Science, 2013a). Uživatelské prostředí MathTypu je velice přívětivé a jednoduché. Skládá se z hlavního panelu, kde je obsaženo několik palet a šablon pro vkládání matematických objektů a hlavního zobrazovacího okna. Předpřipravené šablony zahrnují většinu známějších objektů jako mocniny, integrály, matice, limity, nebo sumy. Proces tvorby rovnice je intuitivní. Z výběrového menu zvolíme požadovaný objekt, který se po poklikání přenese do zobrazovací části s prázdnými místy pro vložení obsahu. Poté máme k dispozici z několika možností překladu do ruzných formátů TEXu a MathML. Převod realizujeme tak, že v nabídce překladačů v záložce Preferences zvolíme námi preferovaný formát a celou formuli pak jednodušše zkopírujeme.
2.3.12 Google Documents Google Documents představují sadu on-line nástrojů pro vytváření textových dokumentů, tabulek a prezentací. Jedná se o všestrannou aplikaci, která zefektivňuje spolupráci více uživatelů i v reálném čase. K využívání programu potřebujeme pouze počítač připojený k internetu a standardní webový prohlížeč. (Google, 2013) Pro textové dokumenty jsou možné konverze z interního Google formátu do formátů DOCX, ODT, RTF, PDF nebo obyčejného TXT. Google Docs mají svůj vlastní editor na vkládání matematických vzorců. Funkčnost je řešena výběrem objektů z palety nebo přímým psaním LaTEXového kódu. Např. při zapsání \alpha se zobrazí znak 𝛼.
2.3.13 Panel pro matematický zápis ve Windows 7 Tato zajímavá aplikace umožňuje pomocí kurozoru myši či stylusu napsat matematický vzorec, jehož znaky jsou automaticky rozpoznávány a vysázeny tisknutelným písmem. Poté máme možnost vložit formuli do aplikace, která podporuje MathML.
Konverze
25
3 Konverze Tato kapitola má za úkol objasnit odlišnosti v konverzích mezi jednotlivými formáty a stanovit kvalitu každé konverze. Provedou se konverze všech známých matematických výrazů mezi všemi zkoumanými programy z minulé kapitoly.
3.1 Určení kvality konverze V programech typu textového procesoru byl vytvořen stejný dokument se sadou matematických objektů a ten byl následně konvertován do ostatních formátů, které daný software nabízí. Byla zvolena čtyřstupnňová klasifikace, která postačuje pro základní posouzení kvality konverze: 1. Přesné přenesení bez nedostatků 2. Jemné nedostatky — chyby jen kosmetického charakteru. Pro příklad je zde uvedeno zobrazení integrálu s mezemi nad a pod znakem integrálu a následná konverze, která meze samovolně posune do míst indexu a exponentu. Význam výrazu je po takové konverzi zachován. Příklad je reálna konverze z formátu ODT do DOCX. 3. Výraznější chyby — u výrazu chybí podstatné části, které ovlivňují jeho význam. Zde je uveden stejný příklad konverze integrálu, avšak tentokrát je konverze provedena opačně. Integrál s mezemi v indexu a exponentu se po exportu zobrazí jako prostý integrál bez mezí. Příklad je reálná konverze z formátu ODT do DOCX. 4. Nic nepřevedeno — nejdůležitějším kritériem je, zda-li se z jednoho formátu do druhého přenesla alepoň část výrazu Do seznamu matematických objektů, na nichž bude zkoumána konverze, byly zařazeny: • zlomek • zlomek ve zmenšeném formátu • index a exponent • integrál s mezemi • integrál s mezemi na místě indexu a exponentu • suma s mezemi • matice • kombinační číslo • závorky automaticky měnící svoji velikost
Konverze
26
• goniometrické funkce • akcenty • složitější limita • aritmetické operátory násobení, dělení, znaménko menší, přibližně a rovnítko Kvalitu konverze názorně ukazují tabulky 3.1 až 3.5. Jako splnění nejvyššího stupně kritéria hodnocení se bere i konverze do obrázkového formátu, ikdyž tímto úkonem samozřejmě zcela zanikají editační možnosti matematického vzorce. Stupeň hodnocení klesne, ikdyž je většina výrazů zobrazena správně, ale objeví se alespoň jeden výraz, který spadá do nižšího stupně hodnocení. V matematických editorech typu MathType byl postup takový, že se vytvořily různé známé rovnice (např. rovnice pro výpočet kořenů polynomu), které se následně převáděly do dostupných formátů. Nakonec byla zhodnocena míra přesnosti zobrazení u jednotlivých programů. U formátu TEX posloužily pro kontrolu dostupné online nástroje na tvorbu matematických rovnic - např iTEX2Img (dostupný z http://www.sciweavers.org/free-online-latex-equation-editor) nebo Texify (dostupný z http://www.texify.com/links.php).
3.2 Microsoft Office 2010 Aplikace zahrnuté v MS Office jsou plně kompatibilní samozřejmě se všemi formáty vyvinutými společností Microsoft, ale v novějších verzích také s konkurenčními OpenOffice, ikdyž o tom by se dalo stále polemizovat. Např. formát oMath pro zápis matematiky není plně kompatibilní s MathML, za což sklidil Microsoft velkou kritiku. Samozřejmostí jsou formáty jako PDF, HTML nebo TXT. Hodnocení konverzí je tady docela obtížné, protože v MS Office není možné ukládat vzorce v samostatném formátu, ale vždy jako součást dokumentu. Nutno podotknout, že po konverzi do ostatních formátů byly soubory jako RTF, ODT či XML spustitelné s korektně zobrazeným obsahem znovu jen v Microsoft Office. Ostatní programy podporující daný formát zobrazovaly vzorce pouze v podobě směsi znaků.
Konverze
27
Tabulka 3.1 Seznam vzorců vytvořený aplikací Equation editor dostupnou pro starší verze MS Office formáty hodnocení konverze docx doc odt pdf rtf txt xml html
1 1 1 1 4 1 1
výchozí formát vše beze změny vše zkopírováno jako bezztrátový obrázek png vše beze změny vše beze změny nic nepřevedeno vše beze změny vše zkopírováno jako obrázek png
Tabulka 3.2 Seznam vzorců vytvořený nativním editorem (MS Office 2007 a novější) formáty hodnocení konverze docx doc odt
1 3(2)
pdf rtf txt
1 1 3
xml html
1 1
výchozí formát vše zkopírováno jako rastrový obrázek kompatibilní s Math editorem. Ignoruje zobrazení zmenšeného zlomku, kombinačního čísla a akcentu vše beze změny vše beze změny většina výrázů zkopírována pomocí nejrůznějších znaků ASCII sady, odlišné postavení mezí integrálu, akcentů vše beze změny vše zkopírováno jako obrázek png
3.3 OpenOffice.org S formáty XML a RTF je stejný problém jako v MS Word. Korektně se zobrazí zase jen v aplikaci, ve které byly vytvořeny.
Konverze
28
Tabulka 3.3 Seznam vzorců vytvořený v OpenOffice Writer aplikací Math formáty hodnocení konverze odt sxw doc
1 1
docx
3(2)
pdf rtf txt xml html
1 1 4 1 1
výchozí formát vše beze změny vše zkopírováno správně jako objekt OpenDocument. Nepodařilo se ale objekt editovat, ikdyž byly OpenOffice(LibreOffice) korektně nainstalované kompatibilita s nativním editorem. Meze integrálu v místě indexu a exponentu nejsou zobrazeny, zatímco meze nad a pod integrálem se zobrazí jako index a exponent. Ignoruje aplikaci funkce na argument vše beze změny vše zkopírováno jako rastrový obrázek nic nepřevedeno vše beze změny vše zkopírováno jako obrázek gif
3.4 Google Documents Dostupný je velmi zjednoduššený výběr matematických objektů. Chybí zmenšený zlomek, meze integrálu nejdou zapsat jako index a exponent, matice nelze zapsat, omezené množství akcentů. Naštěstí lze dost objektů, které nejsou v nabídce zapsat LATEXovou syntaxí (kombinační číslo).
Konverze
29
Tabulka 3.4 Seznam vzorců vytvořený aplikací Google Documents formáty hodnocení konverze odt docx
1 2
pdf rtf txt html
1 1 4 1
vše zkopírováno jako rastrový obrázek kompatibilita s editorem Equation. Nepřesné přenesení mezí integrálu. Celkově chybné vyplnění volných míst (např. u znaku integrálu si editor Equation nechá volná okénka pro meze a základ integrálu. Po přenesení zůstávají některá okénka prázdná vše beze změny vše zkopírováno jako rastrový obrázek nic nepřevedeno vše zkopírováno jako obrázek png
Google Documents se samozřejmě kromě uložení souborů do různých formátů chlubí také jejich načtením, pokud byly dříve vytvořeny jinou aplikací. Zobrazení je bohužel dosti nepřesné, pokud se vůbec uskuteční. Tabulka 3.5 Seznam vzorců vytvořený jinými aplikacemi, načtený Google documents formáty
aplikace
hodnocení načtení
docx
nativní editor Equation editor
4 3
odt
editor Math
4
rtf
MS Word
4
nenačte žádný matematický objekt nenačtou se akcenty, finální vzhled vzorce vypadá jinak (odlišné postavení závorek) nepodaří se načíst dokument, neexistuje ani náhled nepodaří se načíst dokument, neexistuje ani náhled
3.5 Editor Math balíku OpenOffice.org (LibreOffice) Při samostatném spuštění aplikace Math máme možnost konverze vzorce do formátů MML, ODF a SXM. Za velkou nevýhodu lze považovat absenci TEXu a nemožnost exportu do rastrového obrázku.
Konverze
30
Rovnice na výpočet kořenů polynomu vypadá ve formátu MML takto: <math xmlns="http://www.w3.org/1998/Math/MathML"> <semantics> <mrow> <mfrac> <mrow> <mrow> <mrow> <mo stretchy="false">- <mi>b <mo stretchy="false">± <msqrt> <mrow> <mrow> <msup> <mi>b <mrow> <mn>2 <mo stretchy="false">- <mn>4ac <mrow> <mn>2a
{-b+-sqrt{b^{2}-4ac} {2a}
} over
Ve výsledku lze pozorovat použití parametru stretchy="false" při každém po-
Konverze
31
užití mo znaku. V uvedeném příkladu je to ale dosti zbytečné. Chybou je zde použití párových znaků mn pro celý výraz (v tomto případě třeba 4ac), přižemž by měla být jeho využitelnost jen u číselných hodnot, případně pro jejich slovní interpretaci (jedna). Závorky program Math zobrazuje s použitím tagů mfenced.
3.6 MathType V MathTypu můžeme vytvořený vzorec přímo uložit jako soubor GIF, postscript nebo WMF. Další možností je překlad kódu vzorce do jazyků TEX, LATEX (i s nadstavbami AMS TEX/LATEX) a MathML (verze 1.0 a 2.0). Všeobecně známá rovnice pro výpočet kořenu polynomu vypadá v kódování LATEXu programem MathType takto: \[ \frac{{ - b \pm \sqrt {b^2 \]
- 4ac} }}{{2a}}
V kódování TEXu takto: $$ {{ - b \pm \sqrt {b^2 $$
- 4ac} } \over {2a}}
V kódování MathML verze 2.0 takto: <math display='block'> <semantics> <mrow> <mfrac> <mrow> <mo>−<mi>b<mo>±<msqrt> <mrow> <msup> <mi>b <mn>2 <mo>−<mn>4<mi>a<mi>c
Konverze
32
<mrow> <mn>2<mi>a
V podání aplikace MathType jsou i často používané operátory interpretovány svým kódovým značením v Unicode sadě. Závorky MathType řeší tagem mo.
3.7 MathCast V programu MathCast je konverze kromě obrázku možná pouze do formátu MathML. Výsledek převodu rovnice je následující: ]>
mathcastrovnice <math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mi>x <mo>= <mfrac> <mrow> <mrow> <mo>- <mi>b
Konverze
33
<mo>± <msqrt> <mrow> <msup> <mi>b <mn>2 <mo>- <mrow> <mn>4 <mo> <mi>a <mo> <mi>c <mrow> <mn>2 <mo> <mi>a Po exportu je MathML kód vložen do HTML kódu, což může být v některých situacích výhodné, ale také naopak. Plusem můžou být zakomentované vysvětlivky při použití kódu z Unicode sady znaků.
3.8 MathMagic Aplikace MathMagic využívá nejvíce potenciál jazyka MathML v podobě parametrů. LATEX: \[
Konverze
34
%Translator MathMagic Personal Winv7.4,LaTeX converter,2013.3.30 \mathrm{\frac{{-}{b}\pm\sqrt{{b}^{2}{-}{4}{ac}}}{2a}} \] TEX: $$ {{-b\pm\sqrt{b^{2}-4ac}}\over{2a}} $$ MathML: <math xmlns="http://www.w3.org/1998/Math/MathML"> <semantics> <mstyle mathcolor="#000000"mathsize="12.0pt"mathvariant="normal"> <mfrac> <mrow> <mo>− <mi mathvariant="italic">b <mo>± <msqrt> <mrow> <msup> <mi mathvariant="italic">b <mn mathsize="50.0%">2 <mo>− <mn>4 <mi mathvariant="italic">ac <mrow> <mn>2 <mi mathvariant="italic">a
Konverze
35
3.9 DragMath Vzorec na výpočet kořenů polynomu lze v aplikaci DragMath vytvořit také, ovšem je třeba si zvyknout na poněkud divný systém vkládání objektů z hlavního menu. Aplikace navíc do formule automaticky přidává závorky nebo například operátory. Tím se celý výraz stává, co se kódu týká, trochu složitějším. Je také nutné upozornit na odlišnou interpretaci některých znaků v jazyce MathML. Zatímco ostatní programy standardně používají k vyznačení méně častých znaků jejich unicodové identifikační číslo, aplikace Dragmath tento problém řeší zapsáním například &minus nebo &PlusMinus pro operátory − a ±. LATEX: \frac{-\left(b\right) \pm
\sqrt{b^{2}-4 \cdot ac} }{2 \cdot a}}
MathML: <math xmlns="http://www.w3.org/1998/Math/MathML"> <mfrac> <mrow> <mo> − <mfenced> <mrow> <mi>b <mo> ± <msqrt> <mrow> <msup> <mrow> <mi>b <mrow> <mn>2 <mo> − <mn>4 <mo> ⋅ <mtext>ac
Konverze
36
<mrow> <mn>2 <mo> ⋅ <mi>a Maple a Maxima: (-(b)±sqrt(b^2-4*ac))/(2*a) MoodleTEX: $$ \frac{-\left(b\right) \pm $$
\sqrt{b^{2}-4 \cdot ac} }{2 \cdot a}
AsciiMathML: ` (-(b) +-
sqrt{b^{2}-4 * ac} )/(2 * a) `
3.10 Lyx V editoru Lyx lze vzorec vytvořit logicky ve formátu TEX, přesněji jsou nabízeny varianty XeTEX , LuaTEX a LATEX. Dále je export možný do formátu HTML, TXT, ODT nebo AsciiMath. Rovnice vypadá po konverzi takto: LATEX: \[ x=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a} \] AsciiMath: x=-b+-pb2-4ac2a1
Konverze
37
3.11 Formula Sheet Equation Editor Tento online nástroj na editaci rovnic má skvělou kompatibilitu s MS Office Equation editorem. Dalšími možnostmi je konverze do formátu PNG a TEX. U vytvořených rovnic lze nastavit rozlišení, použitý font a barvu. Rovnice pro výpočet polynomů vypadá takto: \begin{equation} \frac{-b\pm\sqrt{b^{2}-4ac}}{2a} \end{equation}
3.12 Panel pro matematický zápis Korektní přenesení se podařilo uskutečnit pouze v aplikaci MS Word 2010 a vyšší.
3.13 Závěr a doporučení Doporučit nějaké obecně vhodné pravidlo pro konverzi objektů ve formátech kancelářských balíků je složité. Nejlépe uživatel udělá, když se bude držet formátu, v kterém byl daný objekt vytvořen. Toto pravidlo jen potvrzuje matematický editor společnosti Microsoft, který podporuje jen svůj vlastní formát oMath. V případě konverze je nejbezpečnější převést matematický vzorec do některého z obrázkových formátů. Dle hodnocení kvality konverze se ukázalo, že mezi kancelářskými balíky neexistují formáty, které by mezi sebou byly plně kompatibilní a dokázaly mezi sebou převádět výrazy bez chyby. Po stránce přenositelnosti formátů mezi jednotlivými programy jsou na tom nejlépe formáty TEX, MML a samozřejmě také plain text. U těchto formátů se obsah kódu mění v jednotlivých programech po konverzi jen velmi minimálně a často jen v detailech odvozených od použití odlišné verze jazyka (myšleno predevším v případě TEXových nadstaveb). Narozdíl od TeXové reprezentace, kdy všechny programy dávaly víceméně stejný výstup s ohledem na použitou nadstavbu, ve formátu MML se výstupy lišily v množství použitých paramtetrů. Nejsložitější MathML kód exportuje program MathMagic. Pokud bereme v úvahu kvalitu formátů co se týče přesnosti zobrazení a co nejvyšší
Konverze
38
vyjadřovací schopnosti, zase by se daly doporučit formáty MathML a TEX, jejichž robustnost zápisu nemá konkurenci. Kvalita konverze se tedy logicky odvíjí od toho, z jakého a do kterého formátu ji pořizujeme. Asi těžko se provede kvalitní konverze z TEXu do TXT, když výstupní formát zkrátka nenabízí takové matematické možnosti jako vstupní. Doporučení je konvertovat matematické objekty mezi formáty u kterých víme, že dokáží pojmout danou problematiku (v dostupných editorech jsou většinou v nabídce takové formáty, aby se v jejich exportované interpretaci daný vzorec kvalitativně nezměnil. Situace ve využití formátů pro sazbu matematiky se má tak, že mnoho jedinců, používajících matematické vzorce jen přiležitostně asi nejčastěji sáhne po nějakém textovém procesoru jako MS Word nebo OpenOffice.org, kde si v klidu vystačí s nabízenými paletami různých matematických objektů. Je tu také varianta výběru z řady editorů, které umožňují uložit výstup jako obrázek. To vše v případě občasného použití matematiky v dokumentu. V případě častější manipulace se složitějšími matematickými objekty, včetně přenášení mezi aplikacemi se jako nejvýhodnější jeví zvolit jazyk TEX a jazyk MathML. Tyto dva formáty jsou natolik rozsáhlé a variabilní a poskytují dostatek možností pro vytvoření i těch nejsložitějších matematických objektů. Protože je tvoření MathML kódu velice zdlouhavé a složité, nemluvě o náchylnosti k chybě, vzniklo postupně od jeho počátku mnoho aplikací umožňujících tvorbu vzorců ve formátu MML. Pokud by bylo požadováno takto vytvořené vzorce začlenit například do bakalářských či diplomových prací, hodí se z důvodu větší přehlednosti a jednolitosti (právě závěrečné práce se často píší ve formátu TEX ) jednoduchá konverze do některého z TEXových formátů. Praktická část této práce se proto zabývá iplementací jednoduchého konvertoru z formátu prezentačního MathML do formátu TEX.
Hlubší souvislosti matematické sazby
39
4 Hlubší souvislosti matematické sazby Tato kapitola blíže zkoumá jazyky TEX a MathML, které budou použity v prakticé části práce.
4.1 TEX Systém TEX je stále velice kvalitní nástroj pro sázení matematiky. Byl koneckonců vyvinut pro matematické a vědecké účely a především na akadamické půdě si pořád drží své místo. V této kapitole se podíváme podrobněji na možnosti sazby různých typů matematických objektů v prostředí TEXu i jeho nejnámější nadstavby LATEXu.
name: /img/princip-texu.png file: /img/princip-texu.png state: unknown
Obrázek 4.1 Jednoduchý princip práce systému TEX (LATEX), zdroj: gjszlin.cz, 2013
Hlubší souvislosti matematické sazby
40
4.1.1 Srovnání TEXu a LATEXu V následujícím textu byly spojeny dohromady dva docela rozdílné systémy postavené na jednom základu, protože si myslím, že pro účely matematické sazby mezi nimi nenajdeme až tak markantní rozdíly. Pro pořádek zde uvádím hlavní cíle LATEXu (Olšák, 1997): • Ukázat problematiku TeXu uživateli v trochu jednodušším pohledu. • Vytvořit vlastní jazyk vstupních textů • Umožnit formátovat jednoduché dokumenty podle předzpracovaných stylů • Umožnit jednoduchou výměnu dokumentů a jejich přeformátování I když se může zdát, že po osvojení si problematiky LATEXu už uživatel nepotřebuje znát programovací jazyk TEX, sami LATEXoví odborníci tvrdí, že bez TEXbooku to prostě nejde. Závěr je takový, že i presto, že již vzniklo (a stále vzniká) velké množství různých TEXových nadstaveb, plain TEX má v sazbě stále své místo.
4.1.2 Ukázky matematických prostředí Při psání obyčejného textu systém jednodušše pouze překládá vkládané znaky na výstupní kód pomocí zrovna vybraných fontů, rozměrů výplňků, atd. Zkrátka hlavní procesor TEXu vytváří horizontální a vertikální seznam, který obsahuje informace na jakém místě má být co vysázeno, tudíž je celý text hned připraven k výstupu například na obrazovku (Olšák, 2001). V matematickém módu se má věc jinak. Systém pouze zaznamenává logickou strukturu matematické sazby (např. který index patří k jakému číslu). Jak už bylo řečeno, matematický mód se aktivuje a deaktivuje znakem $, pokud chceme rovnici začlnenit do textu nebo dvojznakem $$, pokud cheme rovnici vysázet na nový řádek. Právě ukončení této párové značky překonvertuje matematický seznam do už známého horizontálního seznamu. Sice se ztratí informace o logice sazby, ale výsledek je připraven k tisku (Olšák, 2001). Podle Olšáka (Olšák, 2001) nese každý povel, který chceme vysázet v matematickém módu tři informace: • třídu matematického objektu • rodinu matematického objektu • pozici znaku ve fontu Třída matematického objektu nám říká o který typ z tabulky atomů se jedná, rodina a pozice znak dále specifikují.
Hlubší souvislosti matematické sazby
41
Matematický mód ještě můžeme rozdělit na další podkategorie (prostředí), pro která platí společná pravidla. Automaticky je zvolena kurzíva pro sazbu písmen, je zvoleno správné mezerování a odsazování, atd. Také jsou ale mezi nimi mírné odlišnosti (Rybička, 2003). Důležitým pravidlem je zákaz vkládání prázdných řádků ve všech prostředích, na takový počin odpoví překladač chybovým hlášením (Grätzer, 2007). • Prostředí math (Inline math) Používá se pro sazbu matematických objektů uvnitř textu. Příkazy na ohraničení matematické formule jsou \begin{math} a \end{math}, které lze nahradit výše zmiňovaným $ nebo pro začátek i konec. Vzorec 𝑐 2 = 𝑎 2 + 𝑏 2 vypadá třeba takto: \c^2=a^2+b^2\ •
Prostředí displaymath (Displayed math) Používá se pro sazbu matematických objektů na samostatný řádek. Jinak platí stejná pravidla jako v prostředí math. Příkazy na ohraničení matematické formule jsou \begin{displaymath} a \end{dsiplaymath}, které lze nahradit $$ (podle Grätzera (2007) by se toto značení nemělo používat v LATEXu) pro začátek i konec nebo \[ pro začátek a \] pro konec. Vzorec vysázený na samostatném řádku by vypadal takto: \[ c^2=a^2+b^2 \] 𝑐 2 = 𝑎2 + 𝑏2
•
Prostředí equation Prostředí pro vysázení matematické formule s automatickým číslováním na pravém okraji stránky v kulaté závorce. Prostředí se ohraničuje pouze příkazy \begin{equation} a \end{equation}. Vzorec i s číslováním vypadá takto: \begin{equation} c^2=a^2+b^2 \end{equation} 𝑐 2 = 𝑎2 + 𝑏2
•
(4.1)
Prostředí eqnarray Používá se pro sazbu matematických vzorců, které mají být vzájemně zarovnané. Zarovnává se tak, že se vzorec rozdělí na 3 části (levá, střední a pravá)
Hlubší souvislosti matematické sazby
42
a ty jsou pak zarovnány pod sebe. Mezi jednotlivými částmi je nutné psát znak & , pro přechod na nový řádek dvojznak . Jinak platí stejná pravidla jako v prostředí math. Každý řádek se čísluje podle pravidel prostředí equation. Vzorec vypadá takto: \begin{eqnarray} y&=&(x+1)^2\\&=&x^2+2x+1 \end{eqnarray}
4.1.3 Tvorba matematického seznamu Matematický seznam vytvoříme pomocí těchto elementů (Knuth, 1986): • Atom • Značky typu \left, \right pro pozdější konverzi • Prvky z horizontálního seznamu (linky, boxy, penalty) • Pružné výplňky • Pevné výplňky • Značky jako v horizontálním/vertikálním seznamu Hlavním stavebním kamenem budoucí matematické rovnice je atom. Dle Olšáka (Olšák, 2001) ho můžeme rozdělit na 3 dílčí části: 1. Základ (nucleus) 2. Exponent (superscript) 3. Index (subscript) Každá ze tří částí již může obsahovat konečnou sazbu, nebo se může dále větvit na další matematický seznam. Vnořených matematických seznamů může být v každém atomu nekonečně mnoho. Každá část může být také prázdná (základ nemusí mít žádný exponent/index).
4.1.4 Mezera Mezery v TEXu mají svá rozsáhlá pravidla. Základním pravidlem je fakt, že více mezer vytvořených uživatelem ve zdrojovém souboru TEXu znamená jen jednu mezeru ve vysázeném textu. TEX si v matematickém zápisu mezeruje automaticky jak to sám uzná za vhodné. (Knuth, 1986) Oba zápisy $a+b=c$ a $ a+ b=c$ se zobrazí stejně jako 𝑎 + 𝑏 = 𝑐
Hlubší souvislosti matematické sazby
43
Existují výjimky: • Mezera za výrazem (např. $a \quadb$). • Po přepnutí do textového módu (\text) uvnitř matematické formule platí jiná pravidla mezerování. Dalším důležitým pravidlem je správné použití mezery následující za čárkou (,). V matematickém režimu je totiž mezera jiná než v textovém. Na to je potřeba dát si pozor v následujících případech. Ve výrazu 𝑥 < 𝑎, 𝑏, 𝑐 požadujeme, aby byla mezera následující za čárkou dlouhá jako v normalním textu. Proto výraz zapíšeme jako $x
4.1.5 Text v matematické formuli Někdy se můžeme setkat s potřebou zapsat obyčejný text do matematické formule. LATEX k tomu používá příkaz \text. Formuli 𝐴 = {𝑥|𝑥 ∈ 𝑋𝑖 , pro každé 𝑖 ∈ 𝐼} zapíšeme jako $$ A = \{ x|x \in X_i {\text{, pro každé }}i \in I\} $$ Místo \text můžeme použít například i \rm nebo \textstyle.
4.1.6 Písmo
Hlubší souvislosti matematické sazby
44
V zápisu matematiky je správný výběr písma, řezu a fontu docela zásadní záležitostí, protože se jejich špatným výběrem může změnit celá logika formule. Pro matematickou sazbu bylo přímo tvůrcem TEXu Knuthem vytvořeno písmo Computer Modern (Rybička, 2003). Obecně, co se velikosti písma týče, musí být taková, aby šly bez problému přečíst indexy druhého stupně. Nejčastěji se používá 9 nebo 10bodové písmo. Dále by mělo písmo mít dostatečný sortiment speciálních matematických znaků, značek a vyznačovacích řezů. Kromě zmiňovaného písma Computer Modern tyto vlastnosti splňují také například Times New Roman či Imprint. (Starý, 2005). V TEXu je velikost písma volena automaticky podle umístění ve vzorci a vzhledem k použitému matematickému prostředí. Rozlišujeme 4 sázecí styly, podle kterých je volena velikost a způsob usazování indexů a exponentů (Grätzer, 2007): 1. display — pro normální symboly při sazbě rovnic 2. text — pro normální symboly uvnitř odstavce 3. script — pro indexy a exponenty první úrovně 4. scriptscript — pro indexy a exponenty vyšších úrovní Pokud nechceme využít automatického přepínaní stylů, můžeme pomocí primitivů \displaystyle,\textstyle,\scriptstyle a \scriptscriptstyle přepnout požadovaný styl manuálně. Fonty v matematické sazbě mají odlišná pravidla a neplatí na ně primitiv \font pro přepínání fontů z horizontálního seznamu. Rozlišujeme 4 základní rodiny fontů pro matematický zápis (Olšák, 2001): • Antikva — běžné použití v textu, v matematice například goniometrické funkce • Kurzíva — matematické proměnné • Značky v matematice — binární operace, relace • Operátory
4.1.7 Základní matematické konstrukce
4.1.7.1 Matematické akcenty Řídicí slova (pro znaky používané nad a pod symboly) z obyčejného textu nelze použít v tom matematickém a obráceně. Zde je několik příkladů: 𝑎˘ (\breve), 𝑎¨ (\ddot), 𝑎⃗ (\vec), 𝑎˜ (\tilde).
Hlubší souvislosti matematické sazby
45
4.1.7.2 Aritmetické operace Znak dělení a násobení můžeme zapsat ještě jinou formou jako 𝑎 ⋅ 𝑏, 𝑎 × 𝑏, 𝑎 ÷ 𝑏. V TEXovém formátu vypadají vztahy následovně: $a \cdotb$,$a \timesb$,$a \divb$ Symboly včetně třeba řeckých písmen se v TEXu vkládají pomocí řídicích slov (např. \alpha,\epsilon,\beta).
4.1.7.3 Zlomky a závorky 1 + 2𝑥 𝑦+𝑥 zapíšeme jako \[ \frac{1+2x}{y+x} \] nebo \[ 1+2x \over y+x \] Oba zápisy nám dají stejný výsledek. Zlomek v textu, jako například Pokud chceme vytvořit zlomek
1 + 2𝑥 , zapíšeme jako $\dfrac{1+2x}{y+x}$. 𝑦+𝑥
1+2𝑥 𝑦+𝑥
v takovémto menším provedení, bude zápis vy-
padat takto: $\tfrac{1+2x}{y+x}$. Pokud bychom chtěli zlomek vložit do některého druhu závorek, nestačil by nám zápis $(\frac{1}{2})$, protože by se závorky neupravily podle velikosti daného zlomku a celý výraz by vypadal při nejmenším směšně:
Hlubší souvislosti matematické sazby
46
1 ( ) 2 Závorky se správně píší pomocí slov \left a \right. Hned za klíčovými slovy se musí nacházet oddělovač (delimiter), v našem případě kulaté závorky. S touto syntaxí si můžeme dovolit vložit do závorek kromě zlomků i prostorově složitější matematické výrazy a závorky vždy automaticky upraví svoji velikost podle potřeby. Správně zapsaný výraz vypadá takto: $\left( \frac{1}{2} \right)$ a na výstupu se zobrazí jako 1 2 Nutno podotknout, že jako příklad je zde uvedeno vždy jen jedno nebo dvě řešení zápisu. Systém TEX s desítkami svých nástaveb ale umožňuje jeden problém zapsat více způsoby. Například v případě zmenšeného zlomku je také korektní zápis $\textstyle{\frac{a}{b}}$, kde se změní styl vysázení celého výrazu v závorce. Závorky mají své specifické chování při tvorbě mezer. LATEX sám pozná, kdy jsou v sazbě závorky brány jako oddělovače a podle toho sám zvolí správné mezerování. Navzdory tomu, že se jedná o párové symboly, systém nezakazuje psaní jen jednoho oddělovače bez uzavření. Můžeme tedy s klidem zapsat \downarrow(y)] s výsledkem ↓ (𝑦)]. Kromě automaticky se upravujících závorek, o kterých už jsme psali výše, můžeme mít potřebu napsat oddělovače specifické velikosti (Grätzer, 2007). LATEXové příkazy \bigl,\Bigl,\biggl,\Biggl,\bigr,\Bigr,\biggr,\Biggr a TEXové \big,\Big,\bigg a \Bigg nám umožní napsat závorky odlišných velikostí.
4.1.7.4 Indexy a_1,a^2,a_{b_{c}},a^{b^c},a_{i+1} se zobrazí jako 𝑐 𝑎1 , 𝑎 2 , 𝑎𝑏𝑐 , 𝑎 𝑏 , 𝑎𝑖+1 U několikaúrovňových indexů je doporučováno psaní složených závorek, ikdyž to v řadě případů není vyžadováno. Menší problém vyvstane, pokud chceme zapsat index na levou stranu výrazu (např. nukleonové číslo prvku). V takovém případě musíme index vztahovat k začátku prostředí nebo ke složeným závorkám. 55 𝐶𝑎 se zakóduje takto: $$ {}^{55}Ca
Hlubší souvislosti matematické sazby
47
$$
4.1.7.5 Kombinační čísla Jiná možnost je použití výrazu \choose pro zápis zlomku s neviditelnou zlomkovou čárou nebo zápis celého výrazu jako matematického pole. Zápis \binom{a}{b} nebo \choose{a}{b} nebo také \left ( \begin{array}{*{20}c}a\\b\\end{array} \right ) se zobrazí jako 𝑎 𝑏
4.1.7.6 Integrály Při zápisu integrálu si musíme uvědomit, jestli požadujeme zobrazit integrální limity a jestli ano, tak jestli chceme mít limity zapsané na místě horního a dolního indexu nebo jen pod a nad integrálem. Starají se o to klíčová slova \limits, respektive \nolimits. Samotný integrál má klíčové slovo \int s jedním povinným parametrem. Výraz 𝑎
𝑎
∫ 𝑒 𝑑𝑥 zapíšeme jako $\int\limits_b^ae \,dx$. Druhou možností je ∫ 𝑒 𝑑𝑥 , 𝑏
𝑏
která se zapíše jako $\int_b^a{e\,dx}$. Jak vidíme, možnost \nolimits je nastavena jako výchozí, takže ji nemusíme vypisovat. Všechny parametry integrálu lze také pro přehlednost psát do složených závorek, není to ale tak vyžadováno.
4.1.7.7 Mocniny a odmocniny Zatímco pro mocniny má TEX jednoduchá pravidla v podobě horního indexu o kterém
Hlubší souvislosti matematické sazby
48
už jsme hovořili, pravidla pro psaní odmocnin jsou trochu rozsáhlejší. Základním primitivem pro zápis odmocnin je \sqrt s jedním povinným a jedním nepovinným parametrem. Výraz \sqrt{a+b}
√ 𝑎 + 𝑏 bude v TEXu i LATEXu vypadat stejně:
√ Výraz 2 𝑎 + 𝑏 už se bude v zápisu lišit. V LATEXu má tvar \sqrt[2]{{a+ b}} a v TEXu \root2 \of{a~+ b}. Slovo \root se v LATEXu objevuje v možnosti různé sazby odmocninového řádu. Podobně jako u integrálů jsme měli dvě možnosti postavení indexů, i tady můžeme pomocí \leftroot (posune argument doleva/doprava) nebo \uproot (posune argument nahoru/dolů) jemně změnit postavení argumentu. Následuje ukázka zajímavější odmocniny: 5 √ 𝑎+𝑏
Odmocninu zapíšeme jako: \sqrt[5]{{\sqrt{a+b}}}
4.2 MathML Od června roku 1999, kdy společnost W3C vydala svoji první verzi, máme možnost vysázet matematiku pomocí jazyka MathML. Důvody jeho vzniku jsou potřeba vyplnění mezery mezi strukturálním SGML a prentačním HTML a umožnění zápisu matematických vzorců v prostředí webových stránek. Jazyk MathML už od svého vzniku prošel třemi updaty, tedy je v současné době dostupný ve verzi 3.0. Hlavním cílem MathML je zpřístupnit matematiku na webu takovým způsobem, jakým HTML zpřístupňuje běžný text. Zde uvedené informace byly z největší části čerpány ze specifikace MathML (W3C, 2010).
4.2.1 MathML a HTML a jeho podpora v prohlížečích V raných začátcích jazyka MathML nebyla podpora vzhledem k HTML nijak valná. MathML musel být postupně sémanticky integrován do HTML, tzn. musel být vymyšlen mechanismus pro prohlížeče, aby MathML označily za vložený prvek a ne syntaktickou chybu HTML.
Hlubší souvislosti matematické sazby
49
Dlouhou dobu (a v mnoha případech i v současnosti) byla integrace MathML v prohlížečích řešena přídavnými prvky, které se musely do prohlížeče doinstalovat. Organizace W3C přišla prozíravě jako první se svým vlastním webovým prohlížečem, který měl plnou podporu MathML. Dnešní podpora v prohlížečích už by se dala označit za solidní. (Deveria, 2013) • Amaya je opensource webový editor a prohlížeč konsorcia W3C napsaný v jazyce C a dostupný pro platformy Windows, Unix a MacOSx. Prvotní motivací vývoje aplikace Amaya bylo poskytnutí systému, který umožní spojit více technologií konsorcia W3C. Původně představovala Amaya HTML editor s použitím kaskádových stylů CSS. Časem došlo k rozšíření a nyní je Amaya schopna pracovat s několika dokumenty naráz, jedná se o formáty XHTML, MathML a SVG. Jde o uživatelsky přívětivý editor využívající prostředí WYSIWYG. Amaya vkládá MathML výrazy dovnitř XHTML dokumentu, tj. HTML dokument psaný syntaxí XML. (W3C, 2012) • Mozilla Firefox — Perfektní podpora od verze 3. Nutná instalace fontů pro správné zobrazení MathML. • Internet Explorer — Doposud žádná podpora MathML. Existuje možnost doinstalování přídavného modulu (např. MathPlayer). • Google Chrome — Částečná podpora byla implementována ve verzi Chrome 24, ale z důvodu nestability byla pro novější verze ukončena. • Opera — Částečná podpora MathML je limitována použitím profilu kaskádovách stylů pro MathML • iOS Safari — V novějších verzích plná podpora.
4.2.2 Syntax a sémantika MathML Jazyk MathML svoji syntaxí přímo navazuje na jazyk XML. Znaky slovníku MathML musí být součástí znakové sady Unicode. Jak už bylo napsáno úvodem, úpravy přímo v kódu MathML se důrazně nedoporučují dělat ručně, protože by to mohlo být dosti zdlouhavé a náchylné k chybám. Sami tvůrci už to tak zpočátku zamýšleli. Proto existuje mnoho nástrojů jako MathType, MathMagic nebo MathFlow, které kód sami generují a autor se s ním vůbec nedostane do styku. Struktura MathML je tvořena, stejně jako v případě XML, elementy, atributy a entitami pro zápis zvláštních znaků. Vzhled matematického zápisu může být dosti nejednoznačný. Proto je důležité rozlišit významovou a vzhledovou stránku daného vzorce. Výraz 𝑓(𝑎 + 𝑏) by mohl být chápán jako: • Hodnota funkce f se dvěma parametry • Součet proměnných a a b, vynásobený proměnnou f
Hlubší souvislosti matematické sazby
50
MathML právě z tohoto důvodu používá různé skupiny prvků, které se ve specifikaci MathML (W3C, 2010) dělí do tří kategorií: • Prezentační prvky — popisují strukturu vzorce • Významové prvky — přímo popisují matematický objekt, ne jen jeho notaci • Prvky rozhraní — slouží k zapojení MathML do dokumentů HTML, XML, apod. Matematický text můžeme na základě tohoto rozdělení reprezentovat třemi základními způsoby (Wolfram Research, 2013a): • Prezentační zápis využijeme pokud chceme pouze graficky zobrazit matematickou formuli bez ohledu na její význam. • Významový použijeme pokud chceme zachytit logiku matematického zápisu. Například pokud chceme vzorec použít pro další výpočty. • Spojení obou výše uvedených značení použijeme, pokud chceme nestandardně zapsat běžnou matematickou formuli.
4.2.3 Prezentační zápis Prezentační prvky nám dávají informaci o prostorové struktuře matematického výrazu bez ohledu na jeho význam. Přímo nám říkají z jakých prvků je celý vzorec poskládán. Fungují z pohledu syntaktické struktury prakticky stejně jako odstavce nebo nadpisy v textovém dokumentu. V MathML je známých 30 prezentačních prvků s 50 atributy. (MathML, 2009) Prezentační prvky se dělí dle specifikace MathML (W3C, 2010) na 2 základní třídy: • znakové elementy (token elements) – části matematické formule nesoucí její význam. Analogicky je můžeme připodobnit ke slovům v textu. • layout schémata (např. mrow, mfrac, mroot) – slouží pro zobrazení složitějších matematických objektů jako jsou matice nebo odmocniny nebo jen jako formátovací nástroj. Layout schémata se dále dělí do několika podskupin. Více se budeme zabývat právě znakovými elementy, protože se jedná prakticky o stavební kameny celé matematické formule. Znakové elementy můžou být dvojího typu a to ty s počátečním a koncovým tagem: ... Tento typ značení má mezi svými tagy zpravidla nějaký text, znak nebo další tagy. Druhému typu se říka prázdný element a je to jakýsi hybrid mezi počátečním a koncovým tagem. Vypadá takto:
Hlubší souvislosti matematické sazby
51
Všechny znakové elementy můžeme rozšířit volitelnými atributy, které upřesňují chování daného elementu. Některé prvky mají atributy povinné. Každý atribut má své jméno a hodnotu. Zapisuje se k počátečnímu tagu mezi název elementu a ukončovací stříšku (>). V prázdném elementu se zapíše mezi název elementu a ukončovací dvojznak (/>). Hodnota atributu musí být uzavřena do uvozovek. Takto vypadá znakový element s parametrem: ... respektive Podívejme se, jak jsme schopni v jazyce prezentačního MathML zapsat jednoduchý výraz 𝑥 + 1: <math> <mrow> <mi>x <mo>+ <mn>1 Celý výraz je uzavřen do klíčového tagu /math, aby bylo jasné, že se jedná o MathML. Další prezentační prvky výrazu jsou: • mrow — zobrazuje výraz v horizontální rovině na řádek (řadí se k layout schématům, nikoliv k token elementům) • mi — označuje identifikátor, bežně sázen kurzívou • mo — označuje operátor nebo oddělovač • mn — označuje číslo Následuje zbytek používáných znakových prvků: • mtext — označuje text • ms — označuje řetězec • mspace — označuje mezeru • mglyph — používá se k označení nestandardních symbolů ve formě obrázku Důvod odlišného značení například identifikátoru (mi) a čísla (mn) je jednoduchý. Každý typ má rozdílnou sazbu. Liší se v odsazení, jiném sklonu a podobně.
Hlubší souvislosti matematické sazby
52
4.2.4 Základní matematické konstrukce Nyní se podíváme, jak si MathML poradí se zápisem nejznámějších matematických konstrukcí.
4.2.4.1 Základní aritmetika K zapsání jednoduchých operací jako je sčítání, odčítání, násobení nebo dělení, nepotřebuje MathML žádné speciální layout schémata, ale vystačí si se základními token elementy. Výraz 𝑎 + 𝑏 ∗ 𝑐⁄𝑑 se zapíše jako: <math> <mrow> <mi>a <mo>+ <mi>b <mo>× <mi>c <mo>÷ <mi>d Zkratky × a ÷ vyjadřují operátory násobení a dělení.
4.2.4.2 Zlomek K zápisu zlomku už ale budeme potřebovat tag <mfrac> z rodiny hlavních layout schémat. Syntaxe zápisu zlomku je následující: <mfrac>čitatel jmenovatel Nyní si ukážeme jak bude vypadat jednoduchý zlomek 𝑎𝑏 :
Hlubší souvislosti matematické sazby
53
<math> <mrow> <mfrac> <mi>a <mi>b Pro úplnost se podíváme na možnosti volitelných atributů tagu mfrac. Volitelných proto, protože každý z nich má nějaké svoje výchozí nastavení, není potřeba ho proto manuálně nastavovat. • linethickness — určuje tloušťku zlomkové čáry. Výchozí hodnota z možností „thin“, „medium“ a „thick“ je zvolena „medium“. • numalign — určuje zarovnání čitatele nad zlomkovou čarou. • denomalign — určuje zarovnání jmenovatele pod zlomkovou čarou. • bevelled — určuje, jestli má být zlomek zobrazen ve stylu bevelled (čitatel mírně zvednutý, jmenovatel mírně snížený a oba oddělené lomítkem) Následuje ukázka demonstrující použití volitelného atributu: 1 𝑥+
𝑥 2
= 1𝑥 +
Vzorec je v MathML reprezentován jako: <math> <mrow> <mfrac> <mn>1 <mrow> <mi>x <mo>+ <mstyle scriptlevel='+1'> <mfrac> <mi>x <mn>2 <mo>= <mfrac bevelled='true'> <mn>1
𝑥 3
Hlubší souvislosti matematické sazby
54
<mrow> <mi>x <mo>+ <mstyle scriptlevel='+1'> <mfrac> <mi>x <mn>3
4.2.4.3 Odmocniny Syntaxe pro zápis odmocnin je jednoduchá. Základ odmocniny vložíme mezi klíčové tagy <mroot> (<msqrt>) podle toho, jestli chceme nebo nechceme zobrazit řád odmocniny. Tag <mroot> má dva povinné parametry (základ a řád), tag <msqrt> pouze jeden (základ). Velikost√ znaku odmocniny se automaticky přizpůsobuje podle obsahu. Jed√ noduchý příklad 𝑥 + 2 𝑦 zapíšeme jako: <math> <mrow> <msqrt> <mi>x <mo>+ <mroot> <mi>y <mn>2
Hlubší souvislosti matematické sazby
55
4.2.4.4 Indexy a exponenty O zápis indexů a exponentů se v MathML starají tagy <msub> a <msup>, případně <msubsup>. Indexy a exponenty nejsou v MathML připojeny pouze k předcházejícímu znaku, ale k celému výrazu od jeho základu. To znamená, že je velmi zjednodušenná matematická interpretace a také to umožňuje kvalitnější vykreslení. Výraz 𝑥 2 zapíšeme jako: <math> <mrow> <msup> <mi>x <mn>2
4.2.4.5 Text v matematické formuli Pokud bychom vložili text mezi elementy mi, asi bychom s výsledkem nebyli spokojeni. Stejně jako v TEXu totiž jednotlivé znaky nepodléhají párovému srovnání1 jako v normálním textu. Proto používíme k zápisu textu element mtext. 𝑡𝑒𝑥𝑡 text <math> <mrow> <mfrac> <mrow> <mi>text <mrow> <mtext>text 1
Pokus o překlad Angl. slova „kerning“. Jedná se o automatické mezery mezi různými písmeny v textu
Hlubší souvislosti matematické sazby
56
4.2.5 Významové značení Záměrem významového neboli sémantického (jak se v mnoha pramenech uvádí) značení je poukázat na skutečný význam matematického zápisu. Matematika je o přísném dodržování formálních pravidel zápisu, díky kterým jsme schopni vyjádřit naši myšlenku. To bývá někdy složité, proto se doporučuje, spíše než odvozovat sémantiku z matematického zápisu, raději pracovat přímo s vnitřní logikou matematických objektů. K tomu nám významové značení poskytuje přesný sémantický rámec a značkovací jazyk. Problémy s odvozováním sémantiky z grafické prezentace pramení z nejednoznačnosti matematického zápisu. Vezměme si jako příklad operaci násobení A „krát“ u. Nejčastější zápis je asi 𝐴 × 𝑢, ale neméně často se jako oprátor používá tečka 𝐴 ⋅ 𝑢 nebo zápis bez znaménka 𝐴𝑢. Zkrátka odlišnost v zobrazení závisí na kontextu, ale také na samotném autorovi a zavedených zvyklostech v jeho zemi a kultuře. Kdybychom nebyli znalí kontextu, asi bychom těžko odhalili, jestli je 𝐴𝑢 výraz pro chemickou značku nebo pro násobení dvou proměnných. Významové MathML vyjadřuje matematické objekty ve stromové struktuře. Koncovými uzly stromu jsou základní matematické objekty jako čísla, proměnné nebo operátory. Kořeny stromu představují funkce nebo jiné matematické konstrukce. Základní sada významových prvků obsahuje asi 150 předdefinovaných elementů a 12 atributů. Většina z nich jsou prázdné elementy (např. sin nebo log) a konstruktory pro tvoření složitějších objektů (např. set nebo interval). Od verze MathML 3.0 také existuje tzv. Striktní významové značení. To používá minimální ale plně postačující sadu prvků k reprezentaci významu matematického výrazu v jednotné struktuře. Ve striktním významovém značení se používá pouze jeden element (csymbol) s atributy, ukazující na potřebné funkce, externě uložené v rozšiřujícím slovníku. Základními kameny významového značení jsou (W3C, 2013): • Čísla • Identifikátory • Symboly Ve výrazu 𝑥 + 𝑦 máme identifikátory proměnné, které představují nestálé hodnoty a můžou mít ještě další vlastnosti jako býti celým číslem a podobně. Naopak znaménko plus je indentifikátor, který představuje pevně danou a externě definovanou vlastnost. Právě takový typ identifikátoru je označován za symbol.
Hlubší souvislosti matematické sazby
57
Když se na věc podíváme obecněji, základní funkce a operátory mají pevné definice, proto jsou označovány jako symboly. Významové značení používá pro zápis proměnných tag a pro zápis symbolů zmiňovaný . Nejdůležitějším významovým elementem je aplikační funkce . Významové MathML rozlišuje mezi funkcí jako takovou (např. funkce sin) a výsledkem aplikace funkce na argumenty. Element apply použije operátor na jeho argumenty. Odpovídá to složitému matematickému výrazu, který je jakousi částí matematiky, která může být obklopena závorkami nebo "logickými závorkami" bez změny významu. Základní aritmetické operace Jednuduchý výraz 𝑥 + 1 můžeme zakódovat pomocí významového značení jako: plus x y V zápisu se objevuje použití striktního klíčového slova csymbol, o kterém jsme mluvili výše. Výraz plus ukazuje pomocí atributu cd (Content Dictionary) na balík funkcí pro základní aritmetické operace uložený v externím slovníku a pojmenovaný arith1. Slovo plus je názez pro použitý operátor. Matematický výraz složený z více operací využije více aplikačních funkcí. Výraz 𝑎𝑥+ 𝑏 bude zakódován jako: plus times a x b Intervaly Ve významovém značení najdeme mimo jiné i přesný výraz na zápis intervalů. Klíčové slovo interval nám dovoluje zapsat všechny druhy intervalů. Otevřený interval vypadá takto: (0 , 1) 0 1
Hlubší souvislosti matematické sazby
58
Inverzní funkce, faktoriál, … Příklad, který demonstrativně ukazuje rozdíl mezi významovým a prezentačním značením je zápis inverzní funkce. Významové značení pro ni má svůj tag . Výraz 𝑓 (−1) zapíšeme významově jednodušše takto: f Zatímco prezentační opis by vypadal o poznání složitěji: <msup> <mi>f <mrow> <mo>( <mn>-1 <mo>) Suma Jako poslední příklad v této kapitole je zde uveden zápis součtu (sumy). 𝑛
𝑖=1
<math> <sum/> i 1 n 1 x
1 𝑥
Hlubší souvislosti matematické sazby
59
4.2.6 Spojení prezentačního a významového značení O spojení obou značení je pojednáno v EVLM - příručce pro učitele (EVLM, 2006) takto: „Prezentační a obsahové značení se dají kombinovat dvěma způsoby. Buď lze promíchat obsahové a prezentační značky v jediném stromě (smíšené značení), nebo lze poskytnout oběma explicitní prezentaci a explicitní obsah ve dvou stromech. Tomu se říká paralelní značení. Obsahové i prezentační značení je nutné k plné vyjadřovací schopnosti, která se očekává od jazyka matematického značení. Často je stejný matematický zápis použitý k reprezentaci naprosto odlišných problémů. Například zápis 𝑥𝑖 může být brán (v polynomiální algebře) jako i-tá mocnina proměnní 𝑥, nebo jako i-tá komponenta vektoru 𝑥. Jindy naopak může mít stejný matematický koncept různé zápisy. Například faktoriál čísla může být zapsán pomocí vykřičníku, funkce Gamma nebo Pochhammerovým symbolem. Proto stejné zápisy mohou reprezentovat různé matematické myšlenky, a opačně, stejná matematická myšlenka může mít několik zápisů. Aby byla autorům poskytnuta maximální kontrola nad zápisem a zároveň možnost kódování významů ve strojově čitelné formě, je potřeba jak obsahového, tak prezentačního zápisu. Ve spoustě běžných situací si autor může vybrat, jestli použije jen prezentační nebo jen obsahové značení. Například když program překládá dokument s odkazy, stačí jen prezentační značení. Naopak výukový softwarový balíček může být skvěle vygenerován jen za pomoci obsahového značení. Ve spoustě situací je ale výhodné používat obě dvě značení.“ Výhodou prezentačního značení je, že může vytvářet složité vzorce využívající velké množství prvků. Nevýhodou je pevně daný vzhled, který nemůže být jednodušše přizpůsoben danému dokumentu. Někdy nastanou situace, kdy nás ani významové značení neposune ke kýženému výsledku. Pak se opět vracíme k prezentačnímu značení. V následujícím příkladu je použito obou značení: <math> <eq/> <msub> <mi>P <mi>1 <msub> <mi>P <mi>2
Hlubší souvislosti matematické sazby
1.01 1
60
Konvertor matematických objektů
61
5 Konvertor matematických objektů 5.1 Dostupná technologie Pro transformaci XML dokumentů byl přímo vytvořen XSL styl, takže nemá smysl uvažovat o složitěji implentovatelných alternativách. Konverze bude provedena ze vstupního XML (MathML) dokumentu do výstupního souboru formátu TEX. Forma MathML byla pro tyto účely zvolena prezentační. Nástrojemi pro generaci matematických objektů pro účely testování a konverzí se staly aplikace MathType a MathMagic, kde byl pomocí WYSIWYG editoru vytvořen konkrétní matematický objekt a poté byl přeložen do jazyka MathML s deklarací jmenného prostoru. Dvojí software pro tvorbu MathML objektů byl použit kvůli odlišnému využívání některých MathML tagů pro stejný grafický výsledek po překladu.
5.1.1 XML a MathML Jazyk MathML je pouze odnož jazyka XML, proto pro něho platí stejná pravidla, vytvořená konsorciem W3C. Zásady tvorby validních XML (tedy i MathML) dokumentů popisuje Ptáček takto (Ptáček, 2005): • Na začátku dokumentu musí být uvedena XML deklarace a definice jeho typu (DTD). • Elementy obsahující data musí být vždy uvozeny mezi počáteční a koncovou značku. • Elementy neobsahující data a používající jednu značku musí končit /> • Dokument obsahuje pouze jeden kořenový element, ve kterém jsou zanořeny všechny ostatní elementy. • Elementy mohou být zanořeny, nesmějí se však překrývat. • Hodnoty atributů musí být uzavřeny v uvozovkách nebo apostrofech. • Speciální znaky (>, &, …) uvádíme jako entity. Předností jazyka XML je možnost poměrně jednoduché transformace do jiných formátů. Nejlépe k tomuto účelu poslouží transformační formát XSL. (Kosek, 2000).
Konvertor matematických objektů
62
5.1.2 XSL K samotné konverzi bude použit jazyk XSL. Extensible Stylesheet Language byl vyvinut konsorciem W3C a později se také stal jejím standardem. Samozřejmě také vychází z XML, takže pro něho platí stejná pravidla a na jeho úpravu můžeme použít stejné nástroje jako na jazyk XML. Soubor formátu XSL je soubor stylů (stylesheet) pro formátování obsahu v XML. Jde prakticky o paralelu k CSS pro jazyk HTML. Lze ho rozdělit na 2 základní části (Kosek, 2010): 1. XSLT (eXtensible Stylesheet Language Transformations) se využívá k transformaci zdrojových dat ve formátu XML do libovolného požadovaného formátu, nejčastěji HTML, jiného druhu XML nebo do jiných datových struktur. Přičmž zdrojový soubor se během transformace nemění. Vznik a vývoj XSLT byl ovlivněn funkcionálními a textovými jazyky (např. SNOBOL). Jeho přímým předchůdcem je jazyk DSSSL, používaný jako doplněk k SGML a plnící prakticky stejnou funkci jako XSLT vůči XML. Nejnovější verze XSLT je z června roku 2012 a přináší nová vylepšení v podobě streamovaných transformací a zlepšení modularity některých stylů. 2. Druhá formátovací část se nazývá XSLFO (XSL Formatting Objects). Používá se především pro definici stránkového rozložení dokumentu. Lze pomocí něho určovat rozložení textu na stránce, vícesloupcové sazby, obtékání objektů, velikosti písma, výšky řádku, záhlaví nebo zápatí. Jeho základním stavebním kamenem jsou formátovací objekty, pomocí kterých toto rozložení stránek definujeme.
5.1.3 Použití XPath v XSLT Nedílnou součástí celého XSL je jazyk XPath používaný k navigaci v dokumentu formátu XML a k vyhledávání jeho součástí. Dokument je přitom chápán jako stromová struktura s elementy jako uzly a Xpath umožňuje pracovat s jejich hodnotami a atributy. XPath obsahuje knihovny standardních funkcí (funkce pro řetězce, čísla, datum, čas, boolean hodnoty, atd.). Je hlavním elementem ve standardu XSLT. Bez jeho znalosti nejsme schopni vytvořit dokument formátu XSLT. V listopadu 1999 se stal Xpath samostatným standardem W3C. (w3schools, 2013).
Konvertor matematických objektů
63
5.1.4 XSLT procesory a parsery Ke zdárné transformaci je nutné použití nějakého XSL procesoru, který je možný naimplementovat ve všech známých programovacích jazycích. Procesor je spustitelný jako samostatný program v příkazové řádce nebo lze jeho funkci využít v rámci knihovny začleněné do vlastní aplikace (Kosek, 2011). Nejznámější a nejpoužívanější procesory jsou: • Xalan — procesor zdarma dostupný ve verzích C++ a Java. (Apache, 2013). • Saxon — procesor napsaný v jazyce Java a v novější verzi dostupný i pro platformu .NET. Je možné ho stáhnout v komerční i opensource verzi. Standardní distribuce obsahují i česká kódování ISO 8859-2 a windows 1250. Saxon je vyvíjen pouze jedním člověkem, Michaelem Kayem (Saxonica, 2013). • XT — procesor napsaný v jazyce Java. Jeho výhodou je poměrně úplná implementace transformační části XSL. XT bohužel nepodporuje formátovací objekty, takže se hodí pouze pro konverzi mezi různými XML schématy nebo mezi XML a HTML. Jeho vývoj byl již ukončen. (Kosek, 2011). • MSXML — napsaný v jazyce C++. Jedná se o uzavřený placený program vyvinutý společností Microsoft. Jeho velká výhoda je rychlost. (Kosek, 2011) Nezbytnou součástí XSL procesoru je i XSL parser. V případě Xalanu je to například parser Xerces. (Apache, 2010)
5.1.5 Podpora XSLT v prohlížečích Pro převod webového obsahu se transformace může uskutečnit přímo ve webovém prohlížeči. Dříve, z nedostaku podpory v prohlížečích, se tranformace prováděly spíše na straně serveru. (Kosek, 2011) Dnes už všechny známé webové prohlížeče podporují XSLT (w3schools, 2013): • Mozilla Firefox — podpora XML, XSLT a XPath od verze 3. • Internet Explorer — podpora XML, XSLT a XPath od verze 6. Není ale zaručená kompatibilita s oficiálním doporučením W3X XSL. • Google Chrome — podpora XML, XSLT a XPath od verze 1. • Opera — podpora XML, XSLT a XPath od verze 9. • Apple Safari — podpora XML a XSLT od verze 3.
Konvertor matematických objektů
64
5.2 Jak to funguje K procesu samotné transformace je zapotřebí XSLT procesor a dva hlavní pracovní soubory. • vstupní XML soubor obsahující zdrojová data, která mají být převedena • XSL soubor obsahující šablony, podle kterých se zdrojový soubor transformuje Každý dokument se souborovou příponou XML obsahuje nějakou množinu pravidel nazývanou šablona (template), přičemž každá šablona obsahuje pravidla konverze pro specifickou část dokumentu. XSL procesor potom prohledává celou stromovou strukturu XML dokumenu a zpracovává shodující se značky s parametrem match v tagu xsl:template. Pokud procesor najde shodu, provede konverzi dílčí části do výstupního souboru. Nutno podotknout, že soubor formátu XSLT je sám o sobě XML dokument, protože používá syntaxi XML.
name: /img/jakPracujeXSLT2.png file: /img/jakPracujeXSLT2.png state: unknown
Obrázek 5.1 Princip zpracování souboru formátu XML procesorem, zdroj: Kosek.cz, 2013
5.2.1 Jmenný prostor V souboru formátu XSLT kombinujeme dvě různé sady značek a sice příkazy pro
Konvertor matematických objektů
65
XSL procesor a značky výsledného dokumentu (třeba HTML tagy). Jmenný prostor nám slouží k rozlišení těchto dvou typů. V dokumentu už potom stačí napsat před elementy, které mají být zpracovány procesorem speciální prefix xsl.
5.2.2 Elementy XSL souboru Takto vypadají úvodní řádky každého XSL souboru. Jedná se o klíčové elementy, které deklarují xsl styl. (w3schools, 2013). <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:m="http://www.w3.org/1998/Math/MathML"> Na prvním řádku se nachází formalita každého dokumentu formátu XML, tedy verze a kódováni. Druhý a třetí řádek ukazuje verzi XSL a dále také identifikuje jmenný prostor pomocí URL. Čtvrtý řádek obsahuje další identifikaci jmenného prostoru v tomto případě jazyka MathML (toto už slouží ke konkrétní situaci - použití MathML). Poté už následují samotné šablony, které definují, jakým způsobem se bude provádět transformace do výstupního dokumentu. Stejnou funkčnost má i takto zapsaná deklarace: <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Nejdůležitějším elementem je element šablony: <xsl:template match="/"> ... Slovo match ukazuje, kde v dokumentu se bude šablona používat. V tomto připadě se jedná o root dokumentu. Na místě tří teček se nachází konkrétní informace o transformaci. K co nejpřesnějšímu popsání postupu slouží celá řada xsl elementů, včetně podmínek, řazení a jiných mechanizmů velmi známých z programovacích jazyků. Tady jsou některé z nich: • <xsl:value-of select=.../> • <xsl:for-each select=...> • <xsl:sort select=.../> • <xsl:if test=...> • <xsl:when test=...>
Konvertor matematických objektů
66
Na místech tří teček se zpravidla nachází dotaz či podmínka ve formátu jazyka XPath.
5.2.3 Módy šablon a priorita Můžeme se dostat do situace, kdy potřebujeme určitou část vstupního dokumentu zpracovat vícekrát, pokaždé ale jinou šablonou. To by ale znamenalo vytvořit více šablon, které mají stejný parametr match. Musíme tedy nějakým způsobem dát najevo procesoru, kdy má použít kterou šablonu. Slouží k tomu nepovinný parametr mode. Libovolnou šablonu si můžeme kromě jména označit určitým názvem módu, přičemž takto pojmenovaná šablona nebude použita, pokud nebude uveden stejný název módu také v příkazu xsl:apply-templates. Další sekundární možností odlišení stejně pojmenovaných šablon (i stejně pojmenovaných modů) je použití parametru priority. Přiřazením vyššího čísla danou šablonu preferujeme před šablonami s nižšími čísly priority.
5.3 Metodika řešení Tvorba xsl souboru probíhala prvotně podrobným nastudováním prezentační formy jazyka MathML. Poté byly aplikacemi MathType a MathMagic vytvořeny matematické objekty po vzoru dokumentu s objekty sloužícímu ke konverzi v přechozí kapitole. Objekty byly převedeny do MathML reprezentace a následně podrobně zkoumány ze syntaktického hlediska. Dost problémů vyvstalo při bádání nad využitím různých parametrů MathML tagů v souvislosti s převodem do syntaxe TEXu. Velkými pomocníky se v tomto problému ukázaly aplikace MathMagic a MathType, protože umožnily nahlédnout i na TEXovou reprezentaci vytvořeného objektu, a tím pádem se dalo využít zpětné vazby a kontroly. Dle dokumentu se vzorci z kapitoly Konverze byly vytvořeny šablony pro: • zlomek • zmenšený zlomek (a jiné zmenšené objekty) • index a exponent • integrál s mezemi na místě indexu a exponentu • integrál nad a pod znakem integrálu • limity • matice • kombinační číslo
Konvertor matematických objektů
67
• různé druhy závorek • akcenty • operátory • mezery Následuje konkrétní řešení výše uvedených šablon v souboru XSL.
5.3.1 Šablona pro zlomek Používá se tag mfrac. Zohledněny jsou také parametry linethickness pro určení tloušťky zlomkové čáry, typenumalign a typedenomaling pro určení zarovnání čitatele a jmenovatele. Pro zápis zlomku bez parametrů je po konverzi zvolen tento jednoduchý formát: \[ \frac{a}{b} \] K zápisu zlomku s parametry je použit formát \genfrac se šesti parametry, zahrnující všechny výše jmenovanné. S parametrem linethickness se váže zvláštnost v podobě zápisu kombinačního čísla. To je možné vyrenderovat za použití příkazu \genfrac s nastavením nulové tloušťky zlomkové čáry a nebo můžeme použít příkaz \binom zavedený přímo pro zobrazení kombinačních čísel. Oba dva způsoby se jemně liší v konečném vyrenderování. V konvertoru je aplikován druhý způsob \binom. Dalším zohledněným a trochu specifičtějším parametrem výrazu mfrac je parametr bevelled. Převede klasicky zapsaný zlomek na výraz 𝑎/𝑏 . Lze zde názorně vidět zjednoduššené značení pomocí jednoho parametru jazyka MathML proti značení TEXu. Takto vypadá zlomek v MathML reprezentaci: <math> <mrow> <mfrac bevelled='true'> <mi>a <mi>b a po konverzi takto v kódu TEXu:
Konvertor matematických objektů
68
\[ \frac{a}{b}\raisebox{1ex}{a}\!\left/ \!\raisebox{-1ex}{b}\right. \]
5.3.2 Šablona pro zmenšený zlomek Takto jemnou změnu lze v jazykce MathML i TEX řešit hned několika způsoby. V konvertoru byla implementována možnost použití parametru scriptlevel tagu mstyle. Nastavením scriptlevel=+1 dostaneme v TEXové reprezentaci výraz ohraničený značkou textstyle, která iniciuje zmenšení celého výrazu. V programu MathMagic je zmenšení zlomku řešeno úpravou velikosti čitatele a jmenovatele parametrem mathsize tagu mi.
5.3.3 Šablona pro index a exponent Využito je tagů msup a msub, případně msubsup. V TEXové reprezentaci je použito značení stříšky (^) a podtržítka (_). Indexy a exponenty situované z druhé strany výrazu (například značka chemického prvku) jsou v konvertoru řešeny tímto způsobem: \[ {}_{a}^{c}x \] Následuje značení "obyčejného" indexu a exponentu: \[ a_{3}^{2} \]
5.3.4 Šablona pro integrál s mezemi na místě indexu a exponentu Použit je tag msubsup se značkou integrálu jako obyčejného mo symbolu. Tag msubsup
Konvertor matematických objektů
69
nevyžaduje žádný specifický základ, může být aplikován na kterýkoliv znak mo. \[ \int_b^a {25} \]
5.3.5 Šablona pro integrál s mezemi nad a pod znakem integrálu Pro tento případ se využije znak munderover. V TeXové reprezentaci se používá výrazu "základ"\limits_a^b. Pokud je základ jiný než TEXu známý objekt jako limita, integrál, suma a podobně, je nutné ohraničit základ výrazem \mathop. Pokud by se tak nestalo, limitní hodnoty by byly vyrenderovány na místě indexu a exponentu. Tento postup je aplikovatelný opět i na ostatní znaky, například suma nebo limita.
5.3.6 Šablona pro matice Pro zápis matice je použit tag mtable. Po TEXové transformaci je matice řešena značením \begin{matrix} a \end{matrix} pro ohraničení maticového pole, ampersandem (&) pro ukončení buňky a zdvojeným lomítkem (//) pro ukončení řádku.
5.3.7 Šablona pro kombinační číslo Zápis kombinačního čísla je řešen jako matice o jednom sloupci a dvou řádcích a nebo jako zlomek s neviditelnou zlomkovou čárou. Po konverzi je kombinační číslo zobrazeno pomocí znaku \binom nebo pomocí maticového pole.
5.3.8 Šablona pro různé druhy závorek Pro odlišení mezi obyčejnými a roztahujícími se závorkami jsou po konverzi v TEXové
Konvertor matematických objektů
70
reprezentaci zvoleny neviditelné oddělovače (\left. a \right.) navazující na nepárové závorky (\middle"nějaký druh závorky"). Obyčejné statické závorky jsou řešeny pouhým zkopírováním znaku závorky. Takto vypadá v TEXové reprezentaci výraz pro roztahující se závorky: {\left.\middle( a~\middle)\right.} a takto výraz se závorkami s parametrem stretchy=’false’ (obyčejné závorky): {\left.( a~)\right.} Ačkoli je tento zápis neviditelných oddělovačů ve většině případů zbytečný, pomohl tak výrazně zjednodušit implementaci šablon v souboru XSL. Výrazem \left.\middle( dostaneme stejný výstup jako při použití znaku \left(. Druhou možností, jak zapsat závorky v jazyce MathML je použití tagu mfenced, který je v konvertoru také zohledněn.
5.3.9 Šablona pro goniometrické funkce Funkce jsou zapsány jako znaky mo. V konverzi do TEXu jsou specifikovány funkce sin, cos, cot, tan, log. V případě použití jiných funkcí je zápis řešen výrazem \mathop{\mathrm{"nějakáfunkce"}}.
5.3.10 Šablona pro akcenty Použítí znaku mover. Tento tag má pro tyto účely i speciání nepovinný parametr accent, který v konečném výsledku vysází akcent trochu blíže základu. Pro parametr accent jsou v konvertoru uvažovány tyto akcenty: dot (tečka), ddot (dvojtečka), tilde (vlnka)), hat (stříška), vec (šipka) a bar (podtržítko).
5.3.11 Šablona pro operátory Při konverzi jednoduchých výrazů typu a+b=c došlo nečekaně k drobným problé-
Konvertor matematických objektů
71
mům. Dospělo se k závěru, že takto jednoduché rovnice jsou chybně řešeny v programu MathType. Při překladu totiž není použito znaku mrow či mstyle, přičemž defaultní renderování znaku semantics se v jazyce MathML vztahuje jen na jeho prvního potomka ve stromové struktuře. Tímto docházelo při konverzi k převedení pouze prvního znaku rovnice. Naštěstí se dá tento problém celkem jednodušše vyřešit úpravou šablony pro znak semantics. <xsl:template mode="sablona" match="m:semantics"> <xsl:apply-templates mode="sablona" select="child::* except (m:annotation,m:annotation-xml)"/>
5.3.12 Šablona pro mezery Řešení mezer se opět výrazně liší v podání MathTypu od aplikace MathMagic. MathType nepoužívá MathML syntaxi mspace, ale vystačí si s tagy mtext a unicode znaky jednotlivých mezer. Zatímco program MathMagic znázorňuje mezeru parametry tagu mspace. Parametry mohou být height, width a depth. Konvertor bere v úvahu jak "MathTypovské" mezery pomocí mtext, tak také znak mspace se všemi parametry. Mezera vytvořená pomocí mspace s jedním parametrem width vypadá takto: \hspace{width} Při více známých parametrech tagu mspace je potom konverze mezery provedena takto: \phantom{\rule[depth]{width}{height}}
5.4 Implementace konvertoru Aplikace pro konverzi je napsaná v jazyce Java za použití freeware vývojového prostředí Netbeans od společnsoti Sun Microsystems. Důvod výběru programovacího jazyka Java je prostý, existuje pro něho nejvíce knihoven pro práci s XML a celková oblíbenost Java aplikací a Java jazyka jako takového je u užvatelů všeobecně na velmi vysoké úrovni, tzn. většina uživatelů má nainstalo-
Konvertor matematických objektů
72
vaný nějaký JRE (Java Runtime Environment). (Krill, 2013) XSLT procesor byl zvolen Saxon z důvodu jeho dobré dostupnosti a aktivního přístupu Michaela Kaye k neustálému vývoji2. Interface konvertoru je naprosto triviální, stačí v podobě parametrů nastavit v příkazovém řádku zdrojový soubor formátu XML, transformační soubor formátu XSL a výsledný textový soubor. Příkaz pro spuštění konvertoru s libovolně nastavitelným xsl souborem pro konverzi: java -jar konvertor.jar xmlSoubor.xml xslSoubor.xsl output.txt nebo java -jar konvertor.jar xmlSoubor.xml output.txt pokud chceme používat xsl soubor pouze pro konverzi MathML -> TeX. Nutné je správné umístění všech potřebných souborů v jednom tomtéž adresáři. Výsledný soubor se potom vytvoří na stejném místě. Aplikace byla testována na operačním systému Windows 7, ale vzhledem k multiplatformnosti java aplikací předpokládám, že bude správně fungovat i na jiných operačních systémech. Program je ve spustitelném formátu jar, včetně zdrojového kódu, souboru formátu XSL, transformačních knihoven a několika pokusných MathML souborů umístěn v příloze bakalářské práce na optickém disku.
2
Poslední aktualizovaná verze je dostupná na oficiálních stránkách od 19. dubna 2013 (Saxonica, 2013)
Diskuze
73
6 Diskuze Na současném softwarovém trhu má v oblasti operačních systémů s přehledem největší podíl společnost Microsoft a jejich produkt Windows. S tím samozřejmě souvisí také vysoká popularita kancelářského balíku Office, v jehož novějších verzích již najdeme schopný editor matematických objektů. Pokud ale budeme chtít vložit matematický obsah třeba na web, budeme nuceni se porozhlédnout i po jiných možnostech. Jako výborná alternativa se jeví další kancelářský balík OpenOffice.org, který má tu důležitou schopnost, kterou bychom marně hledali v konkurenčních Office, a sice možnost tvorby matematické rovnice jako samostatného objektu se schopností konverze do jazyka MathML. Pro konverze do jazyka MathML z různých jiných formátů (nejčastěji z TEXu) existuje mezi současným programovým vybavením velký počet nástrojů3, na rozdíl od konvertorů z opačné strany, tedy z jazyka MathML do TEXu. Pro tento typ konverze se, jak uvádí Schubert ve své bakalářské práci (Schubert, 2008), výborně hodí například online nástroj ORCCA, který ale bohužel v současné době není funkční. (Orcca, 2013) Po provedení konverzí a určení jejich kvality (jak přehledně ukazují tabulky 3.1 až 3.5) v kapitole číslo tři se došlo k závěru, že nejlepší variantou pro zápis matematiky je použití formátů TEX a právě MathML, přičemž v souvislosti s obrovským rozvojem Internetu za posledních pár let se jako výhodnější forma pro zobrazení matematiky na webu jeví jazyk MathML (z důvodu spojení s HTML). Pro obyčejnou sazbu třeba písemek z matematiky se však lépe hodí systém TEX. Při návrhu aplikace bylo již zpočátku jasné, že se použije transformace pomocí stylu XSL. Trochu složitější bylo zjišťování informací o dostupných transformačních knihovnách a procesorech, protože jsou v mnoha případech k dohledání velmi zastaralé a nefukční verze. Na PC s operačním systémem Windows 7 byly otestovány různé transformační procesory, přičemž pro bezchybný provoz se podařily odladit pouze procesory Saxon a Xalan. Později se ukázalo, že procesor Xalan pracuje pouze se styly verze 1.0, tudíž se výběr zúžil na procesor Saxon. Výsledná aplikace splňuje kritéria konverze pro většinu matematických výrazů. Aplikace je jednoduchá na ovládání, konverze provádí rychle a v případě zadání nežádoucích parametrů je ošetřena výjimkami. Doporučeným řešením pro tvorbu matematických objektů je použití opensource aplikace OpenOffice.org ve spojení s tímto konvertorem. Tím pojmeme všechny nejroz3
Rozsáhlý přehled různých konverzačních programů je dostupný na webu W3C na adrese: http://www.w3.org/Math/Software/mathml_software_cat_converters.html
Diskuze
74
šířenější možnosti tvorby matematiky a jsme osvobozeni od placení poplatků po vypršení zkušebních lhůt, jak tomu je v případě většiny ostatních aplikací. Za nedořešený nedostatek konvertoru by se dalo považovat formátování výstupního dokumentu. Konvertor transformuje jednotlivé hodnoty s mezerami podle odsazení párových a nepárových tagů v dokumentu formátu XML a také podle odsazení v samotné šabloně v souboru XSL. Výsledek je proto někdy, ač syntakticky správný, dosti nepřehledný. K nepřehlednosti také může přispívat větší množství složených závorek v některých výstupech, opět se ale nejedná o funkční vadu. Přidanou hodnotou pro některé uživatele by také mohlo být použití jednoduchého a přehledného GUI, k jehož tvorbě jazyk Java díky svým možnostem přímo vybízí. Avšak funkčnost programu by tímto krokem nebyla nikterak pozitivně ovlivněna, ba naopak, pokud se na proces díváme třeba z pohledu rychlosti prováděných konverzí. S grafickou stránkou také souvisí dnes velice populární WYSIWYG editor, který by šel určitě také s pomocí vhodné GUI doimplementovat. Potom už by se ovšem nejednalo jen o konvertor, ale o matematický editor. Implementačně jednodušší by bylo vylepšit konvertor ve smyslu přidání funkce na tvorbu obrázků z konvertovaných vzorců. Konvertor by se dal zdokonalit přidáním obrovského množství dalších šablon, které by dokázaly zachytit ostatní parametry vysktytující se v jazyce MathML. Tento konvertor sice neumí zdaleka pojmout všechny možnosti jazyka MathML, nicméně na převod všech základních matematických objektů i s některými parametry plně postačí.
Závěr
75
7 Závěr Cílem této bakalářské práce bylo implementovat konvertor matematických objektů. K tomu bylo zapotřebí prozkoumat a zhodnotit současný software, v kterém se můžeme setkat s tvorbou a editací matematiky. Provedením konverzí a určením kvality konverze byly zjištěny přednosti a zápory dostupných formátů a v konečném zúčtování bylo určeno z jakého a do kterého formátu se bude konverze matematických objektů provádět. Nutné bylo také nastudovat transformační možnosti jazyka XML a zorientovat se v dostupných nástrojích k tomu určených. Především je tím myšleno pochopení jazyka XSLT a docela podrobné nastudování jeho součásti, jazyka Xpath. Samotná implementace konvertoru v jazyce Java obnášela otestování a zahrnutí transformační knihovny Saxon do projektu. Cíl bakalářské práce se podařilo splnit a do budoucna je zde i reálná eventualita v rozšíření a dopilování aplikace v rámci například diplomové práce.
Literatura
76
8 Literatura
A. Xalan-Java Version 2.7.1 [on-line]. 2006. [cit. 2013-03-22]. Dostupné na: http://xml.apache.org/xalan-j/. A. Xerces-C++ XML Parser [on-line]. 2010. [cit. 2013-03-22]. Dostupné na: http ://xerces.apache.org/xerces-c/. A OO. Why Apache OpenOffice [on-line]. 2013. [cit. 2013-04-06]. Dostupné na: http://www.openoffice.org/why/. CAS [on-line]. 2013. [cit. 2013-03-25]. Dostupné na: http://en.wikipedia.org/wiki/Pdf.
D . MathML for Math and Science Communication [on-line]. 2013. [cit. 2013-03-21]. Dostupné na: http://www.dessci.com/en/reference/webmath/tech/mathml.htm. D . Products [on-line]. 2013a. [cit. 2013-04-10]. Dostupné na: http:// www.dessci.com/en/products/. D, A. Can I use MathML? [on-line]. 2013. [cit. 2013-03-16]. Dostupné na: http://caniuse.com/mathml. Doc (computing) [on-line]. 2008. [cit. 2013-03-22]. Dostupné na: http://en.wikipedia.org/wiki/Doc_%28computing%29. D. Formát souborů systému Microsoft Office 2007 [on-line]. 2007. [cit. 2013-03-11]. Dostupné na: http://www.docx.cz/. D, M. Moodle [on-line]. 2013. [cit. 2013-02-09]. Dostupné na: https://moodle.org/. DM. Home page [on-line]. 2010. [cit. 2013-03-22]. Dostupné na: http://www. dragmath.bham.ac.uk/. EVLM. Příručka pro učitele: Matematický jazyk MathML 2.0 [on-line]. 2006. [cit. 2013-03-21]. Dostupné na: http://147.228.60.216:8080/EVLM/ucitel/ .doc. F, J. Úvod do XML [on-line]. 2013. [cit. 2013-03-21]. Dostupné na: http://lynx1.felk.cvut. les/slides/lecture5.pdf. G. Google Documents [on-line]. 2013. [cit. 2013-02-18]. Dostupné na: https://docs.google.com. G. Nástroje pro sazbu matematiky: Přehled [on-line]. Grafika, 2004, 20. února 2004 [cit. 2013-04-15]. Dostupné na: http://www.grafika.cz/rubriky/ software/nastroje-pro-sazbu-matematiky-prehled-132215cz. G, G. More math into LaTeX. 4. vyd. New York : Springer, 2007. 619 s. ISBN 978-0-387-32289-6. G, Š. Podpora MathML v prohlížečích a editorech [on-line]. Interval,
Literatura
77
2004, 14. května 2004 [cit. 2013-04-15]. Dostupné na: http://interval.cz/ clanky/podpora-mathml-v-prohlizecich-a-editorech/. K, P. The State of MathML?: Mathematically Speaking (and Stuttering) [on-line]. 2000. [cit. 2013-03-12]. Dostupné na: http://www.irt.org/articles/js208/. K; B, C; L. Typesetting mathematics - User guide (second edition) [on-line]. 1978. [cit. 2013-03-22]. Dostupné na: www.kohala.com/st art/troff/v7man/eqn/eqn2e.ps. K; D, B; D. The TEXbook. . vyd. Boston : Addison Wesley, 1986. 483 s. ISBN 0–201–13448–9. K, J. Seriál o XML pro Softwarové noviny [on-line]. 2000. [cit. 2013-03-22]. Dostupné na: http://www.kosek.cz/clanky/swn-xml/index.html. K, J. XSLT v příkladech [on-line]. 2011. [cit. 2013-03-22]. Dostupné na: http: //www.kosek.cz/xml/xslt/implementace.html. K, P. Java retakes the lead in language popularity [on-line]. Infoworld, 2013, 8. února 2013 [cit. 2013-04-15]. (ISSN 0199-6649.) Dostupné na: http://www. infoworld.com/d/application-development/java-retakes-the-le ad-in-language-popularity-212558. LO. LibreOffice v češtině? [on-line]. 2013. [cit. 2013-03-22]. Dostupné na: http://cs.libreoffice.org/. L. LyX – The Document Processor [on-line]. 2013. [cit. 2013-02-15]. Dostupné na: http://www.lyx.org/. M. MathCast home [on-line]. 2013. [cit. 2013-03-22]. Dostupné na: http:// mathcast.sourceforge.net/home.html. M. MathMagic, the ultimate Equation Editor on the planet! [on-line]. 2013. [cit. 2013-03-22]. Dostupné na: http://www.mathmagic.com/index.html.
MathML [on-line]. 2009. [cit. 2013-03-21]. Dostupné na: http://edutechwiki.unige.ch/en/MathML. M. Office [on-line]. 2013. [cit. 2013-03-22]. Dostupné na: http://office.microsoft.com/cs-cz/?CTT=97. O, P. TEXbook naruby. 2. vyd. Brno : Konvoj, 2001. 466 s. ISBN 80–7302–007–6. O, P. Proč nerad používám LaTeX [on-line]. Zpravodaj CSTUG, 1997, Number 1–2, pages 89–99 [cit. 2013-04-10]. (ISSN 1213-8185.) Dostupné na: http: //bulletin.cstug.cz/pdf/bul971-2.pdf. O . Co je Open Document Format (OpenDocument, ODF) [on-line]. 2008. [cit. 2013-03-22]. Dostupné na: http://www.opendocument.cz/section/ co-je-odf. OO. Co je OpenOffice.org? [on-line]. 2013. [cit. 2013-03-22]. Dostupné na: http://www.openoffice.cz/openoffice-org. OM. Overview Of OpenMath [on-line]. 2012. [cit. 2013-04-14]. Dostupné na:
Literatura
78
http://www.openmath.org/overview/index.html. O. MathML to TeX Online Translator [on-line]. 2008. [cit. 2013-05-20]. Dostupné na: http://www.orcca.on.ca/MathML/texmml/mmltotex.html. P, V. Vše o XML [on-line]. Linuxzone - server o Linuxu pro programátory a fanoušky, 2002, 4. červen 2002 [cit. 2013-04-15]. (ISSN 1213-8738.) Dostupné na: http://www.linuxzone.cz/index.phtml?ids=2&idc=266. Portable Document Format [on-line]. 2013. [cit. 2013-03-22]. Dostupné na: http://en .wikipedia.org/wiki/Pdf. P, M. Zápis XML dokumentu [on-line]. 2005. [cit. 2013-03-21]. Dostupné na: http://homel.vsb.cz/ s1a10/educ/EPubl/latex-docbook/ch08 s01.html. R, J. LATEX pro začátečníky. 3. vyd. Brno : Konvoj, 2003. 238 s. ISBN 80–7302–049–1. S. XSLT and XQuery Processing [on-line]. 2013. [cit. 2013-04-05]. Dostupné na: http://www.saxonica.com/welcome/welcome.xml. S, D. Použití matematického textu v prostředí webu. (Bakalářská práce.) Brno : Mendelova zemědělská a lesnická univerzita, 2008. 50 s. S, R. Matematická sazba [on-line]. 2005. [cit. 2013-05-20]. 22 s. Dostupné na: http://martin.feld.cvut.cz/ kudlacek/TED/matsaz.pdf. T. HTML5-MathML [on-line]. 2013. [cit. 2013-03-21]. Dostupné na: http://www.tutorialspoint.com/html5/html5_mathml.htm. W3C. Amaya Home Page [on-line]. 2012. [cit. 2013-03-21]. Dostupné na: http:// www.w3.org/Amaya/. W3C. Mathematical Markup Language (MathML) Version 3.0 [on-line]. 2010. [cit. 2013-03-20]. Dostupné na: http://www.w3.org/TR/MathML3/. W3S. XSLT Tutorial [on-line]. 2013. [cit. 2013-03-21]. Dostupné na: http:// www.w3schools.com/xsl/default.asp. W . MathML Central: History of MathML — The Two Threads of Math ematical Computer Languages [on-line]. 2013. [cit. 2013-0 -12]. Dostupné na: http://www.mathmlcentral.com/history.html. W . Working with MathML — Wolfram Mathematica 9 Documentation [on-line]. 2013a. [cit. 2013-04-19]. Dostupné na: http://reference.wolfram.com/ma matica/XML/tutorial/MathML.html.
Seznam použitých zkratek
79
9 Seznam použitých zkratek ASCII CAS CSS DOC DOCX DTD GIF GUI HTML ISO JPG JRE MML ODF ODT OLE PDF PNG PS RTF SGML SMF SXM TXT URL WMF
American Standard Code for Information Interchange. Jde o kódovou tabulku definující různé znaky Computer Algebra System. Složitější matematické aplikace Jazyk pro popis způsobu formátováni stránek napsaných v jazyce HTML, XHTML Starší souborový formát společnosti Microsoft, používaný v kancelářském balíku Office Souborový formát založený na XML a ZIP společnosti Microsoft, používaný v kancelářském balíku Office 2007 a vyšší Document Type Definition. Množina dokumentá spadající do dané třídy Graphics Interchange Format. Grafický formát pro rastrovou grafiku Graphical User Interface. Grafické uživatelské rozhraní HyperText Markup Language. Značkovací jazyk pro webový obsah International Organization for Standardization. Organizace spravující mezinárodní standardy Grafický formát založený na ztrátové kompresi Java Runtime Environment. Prostředí pro spuštění java aplikací Souborová přípona jazyka MathML Souborový formát OpenDocument, používaný aplikací OpenOffice Souborový formát OpenDocument, používaný aplikací Writer kacelářského balíku OpenOffice.org Object Linking and Embedding. Technologie umožňující export různých částí dokumentu mezi jednotlivými aplikacemi Portable Document Format. Formát společnosti Adobe nezávisle spustitelný na všech platformách (Portable Network Graphics. Grafický formát určený pro bezztrátovou kompresi rastrových obrázků Postcript. Formát k určení popisu tiskuntelných dokumentů Rich Text Format. Formát společnosti Microsoft pro uložení textu. Standard Generalized Markup Language. Komplexní značkovací jazyk. Stojí za vznikem většiny známých značkovacích jazyků Formát pro matematický zápis programu StarOffice Formát starších verzí aplikace Math balíku OpenOffice Formát prostého textu. Angl. plain text Uniform Resource Locator. Řetězec znaků s adresou na konkrétní webovou stránku Windows meta file je grafický formát vyvinutý společností Microsoft
Seznam použitých zkratek
WYSIWYG WYSIWYM XML XSL XSLFO XSLT ZIP API
80
v devadesátých letech. Pracuje na stejném principu jako formát SVG a může obsahovat vektorou i rastrovou složku What you see is what you get. V překladu co vidíš, to dostaneš What you see is what you mean. V překladu co chceš, to dostaneš Extensible Markup Language. Značkovací jazyk konsorcia W3C Jazyk na transformaci XML dokumentů XSL Formatting Objects. Jazyk na formátování vzhledu dokumentu. Součást XSL Extensible Stylesheet Language Transformations. Jazyk na transformaci XML dokumentů, součást XSL Populární souborový formát pro kompresi a archivování dat Application Programming Interface. Rozhraní pro programování aplikací
Seznam tabulek
81
10 Seznam tabulek 3.1 3.2 3.3 3.4 3.5
Seznam vzorců vytvořený aplikací Equation editor dostupnou pro starší verze MS Office Seznam vzorců vytvořený nativním editorem (MS Office 2007 a novější) Seznam vzorců vytvořený v OpenOffice Writer aplikací Math Seznam vzorců vytvořený aplikací Google Documents Seznam vzorců vytvořený jinými aplikacemi, načtený Google documents
27 27 28 29 29
Seznam obrázků
82
11 Seznam obrázků 4.1 5.1
Jednoduchý princip práce systému TEX (LATEX), zdroj: gjszlin.cz, 2013 Princip zpracování souboru formátu XML procesorem, zdroj: Kosek.cz, 2013 12.1 Pracovní prostředí aplikace Google Documents 12.2 Pracovní prostředí aplikace MS Word 2010 12.3 Pracovní prostředí aplikace Math (součást OpenOffice) 12.4 Pracovní prostředí aplikace LyX 12.5 Pracovní prostředí aplikace DragMath 12.6 Pracovní prostředí aplikace MathCast 12.7 Pracovní prostředí panelu pro matematický zápis os Windows 12.8 Pracovní prostředí aplikace MathMagic 12.9 Pracovní prostředí aplikace Formula sheet equation editor 12.10 Pracovní prostředí aplikace MathType
39 64 83 84 85 86 87 88 89 90 91 92
Přílohy
83
12 Přílohy 12.1 Screenshoty testovaných programů
name: /img/googleDocs.png file: /img/googleDocs.png state: unknown
Obrázek 12.1 Pracovní prostředí aplikace Google Documents
Přílohy
84
name: /img/Word.png file: /img/Word.png state: unknown
Obrázek 12.2 Pracovní prostředí aplikace MS Word 2010
Přílohy
85
name: /img/OpenOfficeMathHlavni.png file: /img/OpenOfficeMathHlavni.png state: unknown
Obrázek 12.3 Pracovní prostředí aplikace Math (součást OpenOffice)
Přílohy
86
name: /img/Lyx.png file: /img/Lyx.png state: unknown
Obrázek 12.4 Pracovní prostředí aplikace LyX
Přílohy
87
name: /img/dragMathHlavni.png file: /img/dragMathHlavni.png state: unknown
Obrázek 12.5 Pracovní prostředí aplikace DragMath
Přílohy
88
name: /img/MathCast.png file: /img/MathCast.png state: unknown
Obrázek 12.6 Pracovní prostředí aplikace MathCast
Přílohy
89
name: /img/panelWin.png file: /img/panelWin.png state: unknown
Obrázek 12.7 Pracovní prostředí panelu pro matematický zápis os Windows
Přílohy
90
name: /img/MAthMagicHlavni.png file: /img/MAthMagicHlavni.png state: unknown
Obrázek 12.8 Pracovní prostředí aplikace MathMagic
Přílohy
91
name: /img/FormulaSheet.png file: /img/FormulaSheet.png state: unknown
Obrázek 12.9 Pracovní prostředí aplikace Formula sheet equation editor
Přílohy
92
name: /img/MathTypeHlavni.png file: /img/MathTypeHlavni.png state: unknown
Obrázek 12.10 Pracovní prostředí aplikace MathType