Programozási gyakorlatok L A T E Xés MATLAB Kiss Olivér Rózemberczki Benedek
Kiss Olivér és Rózemberczki Benedek András ROZEMBERCZKI.WORDPRESS.COM A példatárban szereplő feladatok és problémák saját ötletek és tapasztalatok alapján készültek, részben pedig korábbi évek vizsga soraiból építkeznek, azokra adnak részletes megoldást. A feladatgyűjtemény felfogható egyfajta általános, és a tárgy teljesítéséhez szükséges probléma gyűjteményként is (problem set). A tartalmi, helyesírási és stilisztikai hibákat a benedek.rozemberczki@gmail.com címen lehet jelezni. A dokumentum a LATEXprogramnyelv segítségével készült, a beágyazott programkódok listings és mcode csomagokkal készültek. A fejezetek szerzői lebontva: 1. fejezet - Kiss Olivér 2. fejezet - Kiss Olivér 3. fejezet - Kiss Olivér 4. fejezet - Kiss Olivér 5. fejezet - Kiss Olivér 6. fejezet - Kiss Olivér 7. fejezet - Rózemberczki Benedek 8. fejezet - Rózemberczki Benedek 9. fejezet - Rózemberczki Benedek 10. fejezet - Rózemberczki Benedek Első változat, január 2013
Tartalomjegyzék 1 LAT E X- Első lépések................................................... 4 2 LAT E X- Szöveges dokumentumok..................................... 5 3 LAT E X-A Beamer használata......................................... 25 4 Alapszámítások, vektorok, mátrixok................................ 27 5 Függvények, elágazások és ciklusok............................... 37 6 2D és 3D ábrázolások.............................................. 50 7 Diszkrét dinamikus modellek....................................... 71 8 Nem lineáris optimalizáció........................................ 106 9 Lineáris programozás............................................. 139 10 Diszkretizáció.................................................... 140
1 LATEX- Elso lépések Mielo tt elkezdenénk elkészíteni az elso LATEX dokumentumunkat, néhány elengedhetetlen dolgot meg kell tennünk. A LATEX tudniillik egy programnyelv, melynek megfelelo használatához nem elég csupán a szintaktika és a szemantika alapos ismerete, a mu ködéshez elengedhetetlen egy megfelelo fordítóprogram beszerzése is. A LATEX esetében számos ingyenesen elérheto fordítóprogram létezik. Ezek eltéro funkciókkal rendelkeznek, és mindenki megtalálhatja azt, amelynek használata számára a legkényelmesebb. Jelen jegyzetben egységesen a MiKTeX programcsomagot használjuk dokumentumaink elkészítésére. A MiKTeX programcsomag számos funkcióval rendelkezik, melyek közül számunkra a TeXworks lesz a legfontosabb. A TeXworks számos platformra (Windows, Mac és a legtöbb Linux disztribúció) önállóan is elérheto, nem windows operációs rendszeren történo munkához a TeXworks telepítését javasoljuk. A MiKTeX letöltheto a MiKTeX honlapjáról. Innen az Other Downloads fülön található MiKTeX Portable szoftver használata javasolt, melyet egyszeru en egy pendrivera telepítve bárhová magunkkal vihetünk. Ehhez célszeru egy legalább 1 GB szabad kapacitással rendelkezo eszközt választani, mivel a különbözo csomagok telepítése során jelento sen no het a programcsomag által elfoglalt terület. A letöltött fájl egy önkicsomagoló, exe kiterjesztésu fájl. A telepítéshez a telepíto elindítását követo en adjunk meg egy, a pendriveon található különálló mappát, melybe a szoftver, illetve a késo bbiekben a szoftver által letöltött kiegészíto csomagok kerülnek. A telepíto automatikusan elvégzi a szükséges lépéseket. A telepítés végeztével a kiválasztott mappában elérheto vé válik egy miktex-portable nevu kötegfájl, melyre kétszer kattintva elindul a programcsomag, és a tálcán megjelenik a MiKTeX ikonja. Erre jobb egérgombbal rákattintva több leheto ség közül választhatunk, ezek között megtalálható a TeXworks is. Erre kattintva megnyílik a szerkeszto ablak, melyben a továbbiakban dolgozni fogunk. Amennyiben a szoftver portable verzióját telepítettük, soha ne felejtsünk el a pendrive leválasztása elo tt kilépni a MiKTeX-bo l, melyet a MiKTeX ikonjára jobb egérgombbal kattintva az Exit opcióval tehetünk meg. Ezzel meg is tettük az elso lépéseket egy, a mino ségi szakmai dokumentumok és publikációk elkészítésére használható megoldás elsajátítása felé. A következo felejezben lépésro l-lépésre bemutatjuk a szöveges dokumentumok elkészítésének rejtelmeit, melyet a harmadik fejezetben a LATEX prezentációkészíto funkciójának, a beamernek rövid bemutatása követ. Reméljük, hogy a LATEX használatát legalább annyira hasznosnak érzi majd, mint mi magunk. Mivel jelen egyetemi jegyzet még csak vázlat, így hibák elo fordulhatnak, melyek jelzését örömmel fogadjuk.
2 LATEX- Szöveges dokumentumok 2.1 A LATEX dokumentumok szerkezeti felépítése Jelen jegyzet egy egyszeru mintadokumentumon keresztül mutatja be a különbözo funkciók mu ködését, mely dokumentumot a jegyzet mellékleteként fejezetro l-fejezetre haladva elérheto vé teszünk. A MiKTeX elindítását követo en nyissuk meg a TeXworks-t. Egyelo re egy üres ablakkal találkozunk. A dokumentumot felépíto forráskódot ebben az ablakban kell begépelnünk, melyet ezt követo en a TeXworks lefordít, és eredményként egy pdf formátumú dokumentumot kapunk. A forráskód minden esetben két fo strukturális elembo l épül fel. Ezek a Preambulum, ahol a dokumentum fontosabb tulajdonságait, a betöltendo csomagokat, illetve a speciális deklarációkat adhatjuk meg, illetve a Szövegtörzs, ahol a magát a dokumentumot elkészítjük. A jegyzethez kapcsolódó mintadokumentumokon keresztül minden lépés szemléletesen követheto, így a jegyzet olvasásával párhuzamosan célszeru azokat is tanulmányozni. A preambulumban kezdetben csupán azt fogjuk megadni, hogy milyen típusú dokumentumot szeretnénk létrehozni. A dokumentumtípusokról bo vebben egy késo bbi fejezet ad áttekintést. Gépeljük be a szerkeszto ablakba az alábbi sort: \documentclass{article} Ezzel el is készült a preambulum, melyben kizárólag azt adtuk meg, hogy a dokumentumunk típusa article. Ezt követo en készítsük el a szövegtörzset. A szövegtörzsnek mindig a \begin{document} és az \end{document} utasításpáros közé kell kerülnie. Elso dokumentumunk kizárólag egy egyszeru mondatot tartalmaz majd, melyet a fenti utasításpáros közé gépelünk be. A teljes dokumentum az alábbi: \documentclass{article} \begin{document} Az az els mondatunk LaTeX környezetben. \end{document} A dokumentum átfordítására az ablak bal felso sarkában található, zöld körben barna háromszöget tartalmazó gombra kattintva nyílik leheto ségünk. Ekkor a TeXworks egy ablakban megkérdezi, hogy hova mentse a fájlt. Célszeru egy külön mappát kijelölni minden egyes dokumentumnak, mivel a fordítás során a TeXworks több segédfájlt is létrehoz. A fordítást követo en a kész dokumentum egy új ablakban meg is jelenik. Ez elso ránézésre nagyon sok problémával küzd. Nem jelennek meg az ékezetes karakterek, a szöveg a lap közepe táján kezdo dik, és számos egyéb problémát fedezhetünk fel. Mindez annak a következménye, hogy a LATEX esetében meg kell adnunk a preambulumban a dokumentum számos fontos tulajdonságát is, mint a nyelv, margók, stb. Az alapveto beállításokat a következo fejezet mutatja be.
2.2 Alapvető csomagok és beállítások 6 2.2 Alapvető csomagok és beállítások A LATEX esetében nagyon fontos, hogy megadjuk, hogy a bevitt szöveg milyen típusú karaktereket tartalmaz, valamint hogy milyen nyelven íródik, így helyesen tudnak megjelenni a karakterek, illetve megfelelően működhet a szavak elválasztása és számos egyéb nyelvspecifikus funkció is. Mindezt úgynevezett csomagok segítségével tudjuk megadni. A csomagok a LATEX alapfunkcióin túl további kiegészítéseket tartalmaznak, és ingyenesen hozzáférhetőek. Sőt, a TeXworks egy új csomag használata esetén automatikusan le is tölti és telepíti azokat, ehhez elegendő a preambulumban megadni, hogy az adott csomagot a dokumentum elkészítése során használni szeretnénk. Az egyik legfontosabb dolog, hogy definiáljuk, milyen karakterkódolással dolgozunk a TeXworks által átfordítandó dokumentumban. Ezt az inputenc csomag segítségével tudjuk definiálni. Dokumentumunk preambulumát (ugye emlékszünk még, a preambulum a \begin{document} előtti rész) egészítsük ki az alábbi sorral: \usepackage[utf8]{inputenc} Egy másik nagyon fontos csomag, melynek használata magyar nyelvű dokumentumok esetén elengedhetetlen a fontenc. Ez a csomag határozza meg a létrehozott pdf dokumentum kódolását, és ennek segítségével jeleníthetőek meg helyesen a magyar nyelvben is használt ékezetes karakterek. Ennek használatához szintén a preambulumban kell elhelyezni a következő sort: \usepackage[t1]{fontenc} Még egy csomag létezik, melynek használata elkerülhetetlen, ha nyelvileg helyes dokumentumokat szeretnénk létrehozni. Ez azt az információt hordozza magában, hogy az általunk létrehozott dokumentum magyar nyelven íródik. A preambulumban helyezzük el a következő sort is: \usepackage[magyar]{babel} Ezekből a példákból már látszik is a csomagok használatának általános módja. A csomagot a \usepackage paranccsal tudjuk meghívni, a csomag neve pedig ezt követően {} jelek közé kerül. A kettő között a csomagra vonatkozó beállításokat adhatjuk meg szögletes zárójelben. Ez a későbbiekben is szinte minden esetben így lesz, tehát az egyes parancsok jellemzően {} jelek közé, míg a beállítások [] jelek közé fognak kerülni. Ejtsünk is meg rögtön egy viszonylag fontos beállítást. A dokumentumunk első sora eddig a \documentclass{article} parancsot tartalmazta. Adjunk meg ehhez még néhány kiegészítő beállítást, hogy dokumentumunk tényleg úgy nézzen ki, ahogy azt mi szeretnénk. Itt van lehetőségünk beállítani a dokumentum, valamint a karakterek méretét. Írjuk át az első sort az alábbira: \documentclass[a4paper,12pt]{article} Ezzel megadtuk, hogy azt szeretnénk, hogy dokumentumunk A4-es formátumú legyen, és a karakterek 12-es betűméretűek legyenek. A dokumentumok további alapvető tulajdonságait a következő fejezetekben részletesebben is bemutatjuk. A teljes dokumentumunk most az alábbi módon néz ki: \documentclass[a4paper,12pt]{article} \usepackage[utf8]{inputenc} \usepackage[t1]{fontenc} \usepackage[magyar]{babel} \begin{document} Az az els mondatunk LaTeX környezetben. \end{document} Mindezt az előző fejezetben leírt módon lefordítva már egy olyan dokumentumot kapunk, melyben helyesen jelennek meg az ékezetes karakterek is. A dokumentumunk ettől függetlenül még nem túl esztétikus, azonban ezen a következő fejezetekben bemutatott beállításokkal segítünk.
2.3 A dokumentum főbb tulajdonságai 7 2.3 A dokumentum főbb tulajdonságai Nyilvánvaló, hogy az általunk létrehozott dokumentumok esetében magunk szeretnénk meghatározni a dokumentum főbb tulajdonságait, mint a margókat, a sorközöket, az oldal méretét, stb. Ebben a fejezetben áttekintjük, hogy milyen lehetőségek közül választhatunk a LATEX használata során. A dokumentumok méretének tekintetében az alábbi lehetőségek állnak rendelkezésünkre: a4paper, a5paper, b5paper, letterpaper, legalpaper. Azt, hogy ezek közü melyiket szeretnénk használni, a \documentclass{} beállításainál kell megadnunk, ahogy azt az előző fejezetben is tettük. Az egyes oldalméretek tulajdonságait az 2.1. táblázat foglalja össze: Természetesen a táblázatban megadott méretek- Beállítás Szélesség Magasság Leírás a4paper 210 mm 297 mm Szabványos A4-es papírméret a5paper 148 mm 210 mm Szabványos A5-ös papírméret b5paper 176 mm 250 mm Szabványos B5-ös papírméret, tankönyvekre jellemző letterpaper 215,9 mm 279,4 mm Szabványos papírméret, jellemzően Észak-Amerikában használatos legalpaper 215,9 mm 355,6 mm Nem hagyományos méret, használata szintén Észak-Amerikában jellemző Táblázat 2.1: A LATEX által alapvetően támogatott oldalméretek től eltérő oldalakat is használhatunk, ehhez a későbbiekben bemutatott geometry csomag használata szükséges. A betűméret esetében a választék a 10pt, a 11pt és a 12pt. Amennyiben ettől eltérő méretet szeretnénk, azt ugyancsak egy csomag segítségével oldhatjuk meg. A beállítások alacsony száma annak köszönhető, hogy a LATEX alapvetően nyomdai minőségű tudományos művek, publikációk létrehozására szolgál, így ettől eltérő beállításokra az esetek igen csekély hányadában lenne szükség. A margók beállítására ugyancsak a preambulumban van lehetőségünk. Ehhez egyrészt szükség van egy újabb csomag letöltésére, melynek neve anysize. Ez a csomag számos funkcióval rendelkezik, a későbbiekben még használni fogjuk. Az egyik hasznos funkciója a margók szabályozása. Erre a \marginsize parancs használható, méghozzá az alábbi módon: \usepackage{anysize} \marginsize{bal}{jobb}{fent}{lent} A már elkészített dokumentumunkra állítsunk be 2 cm nagyságú margókat az alábbi paranccsal: \marginsize{2cm}{2cm}{2cm}{2cm} Egy nagyon fontos és gyakran elvárt tulajdonsága a dokumentumainknak a megfelelő sorköz. Ennek beállítására a \linespread parancs használható. Ha másfeles sorközt szeretnénk, akkor 1.3 nagyságú, míg dupla sorköz esetén 1.6 nagyságú beállítást kell alkalmaznunk. Jelenlegi dokumentumunkra állítsunk be másfeles sorközt, a preambulumot egészítsük ki az alábbi sorral: \linespread{1.3} Természetesen mindennek hatásait csak akkor látjuk, ha már több sornyi szöveget tartalmaz a dokumentumunk. Kezdjünk hát el megírni egy minta dokumentumot, melynek témája a makroökonómia lesz, azon belül is a GDP számításról és a különböző indexek kiszámításának módjáról fogunk írni. A teljes dokumentumunk az alábbi: \documentclass[a4paper,12pt]{article} \usepackage[utf8]{inputenc} \usepackage[t1]{fontenc}
2.4 Egyedi formázási beállítások 8 \usepackage[magyar]{babel} \usepackage{anysize} \marginsize{2cm}{2cm}{2cm}{2cm} \linespread{1.3} \begin{document} A nominális GDP értékének meghatározása során minden, az adott gazdaságban adott id szak alatt létrehozott termék és szolgáltatás összértékéb l kivonjuk az adott év folyó termel felhasználását, így a nominális GDP valójában nem más, mint a jelenbeli árakon számított hozzáadott érték. \end{document} Ezt átfordítva már egy szép, megfelelően formázott dokumentumot kapunk. 2.4 Egyedi formázási beállítások Természetesen előfordulhat olyan eset, amikor a LATEX nyújtotta alapvető beállítások nem felelnek meg az igényeinknek. Ilyenkor egy-egy csomag használatával könnyen orvosolhatjuk ezt a problémát. Ebben a fejezetben bemutatjuk a főbb lehetőségeket. Ezeken túl természetesen számos más módosítást is végrehajthatunk, melynek pontos módját a LATEX-et használók közössége az interneten szinte minden esetben megtárgyalt már, így bármilyen igényünk is legyen, az interneten szinte minden esetben találunk megoldást a problémánkra. Kezdjük az áttekintést az oldal méretével. Amennyiben a hagyományos méretektől eltérő dokumentumot szeretnénk készíteni, hasznos megoldást nyújt a geometry csomag. Dokumentumunk preambulumában könnyedén megadhatjuk az általunk használni kívánt szélességet és magasságot az alábbi módon: \usepackage[paperwidth=szélesség,paperheight=magasság]{geometry} A szélesség és a magasság helyére az általunk kívánt méreteket adhatjuk meg milliméterben. Amennyiben például A6-os dokumentumot szeretnénk létrehozni, a beállításunk az alábbi lenne: \usepackage[paperwidth=105mm,paperheight=148.5mm]{geometry} A geometry és más csomagok együttes használata gyakran problémákba ütközhet a dokumentumok végrehajtott módosítások miatt. Egyes fordítóprogramok esetében a magyar babel is ezek közé tartozik. Ezekre a problémákra a megoldás a csomagok helyes sorrendben történő betöltése. A geometry csomagot minden esetben elsőként töltsük be, így sok problémától megkímélhetjük magunkat. Ugyancsak fontos, hogy a geometry csomag felülírja a documentclass-ben megadott tulajdonságokat, vagyis ha beállítjuk, hogy A4-es dokumentumot szeretnénk létrehozni, majd a geometry csomag segítségével A6-os méretet állítunk be, utóbbi fog érvényesülni. A jelenséget szemlélteti a jegyzethez mellékelt mintafájl. Nagyon fontos, hogy a geometry használata esetén ez a csomag fogja szabályozni a dokumentum margóit is, így innentől kezdve az anysize csomag és a \marginsize parancs használata nem szükséges. A geometry beállításai között megadhatjuk a margókat az alábbi módon: \usepackage[left=,bottom=,top=,right=]{geometry} Az egyenlőségjelek után a margókat milliméterben vagy centiméterben kell megadnunk. Egy A4-es dokumentum 2,5 centiméteres margókkal a geometry használatával tehát az alábbi módon nézne ki: \usepackage[a4paper,left=25mm,bottom=25mm,top=25mm,right=25mm]{geometry} Egy másik viszonylag gyakori eset, hogy a LATEX által kínált alapvető betűméretektől szeretnénk eltérni. Természetesen erre is van megoldás, melyhez nincs szükség csomag betöltésére sem. Összesen 10 betűméret közül választhatunk, de természetesen csomagok használatával ettől is el tudunk térni. A méreteket a 2.2. táblázat szemlélteti. Az egyes betűméretek használatára két módon nyílik lehetőségünk. Az egyik, hogy kapcsos zárójelek között a méret megadását követően beírjuk az egész szöveget, melyet az adott méretben szeretnénk viszontlátni. Egy példán keresztül bemutatva:
2.4 Egyedi formázási beállítások 9 Méret Minta tiny tiny scriptsize scriptsize footnotesize footnotesize small small normalsize normalsize large large Large Large LARGE huge Huge LARGE huge Huge Táblázat 2.2: Az alapból támogatott betűméretek {\LARGE Ez a mondat nagy bet kkel fog megjelenni.} Egy másik lehetőség, hogy a formázandó szöveget begin-end környezetben adjuk meg. Ennek egy példája: \begin{small} Ez a mondat kis bet kb l fog állni. \end{small} Ugyancsak lényeges pont lehet, hogy az angol gyakorlatban a mondatvégi írásjeleket követően nagyobb szóközt szokás hagyni. A magyar gyakorlat ettől eltér, azonban a LATEX nem tudhatja, hogy a monitor előtt ülő szerző a magyar szokásoknak megfelelően kívánja elkészíteni a dokumentumot. Ez a probléma azonban a preambulumban az alábbi parancsot kiadva könnyedén megoldható: \frenchspacing Előfordulhat az is, hogy egyes oldalak esetében eltérő margót szeretnénk beállítani, mint a dokumentum egészén. Ebben az esetben is a geometry csomag lesz a segítségünkre. A dokumentum bármely pontjától kezdve felülírhatjuk a korábban megadott margó méreteket az alábbi paranccsal: \newgeometry{left=,bottom=,top=,right=} Természetesen az egyenlőségjelek után meg kell adnunk a margók méretét milliméterben vagy centiméterben. Ezt a dokumentum későbbi pontján könnyedén visszaállíthatjuk az alapbeállításra az alábbi paranccsal: \restoregeometry Fontos tulajdonsága a LATEX-nek, hogy érzéketlen a szóközök és enterek számára. Ha véletlenül 2-3 szóközt rakunk a szavak közé, fordításkor a létrehozott dokumentumban egyetlen szóközt kapunk vissza. Ugyancsak mindegy, hogy egyetlen entert ütünk, vagy több enterrel válaszjuk el bekezdéseinket, a hatás ugyanaz, a LATEX új bekezdést kezd. Az új bekezdések mindegyike esetében egységes nagyságú sorbehúzással találkozhatunk. Amennyiben azt szeretnénk, hogy az adott bekezdés esetében a LATEX ne húzza be a sort, a bekezdést az alábbi paranccsal kell kezdenünk: \noindent Amennyiben nagyobb vagy kisebb behúzást szeretnénk alkalmazni, a dokumentum preambulumában megadhatjuk az általunk kívánt értéket az alábbi paranccsal: \setlength\parindent{} A kapcsos zárójelek között természetesen meg kell adnunk a behúzás mértékét centiméterben.
2.5 A dokumentum tagolása, dokumentumtípusok 10 2.5 A dokumentum tagolása, dokumentumtípusok Mint azt a korábbi fejezetekben láthattuk, a dokumentumunk első sorában meg kell határozni az általunk létrehozott dokumentum típusát. Ez azért fontos, mert az egyes típusok eltérő tagolási lehetőségeket tesznek lehetővé, így fontos, hogy az igényeinknek megfelelő típust válasszuk ki. Az egyes típusokat és azok használatát a 2.3. táblázat foglalja össze. Dokumentum típus article report book letter beamer Jellemző használata A leggyakrabban használt típus, közepes hosszúságú cikkek, tanulmányok Hosszabb, könyvekre tagolt dokumentumok, jelentések Valódi könyvekhez, több könyvre tagolható Levelekhez, semmilyen tagolása nincs LATEX-ben készült prezentációkhoz Táblázat 2.3: Főbb dokumentumtípusok Dokumentumainkat részekre, könyvekre, fejezetekre, alfejezetekre, al-alfejezetekre, bekezdésekre és albekezdésekre tagolhatjuk. Ezek mindegyikét nagyon ritkán használjuk, mivel rombolja a művek esztétikáját, ugyanakkor néhány tagolási szint alkalmazása elengedhetetlen az átláthatóság szempontjából, amennyiben hosszabb dokumentumokat hozunk létre. A tagolás szintjeit a 2.4. táblázat mutatja be. A fejezetek, alfejezetek címe a kapcsos zárójelbe kell, hogy kerüljön. A LATEX automatikusan Parancs Szint Leírás \part{} -1 Ritkán használt tagolás, több részre bontott dokumentumoknál \chapter{} 0 Kizárólag book és report típusú dokumentumoknál használható \section{} 1 Fejezet. Ezzel a szinttel célszerű kezdeni a tagolást \subsection{} 2 Alfejezet \subsubsection{} 3 Al-alfejezet \paragraph{} 4 Bekezdés. Ezt a tagolási szintet már nem szokás használni \subparagraph{} 5 Albekezdés. Szinte soha nem használjuk Táblázat 2.4: Tagolási szintek LATEX dokumentumok esetén elvégzi az egyes tagolási szintek számozását, és frissíti a tartalomjegyzéket (a tartalomjegyzékről egy későbbi fejezetben lesz szó). Jelen könyvünk például egy book típusú dokumentum, melynek épp a 2. chapter 5. section részét olvassa az olvasó. A dokumentumok tagolását a mellékelt mintafájl mutatja be szemléletesen. Amennyiben egy adott fejezetet nem szeretnénk sorszámozni, egyszerűen megoldhatjuk. Ekkor az adott parancsot egy csillaggal kell ellátni, így az nem kerül sorszámozásra, például \section*{ez a fejezet nem lesz sorszámozva}. 2.6 A matematikai mód használata A LATEX egyik legfontosabb funkciója az egyenletek írása. A LATEX használatával nyomdai minőségben könnyedén elkészíthetjük egyenleteinket, matematikai formuláinkat. Ebben a fejezetben bemutatjuk a matematikai mód használatát, illetve a több egyenletből álló rendszerek működését. A későbbi fejezetekben számos megoldást mutatunk be, melyek fontosak lehetnek munkánk során. Az egyenleteket az úgynevezett matematikai módban kell elkészítenünk. A matematikai módba való átváltással jelezhetjük a LATEX számára, hogy matematikai karakterekkel teli részt szeretnénk a dokumentumunkba illeszteni. Ezek esetében a LATEX jól elkülöníthető, eltérő formátumot használ. Matematikai módban nincs lehetőségünk ékezetes karakterek használatára, bár mint azt a későbbiekben láthatjuk, igényünk szerint a matematikai módon belül lehetőségünk nyílik visszaváltani szöveges módba. Matem-
2.6 A matematikai mód használata 11 atikai formuláinkat dollárjelek között készíthetjük el. Két fontos környezetet különböztethetünk meg. Az első az alábbi módon néz ki: $ matematikai formula $ A másik a következő: $$ matematikai formula $$ A két megoldás között az a különbség, hogy két-két dollárjel alkalmazása esetén a képletünk egy különálló sorba, az oldal közepére igazítva jelenik meg, míg egy-egy dollárjel esetén a formulánk a szöveggel egy sorba kerül. A kettő közötti különbséget jól szemlélteti a fejezethez tartozó mintafájl. Amennyiben egymás alatt szeretnénk megadni több egyenletet is, arra az egyik megoldás, hogy egyenleteinket egymás után külön-külön két-két dollárjel között írjuk be. Ez azonban az egyenletek eltérő hossza esetén nem túl esztétikus. Egy csomag betöltésével ennél sokkal szebb megoldást is alkalmazhatunk. Ez a csomag az amsmath, melynek segítségével egyenleteinket egymár alá tudjuk igazítani. A csomag betöltéséhez a preambulumba helyezzük el az alábbi utasítást: \usepackage{amsmath} Az amsmath betöltését követően egy új környezetet tudunk használni, melynek neve align. Amennyiben ezt használjuk, egyenleteink számozva jelennek meg egymás alatt, az általunk kijelölt helyen egymáshoz igazítva. Jellemzően az egyenlőségjel előtt vagy után szokás ezt az igazítást megtenni, melyre az & jel kirakásával van lehetőségünk. Az egyenleteket \\ jellel kell elválasztani egymástól. Egy egyszerű példán keresztül az alábbi kód: \begin{align} a &= b+c+d\\ c &= b+d \end{align} A következő eredményt adja: a = b + c + d (2.1) c = b + d (2.2) Amennyiben egy adott egyenletet nem szeretnénk számozni, az egyenlet sorában a \\ jelet megelőzően adjuk ki a \nonumber parancsot. Csak azokat az egyenleteket szokás számozni, melyekre a későbbiekben hivatkozunk. A hivatkozás pontos módját egy későbbi fejezetben mutatjuk be. Amennyiben egyik egyenletet sem szeretnénk számozni, nem kell minden egyes sor esetén külön-külön kiadni a \nonumber parancsot. Ilyenkor használható az align* környezet, mely esetében egyik egyenlet sem kerül számozásra. Példánkban ha a kód: \begin{align*} a &= b+c+d\\ c &= b+d \end{align*} Az eredmény: a = b + c + d c = b + d Az amsmath csomag által nyújtott align és align* környezetekkel tehát esztétikus módon tudjuk egymás alatt elhelyezni az egyenleteinket. Ugyanerre számos más csomag is kínál megoldást, azonban az amsmath csomag használata javasolt, mivel ezt napjainkban is folyamatosan frissítik.
2.7 Alapvető matematikai kódok 12 2.7 Alapvető matematikai kódok Ebben a fejezetben áttekintjük, miként lehet a matematikai módban törteket, szummákat, különböző műveleti jeleket, mátrixokat és hasonló, a matematikai formulákban gyakran előforduló elemeket létrehozni. Kezdjük az elején, néhány speciális jel kódjával. A LATEX esetében számos speciális karakter megjelenítésére nyílik lehetőségünk, azonban ezek beszúrása az esetek nagy részében a karakter kódjával történik. így például lehetőségünk van görög betűk, speciális műveleti jelek, stb. beszúrására. A használható görög karaktereket a 2.5. táblázat foglalja össze. A későbbiekben további karaktertáblázatokat is Kód Eredmény Kód Eredmény Kód Eredmény Kód Eredmény \alpha α \beta β \gamma γ \delta δ \epsilon ε \varepsilon ε \zeta ζ \eta η \theta θ \vartheta ϑ \iota ι \kappa κ \lambda λ \mu µ \nu ν \xi ξ \pi π \varphi ϕ \rho ρ \varrho ρ \sigma σ \varsigma ς \tau τ \upsilon υ \phi φ \varphi ϕ \chi χ \psi ψ \omega ω \Gamma Γ \Delta \Theta Θ \Lambda Λ \Xi Ξ \Phi Φ \Sigma Σ \Upsilon ϒ \Pi Π \Psi Ψ \Omega Ω Táblázat 2.5: Görög karakterek összefoglaló táblázata bemutatunk, azonban ezek ismeretében már szemléltethető néhány alapvető matematikai művelet. Az egyszerűbb műveleti jelek (+,,:) a matematikai módban tökéletesen működnek. Azonban a szorzás és osztás speciális kódokat is igényelhet. A szorzásjelet a \cdot kóddal tudjuk megadni. Amennyiben az osztást nem kettősponttal, hanem per jellel szeretnénk jelölni, a \backslash parancsra lesz szükségünk, melynek eredménye egy \ jel. Ugyanígy működik a \slash parancs is, melynek eredménye egy / jel. Azonban törtjeinket gyakran célszerűbb rendes tört alakban megadni, melynek környezete a következő: \frac{számláló}{nevez } Ahol a számláló helyére értelemszerűen a tört számlálóját, a nevező helyére a nevezőjét írjuk. Fontosak még a hatványok és indexek. Amennyiben egy kifejezést hatványozni szeretnénk, arra a ^{kitev } paranccsal van lehetőségünk. Amennyiben alsó indexet szeretnénk, azt a _{index} paranccsal készíthetjük el. Ha kifejezetten egy műveleti jel alá és fölé szeretnénk valamit írni, mint például szummák vagy produktumok esetén, a szükséges parancs az adott műveleti jel után a \limits_{alsó kifejezés}^{fel s kifejezés}. Mindezeket egy egyszerű példán szemléltetve a négyzetszámok reciprokösszegére vonatkozó összefüggés kétszeres szorzata az alábbiak szerint írható fel: $$2 \cdot \sum\limits_{i=1}^{\infty} \frac{1}{i^{2}}=2 \cdot \frac{\pi^{2}}{6}$$ Melynek eredménye az alábbi: 2 i=1 1 i 2 = 2 π2 6 Ebben a példában korábban nem ismert műveleti jeleket is felhasználtunk, mint a \sum vagy a \infty. Talán már a példából is látható, hogy a LATEX segítségével tényleg minden létező matematikai jelet létre tudunk hozni, csupán a szükséges kód ismerete kell hozzá. Szánjunk hát néhány táblázatot a fontosabb, gyakran használt parancsok összefoglalására, a teljesség igénye nélkül. A használható karakterek listája számos helyen fellelhető az interneten, egy 164 oldalas pdf dokumentum formájában. A fontosabb szummákat, produktumokat, integrálokat és egyéb, az egyenlet méretével változó műveleti jeleket a 2.6. táblázat foglalja össze. Ezeken kívül természetesen számos fontos, a matematikában napi szinten használt jelölés van, melyek közül a leggyakoribbakat az 2.7. táblázat foglalja össze.
2.7 Alapvető matematikai kódok 13 Kód Eredmény Kód Eredmény Kód Eredmény \sum \prod \int \iint \iiint \oint \bigvee \bigcap \bigcup \bigsqcup \bigodot \bigotimes \bigwedge \biguplus \bigoplus Táblázat 2.6: Az egyenlet méretével együtt változó méretű műveleti jelek Kód Minta Kód Minta Kód Minta \lim lim \sqrt{n} n \sqrt[k]{n} k n \partial \dots... \vdots. \le \geq \leq \equiv \approx \simeq \rightarrow \leftarrow \ln ln b \xleftarrow[a]{b} \xrightarrow[a]{b} a \supset b a \supseteq \subseteq \forall \neq \not\equiv \ngtr \nleqslant \ngeqslant \therefore \mathbb{p} P \mathbb{n} N \mathbb{z} Z \mathbb{q} Q \mathbb{r} R \mathbb{c} C \infty \max max \because \ge \subset \mathbb{i} I \sim \exists \times \cong = \nless \min min Táblázat 2.7: Fontosabb matematikai karakterek A következőkben egy nagyon fontos elemről, a zárójelezésről ejtünk szót. A matematikai formulákban természetesen lehetőségünk van egyszerű zárójelek használatára, azonban ezek törtek esetében például nem adnak megfelelő eredményt. Ahhoz, hogy a zárójeleink magassága illeszkedjen a törtek magasságához, megfelelően kell azokat kódolni. A zárójelezendő kifejezést a \left( és a \right) parancsok közé kell írni. Természetesen a hagyományos zárójelünket kicserélhetjük szögletes vagy kapcsos zárójelre is. Egy példán keresztül szemléltetve az alábbi parancsot kiadva: $$(\frac{a}{b})$$ Az eredmény: ( a b ) Míg a fent leírt módszerrel: $$\left(\frac{a}{b} \right)$$ Az eredmény: ( a ) b Munkánk során ugyancsak gyakran használunk mátrixokat. A mátrixoknak külön környezete van, azokat a \begin{pmatrix} és a \end{pmatrix} utasításpár között kell elkészítenünk. A mátrixot sorról sorra töltjük fel elemekkel, az egyes elemeket & jellel, míg a mátrix sorait \\ jellel választhatjuk el. Egy példán keresztül:
2.8 Listák és felsorolások 14 $$\begin{pmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{pmatrix}$$ Ennek eredménye az alábbi: 1 2 3 4 5 6 7 8 9 A mátrixot nem mindig hagyományos zárójelek között szeretnénk megadni. Szögletes zárójelhez a bmatrix környezetet, egyenes vonalakhoz a vmatrix, kapcsos zárójelekhez a Bmatrix környezetet kell használni. Ezek eredménye rendre az alábbi: 1 2 3 1 2 3 1 2 3 4 5 6 4 5 6 4 5 6 7 8 9 7 8 9 7 8 9 Ezen alapvető ismeretek a legtöbb esetben elégségesek, de természetesen minden egyenlettípus megjelenítése megoldható, a megfelelő utasítások az internet számos pontján fellelhetők. 2.8 Listák és felsorolások Dokumentumainkban gyakran szeretnénk különböző felsorolásokat és listákat készíteni. Erre a LATEX nagyon egyszerű megoldást kínál. Számozott listát az enumerate környezetben hozhatunk létre, a lista minden egyes elemét a \item paranccsal jelölve. Egy egyszerű példán keresztül a működése az alábbi: \begin{enumerate} \item alma \item körte \item barack \end{enumerate} Az eredmény: 1. alma 2. körte 3. barack Amennyiben nem számozni szeretnénk a felsorolásunkat, hanem például betűkkel szeretnénk azt ellátni, be kell tölteni az enumerate csomagot. Ennek segítségével szinte bármilyen betűzést vagy számozást megvalósíthatunk igényeink szerint. Ehhez a \begin{enumerate} parancs után szögletes zárójelben meg kell adni a felsorolás első elemét, amelyben a csomag által felismert számozást folyamatosan elemről elemre növeli majd a csomag. A csomag számozni, római számozni és betűzni tud, tehát az első elemként az A, a, i, I, és 1 elemeket ismeri fel. Egy példa: \begin{enumerate}[a) tétel:] \item alma \item körte \item barack \end{enumerate} Ennek eredménye: 1. alma 2. körte 3. barack
2.9 Ábrák, képek 15 Amennyiben nem számozni vagy betűzni szeretnénk, az itemize környezet a megoldás. Az itemize alapértelmezés szerint pontozott listát hoz létre, de bármilyen, a LATEX által támogatott karaktert megadhatunk a listánkhoz. Ezt egy, a preambulumban elhelyezett paranccsal tehetjük meg, mellyel felül tudjuk írni a LATEX alap beállításait. Az alábbi parancsot kell ehhez kiadni a preambulumban: \renewcommand{\labelitemi}{karakter} Például ha négyzeteket szeretnénk, a parancsunk: \renewcommand{\labelitemi}{$\blacksquare$} Egymásba ágyazott listákat is létrehozhatunk, ha a felsorolásunkon belül egy újabb felsorolást kezdünk. Mindezt az alábbi példa szemlélteti: \begin{enumerate}[a)] \item gyümölcsök \begin{itemize} \item Banán \item Mandarin \end{itemize} \item zöldségek \begin{itemize} \item Paprika \item Uborka \end{itemize} \end{enumerate} Ennek eredménye: 1. gyümölcsök Banán Mandarin 2. zöldségek Paprika Uborka Egyedi megoldásokhoz a pifont csomag dinglist környezetét ajánljuk, azonban ezt jelen jegyzetben annak viszonylag ritka használata miatt nem mutatjuk be részletesen. 2.9 Ábrák, képek Dokumentumainkban természetesen ábrákat, képeket is elhelyezhetünk, melyek méretét, elhelyezkedését a LATEX segítségével könnyen személyre szabhatjuk. Ebben a fejezetben áttekintjük a képek beszúrásának módját, valamint minden ehhez kapcsolódó fontos részletet. A képek beszúrásához szükség van egy újabb csomagra, melynek neve graphicx. A preambulumban a \usepackage{graphicx} parancsot elhelyezve be is töltődik a csomag. A képek beszúrása innentől igencsak egyszerű. A képeket célszerű az általunk létrehozott.tex fájl mappájába, vagy azon belül egy almappába helyezni, ugyanis a képek elérési útvonalát a.tex fájlhoz képest relatív módon kell megadni. A képeket a \includegraphics{} paranccsal szúrhatjuk be, ahol a kapcsos zárójelbe a kép elérési útját kell megadnunk karakterhelyesen. Kiegészítő opciókat is megadhatunk, például a kép méretére vonatkozóan. Az ilyen jellegű beállításokat a kapcsos zárójelet megelőzően egy szögletes zárójelben kell megadni. A képet a LATEX automatikusan átméretezi a kép arányainak megtartásával. Amennyiben a kép méretét szeretnénk szabályozni, két módon is megtehetjük. Az egyik, hogy a szélességet vagy a magasságot centiméterben adjuk meg. Ekkor a kódunk az alábbiak valamelyike lehet: \includegraphics[width=xcm]{fájlnév.formátum} \includegraphics[height=xcm]{fájlnév.formátum}
2.10 Színek használata, szövegformázás 16 Előbbi esetben a kép szélességét, utóbbi esetben a magasságát szabályoztuk. Amennyiben a kép szélességét szeretnénk meghatározni, azt megadhatjuk az általunk létrehozott dokumentum sorszélességének viszonylatában is. Például ha a sor hosszának felében szeretnénk meghatározni a képünk szélességét, a kód az alábbi lenne: \includegraphics[width=0.5\linewidth]{fájlnév.formátum} Képeinket persze gyakran az oldal közepére szeretnénk igazítani, ilyenkor a megoldás az, hogy a képet egy center környezetben szúrjuk be. Például: \begin{center} \includegraphics[width=0.9\linewidth]{fájlnév.formátum} \end{center} Publikációk, tudományos művek esetén ábráinkat gyakran el szeretnénk látni számozással, képaláírással. Ezt a LATEX segítségével egyszerűen, automatikusan számozva megtehetjük. Sőt, a későbbiekben ábráinkra könnyedén hivatkozhatunk is, és a LATEX az ábrajegyzékünket is automatikusan elkészíti. Utóbbiak használatát egy későbbi fejezet mutatja be. Amennyiben számozott, aláírással ellátott ábrát szeretnénk létrehozni, a képet a figure környezetben kell elhelyeznünk, a képaláírást pedig a \caption{} paranccsal készíthetjük el. Egy példán keresztül: \begin{figure} \begin{center} \includegraphics[width=0.9\linewidth]{fájlnév.formátum} \caption{ez lesz a képaláírás} \end{center} \end{figure} A fent leírtakat szemléletesen is bemutatja a fejezethez tartozó mintafájl. 2.10 Színek használata, szövegformázás A különböző színek használatára viszonylag ritkán van szükség, de természetesen erre is van lehetőségünk. A következő fejezetben bemutatott táblázatok esetében például kifejezetten előnyös lehet a színek használata. Amennyiben szeretnénk élni a lehetőséggel, a color csomag használatára van szükségünk. Ezt a preambulumban a \usepackage[usenames,dvipsnames]{color} paranccsal tölthetjük be. Innentől kezdve számos előre definiált színnel tudunk dolgozni, de magunk is definiálhatunk színeket kedvünk szerint. Színes szövegek létrehozására az alábbi két parancs bármelyikével lehetőségünk van: {\color{szín neve} Ide jön a színes szöveg} \textcolor{szín neve}{ide jön a színes szöveg} A color csomag által kínált 68 alapértelmezett színt a 2.8. táblázat mutatja be. Természetesen az előre definiált színektől el is térhetünk, és magunk is definiálhatunk színeket. Ezt a preambulumban tudjuk megtenni. A színek definiálására több mód is van, mi itt most az RGB színkódokkal való definiálást mutatjuk be. Először is meg kell találni az általunk kívánt szín RGB kódját, melyet számos weblapon megtehetünk, de akár a Paint, vagy az Adobe Photoshop terméke is megadja az általunk kiválasztott szín RGB kódját. A preambulumban használatos parancs a következő: \definecolor{szín neve}{rgb}{vörös,zöld,kék} A parancsban természetesen a szín nevét az általunk a későbbiekben használni kívánt névvel kell helyettesíteni, míg a vörös a zöld és a kék helyére a kiválaszott szín RGB kódja kerül, vagyia 0 és 255 közötti számokat kell beírnunk. A szövegek formázásának van néhány további, fontos eleme. Nyilván hiányoljuk a korábbi szövegszerkesztőnkben megszokott félkövér, dőlt, és aláhúzott betűket. Ezekre a megoldás ismét a megfelelő parancs ismerete. Félkövérnek szánt szövegeinket az alábbi módon jeleníthetjük meg:
2.10 Színek használata, szövegformázás 17 Színkód Szín Színkód Szín Színkód Szín Színkód Szín Apricot CornflowerBlue LimeGreen Periwinkle Aquamarine Cyan Magenta PineGreen Bittersweet Dandelion Mahogany Plum Black DarkOrchid Maroon ProcessBlue Blue Emerald Melon Purple BlueGreen ForestGreen MidnightBlue RawSienna BlueViolet Fuchsia Mulberry Red BrickRed Goldenrod NavyBlue RedOrange Brown Green OliveGreen RedViolet BurntOrange Gray Orange Rhodamine CadetBlue GreenYellow OrangeRed RoyalBlue CarnationPink JungleGreen Orchid RoyalPurple Cerulean Lavender Peach RubineRed Salmon SeaGreen Sepia SkyBlue SpringGreen Tan TealBlue Thistle Turquoise Violet VioletRed White WildStrawberry Yellow YellowGreen YellowOrange Táblázat 2.8: A color csomag által támogatott színek \textbf{ide jön a félkövér szöveg} A dőlt betűk esetében: \textit{ide jön a d lt szöveg} Végül de nem utolsósorban az aláhúzás: \underline{ide jön az aláhúzott szöveg} Gyakran használunk még KISKAPITÁLIS betűket, melyet az alábbi paranccsal érhetünk el: \textsc{ide jön a kiskapitális szöveg} Fontos lehet még a szöveg balra-, jobbra- vagy középre igazítása is. Ahogy azt már megszokhattuk, erre is a megfelelő parancsok ismeretével nyílik lehetőségünk. A LATEX alapvetően sorkizárt szövegeket hoz létre, a bekezdések utolsó sorait pedig balra zárja. Amennyiben balra szeretnénk zárni a szöveget, úgy a flushleft környezetet, jobbra záráshoz a flushright környezetet, míg középre záráshoz a center környezetet kell használni. Példán keresztül szemléltetve a balra zárást: \begin{flushleft} Ez a szöveg balrazárt. \end{flushleft} A jobbrazárás esetén: \begin{flushright} Ez a szöveg jobbrazárt. \end{flushright} És végül középre záráshoz: \begin{center} Ez a szöveg középre zárt. \end{center}
2.11 Táblázatok 18 Előfordulhat, hogy paragrafuson belül mindenképpen új sort szeretnénk kezdeni, anélkül, hogy új paragrafust kezdenénk, és az első sorokra vonatkozó behúzás érvényesülne. Ezt a \newline paranccsal oldhatjuk meg, melyet bárhol elhelyezve a szövegben a LATEX új sort kezd. Amennyiben oldaltörést szeretnénk valahol végrehajtani, azt a \pagebreak paranccsal tehetjük meg. 2.11 Táblázatok A táblázatok elkészítése LATEX környezetben elsőre egy kicsit talán bonyolultnak tűnhet, azonban idővel berögzült rutinná válik, és nagyon könnyen létrehozhatjuk a dokumentumhoz illő, automatikusan számozott és hivatkozható táblázatainkat. A táblázatokat minden esetben a table környezetben kell elkészítenünk. Ezzel jelezzük a LATEX számára, hogy a következőkben táblázatokat szeretnénk készíteni. A konkrét táblázat a tabular környezeten belülre kerül. Egy táblázat tehát alapvetően az alábbi módon kell, hogy kinézzen: \begin{table} \begin{tabular}{oszlopokra vonatkozó információk} \end{tabular} \end{table} Az oszlopokra vonatkozó információk helyén meg kell adnunk, hogy hány oszlopot szeretnénk, és azokon belül a tartalmat balra, középre vagy jobbra szeretnénk igazítani. Egy balra igazított oszlopot az l paranccsal, egy középre igazított oszlopot a c paranccsal, míg egy jobbra igazított oszlopot az r paranccsal hozhatunk létre. Egy három oszlopos táblázat, melynek első oszlopa balra, második oszlopa középre, harmadik oszlopa jobbra igazított, az alábbi módon néz ki: \begin{table} \begin{tabular}{lcr} \end{tabular} \end{table} Ezt követően sorról sorra el kell készítenünk a táblázatunkat. Soron belül a cellákat & jellel kell egymástól elválasztani, a sorokat pedig \\ jellel választjuk el egymástól. Egy egyszerű indexekre vonatkozó táblázat például az alábbi kóddal készíthető el: \begin{table} \begin{tabular}{lcr} & Ár & Volumen \\ Laspeyres & $\frac{\sum p_{1}q_{0}}{\sum p_{0}q_{0}}$ & $\frac{\sum p_{0}q_{1}}{\sum p_{0}q_{0}}$ \\ Paasche & $\frac{\sum p_{1}q_{1}}{\sum p_{0}q_{1}}$ & $\frac{\sum p_{1}q_{1}}{\sum p_{1}q_{0}}$ \end{tabular} \end{table} Ennek eredménye: Laspeyres Paasche Ár Volumen p 1 q 0 p 0 q 0 p 1 q 1 p 0 q 1 p 0 q 0 p 1 q 1 p 0 q 1 p 1 q 0 Nyilván ezzel még nem vagyunk teljesen elégedettek, hiszen szeretnénk a sorokat és oszlopokat vonalakkal elválasztani. Az oszlopok elválasztásához az oszlopok definiálásánál az egyes oszlopok közé rakott jellel jelezhetjük, hogy ott vonalat szeretnénk húzni. A sorok között a sor végén kirakott \hline paranccsal húzhatunk vízszintes vonalat. Az alábbi módon például a sor- és oszlopfőket kettős vonallal választjuk el a táblázat többi elemétől, míg mindenhol máshol egy vonallal választjuk el a tartalmat:
2.12 Címlap és jegyzékek 19 \begin{table} \begin{tabular}{ l c r } \hline & Ár & Volumen \\ \hline \hline Laspeyres & $\frac{\sum p_{1}q_{0}}{\sum p_{0}q_{0}}$ & $\frac{\sum p_{0}q_{1}}{\sum p_{0}q_{0}}$ \\ \hline Paasche & $\frac{\sum p_{1}q_{1}}{\sum p_{0}q_{1}}$ & $\frac{\sum p_{1}q_{1}}{\sum p_{1}q_{0}}$ \\ \hline \end{tabular} \end{table} Ennek eredménye az alábbi táblázat: Laspeyres Paasche Ár Volumen p 1 q 0 p 0 q 1 p 0 q 0 p 0 q 0 p 1 q 1 p 1 q 1 p 0 q 1 p 1 q 0 A táblázatot középre is szeretnénk zárni az esetek többségében, valamint az előző fejezetben bemutatott színek felhasználásával esztétikusabbá szeretnénk azt tenni. A középre záráshoz a table környezeten belül, de még a tabular környezeten kívül létre kell hozni egy center környezetet. A színek alkalmazásánál meghatározhatjuk az egyes oszlopok, sorok, vagy cellák háttérszínét. Ehhez azonban szükségünk van egy csomagra, melynek neve colortbl. Ezt a preambulumban a \usepackage{colortbl} \begin{table} \begin{center} \begin{tabular}{ >{\columncolor{limegreen}}l c r } \hline \rowcolor{limegreen} & Ár & Volumen \\ \hline \hline Laspeyres & \cellcolor{yellowgreen} $\frac{\sum p_{1}q_{0}}{\sum p_{0}q_{0}}$ & \cellcolor{yellowgreen} $\frac{\sum p_{0}q_{1}}{\sum p_{0}q_{0}}$ \\ \hline Paasche & \cellcolor{yellowgreen} $\frac{\sum p_{1}q_{1}}{\sum p_{0}q_{1}}$ & \cellcolor{yellowgreen} $\frac{\sum p_{1}q_{1}}{\sum p_{1}q_{0}}$ \\ \hline \end{tabular} \end{center} \end{table} Ezt a táblázatot eredményezi: Laspeyres Paasche Ár Volumen p 1 q 0 p 0 q 1 p 0 q 0 p 0 q 0 p 1 q 1 p 1 q 1 p 0 q 1 p 1 q 0 Táblázatunkat természetesen meg is szeretnénk számozni, és aláírással szeretnénk ellátni. Ekkor még a table környezeten belül, de a tabular környezeten kívül, az ábrákhoz hasonlóan a \caption{} parancsot kell használnunk. Ennek működése már az ábrákra vonatkozó korábbi fejezetből ismert. 2.12 Címlap és jegyzékek Egy terjedelmes műnél egyértelmű, hogy szeretnénk készíteni címlapot, tartalomjegyzéket, ábrajegyzéket, esetleg a táblázatok jegyzékét. Ezek elkészítése a LATEX esetében automatikusan történik, és minden fordításkor frissül, így nem kell aggódnunk, hogy helyesen szerepelnek-e jegyzékeinkben az oldalszámok, vagy éppen címlapunkon a dátum.
2.13 Élőfejek, élőlábak 20 A címlap elkészítéséhez a szövegtörzs elején kell megadnunk dokumentumunk alapvető adatait, mint a szerző, a cím, vagy a dátum. A szerzőt az alábbi paranccsal adhatjuk meg: \author{ide jön a szerz neve} A cím megadása az alábbi módon történik: \title{ide jön a cím} A dátumot pedig az alábbi módon adhatjuk meg: \date{ide jön a dátum} Amennyiben a dátumot nem adjuk meg, a LATEX automatikusan a fordítás napját helyettesíti be. Miután mindezzel megvagyunk, egy egyszerű paranccsal el is készíthetjük a címlapot. A szükséges parancs: \maketitle Ezt a dokumentumon belül bárhol elhelyezve megjelenik a cím, a szerző és a dátum. Ahhoz, hogy ez egy külön lapon történjen, a dokumentum többi részét egy oldaltöréssel tudjuk elválasztani. Tartalomjegyzékünk egyszerűen elkészíthető a \tableofcontents paranccsal. Ekkor a LATEX automatikusan elkészíti a tartalomjegyzékünket az általunk meghatározott fejezetek, alfejezetek alapján. A tartalomjegyzék részletességét a preambulumban tudjuk szabályozni. Ehhez az alábbi parancs lesz a segítségünkre: \setcounter{tocdepth}{mélység} A mélység helyére egy számnak kell kerülnie. A 2.4. táblázat bemutatta, hogy az egyes tagolási szintek milyen számmal jelölhetőek. Ennek megfelelően be tudjuk állítani, hogy mit szeretnénk megjeleníteni a tartalomjegyzékünkben. Például ha csak chapter-ig szeretnénk megjeleníteni a tagolást, a mélység 0, míg ha az al-alfejezeteket is meg szeretnénk jeleníteni, a szükséges beállítás 3. Ábrajegyzékünket a \listoffigures paranccsal készíthetjük el. Az ábrajegyzék automatikusan frissül minden módosítás esetén. A táblázatok jegyzékének elkészítésére a \listoftables paranccsal nyílik lehetőségünk, mely a korábbiakhoz hasonlóan minden módosításnál automatikusan frissítésre kerül. Látható tehát, hogy a különböző jegyzékek elkészítése a LATEX segítségével gyerekjáték, és nem kell aggódnunk azok helyességét illetően. A címlappal kapcsolatban felmerülhet, hogy a hagyományos, LATEX által generált címlapokkal nem vagyunk megelégedve. Az interneten számos sablont találhatunk 1, de természetesen saját személyre szabott címlapunkat is elkészíthetjük, azonban erre annak összetettsége miatt most részletesebben nem térünk ki. 2.13 Élőfejek, élőlábak A dokumentumunk élőfejének és élőlábának elkészítésére a preambulumban van lehetőségünk. Egyes dokumentum típusok (mint a book vagy a report) automatikusan készítenek élőfejet, ugyanakkor ennek személyre szabására, valamint egyéb dokumentumtípusok esetén a megjelenítésére is lehetőségünk van. A legegyszerűbb megoldás erre a fancyhdr csomag használata. A preambulumban a \usepackage{fancyhdr} paranccsal be is tölthetjük a csomagot. A csomag segítségével hat pozícióban helyezhetünk el különböző tartalmakat. Az oldal tetején baloldalon, jobboldalon és középen, valamint az oldal alján is ugyanezen helyeken. Ehhez még a preambulumban az alábbi parancsokat kell kiadni: 1 Például a http://www.latextemplates.com/cat/title-pages oldalon
2.14 Forráskódok, programkódok megjelenítése 21 \pagestyle{fancy} \lhead{él fej bal oldala} \chead{él fej közepe} \rhead{él fej jobb oldala} \lfoot{él láb bal oldala} \cfoot{él láb közepe} \rfoot{él láb jobb oldala} A megfelelő helyekre tetszőleges szöveget is elhelyezhetünk, de gyakran szeretnénk inkább az oldalszámot viszontlátni. Ha valamelyik helyen az oldalszámot szeretnénk inkább látni, a \thepage parancsot kell az adott pozícióhoz behelyettesíteni. Ezen túl természetesen rengeteg lehetőség áll még rendelkezésünkre, az egyedi igények szinte mindegyikéhez találni megoldást az interneten. 2.14 Forráskódok, programkódok megjelenítése A dokumentumainkban lehetőségünk van forráskódok megjelenítésére is. Erre ebben a fejezetben két lehetőséget mutatunk be, az első egy egyszerűbb megoldás, míg a második valamivel összetettebb. Jelen jegyzetben a LATEX kódok megjelenítésénél az egyszerűbb megoldást alkalmaztuk. Ehhez a verbatim csomag használata szükséges. Ezt a preambulumba írt \usepackage{verbatim} paranccsal tölthetjük be. Ez a csomag két lehetőséget kínál. Amennyiben egy rövid kódrészletet szeretnénk megjeleníteni a folyó szövegen belül, mint ahogy ezen bekezdésen belül a csomag neve vagy a csomag betöltésének módja szerepelt, a szövegben a \verb parancsot kell elhelyeznünk, majd két függőleges vonal között az általunk megjeleníteni kívánt kódot. A csomag betöltésénél például az alábbi mondat áll jelen jegyzet forráskódjában: Ezt a preambulumba írt \verb \usepackage{verbatim} paranccsal tölthetjük be. Amennyiben az imént látott, külön sorban elhelyezkedő kódot szeretnénk kapni, úgy a verbatim környezetet kell használnunk. Ekkor egy \begin{verbatim} és egy \end{verbatim} parancs közé írhatjuk be a megjelenítendő kódot, amely akár több soros is lehet. Az ilyen módon megadott kódrészletet a LATEX automatikusan új sorban jeleníti meg. A másik megoldást jellemzően összetettebb programkódok esetén használjuk. Ezt láthatjuk például a későbbi fejezetekben a MATLAB kódok bemutatásánál. Ehhez a listings csomag használatára van szükség. Amennyiben MATLAB kódot szeretnénk megjeleníteni, kifejezetten hasznos ezen kívül az mcode csomag. Az mcode azonban nem érhető el hagyományos módon, azt külön le kell töltenünk, és elhelyezni az általunk készített dokumentum mappájában. A csomag ide kattintva tölthető le. A.zip fájlban megtalálható mcode.sty fájlt kell a mappánkba helyezni, és így máris be tudjuk tölteni a csomagot. A preambulumban adjuk ki a \usepackage{listings} parancsot, valamint a \usepackage{mcode} parancsot. Az mcode esetén számos beállítást alkalmazhatunk, a jellemző beállítás az alábbi: \usepackage[framed,numbered,autolinebreaks,useliterate]{mcode} Ezzel megadtuk, hogy a forráskódunkat keretes környezetben, sorait számozva és automatikusan megtörve, programelemeinket pedig a matlabban láthatóan színezve szeretnénk visszakapni. A programkódunkat egy lstlisting környezetben kell elhelyezni. Egy példán szemléltetve tekintsük az alábbi kódrészletet: \begin{lstlisting} while 0>n(1) %Logikai feltetel. n(1)=input('kerem, adjon meg egy indulo n erteket!'); %Muvelet end %Ciklus lezarasa. \end{lstlisting} Ennek eredménye az alábbi: