SLEZSKÁ UNIVERZITA V OPAVĚ Filozoficko-přírodovědecká fakulta Ústav informatiky DIPLOMOVÁ PRÁCE Michal Blažek 2006 Opava
SLEZSKÁ UNIVERZITA V OPAVĚ Filozoficko-přírodovědecká fakulta Ústav informatiky Michal Blažek BAKALÁŘSKÁ DIPLOMOVÁ PRÁCE Grafika v L A T E Xu Vedoucí diplomové práce: Mgr. Šárka Vavrečková Opava 2006
PROHLÁŠENÍ Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně a použil pouze uvedené zdroje a literaturu. V Opavě, 28. dubna 2006... Michal Blažek
PODĚKOVÁNÍ Chtěl bych poděkovat Mgr. Šárce Vavrečkové za cenné rady a připomínky při tvorbě této diplomové práce.
Obsah 1 Úvod 2 2 Druhy grafiky 3 3 Sazba obrázků do dokumentu 5 3.1 Formáty podporovaných externích obrázků................ 5 3.2 Plovoucí prostředí............................... 6 3.3 Obtékání obrázků textem........................... 8 4 Vytváření jednoduché vektorové grafiky pomocí L A T E Xu 10 4.1 Prostředí picture............................... 10 4.1.1 Objekty, které je možné vložit na kreslicí plochu......... 11 4.1.2 Nastavení vlastností jednotlivých objektů.............. 16 4.2 Balíčky rozšiřující možnosti prostředí picture.............. 17 5 Balíčky L A T E Xu pro práci s grafikou 20 5.1 Balíček graphics............................... 20 5.2 Balíček graphicx............................... 22 5.3 Balíček color................................. 24 5.4 Balíček pstricks............................... 26 6 Tvorba prezentací v L A T E Xu 31 7 Externí grafické nástroje 37 8 Závěr 39 A Zdrojové kódy snímků uvedených v kapitole 6 40 1
1 Úvod Tato práce se zabývá možnostmi sázecího systému L A TEX v oblasti grafiky. L A TEX byl původně určen hlavně pro sazbu textu a matematiky. V dnešní době však již existuje několik řešení, jak s jeho pomocí vytvářet dokumenty s obrázky. Cílem práce bylo vytvořit komplexní příručku, která čtenáře s těmito řešeními seznámí, jelikož informace o daném tématu sice existují, ale jsou obvykle roztroušeny v mnoha publikacích. Tyto publikace se většinou grafice v L A TEXu věnují jen okrajově a navíc jsou často v angličtině. V první části této příručky jsou popsány základní dva druhy dnešní počítačové grafiky rastrová a vektorová grafika, možnosti jejich využití, jejich výhody, nevýhody a rozdíly mezi nimi. Další část pojednává o možných způsobech vkládání obrázků do L A TEXového dokumentu. Je zde rovněž popsána závislost formátu vkládáných obrázků na typu výstupního dokumentu, tj..dvi,.ps nebo.pdf. L A TEX sám umí vykreslovat jednoduchou vektorovou grafiku. Lze ji vytvářet uvnitř prostředí picture. Jeho popisem se zabývám ve čtvrté kapitole této práce. Pokud chceme do dokumentu vložit nějaký externí obrázek, můžeme k tomu použít některého z podpůrných balíčků L A TEXu pro práci s grafikou. Pátá kapitola popisuje tři z nich, a to balíčky graphics, graphicx a pstricks. Dále je zde popsán i balíček color, který sice není přímo grafickým balíčkem, ale své místo zde má, jelikož umožňuje práci s barvami. Další oblastí, kterou se tato práce zabývá, je v dnešní době docela potřebná tvorba prezentací. L A TEX má pro ni vytvořeny různé třídy dokumentů (např.slides), resp. přídavné balíčky (pdfslide apod.), které umožňují vytvářet prezentace na velmi vysoké úrovni. V poslední kapitole popisuji některé z externích nástrojů, které se používají pro vytváření různých grafických objektů, jež pak můžeme vkládat do L A TEXového dokumentu. Nejčastěji se jedná o jednoduché nástroje pro tvorbu grafů, fontů atd. Použití jednotlivých příkazů a nástrojů je zde ilustrováno názornými příklady pro co nejlepší pochopení dané problematiky. Obvykle se příklady skládají ze dvou částí. V první části je napsán zdrojový text L A TEXu a v druhé části je ukázáno, jak L A TEX tento zdrojový text interpretuje (tj. co bude vysázeno ve výstupním dokumentu). 2
2 Druhy grafiky Dříve, než budeme popisovat možnosti systému L A TEX při práci s grafikou, popíšeme si stručně druhy počítačové grafiky, se kterými se dnes můžeme nejčastěji setkat. Jsou jimi rastrová a vektorová grafika. Rastrová grafika Tento druh grafiky se také označuje jako bitmapová nebo bodová grafika. Obrázek je tvořen jemnou sítí bodů, tzv. rastrem. Každý takový bod má svou barvu a pozici. Při určitém množství bodů a velké jemnosti bitmapy pak body vytvářejí zdání jednolitého obrazu. Princip rastrové grafiky je velmi jednoduchý a účinný, proto nachází široké uplatnění v mnoha oborech, např. v oblasti digitální fotografie, tvorby webových stránek atd. Pro vytváření, úpravu a prohlížení bitmapových obrázků existuje mnoho nástrojů (např. Adobe Photoshop). Nejčastějšími formáty pro rastrovou grafiku jsou.bmp,.gif a.jpg. Bodová grafika má však i své nevýhody. Mezi ty základní patří její velká prostorová náročnost. Je třeba mít uloženy informace o každém bodě obrázku (pozici, barvu, příp. informace o průhlednosti). Obrázek pak může zabírat několik megabajtů. Tento problém částečně řeší různé metody komprese rastrové grafiky. Asi nejznámější je metoda JPEG. Dalším problémem rastrové grafiky je výrazné snižování kvality obrázku při jeho zvětšování. Zvětšují se totiž samotné body a rastr ztrácí svou jemnost. L A TEX rastrové obrázky vytvářet sice neumí, ale umožňuje jejich vkládání. Vektorová grafika Narozdíl od rastrové grafiky není vektorová grafika založena na principu tvoření obrazu z jednotlivých bodů. Celý obrázek se skládá z různých matematicky definovatelných objektů (kružnice, obdélníky atd.) Ty jsou popsány pomocí vektorů, což jsou v tomto pojetí křivky spojující tzv. kotevní body. Každá taková křivka může nést informace o své barvě, barvě své výplně, průhlednosti atd. 3
2 DRUHY GRAFIKY 4 Hlavní výhodou vektorové grafiky je to, že můžeme obrázek libovolně zvětšovat či zmenšovat a jeho kvalita se nezmění. I při obrovském zvětšení zůstanou křivky krásně hladké. Jakmile totiž zvětšíme obrázku jeho velikost, všechny informace o něm se ihned přepočítají. Navíc můžeme křivky snadno upravovat posouváním jejich bodů. Další předností je možnost pracovat jednotlivě s dílčími objekty. Bohužel má i vektorová grafika své nevýhody. Hodí se pouze pro tvorbu jednodušších obrázků, jako jsou např. různá loga, schémata a diagramy. Nakreslit takto nějakou fotografii by bylo velmi náročné. Problémy jsou také s podporou takovýchto obrázků programů pro prohlížení vektorových obrázků je málo a nejsou moc rozšířené. Obvykle se tento problém řeší vytvořením obrázku pomocí vektorů a jeho následným převedením do rastrové podoby. Z editorů vektorové grafiky jmenujme Adobe Illustrator a CorelDraw. Tento druh grafiky se také využívá pro tvorbu animací v prostředí Macromedia Flash. Každý program pro tvorbu vektorových obrázků má vlastní formát, do kterého obrázky ukládá, např. CorelDraw vytváří soubory typu.cdr. Je ale lepší mít je uložené v nějakém univerzálnějším formátu, např..eps nebo.pdf. Obrázky těchto dvou formátů se dají do L A TEXem vytvářených dokumentů vkládat (viz kap. 3.1 a kap. 5), jednoduchá vektorová grafika jde také vytvořit přímo pomocí L A TEXu (kap. 4.1).
3 Sazba obrázků do dokumentu TEX nebyl původně navržen pro práci s grafikou. Jeho hlavním úkolem je sázet text. Díky jeho nástavbám (L A TEX apod.) a spolupráci s podpůrnými programy dnes však existuje rovnou několik možností, jak vkládat obrázky do dokumentů. Každá z nich má své výhody a své nedostatky. L A TEX obsahuje prostředí picture, ve kterém je možno vykreslit jednoduchou vektorovou grafiku přímo pomocí L A TEXových příkazů (viz kap. 4.1). Takto se však nedají vytvořit složitější obrázky, proto L A TEX umožňuje i vkládání obrázků externích, tj. vytvořených v některém grafickém editoru. 3.1 Formáty podporovaných externích obrázků Již jsem zmínil, že způsobů vkládání obrázků do dokumentu je několik. V závislosti na tom, kterou z možností si vybereme, musíme vybírat formáty souborů s obrázky. Samozřejmě se budou lišit i formáty vytvořených dokumentů: První možností je dokument ve formátu.dvi (Device Independent). Obrázek můžeme vložit pouze pomocí příkazu\special{parametry}. Tento příkaz vloží do souboru.dvi své parametry, jinak nemá žádnou zvláštní funkci. Interpretace jeho parametrů pak záleží na zobrazovači výstupního souboru. Obecně se doporučuje vždy převést soubor ve formátu.dvi do formátu.ps nebo.pdf. Při vytváření dokumentu typu.ps (PostScript) se použije program dvips, který převádí soubory s příponou.dvi na soubory typu.ps. Pokud jsou parametry příkazu \special použitého pro vložení obrázku v jazyce PostScript, jejich interpretace proběhne v pořádku a obrázek se bez problému vloží do dokumentu. Jediným omezením při vytváření PostScriptového dokumentu je, aby byl vkládaný externí obrázek ve formátu.eps, příp..ps. Cílový dokument můžeme vytvořit také ve formátu.pdf. Toho lze dosáhnout převedením souboru.ps na soubor.pdf (k tomuto účelu existuje řada nástrojů, např. GhostScript 1 ). Je také možné použít Pdf TEX. Zdrojový dokument se tak zkompiluje do formátu.pdf přímo. Pdf TEX podporuje obrázky typu 1 Tento nástroj je freeware 5
3 SAZBA OBRÁZKŮ DO DOKUMENTU 6.pdf,.jpg a.png. PostScriptové obrázky se musí nějakým nástrojem převést do formátu.pdf. Výjimku tvoří.ps soubory vytvořené programem METAFONT, které Pdf TEX zpracovat umí. Potřebujeme-li v TEXu vložit obrázek do dokumentu, můžeme použít již zmíněného příkazu \special. Z důvodu větší přenositelnosti (parametry příkazu \special nejsou nijak standardizovány a jsou různé se pro každý zobrazovač) je ale lepší využít některý z přídavných balíčků pro práci s grafikou, např. graphics, graphicx a další (viz kap. 5). 3.2 Plovoucí prostředí Vkládáme-li objekt do dokumentu, potřebujeme někdy, aby se vysázel celý na jedné stránce (tzn. aby nebyl rozdělen v případě, že během jeho sázení dojde ke stránkovému zlomu). Dalším problémem, který může nastat, je možnost, že i když se takový objekt vysází z důvodu nedostačujícího prostoru až na stránce druhé, zůstane na první stránce volné místo. Tyto problémy řeší tzv. plovoucí prostředí. Objekt umístěný uvnitř takového prostředí se vysází vždy vcelku na jedné stránce dokumentu a na místo, které by jinak zůstalo prázdné, se vysází další text. Říkáme, že objekt v textu plave. V L A TEXu existují dvě taková prostředí table (používá se pro vkládání tabulek) a figure (je určeno pro obrázky). Do plovoucího prostředí ale může být umístěn jakýkoli objekt (např. i text). V dalším textu se zaměříme pouze na prostředí figure ve spojitosti s obrázky. Příkazy pro prostředí table jsou podobné. Umístění obrázku vloženého pomocí prostředí figure na stránce můžeme z části ovlivnit. Prostředí má nepovinný parametr, skládající se z několika těchto písmen: h (here): umístí obrázek v místě, ve kterém je uveden ve zdrojovém textu, t (top): umístí obrázek na začátek stránky, b (bottom): umístí obrázek na konec stránky, p (page): vloží obrázek na samostatnou stránku 2 2 Tuto stránku umístí na konec kapitoly či dokumentu. Tam také příp. umístí i další vkládané obrázky.
3 SAZBA OBRÁZKŮ DO DOKUMENTU 7 Písmena jsou v parametru seřazena podle priority. Implicitní nastavení tohoto parametru je [tbp]. L A TEX se nejprve pokusí umístit obrázek nahoru na stránku. Pokud to nepůjde, zkusí ho vysázet dole a když zklame i tato možnost, umístí jej na samostatnou stránku. Obrázek lze na stránce stejně jako text různě zarovnat vůči jejímu levému a pravému okraji. Základní nastavené zarovnání je zarovnání doleva. Toto můžeme změnit vložením obrázku do prostředí center obrázek bude zarovnán doprostřed či flushright obrázek se vloží k pravému okraji. Pro zarovnání vlevo samozřejmě existuje prostředí flushleft. Tato nastavení fungují, i když obrázek není uvnitř prostředí figure. Popisek daného obrázku můžeme nastavit příkazem \caption[text 1 ]{text 2 }. Za povinný parametr volíme text, který se vysází jako popisek obrázku, nepovinný parametr určuje text, který se objeví v seznamu obrázků. Chceme-li změnit označení obrázku (při použití balíčku czech je to implicitně Obrázek), můžeme jej změnit vložením příkazu \renewcommand{\figurename}{označení}do preambule zdrojového textu dokumentu. Máme-li v dokumentu více sloupců, můžeme rozhodnout, zda se plovoucí obrázek vloží přes všechny sloupce, nebo jen do sloupce jednoho. Pokud použijeme příkaz \begin{figure*}...\end{figure*}, vloží se obrázek přes všechny sloupce. Druhé možnosti dosáhneme použitím tohoto příkazu bez hvězdičky. Na některé obrázky se je někdy v textu třeba odkazovat. K tomu nám slouží příkazy \label{označení} a \ref{označení}. Příkazem \label obrázek označíme symbolickým jménem. Toto jméno určuje parametr označení. Příkaz \label musí být ve zdrojovém textu až za příkazem \caption. V místě, kde se budeme chtít na obrázek odkázat, pak do textu vložíme příkaz \ref. Příkazy \label a \ref se rovněž používají např. pro odkazování na různé oddíly textu (kapitoly atd.) Příklad 3 \begin{figure} \begin{center} 3 Příkaz \includegraphics je podrobněji rozebrán v kapitolách 5.1 a 5.2. Příkaz \noindent slouží ke zrušení odsazení prvního řádku odstavce. V délkovém registru \textwidth je uložena šířka textu.
3 SAZBA OBRÁZKŮ DO DOKUMENTU 8 Obrázek 1: Obrázek vložený uvnitř plovoucího prostředí \includegraphics[width=0.4\textwidth]{obrazek} \end{center} \caption{obrázek vložený uvnitř plovoucího prostředí} \label{obrfig} \end{figure} \noindent Na obrázek \ref{obrfig} se můžeme odkázat. Na obrázek 1 se můžeme odkázat. 3.3 Obtékání obrázků textem Jestliže vložíme obrázek do dokumentu, zobrazí se nám mimo text (zpravidla pod ním). Často jej však potřebujeme mít vložený uvnitř textu, aby ho text tzv. obtékal. V tomto případě máme několik možností. Můžeme např. vytvořit dvě prostředí minipage (jedná se o prostředí, které se chová jako malá stránka, více viz [RYBIČKA]). Jednomu nastavíme takovou šířku, aby se do něj vešel náš obrázek, druhému takovou, aby součet šířek obou prostředí byl menší než šířka stránky. Pozor musíme dát na to, aby mezi těmito prostředími nebyl přechod na nový řádek. Dalším způsobem, jak zařídit vložení obrázku dovnitř textu, je využití příkazů \hangindent{hodnota} a\hangafter{hodnota}. Prvním příkazem definujeme velikost odsazení textu na řádku zleva (pokud chceme změnit odsazení zprava, stačí uvést zápornou hodnotu). Druhý příkaz definuje, kolik řádků od začátku odstavce bude mít původní hodnotu odsazení. Tyto příkazy lze použít, pokud chceme změnit velikost řádků na jednu hodnotu a tu již neměnit. Může se však stát, že vkládáme obrázek, u kterého chceme, aby
3 SAZBA OBRÁZKŮ DO DOKUMENTU 9 jej text obtékal podle jeho tvaru. K tomu slouží příkaz \parshape{parametry}. Prvním parametrem je počet řádků, kterých se obtékání bude týkat, ostatní jsou zadávány ve dvojicích odsazení zleva celková velikost řádku. Jednotlivé parametry se oddělují čárkami. Pro nastavení obtékání obrázků textem existuje také několik přídavných balíčků, jako např. floatfig, wrapfig aj. Tyto balíčky se navzájem liší svými možnostmi. Bližší informace o nich jsou uvedeny v [ROZCESTNÍK].
4 Vytváření jednoduché vektorové grafiky pomocí L A T E Xu V této kapitole si ukážeme, jak lze pouze s pomocí L A TEXu bez žádných externích nástrojů nakreslit jednoduché vektorové obrázky. L A TEX má pro tento účel vytvořeno prostředí, které se nazývá picture. 4.1 Prostředí picture Prostředí picture vytváří kreslicí plochu. Tato plocha má definovaný pravoúhlý souřadnicový systém, do kterého se vkládají všechny vytvářené obrazové objekty. Počátek tohoto systému je standardně v levém dolním rohu kreslicí plochy (lze jej však posunout i do jiného bodu). V prostředí picture se mohou používat pouze příkazy pro umíst ování objektů na kreslicí plochu, příkazy nastavující jejich délky a velikosti apod. Před zavoláním prostředí picture si nejprve nastavíme základní jednotku jeho souřadného systému. Toto se provádí změnou délkového registru \unitlenth, např. \unitlenth 1mm. Všechny parametry příkazů v prostředí picture zastupující souřadnice na kreslicí ploše určují, kolikrát se má vynásobit základní jednotka. Samotná deklarace prostředí picture vypadá takto: \begin{picture}(x, y)(x 0, y 0 ) Parametr x určuje šířku a parametr y výšku vytvářené kreslicí plochy. Definovaná výška a šířka však určují pouze velikost místa, které se má pro obrázek při sazbě vynechat. Kreslené objekty lze umist ovat i za hranice této plochy. Vysází se pak např. přes text. V některých situacích toho lze využít. Pokud je zadaná šířka menší než šířka stránky a obrázek je zarovnán doleva či doprava, bude obtékán textem. Parametry x 0 a y 0 jsou nepovinné a určují, ve kterém bodě má být počátek souřadnicového systému. Pokud není druhá závorka uvedena, bude počátek v bodě (0, 0). 4 4 Z vlastní zkušenosti doporučuji druhou závorku neuvádět. Všechny objekty se i v případě její přítomnosti vkládají do obrázku ve vztahu k bodu (0, 0), pouze dochází k posunu kreslicí plochy a to může být v některých případech matoucí. 10
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 11 Asi nejdůležitějším příkazem v prostředí picture je příkaz \put(x, y){objekt}. Slouží k umíst ování jednotlivých objektů na kreslicí plochu. Parametry x a y určují souřadnice tzv. vztažného bodu objektu (každý objekt má vlastní vztažný bod). Mimo příkaz\put existuje také příkaz \multiput(x 0, y 0 )(d x, d y ){n}{objekt}, který umožňuje vložit tentýž objekt do obrázku několikrát po sobě. První parametr určuje počáteční souřadnice vztažného bodu objektu. Parametry d x a d y definují posun souřadnic vztažného bodu ve vodorovném (resp. svislém) směru pro každé další vložení objektu a parametr n stanovuje, kolikrát se objekt takto vloží. Zajímavostí je, že pomocí příkazů pro vložení objektu můžeme na kreslicí plochu vložit další prostředí picture. Tomuto prostředí pak můžeme definovat jeho vlastnosti (např. jednotku jeho souřadného systému) zcela samostatně a odlišně od nastavení vlastností obrázku, do kterého jej vkládáme. 4.1.1 Objekty, které je možné vložit na kreslicí plochu Základními objekty, které lze vložit do obrázku v prostředí picture jako parametr příkazu \put, příp. \multiput, jsou tyto: Čáry (úsečky) Čáry se vkládají příkazem \line{x, y}{délka}. Vztažným bodem úsečky je její počáteční bod. Parametry x a y jsou celá čísla z intervalu <-6, 6> a jejich společný dělitel nesmí být větší než 1. Udávají sklon vytvářené úsečky (tím, že se posuneme na vodorovné ose o x jednotek a na svislé ose o y jednotek, dostaneme druhý bod ne nutně koncový dané čáry). Z toho vyplývá, že pomocí tohoto příkazu můžeme vykreslit jen úsečky s určitým sklonem. Parametr délka určuje délku průmětu čáry do vodorovné osy. Jelikož se čáry sázejí z určitých základních znaků, nelze ani nakreslit úsečku s libovolně malou délkou. Výjimkou jsou čáry vodorovné a svislé, jsou totiž vytvářeny jiným způsobem. Vektory Vektory jsou úsečky, mající v koncovém bodě šipku. Sázejí se pomocí příkazu \vector(x, y){délka}. Parametry mají tentýž význam, jako u vytváření úseček,
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 12 jen x a y musí ležet v intervalu <-4, 4>. Ostatní omezení pro tyto parametry platí také. Vykreslíme-li nulový vektor (tj. vektor s délkou rovnou nule), šipka se i přesto nakreslí. Vztažným bodem vektoru je jeho počáteční bod. Příklad \unitlength 1mm \begin{picture}(40,35) \put(0,5){\line(2,3){15}} \put(40,3){\vector(-1,4){7}} \put(15,15){\vector(3,-2){20}} \put(12,5){\vector(1,-3){0}} \end{picture} Text Dalším objektem, který můžeme vložit do obrázku v prostředí picture, je text. Jeho vztažným bodem je levý dolní roh rámečku, který si kolem textu můžeme představit. Sloupce textů Na kreslicí plochu můžeme také umístit sloupec libovolných textů. Umožňuje to příkaz \shortstack[zarovnání]{texty}. Za parametr zarovnání můžeme dosadit písmeno l, resp. r pro zarovnání doleva, resp. doprava. Pokud není parametr uveden, texty budou zarovnány na střed. Do parametru texty napíšeme jednotlivé texty, které chceme vysázet do sloupce. Jednotlivé řádky oddělujeme příkazem \\. Vztažným bodem je stejně jako v předchozím případě levý dolní roh pomyslného rámečku, který tuto tabulku obklopuje. Příklad \unitlength 1mm \begin{picture}(40,35) \put(20,13){vložený text} \put(15,19){\shortstack[l]{text\\% rozložený\\do více\\sloupců}} \end{picture} Text rozložený do více sloupců Vložený text
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 13 Rámečky Rámečky podporované prostředím picture jsou trojího druhu: \framebox(x, y)[poloha]{objekt} jedná se o rámeček, který bude orámován souvislou čarou. Parametry x a y určují šířku a výšku rámečku, parametr objekt určuje objekt, který má být uvnitř rámečku. Nepovinný parametr poloha se skládá z jednoho nebo dvou písmen a určuje polohu objektu v rámečku. Pokud je vynechán, objekt se umístí doprostřed rámečku. Do parametru můžeme vložit tato písmena: l (left): zarovnání doleva r (right): zarovnání doprava c (center): zarovnání doprostřed t (top): zarovnání nahoru b (bottom): zarovnání dolů \dashbox{délka}(x, y)[poloha]{objekt} Tento příkaz vysází rámeček s čárkovaným orámováním. Parametr délka udává délku čárek a mezer v tomto orámování. Ostatní parametry jsou stejné jako u rámečku \framebox. \makebox(x, y)[poloha]{objekt} Tento příkaz slouží k vytvoření neorámovaného rámečku. Parametry příkazu jsou stejné jako u předchozích dvou. Příklad \unitlength 1mm \begin{picture}(40,40) \put(0,0){\framebox(20,10)% {\vector(2,1){10}}} \put(13,15){\dashbox{2}(25,5)% [ct]{text}} \put(15,25){\makebox(1,10)% {Text v neviditelném rámečku}} \end{picture} Text v neviditelném rámečku Text
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 14 Kružnice a kruhy Kružnici lze vysázet pomocí příkazu\circle{průměr}. Rovněž i na vytváření kružnic se vztahují jistá omezení daná způsobem jejich sazby. Proto můžeme vysázet kružnici s maximálním průměrem okolo 15 mm. Vztažným bodem je střed kružnice. Použijeme-li příkaz \circle*{průměr}, dostaneme vyplněnou kružnici (kruh). Tvorba kruhu je omezena ještě více a jeho největší možný průměr je kolem 5 mm. Příklad \unitlength 1mm \begin{picture}(40,40) \put(10,30){\circle{10}} \put(25,10){\circle{5}} \put(0,5){\circle*{6}} \put(35,25){\circle*{3}} \end{picture} 7 1 Ovály Příkazem \oval(x, y)[část] lze vysázet ovál. Parametry x a y určují jeho šířku a výšku. Nepovinný parametr část nám umožňuje vykreslit jen některou z částí daného oválu. Pokud není uveden, vysází se ovál celý. Parametr můžou tvořit jedno nebo dvě z těchto písmen: t (horní část), b (dolní část), l (levá část) a r (pravá část). Vztažným bodem je střed oválu. Příklad \unitlength 1mm \begin{picture}(40,40) \put(10,30){\oval(10,5)} \put(22,15){\oval(9,15)[bl]} \put(-10,10){\oval(7,11)[r]} \put(35,25){\oval(20,12)[b]} \put(7,9){\oval(10,5)[tl]} \end{picture}
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 15 Bézierovy křivky L A TEX umí pomocí prostředí picture vykreslit také Bézierovy křivky druhého stupně. Jsou to křivky určené třemi body počátečním, koncovým a tzv. řídícím bodem. Tím je bod, ve kterém se protínají tečny ke křivce vedené jejími krajními body. Položíme-li řídící bod tak, aby ležel v přímce s krajními body, vysází se úsečka, která krajní body spojuje. Takto lze obejít omezení pro délku a sklon čar, která platí pro příkaz \line. U Bézierových křivek žádná podobná omezení neplatí. Jediným problémem je, že jsou Bézierovy křivky vykreslovány pomocí jednotlivých vypočítaných bodů (ty jsou sázeny jako malé čtverečky). Z tohoto důvodu může v některých případech nastat situace, kdy se nedokončí překlad dokumentu 5, protože při jeho vykonávání dojde k přeplnění paměti počítače. Pro sazbu Bézierových křivek existují v L A TEXu dva příkazy: \qbezier[n](x 1, y 1 )(x 2, y 2 )(x 3, y 3 ) \bezier{n}(x 1, y 1 )(x 2, y 2 )(x 3, y 3 ) 6 Parametry x 1, y 1, x 3 a y 3 určují souřadnice krajních bodů křivky a parametry x 2 a y 2 souřadnice řídícího bodu. Parametr n určuje, pomocí kolika bodů se křivka vysází. U prvního z těchto dvou příkazů je nepovinný a pokud jej neuvedeme, vysází se nám křivka plná. V opačném případě bude tečkovaná. Příkazy \qbezier a \bezier jsou samostatné a nepotřebují vkládat jako parametry do příkazu \put. Příklad \unitlength 1mm \begin{picture}(40,35) \qbezier(0,5)(10,3)(15,25) \qbezier(15,25)(15,5)(28,8) \qbezier(0,20)(-10,25)(30,30) \end{picture} 5 např. během sazby grafu nějaké složitější funkce pomocí Bézierových křivek 6 Tento příkaz je implementován pouze z důvodu zajištění kompatibility s verzí L A TEXu 2.09
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 16 4.1.2 Nastavení vlastností jednotlivých objektů U každého vkládaného objektu můžeme pomocí speciálních příkazů nastavit některé vlastnosti, s jakými se má vysázet. Šířka čar Všem výše popsaným objektům lze nastavit šířku čáry, jakou se vykreslí. Existují pro to příkazy \thinlines, \thicklines a \linethickness{šířka}. První z nich nastaví šířku čáry na 4 pt, druhý na 8 pt. Poslední nám umožňuje nastavit si vlastní požadovanou šířku čáry, bohužel se ale dá použít pouze pro některé objekty. Jedná se o svislé a vodorovné čáry, rámečky a Bézierovy křivky. Orámování objektu Libovolný objekt, který vkládáme na kreslicí plochu, můžeme orámovat. K tomu slouží příkaz \frame{objekt}. 7 Příklad \unitlength 1mm \begin{picture}(40,50) \linethickness{2mm} \qbezier(0,5)(10,3)(15,25) \thicklines \put(30,10){\oval(12,6)} \thinlines \put(0,18){\vector(-1,4){7}} \put(20,35){\frame{nějaký text}} \end{picture} \end{multicols} Nějaký text 7 Při rámování jiných objektů než textu mi tento příkaz nefungoval správně.
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 17 4.2 Balíčky rozšiřující možnosti prostředí picture V této podkapitole si stručně rozebereme některé z L A TEXových balíčků, které rozšiřují možnosti prostředí picture. Balíček epic Balíček epic obsahuje několik nových příkazů. Nejdůležitějšími jsou tyto: \drawline[n](x 1, y 1 )...(x n, y n ) Tento příkaz vykreslí lomenou čáru, postupně procházející body zadanými parametry(x i, y i ). Nepovinný parametr n může nabývat celočíselných hodnot z intervalu (-100, ). Pokud zadáme zápornou hodnotu, vysází se lomená čára čárkovaně. V ostatních případech bude vysázena plná čára. L A TEX vytváří tuto čáru z malých částí, které mají omezené množství sklonů (podobně jako u příkazu \line), proto může být výsledná lomená čára poněkud zubatá. \dashline{n}[m](x 1, y 1 )...(x n, y n ) Pomocí tohoto příkazu můžeme vykreslit čárkovanou lomenou čáru. Parametr n určuje délku jedné čárky. Pokud uvedeme i nepovinný parametr m, jednotlivé čárky budou vysázeny tečkovaně a parametr m nastaví mezery mezi tečkami. Ostatní parametry jsou stejné jako v předchozím případě. \dottedline[znak]{n}(x 1, y 1 )...(x n, y n ) Vykreslí tečkovanou lomenou čáru. Parametr znak nám umožňuje definovat znak, který se vykreslí místo teček. Parametr n určuje vzdálenost mezi jednotlivými znaky, tvořícími tuto čáru.
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 18 Příklad \unitlength 1mm \begin{picture}(40,40) \drawline(6,20)(12,15)% (18,25)(24,15) \dashline{2}(0,0)(10,10)% (20,0)(30,15) \dottedline(10,25)(20,35)% (25,29)(35,25) \end{picture} Balíček eepic Balíček eepic rozšiřuje nejen možnosti L A TEXu, ale i balíčku epic. Ruší omezení při vkládání některých standardních objektů (viz kap. 4.1.1). Týká se to hlavně čar a kružnic (resp. kruhů). Příkazem \line je tak možno vykreslit čáru s jakoukoli délkou a za parametry určující její sklon můžeme dosadit jakákoli celá čísla (omezení pro sazbu vektorů však zůstávají stejná). Příkazem \circle (resp. \circle*) můžeme vykreslit kružnici či kruh s libovolným průměrem 8. Příkazy pro tvorbu lomených čar definované v balíčku epic jsou rovněž optimalizovány. Čáry jsou sázeny způsobem, který je rychlejší a mnohem méně náročný na přidělenou pamět. S balíčkem eepic je dobré vkládat do dokumentu i balíček epic (ten musí být deklarován jako první). Pokud budeme mít s balíčkem eepic problémy 9, můžeme místo něj použít balíček eepicemu, bohužel však u něj neplatí výhody, které balíček eepic přináší a objekty zde definované se tvoří ze standardních objektů (např. elipsa je vykreslena jako ovál). Z těchto důvodů zde neuvádím příklad. Kromě rozšíření možností standardních příkazů jsou definovány v balíčku eepic také některé příkazy nové. Jsou jimi např.: \Thicklines Nastaví šířku čar používaných pro sazbu jednotlivých objektů na cca 1,5 násobek šířky definované příkazem \thicklines. 8 V dokumentaci tohoto balíčku doslova stojí, že za jeho průměr můžeme dosadit jakékoli číslo akceptovatelné TEXem 9 Stalo se mi, že se při použití tohoto balíčku vysázela místo obrázku jen prázdná plocha.
4 VYTVÁŘENÍ JEDNODUCHÉ VEKTOROVÉ GRAFIKY POMOCÍ LATEXU 19 \path (x 1, y 1 )...(x n, y n ) Funguje stejně jako příkaz \drawline v balíčku epic. Rozdílem je, že se lomená čára vysází pěkně hladká, protože balíček eepic používá jinou metodu sazby. \ellipse{a}{b}, resp. \ellipse*{a}{b} Umožňuje nakreslit elipsu o šířce a a výšce b. Příkaz s hvězdičkou vykreslí elipsu s vyplněným vnitřkem. Balíček graphpap Tento balíček obsahuje velmi užitečný příkaz \graphpaper[n](x 1, y 1 )(x 2, y 2 ). Při použití tohoto příkazu se na kreslicí ploše vytvoří souřadnicová sít. Nepovinný parametr n určuje, jaké budou rozestupy mezi jednotlivými čarami mřížky. Jeho implicitní nastavení je 10. Parametry x 1 a y 1 označují souřadnice levého dolního rohu této sítě a parametry x 2 a y 2 určují její šířku a výšku. Všechny parametry musí být celá čísla a udávají se v základních jednotkách souřadnicového systému obrázku. Každá pátá čára (na vodorovné i svislé ose) je zvýrazněna a označena číslem souřadnice, ve které je vykreslena. Díky tomu tento příkaz výrazně napomáhá při vkládání různých objektů na kreslicí plochu. Příklad \unitlength 1mm \begin{picture}(40,40) \graphpaper[2](0,0)(40,40) \end{picture} 40 30 20 10 0 0 10 20 30 40
5 Balíčky L A T E Xu pro práci s grafikou Již jsme si ukázali, že pomocí prostředí picture lze v L A TEXových dokumentech vykreslovat jednoduché obrázky. K dispozici však máme i podpůrné balíčky, které možnosti práce L A TEXu s grafikou značně rozšiřují. My zde postupně rozebereme nejpoužívanější z nich, a to balíčky graphics, graphicx, color a pstricks. 5.1 Balíček graphics Balíčekgraphics je základním balíčkem pro vkládání externích obrázků do L A TEXových dokumentů a následnou práci s nimi (rotace, nastavování velikosti atd.) Předpokládá přítomnost ovladače pro práci s obrázky. Standardně se zpracovává grafika vytvořená v jazyce PostScript. Je potřeba, aby byl výstupní soubor v jazyce PostScript (jinými slovy musíme soubor.dvi převést do formátu.ps, např. pomocí programu dvips). Pokud chceme k vytvoření výstupního souboru použít Pdf TEX, musíme PostScriptový obrázek převést do formátu.pdf, resp..png nebo.jpg a v preambuli dokumentu volat balíček zápisem \usepackage[pdftex]{graphics}. Příkazy definované v balíčku \includegraphics{soubor} Příkaz pro vložení obrázku do dokumentu. Je také možné jej použít ve tvaru \includegraphics*[x 1, y 1 ][x 2, y 2 ]{soubor}. Parametry x 1 a y 1 udávají souřadnice levého horního rohu výřezu obrázku, který se vloží do dokumentu. Parametry x 2 a y 2 pak udávají souřadnice jeho pravého dolního rohu. Neuvedeme-li v příkaze hvězdičku, ale nepovinné parametry ano, vloží se obrázek do dokumentu celý, ale TEX pro něj rezervuje jen místo udané těmito parametry. \graphicspath{{cesta 1 }{cesta 2 }...} Tento příkaz nám umožňuje zadat, ve kterých složkách se nacházejí soubory s obrázky, které chceme vkládat do L A TEXového dokumentu. 20