9. – 10. labor

E.E.

2004. április 28.

1. Grafikonok és képek L^{A}TEX-ben

1.1. Grafikonok megrajzolása

1.1.1. Objektumok köré rajzolt keretek

Ha különböző dobozokat és nyílakat akarunk használni, akkor ezt könnyen megtehetjük az fbox (vagy a framebox(szélesség, magasság)[pozíció]{objektum})paranccsal, és használva matematikai módban a hosszú nyílat, mint az alábbi példában:

bal ⟶ közép ⟶ jobb bal  ⟶ közép ⟶  jobb

Függőlegesen is elhelyezhetjük a dobozokat. Ezt a \parbox paranccsal tehetjük meg:

fent ; ↓ ; középen ; ↓ ; lent

Forráskódja pedig:

\begin{center}
\parbox{2cm}{
        \framebox[2cm]{fent}\\
        \centerline{$\downarrow$}\\
        \framebox[2cm]{középen}\\
        \centerline{$\downarrow$}\\
        \framebox[2cm]{lent}
            }
\end{center}

A \dashbox{hossz}( szélesség, magasság)[pozíció]{objektum} parancs azonos a \framebox paranccsal, azzal az eltéréssel, hogy a létrehozott téglalap szaggatott vonalakból van képezve, ennek hosszát pedig a hossz paraméter határozza meg.

1.2. A picture környezet

A picture környezet segítségével létrehozhatunk szöveget, vonalakat, Bezier görbéket, nyilakat, köröket és oválisokat tartalmazó rajzokat.

                            \begin{picture}(dx,dy)(x0,y0)

grafikus parancsok

                            \end{picture}

1. ábra. Rajzok készítése 1.2.1. Objektumok megrajzolásaihoz szükséges parancsok

A picture környezet filozófiája egyszerű. Adott egy pár előre definiált objektum, amelyeket különböző pozíciókban helyezünk el. Az erre használt parancs:

    \put(x,y){ objektum}

Az (x, y) koordinátát referencia pontnak nevezzük.

Ha ugyanazon objektumot többször szeretnénk megrajzoltatni, akkor használhatjuk a:

 \multiput(x,y)(dx,dy){ szám}{objektum}

parancsot.

A L^{A}TEX görbék rajzolására is ad lehetőséget. A parancs pedig a ^{1}

 \qbezier[ pontok](x1,y1)(x2,y2)(x3,y3) ,

amely egy Bézier görbét rajzol az (x1, y1)(x2, y2)(x3, y3) kontroll-pontokkal^{2}.

Példák:

1.2.2. Objektumok definiálásának parancsai

A legegyszerűbb objektum a szöveg. Például:

\put(30,15){Szia!}

A szakasz, amely egy másik objektum lehet, az alábbi paranccsal hozható létre:

 \line(x,y){hossz} .

Megjegyzendő, hogy x és y egész számok, amelyek abszolút értéke maximum 6. Mi több, ezek a koordináták relatív prímek kell, hogy legyenek. Ha x = 0 értéket vesz fel, akkor a szakasz függőleges, ha pedig y = 0, akkor vízszintes.

   Példa erre a parancsra: \put(30,15){\line(1,2){10}}

[figure]

A

 \vector(x,y){hossz}

parancs hasonló a line-hoz, azzal a különbséggel, hogy nyílat tesz a szakasz végére. Ebben az esetben x és y egész számok, amelyek abszolút értéke maximum 4 lehet.

A

 \oval(dx,dy)[rész]

parancs olyan lekerekített téglalapot hoz létre, amely középpontja a referencia pont, szélessége pedig dx, magassága meg dy. A rész opcionális paraméter használata az ellipszis egy adott részének ábrázolására alkalmazandó. Értékei a következők lehetnek: t,b,r,l. Ha a paraméter egyetlen karakter, akkor a neki megfelelő fél ellipszist rajzolja meg a L^{A}TEX , ha pedig két karakterből áll, akkor a megfelelő fél-részek metszete adja az eredményt.

