kiss olivér rózemberczki benedek...\usepackage[t1]{fontenc} \usepackage[magyar]{babel}...

140
Programozási gyakorlatok L A T E Xés MATLAB Kiss Olivér Rózemberczki Benedek

Upload: others

Post on 30-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • Programozási gyakorlatokLATEXés MATLAB

    Kiss OlivérRó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észbenpedig korábbi évek vizsga soraiból építkeznek, azokra adnak részletes megoldást. A feladatgyűjteményfelfogható egyfajta általános, és a tárgy teljesítéséhez szükséges probléma gyűjteményként is (problemset). A tartalmi, helyesírási és stilisztikai hibákat a [email protected] címen lehet jelezni.A dokumentum a LATEXprogramnyelv segítségével készült, a beágyazott programkódok listings és mcodecsomagokkal készültek.

    A fejezetek szerzői lebontva:1. fejezet - Kiss Olivér2. fejezet - Kiss Olivér3. fejezet - Kiss Olivér4. fejezet - Kiss Olivér5. fejezet - Kiss Olivér6. fejezet - Kiss Olivér7. fejezet - Rózemberczki Benedek8. fejezet - Rózemberczki Benedek9. fejezet - Rózemberczki Benedek

    10. fejezet - Rózemberczki Benedek

    Első változat, január 2013

  • Tartalomjegyzék

    1 LATEX- Első lépések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2 LATEX- Szöveges dokumentumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3 LATEX-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- Első lépések

    Mielőtt elkezdenénk elkészíteni az első LATEX dokumentumunkat, néhány elengedhetetlen dolgot megkell tennünk. A LATEX tudniillik egy programnyelv, melynek megfelelő használatához nem elég csupán aszintaktika és a szemantika alapos ismerete, a működéshez elengedhetetlen egy megfelelő fordítóprogrambeszerzése is.

    A LATEX esetében számos ingyenesen elérhető fordítóprogram létezik. Ezek eltérő funkciókkalrendelkeznek, és mindenki megtalálhatja azt, amelynek használata számára a legkényelmesebb. Jelenjegyzetben egységesen a MiKTeX programcsomagot használjuk dokumentumaink elkészítésére. AMiKTeX programcsomag számos funkcióval rendelkezik, melyek közül számunkra a TeXworks lesz alegfontosabb. A TeXworks számos platformra (Windows, Mac és a legtöbb Linux disztribúció) önállóanis elérhető, nem windows operációs rendszeren történő munkához a TeXworks telepítését javasoljuk.

    A MiKTeX letölthető a MiKTeX honlapjáról. Innen az Other Downloads fülön található MiKTeXPortable szoftver használata javasolt, melyet egyszerűen egy pendrivera telepítve bárhová magunkkalvihetünk. Ehhez célszerű egy legalább 1 GB szabad kapacitással rendelkező eszközt választani, mivel akülönböző csomagok telepítése során jelentősen nőhet a programcsomag által elfoglalt terület. A letöltöttfájl egy önkicsomagoló, exe kiterjesztésű fájl. A telepítéshez a telepítő elindítását követően adjunkmeg egy, a pendriveon található különálló mappát, melybe a szoftver, illetve a későbbiekben a szoftveráltal letöltött kiegészítő csomagok kerülnek. A telepítő automatikusan elvégzi a szükséges lépéseket.A telepítés végeztével a kiválasztott mappában elérhetővé válik egy miktex-portable nevű kötegfájl,melyre kétszer kattintva elindul a programcsomag, és a tálcán megjelenik a MiKTeX ikonja. Erre jobbegérgombbal rákattintva több lehetőség közül választhatunk, ezek között megtalálható a TeXworks is. Errekattintva megnyílik a szerkesztő ablak, melyben a továbbiakban dolgozni fogunk. Amennyiben a szoftverportable verzióját telepítettük, soha ne felejtsünk el a pendrive leválasztása előtt kilépni a MiKTeX-ből,melyet a MiKTeX ikonjára jobb egérgombbal kattintva az Exit opcióval tehetünk meg.

    Ezzel meg is tettük az első lépéseket egy, a minőségi szakmai dokumentumok és publikációkelkészítésére használható megoldás elsajátítása felé. A következő felejezben lépésről-lépésre bemutatjuka szöveges dokumentumok elkészítésének rejtelmeit, melyet a harmadik fejezetben a LATEX prezentá-ciókészítő funkciójának, a beamernek rövid bemutatása követ. Reméljük, hogy a LATEX használatátlegalább annyira hasznosnak érzi majd, mint mi magunk. Mivel jelen egyetemi jegyzet még csak vázlat,így hibák előfordulhatnak, melyek jelzését örömmel fogadjuk.

    http://miktex.org/download

  • 2 — LATEX- Szöveges dokumentumok

    2.1 A LATEX dokumentumok szerkezeti felépítéseJelen jegyzet egy egyszerű mintadokumentumon keresztül mutatja be a különböző funkciók működését,mely dokumentumot a jegyzet mellékleteként fejezetről-fejezetre haladva elérhetővé teszünk. A MiKTeXelindítását követően nyissuk meg a TeXworks-t. Egyelőre egy üres ablakkal találkozunk. A dokumentumotfelépítő forráskódot ebben az ablakban kell begépelnünk, melyet ezt követően a TeXworks lefordít, éseredményként egy pdf formátumú dokumentumot kapunk. A forráskód minden esetben két fő strukturáliselemből épül fel. Ezek a

    • Preambulum, ahol a dokumentum fontosabb tulajdonságait, a betöltendő csomagokat, illetve aspeciá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övethető, így ajegyzet olvasásával párhuzamosan célszerű azokat is tanulmányozni. A preambulumban kezdetben csupánazt fogjuk megadni, hogy milyen típusú dokumentumot szeretnénk létrehozni. A dokumentumtípusokrólbővebben egy későbbi fejezet ad áttekintést. Gépeljük be a szerkesztő 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ípusaarticle. Ezt követően készítsük el a szövegtörzset. A szövegtörzsnek mindig a \begin{document} ésaz \end{document} utasításpáros közé kell kerülnie. Első dokumentumunk kizárólag egy egyszerű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 felső sarkában található, zöld körben barna háromszögettartalmazó gombra kattintva nyílik lehetőségünk. Ekkor a TeXworks egy ablakban megkérdezi, hogy hovamentse a fájlt. Célszerű egy külön mappát kijelölni minden egyes dokumentumnak, mivel a fordítás sorána TeXworks több segédfájlt is létrehoz. A fordítást követően a kész dokumentum egy új ablakban megis jelenik. Ez első 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 kezdődik, és számos egyéb problémát fedezhetünk fel. Mindez annak akövetkezménye, hogy a LATEX esetében meg kell adnunk a preambulumban a dokumentum számos fontostulajdonságát is, mint a nyelv, margók, stb. Az alapvető beállításokat a következő fejezet mutatja be.

  • 2.2 Alapvető csomagok és beállítások 6

    2.2 Alapvető csomagok és beállításokA LATEX esetében nagyon fontos, hogy megadjuk, hogy a bevitt szöveg milyen típusú karakterekettartalmaz, valamint hogy milyen nyelven íródik, így helyesen tudnak megjelenni a karakterek, illetvemegfelelő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ábbikiegészítéseket tartalmaznak, és ingyenesen hozzáférhetőek. Sőt, a TeXworks egy új csomag használataesetén automatikusan le is tölti és telepíti azokat, ehhez elegendő a preambulumban megadni, hogy azadott csomagot a dokumentum elkészítése során használni szeretnénk. Az egyik legfontosabb dolog, hogydefiniáljuk, milyen karakterkódolással dolgozunk a TeXworks által átfordítandó dokumentumban. Eztaz inputenc csomag segítségével tudjuk definiálni. Dokumentumunk preambulumát (ugye emlékszünkmé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 elenged-hetetlen a fontenc. Ez a csomag határozza meg a létrehozott pdf dokumentum kódolását, és enneksegítségével jeleníthetőek meg helyesen a magyar nyelvben is használt ékezetes karakterek. Ennekhaszná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 dokumentumokatszeretnénk létrehozni. Ez azt az információt hordozza magában, hogy az általunk létrehozott dokumentummagyar 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 \usepackageparanccsal tudjuk meghívni, a csomag neve pedig ezt követően {} jelek közé kerül. A kettő között acsomagra vonatkozó beállításokat adhatjuk meg szögletes zárójelben. Ez a későbbiekben is szinte mindenesetben í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ő soraeddig 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ünkbeá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 karakterek12-es betűméretűek legyenek. A dokumentumok további alapvető tulajdonságait a következő fejezetekbenré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, melybenhelyesen jelennek meg az ékezetes karakterek is. A dokumentumunk ettől függetlenül még nem túleszté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ágaiNyilvánvaló, hogy az általunk létrehozott dokumentumok esetében magunk szeretnénk meghatározni adokumentum 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 egyesoldalmé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ása4paper 210 mm 297 mm Szabványos A4-es papírméreta5paper 148 mm 210 mm Szabványos A5-ös papírméretb5paper 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álataszü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éretetszeretnénk, azt ugyancsak egy csomag segítségével oldhatjuk meg. A beállítások alacsony száma annakköszönhető, hogy a LATEX alapvetően nyomdai minőségű tudományos művek, publikációk létrehozásáraszolgá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 vanegy ú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. Ennekbeá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ítsunkbe 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 dokumen-tumunk. 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 teljesdokumentumunk 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 adottid®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 ajelenbeli á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ásokTermészetesen előfordulhat olyan eset, amikor a LATEX nyújtotta alapvető beállítások nem felelnek meg azigényeinknek. Ilyenkor egy-egy csomag használatával könnyen orvosolhatjuk ezt a problémát. Ebbena fejezetben bemutatjuk a főbb lehetőségeket. Ezeken túl természetesen számos más módosítást isvégrehajthatunk, melynek pontos módját a LATEX-et használók közössége az interneten szinte mindenesetben megtárgyalt már, így bármilyen igényünk is legyen, az interneten szinte minden esetben találunkmegoldást a problémánkra.

    Kezdjük az áttekintést az oldal méretével. Amennyiben a hagyományos méretektől eltérő dokumen-tumot szeretnénk készíteni, hasznos megoldást nyújt a geometry csomag. Dokumentumunk pream-bulumában könnyedén megadhatjuk az általunk használni kívánt szélességet és magasságot az alábbimó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. Amennyibenpé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 dokumentumokvé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 csomagotminden 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. Nagyonfontos, hogy a geometry használata esetén ez a csomag fogja szabályozni a dokumentum margóit is, ígyinnentől kezdve az anysize csomag és a \marginsize parancs használata nem szükséges. A geometrybeá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-esdokumentum 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énkeltérni. Természetesen erre is van megoldás, melyhez nincs szükség csomag betöltésére sem. Összesen10 betűméret közül választhatunk, de természetesen csomagok használatával ettől is el tudunk térni. Amé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 azadott 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 Mintatiny tinyscriptsize scriptsizefootnotesize footnotesizesmall smallnormalsize normalsizelarge largeLarge LargeLARGE LARGEhuge hugeHuge 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 egypé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őennagyobb szóközt szokás hagyni. A magyar gyakorlat ettől eltér, azonban a LATEX nem tudhatja, hogy amonitor előtt ülő szerző a magyar szokásoknak megfelelően kívánja elkészíteni a dokumentumot. Ez aproblé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 dokumen-tum egészén. Ebben az esetben is a geometry csomag lesz a segítségünkre. A dokumentum bármelypontjá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 cen-timéterben. Ezt a dokumentum későbbi pontján könnyedén visszaállíthatjuk az alapbeállításra az alábbiparanccsal:

    \restoregeometry

    Fontos tulajdonsága a LATEX-nek, hogy érzéketlen a szóközök és enterek számára. Ha véletlenül2-3 szóközt rakunk a szavak közé, fordításkor a létrehozott dokumentumban egyetlen szóközt kapunkvissza. Ugyancsak mindegy, hogy egyetlen entert ütünk, vagy több enterrel válaszjuk el bekezdéseinket, ahatá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 nehú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ábanmegadhatjuk 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ípusokMint azt a korábbi fejezetekben láthattuk, a dokumentumunk első sorában meg kell határozni az általunklétrehozott dokumentum típusát. Ez azért fontos, mert az egyes típusok eltérő tagolási lehetőségekettesznek lehetővé, így fontos, hogy az igényeinknek megfelelő típust válasszuk ki. Az egyes típusokat ésazok használatát a 2.3. táblázat foglalja össze.

    Dokumentum típus Jellemző használataarticle A leggyakrabban használt típus, közepes hosszúságú cikkek, tanulmányokreport Hosszabb, könyvekre tagolt dokumentumok, jelentésekbook Valódi könyvekhez, több könyvre tagolhatóletter Levelekhez, semmilyen tagolása nincsbeamer 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űvekesztétikáját, ugyanakkor néhány tagolási szint alkalmazása elengedhetetlen az átláthatóság szempon-tjából, amennyiben hosszabb dokumentumokat hozunk létre. A tagolás szintjeit a 2.4. táblázat mutatjabe. 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 egykésőbbi fejezetben lesz szó). Jelen könyvünk például egy book típusú dokumentum, melynek épp a2. chapter 5. section részét olvassa az olvasó. A dokumentumok tagolását a mellékelt mintafájlmutatja be szemléletesen. Amennyiben egy adott fejezetet nem szeretnénk sorszámozni, egyszerűenmegoldhatjuk. 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álataA LATEX egyik legfontosabb funkciója az egyenletek írása. A LATEX használatával nyomdai minőségbenkönnyedén elkészíthetjük egyenleteinket, matematikai formuláinkat. Ebben a fejezetben bemutatjuk amatematikai mód használatát, illetve a több egyenletből álló rendszerek működését. A későbbi fejezetek-ben 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 dokumen-tumunkba illeszteni. Ezek esetében a LATEX jól elkülöníthető, eltérő formátumot használ. Matematikaimó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. Azelső 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öveggelegy sorba kerül. A kettő közötti különbséget jól szemlélteti a fejezethez tartozó mintafájl. Amennyibenegymás alatt szeretnénk megadni több egyenletet is, arra az egyik megoldás, hogy egyenleteinket egymásutá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 nemtúl esztétikus. Egy csomag betöltésével ennél sokkal szebb megoldást is alkalmazhatunk. Ez a csomagaz amsmath, melynek segítségével egyenleteinket egymár alá tudjuk igazítani. A csomag betöltéséhez apreambulumba 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. Amennyibenezt használjuk, egyenleteink számozva jelennek meg egymás alatt, az általunk kijelölt helyen egymáshozigazítva. Jellemzően az egyenlőségjel előtt vagy után szokás ezt az igazítást megtenni, melyre az & jelkirakásával van lehetőségünk. Az egyenleteket \\ jellel kell elválasztani egymástól. Egy egyszerű példánkeresztü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őenadjuk ki a \nonumber parancsot. Csak azokat az egyenleteket szokás számozni, melyekre a későbbiekbenhivatkozunk. A hivatkozás pontos módját egy későbbi fejezetben mutatjuk be. Amennyiben egyikegyenletet sem szeretnénk számozni, nem kell minden egyes sor esetén külön-külön kiadni a \nonumberparancsot. 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ásalatt elhelyezni az egyenleteinket. Ugyanerre számos más csomag is kínál megoldást, azonban az amsmathcsomag használata javasolt, mivel ezt napjainkban is folyamatosan frissítik.

  • 2.7 Alapvető matematikai kódok 12

    2.7 Alapvető matematikai kódokEbben 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étre-hozni. Kezdjük az elején, néhány speciális jel kódjával. A LATEX esetében számos speciális karaktermegjelenítésére nyílik lehetőségünk, azonban ezek beszúrása az esetek nagy részében a karakter kódjávaltö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ál-ható 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. Azegyszerűbb műveleti jelek (+,−, :) a matematikai módban tökéletesen működnek. Azonban a szorzás ésosztás speciális kódokat is igényelhet. A szorzásjelet a \cdot kóddal tudjuk megadni. Amennyiben azosztá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. Fontosakmé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 vagyproduktumok esetén, a szükséges parancs az adott műveleti jel után a \limits_{alsó kifejezés}^{fels® kifejezés}. Mindezeket egy egyszerű példán szemléltetve a négyzetszámok reciprokösszegérevonatkozó ö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

    1i2

    = 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étretudunk 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ájaszámos helyen fellelhető az interneten, egy 164 oldalas pdf dokumentum formájában. A fontosabbszummá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áltjelö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\xleftarrow[a]{b}

    b←−a

    \xrightarrow[a]{b}b−→a

    \supset ⊃\supseteq ⊇ \subseteq ⊆ \forall ∀\neq 6= \not\equiv 6≡ \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ákbantermészetesen lehetőségünk van egyszerű zárójelek használatára, azonban ezek törtek esetében példáulnem adnak megfelelő eredményt. Ahhoz, hogy a zárójeleink magassága illeszkedjen a törtek maga-sságához, megfelelően kell azokat kódolni. A zárójelezendő kifejezést a \left( és a \right) parancsokközé kell írni. Természetesen a hagyományos zárójelünket kicserélhetjük szögletes vagy kapcsos zárójelreis. Egy példán keresztül szemléltetve az alábbi parancsot kiadva:

    $$(\frac{a}{b})$$

    Az eredmény:(ab)

    Míg a fent leírt módszerrel:

    $$\left(\frac{a}{b} \right)$$

    Az eredmény: (ab

    )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ólsorra töltjük fel elemekkel, az egyes elemeket & jellel, míg a mátrix sorait \\ jellel választhatjuk el. Egypé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 34 5 67 8 9

    A mátrixot nem mindig hagyományos zárójelek között szeretnénk megadni. Szögletes zárójelhez abmatrix környezetet, egyenes vonalakhoz a vmatrix, kapcsos zárójelekhez a Bmatrix környezetet kellhasználni. Ezek eredménye rendre az alábbi:1 2 34 5 6

    7 8 9

    ∣∣∣∣∣∣1 2 34 5 67 8 9

    ∣∣∣∣∣∣

    1 2 34 5 67 8 9

    Ezen alapvető ismeretek a legtöbb esetben elégségesek, de természetesen minden egyenlettípus megje-lenítése megoldható, a megfelelő utasítások az internet számos pontján fellelhetők.

    2.8 Listák és felsorolásokDokumentumainkban gyakran szeretnénk különböző felsorolásokat és listákat készíteni. Erre a LATEXnagyon egyszerű megoldást kínál. Számozott listát az enumerate környezetben hozhatunk létre, a listaminden 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. alma2. körte3. 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ástmegvalósíthatunk igényeink szerint. Ehhez a \begin{enumerate} parancs után szögletes zárójelbenmeg kell adni a felsorolás első elemét, amelyben a csomag által felismert számozást folyamatosan elemrőlelemre növeli majd a csomag. A csomag számozni, római számozni és betűzni tud, tehát az első elemkéntaz 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. alma2. körte3. 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 itemizealapértelmezés szerint pontozott listát hoz létre, de bármilyen, a LATEX által támogatott karaktert megad-hatunk 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 jegyzetbenannak viszonylag ritka használata miatt nem mutatjuk be részletesen.

    2.9 Ábrák, képekDokumentumainkban természetesen ábrákat, képeket is elhelyezhetünk, melyek méretét, elhelyezkedéséta LATEX segítségével könnyen személyre szabhatjuk. Ebben a fejezetben áttekintjük a képek beszúrásánakmó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 preambulumbana \usepackage{graphicx} parancsot elhelyezve be is töltődik a csomag. A képek beszúrása innentőligencsak egyszerű. A képeket célszerű az általunk létrehozott .tex fájl mappájába, vagy azon belül egyalmappá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érevonatkozóan. Az ilyen jellegű beállításokat a kapcsos zárójelet megelőzően egy szögletes zárójelbenkell megadni. A képet a LATEX automatikusan átméretezi a kép arányainak megtartásával. Amennyibena kép méretét szeretnénk szabályozni, két módon is megtehetjük. Az egyik, hogy a szélességet vagy amagassá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énekviszonylatában is. Például ha a sor hosszának felében szeretnénk meghatározni a képünk szélességét, akó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 aké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ás-sal. 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 sz-eretné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ásA 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ínekhaszná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. In-nentől kezdve számos előre definiált színnel tudunk dolgozni, de magunk is definiálhatunk színeketkedvü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őredefiniált színektől el is térhetünk, és magunk is definiálhatunk színeket. Ezt a preambulumban tudjukmegtenni. A színek definiálására több mód is van, mi itt most az RGB színkódokkal való definiálástmutatjuk be. Először is meg kell találni az általunk kívánt szín RGB kódját, melyet számos weblaponmegtehetünk, de akár a Paint, vagy az Adobe Photoshop terméke is megadja az általunk kiválasztott színRGB 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 kellhelyettesí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 és255 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öveg-szerkesztő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ínApricot CornflowerBlue LimeGreen PeriwinkleAquamarine Cyan Magenta PineGreenBittersweet Dandelion Mahogany PlumBlack DarkOrchid Maroon ProcessBlueBlue Emerald Melon PurpleBlueGreen ForestGreen MidnightBlue RawSiennaBlueViolet Fuchsia Mulberry RedBrickRed Goldenrod NavyBlue RedOrangeBrown Green OliveGreen RedVioletBurntOrange Gray Orange RhodamineCadetBlue GreenYellow OrangeRed RoyalBlueCarnationPink JungleGreen Orchid RoyalPurpleCerulean Lavender Peach RubineRedSalmon SeaGreen Sepia SkyBlueSpringGreen Tan TealBlue ThistleTurquoise Violet VioletRed WhiteWildStrawberry 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övegekethoz létre, a bekezdések utolsó sorait pedig balra zárja. Amennyiben balra szeretnénk zárni a szöveget, úgya flushleft környezetet, jobbra záráshoz a flushright környezetet, míg középre záráshoz a centerkö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 újparagrafust kezdenénk, és az első sorokra vonatkozó behúzás érvényesülne. Ezt a \newline paranccsaloldhatjuk 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ázatokA táblázatok elkészítése LATEX környezetben elsőre egy kicsit talán bonyolultnak tűnhet, azonban idővelberögzült rutinná válik, és nagyon könnyen létrehozhatjuk a dokumentumhoz illő, automatikusan számo-zott és hivatkozható táblázatainkat.

    A táblázatokat minden esetben a table környezetben kell elkészítenünk. Ezzel jelezzük a LATEXszámára, hogy a következőkben táblázatokat szeretnénk készíteni. A konkrét táblázat a tabularkö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 azokonbelül a tartalmat balra, középre vagy jobbra szeretnénk igazítani. Egy balra igazított oszlopot az lparanccsal, egy középre igazított oszlopot a c paranccsal, míg egy jobbra igazított oszlopot az r paranccsalhozhatunk 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ólelválasztani, a sorokat pedig \\ jellel választjuk el egymástól. Egy egyszerű indexekre vonatkozó táblázatpé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:

    Ár VolumenLaspeyres ∑ p1q0∑ p0q0

    ∑ p0q1∑ p0q0

    Paasche ∑ p1q1∑ p0q1∑ p1q1∑ p1q0

    Nyilván ezzel még nem vagyunk teljesen elégedettek, hiszen szeretnénk a sorokat és oszlopokatvonalakkal 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 \hlineparanccsal húzhatunk vízszintes vonalat. Az alábbi módon például a sor- és oszlopfőket kettős vonallalvá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 \hlineLaspeyres & $\frac{\sum p_{1}q_{0}}{\sum p_{0}q_{0}}$ &$\frac{\sum p_{0}q_{1}}{\sum p_{0}q_{0}}$ \\ \hlinePaasche & $\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:

    Ár Volumen

    Laspeyres ∑ p1q0∑ p0q0∑ p0q1∑ p0q0

    Paasche ∑ p1q1∑ p0q1∑ p1q1∑ p1q0

    A táblázatot középre is szeretnénk zárni az esetek többségében, valamint az előző fejezetben be-mutatott színek felhasználásával esztétikusabbá szeretnénk azt tenni. A középre záráshoz a tablekörnyezeten belül, de még a tabular környezeten kívül létre kell hozni egy center környezetet. Aszínek alkalmazásánál meghatározhatjuk az egyes oszlopok, sorok, vagy cellák háttérszínét. Ehhezazonban 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 \hlineLaspeyres & \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}}$ \\ \hlinePaasche & \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:

    Ár Volumen

    Laspeyres ∑ p1q0∑ p0q0∑ p0q1∑ p0q0

    Paasche ∑ p1q1∑ p0q1∑ p1q1∑ p1q0

    Táblázatunkat természetesen meg is szeretnénk számozni, és aláírással szeretnénk ellátni. Ekkormé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ékekEgy 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 mindenfordí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, minta 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ánmindezzel 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 egykü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 au-tomatikusan 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 asegí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 szintekmilyen számmal jelölhetőek. Ennek megfelelően be tudjuk állítani, hogy mit szeretnénk megjeleníteni atartalomjegyzé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 automatikusanfrissü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 akorábbiakhoz hasonlóan minden módosításnál automatikusan frissítésre kerül. Látható tehát, hogy akü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étilletően.

    A címlappal kapcsolatban felmerülhet, hogy a hagyományos, LATEX által generált címlapokkal nemvagyunk megelégedve. Az interneten számos sablont találhatunk1, de természetesen saját személyreszabott címlapunkat is elkészíthetjük, azonban erre annak összetettsége miatt most részletesebben nemtérünk ki.

    2.13 Élőfejek, élőlábakA dokumentumunk élőfejének és élőlábának elkészítésére a preambulumban van lehetőségünk. Egyesdokumentum típusok (mint a book vagy a report) automatikusan készítenek élőfejet, ugyanakkor ennekszemé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 ugyanezenhelyeken. Ehhez még a preambulumban az alábbi parancsokat kell kiadni:

    1Pé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ámotviszontlátni. Ha valamelyik helyen az oldalszámot szeretnénk inkább látni, a \thepage parancsot kell azadott pozícióhoz behelyettesíteni. Ezen túl természetesen rengeteg lehetőség áll még rendelkezésünkre, azegyedi igények szinte mindegyikéhez találni megoldást az interneten.

    2.14 Forráskódok, programkódok megjelenítéseA dokumentumainkban lehetőségünk van forráskódok megjelenítésére is. Erre ebben a fejezetben kétlehető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 averbatim csomag használata szükséges. Ezt a preambulumba írt \usepackage{verbatim} parancc-sal tölthetjük be. Ez a csomag két lehetőséget kínál. Amennyiben egy rövid kódrészletet szeretnénkmegjeleníteni a folyó szövegen belül, mint ahogy ezen bekezdésen belül a csomag neve vagy a csomagbetöltésének módja szerepelt, a szövegben a \verb parancsot kell elhelyeznünk, majd két függőlegesvonal 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 álljelen 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 verbatimkö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észleteta 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áula későbbi fejezetekben a MATLAB kódok bemutatásánál. Ehhez a listings csomag használatára vanszükség. Amennyiben MATLAB kódot szeretnénk megjeleníteni, kifejezetten hasznos ezen kívül azmcode csomag. Az mcode azonban nem érhető el hagyományos módon, azt külön le kell töltenünk, éselhelyezni az általunk készített dokumentum mappájában. A csomag ide kattintva tölthető le. A .zipfá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ódunkategy 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!'); %Muveletend %Ciklus lezarasa.\end{lstlisting}

    Ennek eredménye az alábbi:

    http://www.mathworks.com/matlabcentral/fileexchange/8015-m-code-latex-package

  • 2.15 Hivatkozások és irodalomjegyzék 22

    1 while 0>n(1) %Logikai feltetel.2 n(1)=input('Kerem, adjon meg egy indulo n erteket!'); %Muvelet3 end %Ciklus lezarasa.

    Nagyon fontos, hogy a listings csomag nem kezeli az ékezetes karaktereket, így ezek használatanem megengedett. Ékezetes karaktereket tartalmazó kódot a verbatim csomag használatával javasoltmegjeleníteni. Ugyancsak problémát jelenthet, hogy a listings csomag, bár nagyon esztétikus kimeneteteredményez, több csomaggal inkompatibilis, vagy legalábbis megfelelő sorrendben szükséges betölteniőket. Az egyik ilyen a már korábban bemutatott color csomag. Mivel a listings automatikusanbetölti a hasonló funkciókkal rendelkező xcolor csomagot, így a listings használata esetén az xcolorcsomagot használjuk a color helyett. Az xcolor csomag esetén is elérhetőek a color csomag eseténbemutatott beállítások és parancsok.

    2.15 Hivatkozások és irodalomjegyzékA LATEX egyik leghasznosabb funkciója a hivatkozások és a hivatkozásjegyzék készítése. Minderre adokumentumunkban nagyon egyszerűen lehetőségünk nyílik. Elsőként a táblázatokra és ábrákra valóhivatkozás módját mutatjuk be, majd az egyéb dokumentumokra való hivatkozás módszerét ismertetjük.

    Amennyiben táblázatainkra, ábráinkra, egyenleteinkre a dokumentum későbbi részében hivatkozniszeretnénk, egy kulccsal kell azokat ellátnunk, mely egyértelműen azonosítja az adott táblázatot, ábrát,egyenletet. Ilyen kulcsot a \label{} paranccsal adhatunk meg. Ábrák esetén ezt a figure környezetenbelül, a caption megadása után kell megtennünk. Táblázatok esetén a table környezeten belül, szinténa caption megadása után kell megtennünk. Egyenletek esetében hivatkozás használatára csak az alignkörnyezetben elhelyezett egyenleteink esetében van lehetőség, ilyenkor a label{} parancsot az adottegyenlet sorába, még a \\ lezárás előtt kell elhelyeznünk. A label{} kapcsos zárójelébe bármilyen egyedikulcs kerülhet, azonban a kulcsok nem tartalmazhatnak ékezeteket. Az is problémát okozhat, ha kulcskéntegy csomag vagy LATEX parancs nevét adjuk meg, így ezeket is kerüljük el. Miután a hivatkozandóegyenletet, ábrát, táblázatot elláttuk egy ilyen kulccsal, a hivatkozás a dokumentum bármely pontjánlehetséges. Csak adjuk ki a \ref{kulcs} parancsot, és máris megjelenik a hivatkozott elem sorszáma.Amennyiben a preambulumban betöltjük a hyperref nevű csomagot, a hivatkozások a dokumentumonbelül kattinthatóvá válnak, és kattintásra a dokumentum hivatkozott részére ugranak.

    Ugyancsak előfordul, hogy külső címekre, weboldalakra szeretnénk hivatkozni. Ilyenkor is ahyperref csomag a megoldás. Az egyik lehetőség, hogy a hivatkozásunkat a \url{} paranccsal oldjukmeg, ekkor a szövegben a teljes hiperlink megjelenik, és kattintásra átvisz az adott weboldalra. Például azalábbi parancs:

    \url{http://makro.uni-corvinus.hu}

    Megnyitja a Makroökonómia Tanszék honlapját, és a következő módon jelenik meg a dokumentumunkban:http://makro.uni-corvinus.hu. Amennyiben a konkrét url helyett egy alternatív szöveget szeretnénkmegjeleníteni, úgy a \href{url}{szöveg} parancsot kell használni. Például az alábbi megoldással:

    \href{http://makro.uni-corvinus.hu}{ide kattintva.}

    Elérhető a Makroökonómia Tanszék honlapja ide kattintva.A legfontosabb talán mégis az, amikor külső dokumentumokra, könyvekre, folyóiratcikkekre sz-

    eretnénk hivatkozni. Ilyenkor az első dolgunk, hogy elkészítjük a hivatkozott dokumentumokról szólóinformációkat tartalmazó fájlunkat. Ennek a fájlnak egy különálló, .bib formátumú fájlnak kell lennie.Ezt akár a TeXworks-ben is elkészíthetjük és lementhetjük, de bármelyik egyszerű szövegszerkesztővel,például egy jegyzettömbbel is elkészíthetjük, a lényeg, hogy .bib formátumban mentsük el a fájlt. Ebben afájlban fel kell sorolnunk az összes dokumentumot, amire hivatkozni szeretnénk. Minden egyes dokumen-tum esetében először meg kell határoznunk annak típusát, majd meg kell adnunk egy kulcsot, ezt követőenpedig a dokumentum adatait kell felsorolnunk. Az alábbiakban rendre bemutatjuk, hogy milyen típusú

    http://makro.uni-corvinus.huhttp://makro.uni-corvinus.hu

  • 2.15 Hivatkozások és irodalomjegyzék 23

    Szakdolgozat@mastersthesis{kulcs,

    author = "",title = "",school = "",%type = "",%address = "",year = "",%month = "",%note = "",

    }

    Egyéb@misc{kulcs,

    %author = "",%title = "",%howpublished = "",%year = "",%month = "",%note = "",

    }

    Kiadatlan dokumentum@unpublished{kulcs,

    author = "",title = "",%year = "",%month = "",note = "",

    }

    Folyóiratcikk@article{kulcs,

    author = "",title = "",journal = "",%volume = "",%number = "",%pages = "",year = "",%month = "",%note = "",

    }

    Könyv@book{kulcs,

    author = "",title = "",publisher = "",%volume = "",%number = "",%series = "",%address = "",%edition = "",year = "",%month = "",%note = "",

    }

    Kiadvány@booklet{kulcs,

    %author = "",title = "",%howpublished = "",%address = "",year = "",%month = "",%note = "",

    }

    dokumentumokra tudunk hivatkozni, és azoknak milyen tulajdonságait tudjuk megadni. Azon mezőket,melyeket nem feltétlenül szükséges megadni, % jellel jelölünk. Ezeken kívül még létezik 8 egyéb doku-mentum típus is, azonban azokat ritka használatuk miatt itt most nem mutatjuk be részletesen. Miután.bib fájlunkban az összes forrásunkat felsoroltuk, és a fájlt a .tex fájlunkkal egy mappába lementettük,visszatérhetünk az eredeti dokumentumunkhoz. Egyrészt meg szeretnénk vizsgálni, hogy miként tudunkszövegközi hivatkozásokat készíteni, másrészt bemutatjuk a hivatkozásjegyzék elkészítésének módját.Az első és legfontosabb, hogy közvetlenül a dokumentum vége, tehát az \end{document} parancs előtthelyezzük el az alábbi kódot:

    \bibliographystyle{stílus}\bibliography{fájlnév}

    A fájlnév helyére a .bib kiterjesztésű fájlunk nevét kell beírni karakterhelyesen. Ezzel be is töltöttük a .bibfájlt a dokumentumunkba, és elkészült a hivatkozásjegyzék. Ez azonban egészen addig nem tartalmazegy dokumentumot sem, amíg ténylegesen nem történik arra hivatkozás a saját művünkön belül. Nagyonfontos továbbá, hogy a stílus felirat helyére az általunk választott formátum nevét helyettesítsük. ALATEX több formátumban is el tudja készíteni hivatkozásjegyzékünket. A leggyakrabban használt stílusokaz authordate1, a plain, az apa illetve az alpha. Ezekről a fejezethez tartozó mintafájl ad áttekintést.

    Tekintsük most át azt, hogy miként hivatkozhatunk a dokumentumainkon belül a forrásainkra. Szöveg-közi hivatkozás esetén több parancs is rendelkezésünkre áll, melyeket a 2.9. táblázat foglal össze, N.Gregory Mankiw, David Romer és David N. Weil A Contribution to the Empirics of Economic Growth c.1992-es cikkén keresztül (ahol a dokumentumhoz tartozó kulcs a mankiw).

    Ezeket az utasításokat bárhol elhelyezhetjük a dokumentumon belül, és máris visszakapjuk a megadottformátumú hivatkozást. Amennyiben egy dokumentumra hivatkozunk, az automatikusan be is kerül ahivatkozásjegyzékünkbe. Azonban csak olyan dokumentumok kerülnek a hivatkozásjegyzékbe, melyekrehivatkozunk is. A hyperref csomag használatával a szövegközi hivatkozásaink piros keretbe kerülnek,

  • 2.15 Hivatkozások és irodalomjegyzék 24

    Parancs Minta\citet{mankiw} Mankiw et al. (1992)\citep{mankiw} (Mankiw et al., 1992)\citet*{mankiw} Mankiw, Romer és Weil (1992)\citep*{mankiw} (Mankiw, Romer és Weil, 1992)\citeauthor{mankiw} Mankiw et al.\citeauthor*{mankiw} Mankiw, Romer és Weil\citeyear{mankiw} 1992\citeyearpar{mankiw} (1992)\citealt{mankiw} Mankiw et al. 1992\citealp{mankiw} Mankiw et al., 1992

    Táblázat 2.9: Hivatkozási módok összefoglaló táblázata

    és kattinthatóvá válnak, kattintásra pedig a hivatkozásjegyzék megfelelő részéhez ugrik a dokumentum.Amennyiben a csomag által alkalmazott kereteket el szeretnénk tüntetni, a hidelinks beállítást kellalkalmazni, tehát a csomag betöltésénél a \usepackage[hidelinks]{hyperref} paranccsal kell aztbetölteni.

    Végül de nem utolsó sorban egy fontos dolgot nem hagyhatunk szó nélkül. Amennyiben lábje-gyzetekkel szeretnénk ellátni dokumentumunkat, arra bármely ponton nagyon egyszerűen lehetőségünknyílik. A \footnote{} parancsot kiadva azonnal elkészül a lábjegyzet, melyet a LATEX automatikusanszámoz. A lábjegyzetet a kapcsos zárójelek közé kell írni.

    Ezzel át is tekintettük a szöveges dokumentumok legfontosabb elemeit. Természetesen többezer oldaltlehetne még írni a különböző beállításokról és csomagokról, ezt egyes könyvek meg is teszik. Ugyanakkorjegyzetünk célja az alapvető elemek ismertetése. Saját példánkból kiindulva hisszük, hogy akinek munkájasorán hasznos és szükséges lesz a későbbiekben a LATEX, a további ismereteket már úgysem tankönyvekbőlsajátítja el, sokkal inkább az internet segítségével talál rá a számára szükséges megoldásokra. A következő- immáron mondhatjuk - chapter-ben bemutatjuk a LATEX prezentáció készítő funkciójának, a beamer-neka működését.

  • 3 — LATEX-A Beamer használata

    3.1 A Beamer dokumentumok szerkezeti felépítéseA beamer a LATEXprezentáció-készítő funkciója, mely segítségével kiváló minőségű szakmai prezentációsanyagokat készíthetünk. Ennek használata során lehetőségünk van a szöveges dokumentumok esetébenlátott összes funkció használatára. Az egyetlen dolog, ami eltér, a dokumentumok szerkezeti felépítése,valamint azok megjelenésének szabályozása. A következő fejezetekben ennek megfelelően kizárólagezekre térünk ki, a korábbiakban bemutatott funkciók beamerben való megvalósításának kipróbálását azolvasóra bízzuk.

    A beamer dokumentumok szerkezeti felépítése a két fő szerkezeti egységet tekintve (preambulumés szövegtörzs) megegyezik a szöveges dokumentumok felépítésével. A preambulumban azonban adokumentum típusát mindenképp beamer-ként kell definiálni, tehát minden LATEXsegítségével készítettprezentáció első sora az alábbi:

    \documentclass{beamer}

    Magát a prezentációt - a dokumentumokhoz hasonlóan - a \begin{document} és a \end{document}páros között kell elkészítenünk. A prezentációnk természetesen diákból épül fel. Minden diát külön-különkell elkészítenünk. A diák létrehozására az alábbi paranccsal van lehetőségünk:

    \begin{frame}{Dia címe}Dia tartalma\end{frame}

    A dia címe és tartalma természetesen tetszőlegesen megadható. A cím esetében használható az összeskorábbi szövegformázási beállítás, de akár matematikai formulákat is elhelyezhetünk a dia címében. Adia tartalma esetében is egészen nyugodtan használható minden korábbi eszköz, matematikai formula,táblázat, képek és ábrák, felsorolások, stb. Ezek használatához értelemszerűen a korábbiakban bemutatottmódon a szükséges csomagokat be kell tölteni. Mindezek diákon való használatát bemutatja a fejezetheztartozó mintafájl. A következőkben bemutatjuk, hogy miként szabhatjuk személyre diáink stílusát, hogyanvégezhetünk azokon módosításokat.

    3.2 A beamer diák stílusaSzámos előre definiált stílus áll rendelkezésünkre, melyek közül kedvünk szerint válogathatunk. Egyadott stílus alkalmazásához a preambulumban kell kiadnunk az alábbi parancsot:

    \usetheme{Stílus neve}

  • 3.3 Néhány beamer-specifikus utasítás 26

    Összesen 26 különböző előre definiált stílus közül válogathatunk, melyek számos színárnyalatban ren-delkezésre állnak. Amennyiben az alapértelmezett színösszeállítást módosítani szeretnénk, arra a pream-bulumban az alábbi paranccsal van lehetőségünk:

    \usecolortheme{Szín elnevezése}

    Az összes stílus és szín példákkal illusztrálva megtekinthető ezen a weboldalon. Miután kiválasztottuk aszámunkra szimpatikus stílus- és színkombinációt, már csak el kell készítenünk prezentációnkat a korábbanbemutatott eszközök segítségével. Természetesen lehetőségünk van egyedi diastílusok készítésére is,ugyanakkor ezt jelen jegyzetben annak komplexitása miatt nem mutatjuk be.

    3.3 Néhány beamer-specifikus utasításEbben a fejezetben bemutatunk néhány olyan utasítást, melyek kifejezetten a beamer használata eseténlehetnek hasznosak, és csak beamer használata esetén működnek. Egy viszonylag gyakran használt,hasznos parancs a [plain] beállítás, melyet a \begin{frame} után helyezhetünk el. Ennek hatásáraaz adott dia esetében nem kerül alkalmazásra az általunk korábban beállított stílus, hanem egy egyszerű,fehér diát kapunk. Ez kifejezetten hasznos lehet, amennyiben például a diánkon egy egyszerű képetszeretnénk megjeleníteni, és nem szeretnénk, ha a képet a dia többi eleme zavarná.

    Egy másik hasznos dolog az itemize és az enumerate alkalmazása esetén jelenik meg. Előfordulhat,hogy a felsorolások egyes elemeit nem szeretnénk rögtön megjeleníteni, csak kattintásra, 1 diával odébb.Felsorolások esetén lehetőségünk van megadni azt, hogy az adott elem a felsorolást tartalmazó diákközül hányadikon jelenjen meg. Például az alábbi utasítás esetén a LATEXgenerál egy diát, melyen csak afelsorolás első pontja szerepel, egyet amelyen már az első két pont, és egyet, melyen már mind a hárompont szerepel:

    \begin{enumerate}\item Els® elem\item Második elem\item Harmadik elem\end{enumerate}

    Természetesen mindezt tetszőlegesen szabályozhatjuk, előfordulhat az is, hogy a felsorolás első és har-madik elemét jelenítjük meg az első diától, és csak a másodikat a második diától kezdve, ezt lehetőségünkvan saját magunk szabályozni. Mindezekre számos példát tartalmaz a fejezethez tartozó mintafájl.

    http://www.hartwork.org/beamer-theme-matrix/

  • 4 — Alapszámítások, vektorok, mátrixok

    1. FeladatAdja meg az A mátrix inverzét az inv() utasítás használata nélkül!

    A =

    1 2 34 10 67 8 9

    MegoldásElső lépésként definiáljuk A mátrixot.

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 A=[1 2 3; 4 10 6; 7 8 9]; %A mátrix definiálása

    Következő lépésként fel kell használnunk, hogy bármely invertálható A ∈ Rn×n mátrix esetében igaz az,hogy A ·A−1 = In, ahol In az n×n-es egységmátrix. Ez egyben azt is jelenti, hogy jelen esetben I3 és Ahányadosaként megkapjuk A mátrix inverzét. Generáljuk le a 3×3-as egységmátrixot, majd végezzük elaz osztást.

    1 I=eye(3,3); %I mátrix, egy 3x3−as egységmátrix definiálása2 Ainv=I/A %Az inverz előállítása és kiíratása

    A teljes programkód az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 A=[1 2 3; 4 10 6; 7 8 9]; %A mátrix definiálása5 I=eye(3,3); %I mátrix, egy 3x3−as egységmátrix definiálása6 Ainv=I/A %Az inverz előállítása és kiíratása

    Ez alapján

    A−1 =

    −0,7 −0,1 0,3−0,1 0,2 −0,10,633̇ −0,1 −0,033̇

  • 28

    2. FeladatHatározza meg az alábbi változók értékét, legalább 10 tizedesjegy pontossággal!

    a = sin(π

    3

    )+ cos(0,2)

    b = e−i·π

    c =227−π

    d = ln5−∣∣∣∣2 14 8

    ∣∣∣∣MegoldásMivel a MATLAB az i és a pi kifejezéseket ismeri, így a megoldás során ezekkel nem lesz problémánk.Az a változó esetében a kódunk:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 format long %Hosszabb eredmények kiíratása5 a=sin(pi/3)+cos(0.2) %a értékének kiszámítása

    A b változó értékének kiszámítása során e értékének megadása az exp() függvénnyel történik:

    1 b=exp(1)^(−i*pi) %b értékének kiszámítása

    A c változó kiszámítása:

    1 c=22/7−pi %c értékének kiszámítása

    Végül d értéke az alábbi:

    1 d=log(5)−det([2 1;4 8]) %d értékének kiszámítása

    Végül ne felejtsük el a korábban átállított számformátumot az eredetire visszaállítani:

    1 format short %számformátum visszaállítása

    A teljes kód az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 format long %Hosszabb eredmények kiíratása5 a=sin(pi/3)+cos(0.2) %a értékének kiszámítása6 b=exp(1)^(−i*pi) %b értékének kiszámítása7 c=22/7−pi %c értékének kiszámítása8 d=log(5)−det([2 1;4 8]) %d értékének kiszámítása9 format short %számformátum visszaállítása

    Ez alapján a keresett értékek:

    a = 1,846091981625680

    b =−1c = 0,001264489267350

    d =−10,390562087565900

  • 29

    3. FeladatHatározzuk meg az első 1000 négyzetszám reciprokösszegét!

    MegoldásElőször hozzunk létre egy vektort, megy 1-től 1000-ig tartalmazza a számokat, nevezzük ezt x-nek.

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 x=[1:1:1000]; %1−től 1000−ig a számokat tartalmazó vektor

    Ezt követően helyettesítsük a vektor minden tagját annak reciprokával:

    1 x=1./x; %Számok reciprokainak kiszámítása

    Szorozzuk meg a kapott vektort saját transzponáltjával. Vegyük észre, hogy ezzel pont a keresett értéketkapjuk, hiszen minden szám reciprokának négyzetét (amely ugyanaz, mint négyzetének reciproka)összeadjuk.

    1 reciprok=x*x' %Eredmény kiszámítása

    A teljes kód az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 x=[1:1:1000]; %1−től 1000−ig a számokat tartalmazó vektor5 x=1./x; %Számok reciprokainak kiszámítása6 reciprok=x*x' %Eredmény kiszámítása

    Ez alapján megállapíthatjuk, hogy:1000

    ∑i=1

    1i2

    = 1,6439

    4. FeladatHatározzuk meg az alábbi összeget!

    1000

    ∑n=1

    n · (n+1)6

    MegoldásElsőként definiáljunk két vektort, melyek egyike (x) 1-től 1000-ig, míg a másik (y) 2-től 1001-ig tartal-mazzák a számokat.

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 x=[1:1:1000]; %x vektor definiálása5 y=[2:1:1001]; %y vektor definiálása

    Vegyük észre, hogy ekkor a keresett értéket megkaphatjuk az alábbi művelet eredményeként:

    1000

    ∑n=1

    n · (n+1)6

    =x · yT

    6

    Számítsuk ki a végeredményt, és írassuk is ki. A teljes program az alábbi:

  • 30

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 x=[1:1:1000]; %x vektor definiálása5 y=[2:1:1001]; %y vektor definiálása6 eredmeny=x*y'/6 %Végeredmény kiszámítása és kiíratása

    A keresett összeg ez alapján:1000

    ∑n=1

    n · (n+1)6

    = 55722333, 3̇

    5. FeladatSzámítsuk ki A ·B, A�B, AT ·B, 2 ·A+3 ·B értékét, valamint F mátrixot, amennyiben Fi j =Ai j+Ai j ·

    √Bi j.

    Vizsgáljuk meg, szinguláris-e F mátrix, határozzuk meg sajátértékeit és sajátvektorait!

    A =(−1 0,51 1

    )B =

    (4 116 0

    )MegoldásElsőként definiáljuk A és B mátrixokat:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 A=[−1 0.5; 1 1]; %A mátrix definiálása5 B=[4 1; 16 0]; %B mátrix definiálása

    Számítsuk ki a kért mátrixokat:

    1 AB=A*B %A*B kiszámítása2 AoB=A.*B %AoB kiszámítása3 AtB=A'*B %A transzponált B kiszámítása4 KetAHaromB=2*A+3*B %A szorzatösszeg kiszámítása

    Határozzuk meg F mátrixot:

    1 F=A+A.*(B.^(0.5)); %F mátrix kiszámítása

    Ellenőrizzük a szingularitást:

    1 if det(F)==0 %Ha a mátrix determinánsa 0, szinguláris2 disp('F mátrix szinguláris!') %Kiíratjuk3 else4 disp('F mátrix nem szinguláris!') %Ha nem 0, nem szinguláris5 end

    Végül számítsuk ki a sajátvektorokat és sajátértékeket:

    1 [S1 S2]=eig(F) %Sajátvektorok (S1) és sajátértékek (S2) számítása

  • 31

    A teljes program az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 A=[−1 0.5; 1 1]; %A mátrix definiálása5 B=[4 1; 16 0]; %B mátrix definiálása6 AB=A*B %A*B kiszámítása7 AoB=A.*B %AoB kiszámítása8 AtB=A'*B %A transzponált B kiszámítása9 KetAHaromB=2*A+3*B %A szorzatösszeg kiszámítása

    10 F=A+A.*(B.^(0.5)); %F mátrix kiszámítása11 if det(F)==0 %Ha a mátrix determinánsa 0, szinguláris12 disp('F mátrix szinguláris!') %Kiíratjuk13 else14 disp('F mátrix nem szinguláris!') %Ha nem 0, nem szinguláris15 end16 [S1 S2]=eig(F) %Sajátvektorok (S1) és sajátértékek (S2) számítása

    Az eredményeink az alábbiak:

    A ·B =(

    4 −120 1

    )A�B =

    (−4 0,516 0

    )AT ·B =

    (12 −118 0,5

    )2 ·A+3 ·B =

    (10 450 2

    )F =

    (−3 15 1

    )F mátrix nem szinguláris, sajátvektorai:

    S1 =(−0,70710,7071

    )S2 =

    (−0,1961−0,9806

    )A keresett sajétértékek pedig −4 és 2.

    6. Feladat5 Budapesti lakásról ismertek az alábbi adatok: Becsüljük meg az árra vonatkozóan a lineáris regresszió

    Ár Alapterület Szobák száma11 Mft 64m2 27 Mft 40m2 112 Mft 70m2 2,510 Mft 63m2 29 Mft 55m2 1,5

    paramétereit!

    MegoldásA lineáris regresszió paraméterei az alábbi módon állíthatók elő:

    β =(XT ·X

    )−1 ·XT · yElső lépésként hozzuk létre X mátrixot és y vektort:

  • 32

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 X=[1 64 2; 1 40 1; 1 70 2.5; 1 63 2; 1 55 1.5]; %X mátrix definiálása5 y=[11;7;12;10;9]; %y vektor definiálása

    Ezt követően határozzuk meg a lineáris regresszió paramétereit:

    1 beta=(X'*X)^(−1)*X'*y %Béta vektor becslése

    A teljes program az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 X=[1 64 2; 1 40 1; 1 70 2.5; 1 63 2; 1 55 1.5]; %X mátrix definiálása5 y=[11;7;12;10;9]; %y vektor definiálása6 beta=(X'*X)^(−1)*X'*y %Béta vektor becslése

    A kapott paraméterek alapján a becslőfüggvényünk:

    Ár = 2,0054+0,0817 ·Alapterület+1,6806 ·Szobaszám

    7. FeladatTegyük fel, hogy a dollár spot árfolyama 220 Ft, az euró spot árfolyama 310 Ft, míg a jüan árfolyama 37forint. Számítsuk ki az összes keresztárfolyamot!

    MegoldásElső lépésként definiáljunk egy vektort, mely tartalmazza az árfolyamokat.

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 arfolyam=[220 310 37]; %Árfolyamokat tartalmazó vektor

    Ezt követően számítsuk ki a keresztárfolyamokat tartalmazó mátrixot. Vegyük észre, hogy amennyiben azar f olyam vektor transzponáltját megszorozzuk egy annak elemenkénti reciprokait tartalmazó vektorral,egy olyan mátrixhoz jutunk, mely a keresett keresztárfolyamokat tartalmazza.

    1 keresztarfolyam=arfolyam'*(1./arfolyam); %Keresztárfolyamok mátrixa

    A teljes program az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 arfolyam=[220 310 37]; %Árfolyamokat tartalmazó vektor5 keresztarfolyam=arfolyam'*(1./arfolyam); %Keresztárfolyamok mátrixa

    Ez alapján a keresztárfolyamok az alábbiak:

    USD EUR CNYUSD 1 0,7097 5,9459EUR 1,4091 1 8,3789CNY 0,1682 0,1194 1

  • 33

    8. FeladatEgy üzletben ajándékkosarak készítésével foglalkoznak. Minden ajándékkosárba kávé, csokoládé és borkerül, de eltérő mennyiségben. Ismert, hogy egy olyan ajándékkosár, mely 2 csomag kávét, 1 csokoládétés 1 üveg bort tartalmaz, összesen 2696 Forintba kerül. Az a kosár, amelyben 1 kávé, 3 csokoládé és 2 borvan 3594 Forintba kerül. Egy olyan kosár, amely minden termékből kettőt tartalmaz, 3994 Forintba kerül.Mennyi a csokoládé, a kávé és a bor ára külön-külön?

    MegoldásAmennyiben az árakat rendre p1, p2 és p3 jelöli, a probléma felírható az alábbi formában:2 1 11 3 2

    2 2 2

    ·p1p2

    p3

    =26963594

    3994

    Első lépésként definiáljuk az együtthatókat tartalmazó mátrixot, valamint az értékeket tartalmazó vektort.

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 egyutthato=[2 1 1; 1 3 2; 2 2 2]; %Együttható mátrix5 osszeg=[2696;3594;3994]; %Érték mátrix

    Ezt követően a mátrix inverze és a vektor szorzataként könnyedén kiszámíthatók a keresett árak. A teljesprogram:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 egyutthato=[2 1 1; 1 3 2; 2 2 2]; %Együttható mátrix5 osszeg=[2696;3594;3994]; %Érték mátrix6 p=inv(egyutthato)*osszeg %Árak kiszámítása

    Ez alapján egy kávé ára 699 Forint, egy csokoládé 299 Forintba, míg egy üveg bor 999 Forintba kerül.

    9. FeladatEgy gazdaságban négy terméket állítanak elő. Ezek árait és termelési mennyiségeit az alábbi táblázattartalmazza:

    Termék Ár MennyiségA 500 1347B 264 943C 223 9221D 11 32577753

    Az alábbi táblázat bemutatja, hogy az oszlopban szereplő termék egy egységének előállításához hányegységet kell felhasználni a sorban szereplő termékből:

    A B C DA - 0,1 - -B - - - -C - 0,5 - -D 2 1 1 -

    Számítsuk ki az adott gazdaságban a nominális GDP értékét!

  • 34

    MegoldásElső lépésként definiáljunk egy p vektort, mely az árakat tartalmazza, valamint egy q vektort, mely atermelési mennyiségeket tartalmazza. Ezen felül az input-output koefficienseket tartalmazó mátrixot isdefiniáljuk, ez legyen COEFF mátrix.

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 p=[500 264 223 11]; %Az árak vektora5 q=[1347 943 9221 32577753]; %A mennyiségek vektora6 COEFF=[0 0.1 0 0;0 0 0 0;0 0.5 0 0;2 1 1 0]; %Koefficiens mátrix

    Ezt követően számítsuk ki a bruttó termelést az árak és a mennyiségek szorzatösszegeként:

    1 brutto=p*q'; %Bruttó termelés kiszámítása

    A következő lépés a folyó termelő felhasználás értékének meghatározása. Vegyük észre, hogy COEFFmátrix és a mennyiségek vektorának transzponáltjának szorzataként megkapjuk, hogy az egyes termékek-ből hány darabot használtunk fel összesen gyártás során. Ezt a vektort balról az árakkal megszorozvaadódik a folyó termelő felhasználás értéke.

    1 FTF=p*(COEFF*q'); %Folyó termelő felhasználás

    A GDP a bruttó termelés és a folyó termelő felhasználás különbségeként adódik:

    1 GDP=brutto−FTF %GDP kiszámítása

    A teljes program az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 p=[500 264 223 11]; %Az árak vektora5 q=[1347 943 9221 32577753]; %A mennyiségek vektora6 COEFF=[0 0.1 0 0;0 0 0 0;0 0.5 0 0;2 1 1 0]; %Koefficiens mátrix7 brutto=p*q'; %Bruttó termelés kiszámítása8 FTF=p*(COEFF*q'); %Folyó termelő felhasználás9 GDP=brutto−FTF %GDP kiszámítása

    A GDP értéke ez alapján 361040285,5.

    10.FeladatGeneráljunk egy olyan 50×100-as mátrixot, mely 0 és 70 közötti véletlen egész számokat tartalmaz. Eztkövetően generáljunk egy ugyanolyan méretű mátrixot, mely véletlenszerűen tartalmaz 1-eseket és 0-kat.Végül számítsuk ki az első mátrix azon elemeinek átlagát, melyek esetében a másodikként generált mátrixmegegyező helyén 1-es szerepel.

    MegoldásElsőként generáljuk le a véletlen egészeket tartalmazó X mátrixot. Ehhez egy [0,1[ intervallumon véletlenszámokat tartalmazó mátrixot 71-gyel megszorzunk, majd vesszük minden elem alsó egészrészét, ígytényleg 0 és 70 közötti egészeket fogunk kapni.

  • 35

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 X=floor(rand(50,100)*71); %50*100 véletlen szám a [0,71[ intervallumon, majd ...

    annak alsó egészrésze

    Ezt követően legeneráljuk Y mátrixot az előző logika alapján, azonban ennek csak 1-eseket és 0-katszabad tartalmaznia.

    1 Y=floor(rand(50,100)*2); %50*100 véletlen szám a [0,2[ intervallumon, majd ...annak alsó egészrésze

    Végül kiszámoljuk a megfelelő elemek átlagát. Vegyük észre, hogy elemenkénti szorzás segítségével anem szükséges elemek értékét nullázni tudjuk, így ha ezen művelet után adjuk össze a mátrix elemeit,tényleg csak az átlagolandó elemeket adjuk össze. Ezt Y mátrix összegével leosztva megkapjuk a szükségeselemek átlagát.

    1 atlag=sum(X.*Y)/sum(Y) %Elemenkénti szorzat összege, majd elemszámmal való osztás

    A teljes program az alábbi:

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 X=floor(rand(50,100)*71); %50*100 véletlen szám a [0,71[ intervallumon, majd ...

    annak alsó egészrésze5 Y=floor(rand(50,100)*2); %50*100 véletlen szám a [0,2[ intervallumon, majd ...

    annak alsó egészrésze6 atlag=sum(X.*Y)/sum(Y) %Elemenkénti szorzat összege, majd elemszámmal való osztás

    A megoldás egy 35-höz viszonylag közeli szám kell hogy legyen.

    11. FeladatÖt magyar város (Budapest, Győr, Veszprém, Pannonhalma, Szombathely) közötti vasúti közlekedésreigazak az alábbiak:

    • Budapestről közvetlen járattal el lehet jutni Győrbe, Veszprémbe és Szombathelyre• Győrből és Veszprémből mindenhová van közvetlen járat• Pannonhalmáról csak Győrbe vagy Veszprémbe lehet eljutni• Szombathelyről Pannonhalma kivételével mindenhová el lehet jutni.

    Hányféleképpen juthatunk el pontosan 1 átszállással Veszprémből Budapestre?

    MegoldásAz első lépés, hogy készítünk egy mátrixot, mely a lehetséges útvonalakat tartalmazza. A mátrixnakennek megfelelően az alábbi módon kell kinéznie:

    B Gy V P SzB 0 1 1 0 1

    Gy 1 0 1 1 1V 1 1 0 1 1P 0 1 1 0 0Sz 1 1 1 0 0

    A mátrixban 1-es jelöli azokat az útvonalakat, ahol jár vonat, és 0 azokat, ahol nem jár vonat. MindezMATLAB-ban:

  • 36

    1 close all; %Nyitott ablakok bezárása2 clear all; %Korábban definiált változók törlése3 clc; %Command Window tartalmának törlése4 vonat=[0 1 1 0 1;1 0 1 1 1;1 1 0 1 1;0 1 1 0 0;1 1 1 0 0]; %Járatok megadása

    Amennyiben ezt a mátrixot négyzetre emeljük, pont azt kapjuk meg, hogy az egyes célállomások közötthányféleképpen tudunk pontosan egy átszállással eljutni. Gondoljuk csak végig! Minden egyes elemkiszámításánál az adott sor és oszlop elemeinek szorzatösszegét vesszük. Ezen szorzatok csak akkoradnak 1-es értéket, ha mindkét szám a szorzatban egy. Mit is jelent ez? Tekintsük például a Pannonhalma-Budapes