METAPOST & Toolbox
Total Page:16
File Type:pdf, Size:1020Kb
Ústav termomechaniky AV ČR Centrum diagnostiky materiálu Veleslavínova 11 301 14 Plzeň Výzkumná zpráva METAPOST & Toolbox mmp Petr Hora, Olga Červená 2005 Laboratoř modelování vln v tělesech Centrum diagnostiky materiálu ÚT AV ČR Tato zpráva byla sepsána pomocí KOMA-Scriptu a LATEXu Obsah 1 METAPOST 11 1.1 Úvod ..................................... 11 1.2 Základní příkazy kreslení .......................... 12 1.3 Křivky .................................... 15 1.3.1 Bézierovy křivky .......................... 15 1.3.2 Specifikace směru, napětí a zkřivení ................ 17 1.3.3 Přehled syntaxe pro cesty ..................... 20 1.4 Lineární rovnice ............................... 21 1.4.1 Rovnice a páry souřadnic ...................... 23 1.4.2 Operace s neznámými ....................... 24 1.5 Výrazy .................................... 26 1.5.1 Datové typy ............................. 28 1.5.2 Operátory .............................. 29 1.5.3 Zlomky, zprostředkování a unární operátory ........... 30 1.6 Proměnné .................................. 32 1.6.1 Tokeny ................................ 32 1.6.2 Deklarace proměnných ....................... 33 1.7 Vkládání textů a obrázků ......................... 35 1.7.1 Sázení vlastních textů ....................... 37 1.7.2 Operátor infont .......................... 39 1.7.3 Měření textu ............................ 40 1.8 Pokročilá grafika .............................. 41 1.8.1 Sestavování uzavřených cest .................... 42 1.8.2 Parametrické operace s cestami .................. 44 1.8.3 Afinní transformace ......................... 50 1.8.4 Přerušované čáry .......................... 54 1.8.5 Další možnosti ........................... 56 1.8.6 Pera ................................. 60 1.8.7 Speciální příkazy pro vytváření cest ................ 61 1.8.8 Ořezávání a nízkoúrovňové příkazy pro kreslení ......... 63 1.9 Makra .................................... 67 1.9.1 Skupiny ............................... 67 1.9.2 Makra s parametry a příkaz if .................. 69 1.9.3 Parametry typu suffix a text .................. 72 1.9.4 Makra vardef ............................ 74 1.9.5 Definování unárních a binárních maker .............. 77 1.9.6 Smyčky ............................... 79 3 1.10 Ladění .................................... 83 1.11 Operace se soubory ............................. 85 1.12 Zdroje METAPOSTu na internetu ..................... 86 2 Referenční manuál 87 3 Toolbox mmp 107 3.1 Postup práce s toolboxem ......................... 107 3.2 Instalace toolboxu ............................. 113 3.3 Vnitřek toolboxu .............................. 114 3.3.1 Hlavičky v METAPOSTovém souboru ............... 115 3.3.2 Šablona LATEXovského souboru použitá print mmp ........ 115 3.4 Pomocné programy ............................. 118 3.4.1 mmp test.m ............................. 118 3.4.2 onlycoreobjects.m ........................ 118 3.5 Demonstrační příklady ........................... 118 3.6 Začlenění Multi–METAPOSTových obrázků ................ 119 3.7 Tipy pro toolbox .............................. 120 4 Tvorba prezentace 123 4.1 Nastavení pozadí .............................. 123 4.2 Převod rastrového obrázku do METAPOSTu ............... 123 4.3 Změna velikosti PostScriptového souboru ................. 124 Literatura 125 Rejstřík 127 4 Seznam tabulek 1.1 Příklad interaktivního zadávání příkazů. ................. 27 1.2 Řetězcové třídy pro tokeny ......................... 33 1.3 Příkazy pro kreslení a odpovídající základní příkazy. ........... 64 2.1 Vnitřní proměnné typu numeric. ..................... 88 2.1 Vnitřní proměnné typu numeric – pokračování. ............. 89 2.2 Ostatní předdefinované proměnné. .................... 89 2.3 Předdefinované konstanty. ......................... 89 2.3 Předdefinované konstanty – pokračování. ................. 90 2.3 Předdefinované konstanty – pokračování. ................. 91 2.4 Operátory. ................................. 91 2.4 Operátory – pokračování. ......................... 92 2.4 Operátory – pokračování. ......................... 93 2.4 Operátory – pokračování. ......................... 94 2.4 Operátory – pokračování. ......................... 95 2.4 Operátory – pokračování. ......................... 96 2.4 Operátory – pokračování. ......................... 97 2.5 Příkazy. ................................... 98 2.6 Makra chovající se jako funkce. ...................... 99 5 Seznam schémat 1.1 Syntaxe pro konstrukci cesty ........................ 21 1.2 Souhrnná syntaxe pro výrazy ....................... 29 1.3 Syntaktická pravidla pro hnumeric primaryi ............... 31 1.4 Syntaxe pro názvy proměnných. ...................... 34 1.5 Syntaxe pro transformační a příbuzné operátory. ............. 52 1.6 Syntaxe pro funkci dashpattern ..................... 55 1.7 Syntaxe pro jednoduché kreslící příkazy. ................. 64 1.8 Syntaxe pro testy if. ............................ 70 1.9 Syntaxe definicí maker. ........................... 79 1.10 Syntaxe pro smyčky. ............................ 82 2.1 Syntaxe pro výrazy - část 1. ........................ 100 2.2 Syntaxe pro výrazy - část 2. ........................ 101 2.3 Syntaxe pro makra chovající se jako funkce. ............... 102 2.4 Dodatečná syntaxe nutná pro kompletaci BNF-schémat. ........ 102 2.5 Souhrnná syntaxe pro METAPOSTové programy. ............. 103 2.6 Syntaxe pro příkazy. ............................ 104 2.7 Syntaxe pro podmínky a smyčky. ..................... 105 3.1 Struktura toolboxu mmp .......................... 114 3.2 Hlavička METAPOSTu při použití fontu Helvetica. ............ 116 3.3 Šablona založená na LATEXovské třídě beamer. .............. 117 3.4 Šablona založená na LATEXovské třídě foils. ................ 117 7 Seznam obrázků 1.1 Diagram zpracování dokumentu s METAPOSTovými obrázky ...... 12 1.2 Možnosti METAPOSTu. .......................... 14 1.3 Výsledek příkazu draw z0..z1..z2..z3..z4. .............. 15 1.4 Uzavřená křivka procházející pěti body. .................. 16 1.5 Konstrukce Bézierovy křivky. ....................... 16 1.6 Křivka a řídící mnohoúhelník. ....................... 17 1.7 Křivka s předepsanými směry. ....................... 18 1.8 Vliv směru na tvar křivky. ......................... 18 1.9 Vliv směru na tvar křivky, pokračování. .................. 18 1.10 Předdefinované směrové vektory. ...................... 19 1.11 Odstranění inflexních bodů z křivky. ................... 19 1.12 Účinky změny parametru napětí. ..................... 20 1.13 Důsledek změny parametru zakřivení. ................... 20 1.14 Ukázky tvorby cest. ............................. 22 1.15 Použití lineárních rovnic v METAPOSTu. ................. 24 1.16 Použití whatever pro vykreslení výšky trojúhelníka. ........... 25 1.17 Ukázka použití příkazů label a dotlabel. ................ 35 1.18 Přípony používané při umísťování textu. ................. 36 1.19 Použití btex etex při popisu obrázku. .................. 37 1.20 Složitější popisy obrázku. .......................... 38 1.21 Bounding box a jeho rohové body. ..................... 40 1.22 Použití příkazu fill. ............................ 41 1.23 Použití příkazu buildcycle. ........................ 42 1.24 Další použití příkazu buildcycle. ..................... 43 1.25 Cesty s vyznačením časových hodnot. ................... 44 1.26 Použití příkazu point of. ......................... 45 1.27 Použití příkazu subpath of. ....................... 46 1.28 Použití příkazů cutbefore of a cutafter of. .............. 46 1.29 Použití příkazu softjoin. ......................... 47 1.30 Použití příkazu direction of. ...................... 47 1.31 Kombinace vazeb point of a direction of. .............. 48 1.32 Použití příkazů directiontime a directionpoint. ........... 49 1.33 Ukázka jednotlivých afinních transformací. ................ 51 1.34 Fraktální obrázek získaný afinními transformacemi. ........... 54 1.35 Přerušované čáry a odpovídající vzory. .................. 54 1.36 Další přerušované čáry a odpovídající vzory. ............... 55 1.37 Složitý vzor čárkování. ........................... 56 1.38 Vliv parametru linecap na konce čar. .................. 57 9 1.39 Vliv parametru linejoin na vykreslování rohů cest. ........... 57 1.40 miterlimit určuje poměr délky úkosu k šířce čáry. ........... 58 1.41 Tři způsoby kreslení šipek. ......................... 58 1.42 Hrot šipky s označením klíčových parametrů. ............... 58 1.43 Kaligrafický obrázek. ............................ 60 1.44 Použití příkazu makepen. .......................... 61 1.45 Použití příkazů penpos a penstroke. ................... 62 1.46 Použití operátoru flex. .......................... 62 1.47 Výsledky operátoru superellipse v závislosti na parametru s ..... 63 1.48 Použití operátoru interpath. ....................... 63 1.49 Použití nízkoúrovňových příkazů, currentpicture nebo image. .... 66 1.50 Oříznutí obrázku. .............................. 66 1.51 Ukázka použití maker. ........................... 71 1.52 Ukázka rekurzivního volání. ........................ 73 1.53 Další ukázka použití maker. ........................ 75 3.1 Grafické okno programu create pause. .................. 120 3.2 Význam dx a dy v rámečcích. ....................... 122 10 1 METAPOST METAPOST je programovací jazyk určený pro tvorbu obrázků. (Jeho autorem je John D. Hobby.) Výsledným produktem je program v PostScriptu, který vykreslí daný obrázek. Na rozdíl od PostScriptu poskytuje mnoho zajímavých funkcí, díky kterým je možno kreslení zjednodušit a zrychlit. Mezi