Most pedig legyen egy komplikáltabb példa:

[figure: közép; bal-felső; jobb-alsó; 1; ovális; \begin{matrix}a \\ b \\ c \end{matrix}]

A fenti ábra forráskódja:

1A \put nélkül használjuk.

2Egy Bézier-görbe a P_{1}, P_{2}, P_{3} kontroll-pontokkal (fontos a sorrend) egy olyan görbe, amely átmegy a P_{1} és P_{3} pontokon, míg a P_{2}P_{1} és P_{2}P_{3} egyenesek érintői a görbének a P_{1} és a P_{3} pontokban.

\begin{center}
\setlength{\unitlength}{1in}
\begin{picture}(0,0)
    \put(0,0){\circle*{.1}}
    \put(0,-.5){\framebox(.7,.3){közép}}
    \put(-1,-.5){\dashbox{.01}(.7,.3)[tl]{bal-fels} o}}
    \put(1,-.5){\dashbox{.1}(1.2,.3)[br]{jobb-alsó}}
    \put(-.65,-1){\circle{.2}} \put(-.7,-1.05){1}
    \put(1,-1){\oval(.5,.25)} \put(.85,-1.05){ovális}
    \put(0,-1){\fbox{$\begin{array}{c}a\\b\\c\end{array}$}}
    \put(-.3,-.35){\vector(1,0){.3}}
    \put(-.65,-.5){\vector(0,-1){.4}}
    \put(.35,-.5){\vector(4,-3){.5}}
    \put(-.55,-1){\vector(1,0){.55}}
    \put(-05,-1){\vector(-1,0){.55}}
    \put(.32,-1){\vector(1,0){.43}}
    \put(1.2,-.895){\line(1,1){.3975}}
\end{picture}
\end{center}
\vspace{1.3in}

1.3. PSTrick

PSTricks – Timothy Van Zandt írta. Nem MiKTEX standard. A preambulumban a \usepackage{pst-all} parancsra van szükség, ha használni akarjuk. Segítségével könnyebben készíthetünk grafikonokat, amelyek egyébként elég bonyolultan szerkeszthetők meg a picture környezettel.

1.4. Különleges EMTEX parancsok

A TEX rendszer egyik jó oldala az, hogy használhatjuk a \special parancsokat L^{A}TEX-ben. Ezek tulajdonképpen olyan parancsok, amelyek a L^{A}TEX rendszer gyengeségeit egyenlítik ki, főleg grafikus képek létrehozásánál, illetve importálásánál^{3}.

A \special parancsokat arra használjuk, hogy a vizualizációs és nyomtatási meghajtókkal létesítsen kapcsolatot a dvi állományok esetén. A parancs szintaxisa: \special{em:}{név paraméterek listája

Bármely \special parancs, amely nem az em: karakterekkel kezdődik, figyelmen kívül lesz hagyva.

Az EmTEX kétféle speciális parancsot tartalmaz: tetszőleges iránytényezőjű egyenesek megrajzolásához, illetve bizonyos állományok kinyomtatásához, amelyek képeket tartalmaznak.

1.4.1. EMTEX parancsok egyenesek megrajzolásához

A

 \special{em:point n[,[x],[y]]}

parancs az n sorszámmal rendelkező pontot értelmezi. Ha az opcionális paraméterek hiányoznak, akkor a pont a referencia pont koordinátáit kapja. Például a \special{em:point 1, 10pt} parancs az 1es sorszámú pontot definiálja, amely 10pt távolságra helyezkedik el a bal oldalszéltől, és amelynek y koordinátája megegyezik a referencia pont y koordinátájával.

A \special{em:point n} parancsokat a picture környezet belsejében helyezzük el. Két pont összekötése a következő paranccsal történik:

 \special{em:line a[h|v|p],b[h|v|p],[,vastagság}

Ez az egyenes összeköti az a és b pontokat egy olyan szakasszal, amely vastagságát a vastagság paraméter határozza meg.

A pontokhoz hozzárendelhetjük a h, v vagy a p paramétereket, amelyek arra utalnak, hogy miképpen vágja le az egyenes végét: p az egyenes irányához képest függőlegesen, h vízszintesen, míg v függőlegesen.

Például: special{em:line 1, 2v, 4pt}

3Nem kell a picture környezetet túl komolyan venni, mert csak L^{A}TEX-hel eléggé egyszerű rajzokat tudunk létrehozni, főleg, ha nem használunk semmilyen plusz csomagot. A megoldás, amelyről a 2 szakaszban, a 5 oldalon esik szó, más programok által létrehozott grafikus képek importálása lenne.

Ha több ugyanolyan vastagságú vonalat szeretnénk megrajzoltatni, akkor a

 \special{em:linewidth vastagság}

parancsot használhatjuk. Az implicit vastagságot állíthatjuk be vele az összes utána következő egyenesre, anélkül, hogy szükségünk lenne a vastagság parancs használatára - \special{em:line a, b}.

Kezdetben a vonalvastagság 0.4pt.

   Bármely \special{em:line a, b} parancs, amely a \special{em:linewidth vastagság} előtt

szerepel, ezzel a vastagsággal fog rendelkezni.

A

 \special{em:moveto}

parancs beállítja a jelenleg megrajzolandó pont koordinátáit a referencia ponthoz, anélkül, hogy megrajzolná az egyenest.

Egy \put parancs paramétereként használjuk.

A

 \special{em:lineto}

egy vonalat rajzol a jelenlegi pnt és a referencia pont között, majd a referencia pont lesz az új pont pillanatnyi koordinátája. Szintén egy \put parancs paramétereként használjuk.

Sokszöget a \special{em:moveto} paranccsal rajzolhatunk és a \special{em:lineto} parancs többi használatával. A vonalvastagságot a \special{em:linewidth vastagság} paranccsal állíthatjuk be.

Példa:

Forráskódja:

\setlength{\unitlength}{1mm}
\begin{picture}(50,50)
    \put(10,10){\special{em:moveto}}
    \put(20,10){\special{em:lineto}}
    \put(20,20){\special{em:lineto}}
    \put(30,20){\special{em:lineto}}
    \put(40,40){\special{em:lineto}}
    \put(10,40){\special{em:lineto}}
    \put(10,10){\special{em:lineto}}
\end{picture}

1.4.2. EMTEX parancsok képek beviteléhez

Az EMTEX segítségünkre áll bizonyos típusú grafikus állományok importálásához. Így a

 \special{em:graph állomány}

paranccsal az állomány nevű állomány bevitelre kerül a megfelelő helyre. A kép bal felső sarka lesz a referencia pont. Használhatunk MSP (Microsoft Paint Windows 1.x és 2.x alatti), PCX (Microsoft PaintBrush) és fehér-fekete BMP grafikus állományokat.

Az alábbi példánál a kép nagysága 21pt*23pt:

A kép nincs beágyazva a .dvi állományba, csak a megfelelő pillanatban beolvasva. Ezért együtt kell tárolni a .dvi állománnyal, hogy lehetséges legyen a beolvasása.

1.5. Példák

Legyen egy példa kommutatív diagramra:

[figure: D; C; A; A]

A következő forráskóddal készült el:

\unitlength=0.5pt
\begin{picture}(130,100)(0,0)
\put(9,91){\vector(4,-3){109}}
\put(10,0){\vector(1,0){110}}
\put(0,90){\vector(0,-1){80}}
\put(130,90){\vector(0,-1){80}}
\put(10,100){\vector(1,0){110}}
\put(130,0){\makebox(0,0){$D$}}
\put(0,0){\makebox(0,0){$C$}}
\put(130,100){\makebox(0,0){$A$}}
\put(0,100){\makebox(0,0){$A$}}
\end{picture}

Most pedig jöjjön a komikus példa:

[figure]

Forráskódja az alábbi:

\unitlength=0.5pt
\begin{picture}(160,180)(0,0)
\put(80,30){\oval(40,20)}
\put(70,60){\rule{20 \unitlength}{50 \unitlength}}
\put(110,130){\circle*{16}}
\put(50,130){\circle*{16}}
\put(150,115){\oval(20,30)}
\put(10,115){\oval(20,30)}
\put(80,90){\oval(120,180)}
\end{picture}

2. Grafikus képek beágyazása

A L^{A}TEX grafikus lehetőségei aránylag korlátozottak. Ezért a legtöbb grafikus képet más termékek segítségével készítjük el. (pl. CorelDraw, Xfig vagy egyéb hasonlók). A kapott állományt (rendszerint EPS kiterjesztésű) végül beillesztjük a L^{A}TEX állományba.

Egy alaprendszer, amely segítségével eps állományok hozhatók létre, a gnuplot. Megtalálható az alábbi címen: FTP://ftp.dartmouth.edu/pub/gnuplot. Kereskedelmi rendszerek is léteznek, mont a Maple\begin{matrix}c \\ ◯ \end{matrix}, Mathematica\begin{matrix}c \\ ◯ \end{matrix}, Matlab\begin{matrix}c \\ ◯ \end{matrix} amelyek eps grafikus állományokat hoznak létre.

Egy másik módszer eps állományok létrehozására konverzió által lehetséges. Léteznek ilyen rendszerek, mint például MS Windows alatt az ingyenes jpeg2ps, amely a jpeg⟶eps típusú konverziót végzi el, vagy az emftoeps, amely Windows Metafiles (wmf)⟶eps típusú konverzióra alkalmas.

Ha már van egy eps formátumú állományunk, akkor azt a Graphics Bundle segítségével importálhatjuk, ez pedig az alap MiKTEX rendszerhez tartozik. Ilyen esetekre két csomag áll rendelkezésünkre: a graphics és a bővített változata, a graphicx.

Az említett csomagok egy különböző szintaxisú, de azonos paranccsal rendelkeznek. Ez a parancs az

\includegraphics:

\includegraphics[opciók listája]{állomány.eps}

Ay opciók leggyakrabban használt értékei az alábbiak lehetnek: clip, width, height, angle, totalheight, scale.

2.1. Példák

Itt látható két példa csatolt grafikus állományokra:

2. ábra. Tiger.eps

3. ábra. Maple01.eps 2 GRAFIKUS KÉPEK BEÁGYAZÁSA 7

2.2. Egymás mellé elhelyezett ábrák

A minipage környezettel megoldható, hogy egymás mellé több ábrát is betgyünk. egy példa ennek alkalmazására:

4. ábra. Penguin.eps  5. ábra. Volpert.eps

Tartalomjegyzék

1. Grafikonok és képek L^{A}TEX-ben 1

1.1. Grafikonok megrajzolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1. Objektumok köré rajzolt keretek . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. A picture környezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2.1. Objektumok megrajzolásaihoz szükséges parancsok . . . . . . . . . . . . . . . . . 2 1.2.2. Objektumok definiálásának parancsai . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3. PSTrick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4. Különleges EMTEX parancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.4.1. EMTEX parancsok egyenesek megrajzolásához . . . . . . . . . . . . . . . . . . . 3 1.4.2. EMTEX parancsok képek beviteléhez . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.5. Példák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Grafikus képek beágyazása 5 2.1. Példák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2. Egymás mellé elhelyezett ábrák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Ábrák jegyzéke 7

Ábrák jegyzéke

1. Rajzok készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2. Tiger.eps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Maple01.eps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. Penguin.eps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5. Volpert.eps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6. Golfer.eps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

6. ábra. Golfer.eps