LaTeX szedés mint programozási nyelv

A LaTeX egy olyan rendszer a dokumentumok szedésére, amely a What-You-See-Is-Is-What-You-Get fogalmát a hagyományos programozási nyelvek szabványos ötleteivel helyettesíti. Mark Harman bemutatja ennek az öröklésnek az erejét.

Aki használt már What-You-See-Is-What-You-Get (WYSIWYG) szerkesztőt, szövegszerkesztőt vagy DTP-csomagot, az valószínűleg két frusztrációt élt át:-

A WYSIWYG mindig hazugságnak tűnik Az, amit látsz, meglehetősen hasonlít ahhoz, amit kapsz, vagy amit látsz, az szinte mindig az, amit kapsz, vagy amit látsz, az lenne az, amit kapnál, ha a nyomtatódnak megfelelő betűtípusai lennének, de amit látsz, az ritkán pontosan az, amit kapsz.

WYSIWYG korlátozó Tegyük fel, hogy nem láthatod azt, amit szeretnél? A What you see is what you get az azt jelenti, hogy amit nem tudsz meglátni, azt nem is tudod megkapni. Hányszor fordult már elő, hogy azt szerette volna, hogy valami kicsit másképp (vagy esetleg nagyon másképp) nézzen ki, de a szerkesztője nem engedi?

A LaTeX (ejtsd: Lateck) egy olyan szedési rendszer, amely nem követi a WYSIWYG megközelítést. Ehelyett a programozási nyelvek ihlették. A programozási nyelvek minden előnyét és néhány hátrányát is örökölte. Ahelyett, hogy a képernyőn állítanánk össze egy dokumentumot (a WYSIWYG megközelítés), a LaTeX dokumentum egy program, amely megmondja a LaTeX rendszernek, hogyan hozza létre a dokumentumot. A programot egy LaTeX-fordító segítségével fordítják le, hogy egy nyomtatható vagy megtekinthető dokumentumot állítsanak elő.

A WYSIWYG-megközelítést ismerő számára ez kissé furcsán hangozhat, de bárki, aki élvezi (vagy értékeli) egy magas szintű programozási nyelv erejét és rugalmasságát, hamar rájön, hogy a LaTeX egyszerűen jobb módja a dokumentumok tervezésének.

Ebben a cikkben egy kicsit elmagyarázom a LaTeX nyelvet, eleget ahhoz, hogy letöltsön egy ingyenes LaTeX rendszert, és megírjon néhány normális dokumentumot. Nem lesz idő arra, hogy a LaTeX összes funkciójával foglalkozzunk (ez egy egész könyvet venne igénybe), de remélem, hogy egy erős érzéssel hagyom itt önöket, hogy a LaTeX használatával egy dokumentum írása hasonló tevékenység lehet, mint egy program írása.

Egy egyszerű LaTeX forrásfájl

Az 1. ábra egy egyszerű LaTeX forrásfájlt tartalmaz. Az első sor egy előre definiált LaTeX-parancs. Minden parancs egy backslash karakterrel kezdődik. Az első sorban lévő parancs a szedendő dokumentum globális tulajdonságait határozza meg. A dokumentum stílusa article a rövid cikkekhez használt stílus. Más stílusok közé tartozik a könyv, a jelentés, a szakdolgozat és így tovább. Minden dokumentumstílus megváltoztatja a dokumentum elrendezését leíró globális paramétereket. A könyv környezetében például futófejlécek készülnek, amelyek a fejezet címét és a szerzőt adják meg a váltakozó oldalakon.

Mint minden jó programozási nyelv, mindez természetesen teljes mértékben konfigurálható. Azonban, mint a legtöbb programozási nyelv esetében, minél nagyobb rugalmasságot szeretnénk, annál többet kell tudnunk a mögöttes programozási nyelvről. Szerencsére az összes LaTeX-környezet alapértelmezett beállításai nagyon kellemes eredményeket adnak, így hosszú utat lehet megtenni anélkül, hogy túl sokat kellene tudnunk a mögöttes nyelvből. Amit kapunk, az valószínűleg az lesz, amit szeretnénk, és ha mégsem, akkor legalább meg tudjuk változtatni.

Maga a dokumentum szövege a \begin{document} … parancsokban található. \end{document}, \begin{} és \end{} olyan parancsok, amelyek megnyitnak és bezárnak egy környezetet. Minden dokumentumot (és dokumentumrészletet) egy környezeten belül gépelünk. A környezeteket egymásba is ágyazhatjuk, amint azt később látni fogjuk.

A szóköz karakterek a LaTeX számára nem fontosak; egy szóköz ugyanolyan jó, mint száz. Új sorokat is bárhová be lehet illeszteni, de két vagy több új sort használunk annak a pontnak a jelölésére, ahol egy bekezdés befejeződik és egy másik kezdődik. A végleges dokumentum kinyomtatásakor a LaTeX balra és jobbra igazítja a szöveget (kötőjelek beillesztésével, ahol a puszta igazítás csúnya kimenethez vezetne).

A nagy dokumentum általában több szakaszból áll, amelyek tartalmazhatnak alszakaszokat. Egy új szakaszt a \section paranccsal, egy új alszakaszt pedig a \subsection paranccsal vezethetünk be a LaTeX-be. A 2. ábrán látható LaTeX forráskód egy két szakaszból álló dokumentumot ír le, amelynek címei a következők lesznek: bevezetés és indoklás. Vegyük észre, hogy a forráskódban nem kell a szakaszoknak szakaszszámot adnunk. A LaTeX ezt megteszi helyettünk, amikor lefordítja a dokumentumot. Így a bevezetés lesz az 1. szakasz, az indoklás pedig a 2. szakasz. Ha felcserélnénk a két szakasz előfordulási sorrendjét (a forráskód kivágásával és beillesztésével), akkor az indoklás lesz az 1. szakasz, míg a bevezetés automatikusan a 2. szakasz lesz.

Ezután egy fontos kérdés merül fel: Hogyan tennék kereszthivatkozást az egyik szakaszból a másikba? Tegyük fel például, hogy a bevezetés szakaszra szeretnék hivatkozni az indoklás szakaszban. Az, ahogyan ezt megvalósítjuk, jól szemlélteti az első előnyt, amit a LaTeX módszeréből nyerünk.

Szimbolikus hivatkozások

Mivel a LaTeX forrásfájl egy program, szimbolikus nevekkel hivatkozhatunk a dokumentum részeire. Ez megkönnyíti a kereszthivatkozások készítését, mivel a kereszthivatkozás egy logikai egység, amely a dokumentum valamelyik megnevezett részére utal. Ha ezt a megnevezett dokumentumrészt át kell helyezni, akkor csak újra kell fordítanunk.

A szimbolikus hivatkozás bevezetéséhez a \label{} parancsot használjuk, a hivatkozáshoz pedig a \ref{} parancsot. A 3. ábra ezt szemlélteti. A \label{intro} bevezet egy szimbolikus nevet, a label-t, amelynek értéke attól a kontextustól függ, amelyben a \label parancs megjelenik. Ebben az esetben, mivel a \label parancsot a dokumentum első szakaszában használjuk, az intro-hoz rendelt érték 1 lesz. A \ref{} parancs egyszerűen a címke értékét adja meg. Ha most áthelyezem a bevezetést egy új helyre, például az indoklás szakasz utánra, az intro értéke 2-re változik, és az indoklásban lévő kereszthivatkozás így a szakasz bevezetésének új helyére fog mutatni.

Ez az írásmód arra kényszerít, hogy a dokumentumról logikai szinten gondolkodjunk, ne pedig fizikai szinten. Ostobaság lenne például úgy írni, ahogy korábban a \ref{intro} szakaszban láttuk, mert az intro címkét a hivatkozás utáni pontra helyezhetjük át. Ahelyett, hogy úgy gondolnánk a dokumentumunkra, mint egy adott sorrendben előforduló szöveg monolitjára, magasabb absztrakciós szinten gondolunk rá, mint szakaszok gyűjteményére, amelyeket szabadon mozgathatunk. Akár egy dokumentum szakaszait is újra felhasználhatjuk egy másik dokumentumban, és feltéve, hogy a szimbolikus neveink egyediek, azt fogjuk tapasztalni, hogy minden kereszthivatkozás helyesen működik.

Még néhány környezet

A LaTeX rengeteg hasznos, előre definiált környezettel rendelkezik. Tegyük fel, hogy pontok sorozatát akarjuk előállítani gömböcskékkel. Ezt megtehetjük az itemize környezettel, a 4. ábrán látható forráskód egy olyan dokumentumot fog előállítani, amely az anyag három fő állapotát soronként egyet-egyet felsorol, és mindegyik előtt egy-egy pontjelölés áll. A LaTeX dokumentumkészítési módja sok tekintetben hasonlít a HTML-hez. Például az itemize környezet inkább hasonlít a HTML rendezetlen lista környezetéhez.

Néha az elemeket egy rendezett, számozott listába akarjuk helyezni. Ezt az enumerate környezettel érhetjük el. Az 5. ábra a geológiai idő négy korszakát és az azokon belüli időszakokat leíró enumerált elemek egymásba ágyazott sorozatát mutatja. A LaTeX a beágyazás egyes szintjeihez különböző számozási rendszereket használ (arab számok az első szinthez, alfabetikus karakterek a második szinthez, római számok a harmadik szinthez). Ez, mint minden más, megváltoztatható, ha úgy kívánjuk.

A szöveg egy részének kiemeléséhez az em (emphasise) környezetbe zárjuk, így egyszerűen azt írjuk, hogy \begin{em} help! \end{em} she cried., hogy kiemeljük a help szót (és az azt követő felkiáltójelet).

Procedúrák

Egy hagyományos programozási nyelvben az eljárások definiálásának lehetősége jelentős rugalmasságot biztosít a programozónak. A LaTeX-ben is definiálhatunk eljárásokat a szöveg elrendezéséhez. Az eljárások legegyszerűbb formája a paraméter nélküli eljárás. Ez lehetővé teszi, hogy megnevezzük a forráskód valamelyik részét, majd meghívjuk azt. Tegyük fel, hogy egy olyan dokumentumot írok, amelyben egy gyümölcsre szeretnék hivatkozni, de még nem döntöttem el, hogy az alma, narancs vagy körte legyen. Bevezethetnék egy gyümölcs nevű eljárást, és a testébe egy tetszőleges gyümölcsnevet írhatnék. Ha végül eldöntöttem, hogy melyik gyümölcsre akarok hivatkozni, akkor csak az eljárás testét kell megváltoztatnom; az összes pont, ahol az eljárást meghívják, automatikusan figyelembe veszi a testének változását.

A LaTeX-ben az eljárást parancsnak hívják, és egy újat a \newcommand paranccsal hozhatunk létre. A parancsokat gyakran makróknak is nevezik, mert a LaTeX kiterjeszti a hívásokat, amikor a dokumentum testében találkozik velük. A 6. ábra egy egyszerű paraméter nélküli makró használatát szemlélteti. Az ábrán látható LaTeX-forrás lefordítva a következő szöveget eredményezi: The first apple to appear will be the first apple I will eat.

Az igazsághoz hozzátartozik, hogy ez egy WYSIWYG-szövegszerkesztővel talán egyszerűbben is megvalósítható lenne, egyszerűen egy keresés és csere végrehajtásával. (Persze ez nem működött volna, ha a mondat az lett volna, hogy az első \gyümölcs, ami megjelenik, a szemem alma!) Ez azonban csak egy egyszerű példa arra, hogy mit tehetünk a LaTeX makrókkal. Akkor érvényesülnek igazán, ha paraméterekkel látjuk el őket.

Paraméterek

Tegyük fel, hogy egy dokumentumot írok a tömbök kezeléséről. Lehet, hogy le akarok írni egy algoritmust egy tömb legnagyobb elemének megtalálására. Hogy a dokumentumot általánosabbá tegyem, és hogy megspóroljam a nagy részek újragépelését, két változatot készíthetek, amelyek mindegyike egy adott programozási nyelvre, például Basicre és C-re jellemző. A parancsok használatával elkerülhetem a tömbök sajátos szintaxisának használatát, vagy legalábbis egyetlen parancsba foglalhatom a szintaktikai különbségeket, így sokkal könnyebb lesz a dokumentumomat különböző programozási nyelvekhez igazítani.

A 7. ábra ezt szemlélteti. A \lookup parancsdefiníciójában a közli a LaTeX fordítóval, hogy a parancs két paramétert vesz fel, az elsőt #1-nek, a másodikat #2-nek nevezi. A parancs hívásában a paramétereket egymás után, szögletes zárójelben adjuk meg. Így a \lookup{S}{2} hívás az S(2) szöveget fogja eredményezni. Ez a \lookup parancs Basic változata. Ha kicseréljük a 8. ábrán látható változatra, akkor ugyanazt a dokumentumot kapjuk, de szögletes zárójelben lévő tömbhivatkozásokkal. Ez a dokumentum C változata. Vegyük észre, hogy a két LaTeX-forrásdokumentum közötti különbség pontosan két karakter, nevezetesen az a két karakter, amely a Basic és a C nyelvű tömbhivatkozások közötti különbséget jelenti.

A programozási nyelvi eljárásokhoz hasonlóan lehetséges, hogy egy eljárást egy másik eljárás testéből hívjunk meg, és egy eljáráshívás eredményét egy másik eljárás tényleges paramétereként használjuk. Így például írhatunk \lookup{A}{\lookup{B}{1}}}, ami vagy az A(B(1)) vagy az A] szöveget eredményezi, attól függően, hogy a \lookup parancs Basic vagy C változatát használjuk.

Változók

A LaTeX saját változókkal rendelkezik, amelyeken egyszerű aritmetikát végezhetünk (az aritmetika fejlettebb formái is lehetségesek, de a gépeléshez általában csak összeadásra van szükség). Két egyszerű példát fogok megvizsgálni arra, hogyan használhatjuk a változókat, mindkettő ismerős lehet a programozók számára; a számláló változó és a flag változó.

Tegyük fel, hogy egy dokumentumba számozott pontok sorozatát akarjuk beilleszteni. Használhatunk egy számláló változót az egyes pontok számozására, és írhatunk néhány egyszerű parancsot a számozás vezérlésére. A 9. ábra ezt szemlélteti. A számlálót a \newcounter paranccsal deklaráljuk. A számlálót a \setcounter paranccsal állítjuk be egy adott értékre. A \point parancsot az aktuális pontszám kiírására és a számláló léptetésére (a számláló értékének növelésére) használjuk. A \a<név> parancs valamilyen <név> számlálóhoz a változó értékének kiírását eredményezi. Ez a parancs bármilyen változóval használható, nem csak azokkal, amelyeket a felhasználó vezetett be, így például a \thesection kiírja a section változó aktuális értékét. A 9. ábrán a \point paranccsal három pontot nyomtatunk ki. Ennek a megközelítésnek az a szép tulajdonsága, hogy változtathatjuk a pontok sorrendjét, és a számozás ennek megfelelően változik.

Most nézzük meg, hogyan használhatjuk a változókat zászlóként a dokumentumban megjelenő szöveg kiválasztására. Mint látni fogjuk, a flagek és a makrók kombinációja lehetővé teszi, hogy nagyon általános dokumentumokat írjunk, amelyeket egyszerűen a flag megfelelő értékének kiválasztásával instanciálhatunk. Vegyük újra azt a problémát, hogy egy tömbökről szóló dokumentumot írunk, ahol a \lookup parancsnak két formáját szeretnénk, egyet Basic és egyet C nyelven. Jobb lenne, ha a LaTeX forrásunkban egy flag segítségével jelezhetnénk, hogy a nyelv C vagy Basic legyen. Ekkor csak annyit kellene tennünk, hogy a dokumentum lefordítása előtt megadjuk a megfelelő értéket a flagnek. A 10. ábra ezt szemlélteti.

Az első teendő az ifthen opció beillesztése a documentstyle deklarációba. Ez lehetővé teszi számunkra, hogy később a \ifthenelse parancsot használhassuk. Ezután deklarálunk egy számlálóváltozót, a language-t, amelyet 1-re állítunk, ha a nyelv Basic lesz, és 0-ra, ha C. A % szimbólumot a LaTeX a megjegyzésekre használja; a % szimbólum után (és a sor vége előtt) megjelenő szöveget a LaTeX fordítója figyelmen kívül hagyja. Ezután a számlálót 1-re állítjuk a \setcounter{language}{1} paranccsal, így a szöveg, amelyet elő fogunk állítani, ebben az esetben Basic-re lesz specializálva. Ezt a specializálást a \lookup parancs módosított változatával érjük el. A \lookup új verziója a beépített \ifthenesle parancsot használja a nyelvváltozó értékének tesztelésére. Az \ifthenelse parancs formátuma a következő: \ifthenelse{<test>}{<then_branch>}{<else_branch>}. Úgy viselkedik, mint egy hagyományos programozási nyelv if utasítása. Ha a <test> igazra értékelődik, akkor a <then_branch> szövegében szereplő szöveg jön létre, ha hamis, akkor a <else_branch> szövegében szereplő szöveg jön létre.

Ezt a flaget használva rengeteg parancsot írhatunk, amelyek mindegyike egy adott típusú utasítás szövegét állítja elő, a nyelv a flag számlálóváltozójának értékétől függően. Ily módon írhatunk egy általános dokumentumot a programozásról, és egyszerűen beállíthatjuk a megfelelő zászlót, hogy a kívánt dokumentum speciális változatát állítsuk elő.

A 10. ábra mutatja, hogyan tehetnénk ezt meg. Olyan parancsokat definiálunk, amelyek Basic vagy C szintaxist állítanak elő a tömbök keresésére (a fent leírt \lookup makró használatával), a tömbök frissítésére és, ami még bonyolultabb, egy olyan parancsot, amely a for ciklus megfelelő szintaxisát állítja elő. Ez utóbbi némi további magyarázatot igényel.

A for ciklus közötti különbség C-ben és Basic-ben nagyrészt szintaktikai jellegű, és a LaTeX rugalmasságát kihasználva megszabadulhatunk ezektől a szintaktikai részletektől. A \forloop parancs a flag counter nyelv segítségével döntötte el, hogy a ciklus négy elemét Basic vagy C stílusban rakja-e ki. Ez lehetővé teszi számunkra, hogy írjunk némi szöveget a tömb inicializálásáról és a ciklusokról anélkül, hogy el kellene döntenünk, hogy a céldokumentum melyik nyelvre hivatkozik.

Megjegyezzük, hogy a for-hurok szintaxisának C változatában a ciklus testének utasításait körülvevő szögletes zárójeleket \{ … \}, nem pedig { … }. Ennek az az oka, hogy a görbe zárójel szimbólumoknak már van jelentése a LaTeX számára, ezért ahhoz, hogy a görbe zárójeleket kiírja, egy backslash-t kell eléjük tenni.

A 10. ábrán a számláló nyelvét 1-re állítottuk, így a keletkező kimenet for Basic lesz. A 10. ábrán látható forráskódból a LaTeX a 11. ábrán látható kimenetet fogja előállítani. Ha olyan dokumentumot szeretnénk előállítani, amely ugyanezt mondja ki a C tömbökről, akkor egyszerűen csak a \setcounter{language}{1} sort \setcounter{language}{0}-ra kell módosítanunk. Ilyen egyszerű.

Matematika

A LaTeX-et gyakran (és jogosan) dicsérik azért, ahogyan lehetővé teszi az összetett matematika tipizálását. Számos modern matematikai, számítástechnikai és egyéb természettudományos és mérnöki szöveg gépelése a LaTeX segítségével történik.

A matematikai szöveget vagy soron belül lehet elhelyezni, ilyenkor abban a mondatban jelenik meg, amelyben beírjuk, vagy megjelenítési módban, ilyenkor úgymond egy saját sorban megjelenítve, középre helyezve jelenik meg. A parancsok használatához az összes szokásos matematikai szimbólum és szövegforma rendelkezésre áll. Mivel a LaTeX már olyan régóta létezik, és a világ számos matematikusa használta, fejlesztette és továbbfejlesztette, rendkívül valószínűtlen, hogy létezik olyan matematikai kimeneti forma, amelyről valaki ne gondoskodott volna. Ha gyorsan végigpásztázza a könyvespolcát, valószínűleg számos számítástechnikai és matematikai tankönyvben talál a LaTeX-re vonatkozó elismeréseket, mivel gyakran használják a technikai könyvek elkészítéséhez, lehetővé téve a szerző(k)nek, hogy a kiadók számára fényképezhető példányt biztosítsanak.

Egy virágzó LaTeX felhasználói közösség is létezik, amely biztosítja, hogy mindezeket az értékes információkat összegyűjtsék, karbantartják és frissítsék. Minden LaTeX-fejlesztés teljes mértékben visszafelé kompatibilis, így nem kell attól tartania, hogy a dokumentumai valahogyan elavulnak.

Újrafelhasználás

Becsléseim szerint két nap és egy hét között lehet produktívvá válni a LaTeX használatával. Sok olvasó ezt elfogadhatatlannak tarthatja a WYSIWYG-szerkesztők bevezetési idejéhez képest. Természetesen, ha csak dokumentumokat, például leveleket és feljegyzéseket kell készítenie, akkor a LaTeX-et valószínűleg nem érdemes megfontolni. Ha azonban nagy mennyiségű szöveg előállításával foglalkozik, és hajlandó befektetni egy olyan rendszerbe, amely végső soron hónapok munkáját takaríthatja meg, akkor a LaTeX lehet a megoldás.

A LaTeX-felhasználók által tapasztalt egyik legfoghatatlanabb, mégis legvonzóbb előny abból ered, hogy egy jó programozási nyelvhez hasonlóan a LaTeX támogatja az újrafelhasználást. Nagyon gyorsan azon kapja magát, hogy saját személyes makrók készletét építi fel, amelyek lehetővé teszik, hogy dokumentumait saját ízlésére szabja. Egy dokumentum részeinek egy másikban való újrafelhasználása könnyedén és zökkenőmentesen valósul meg. A zökkenőmentesség a LaTeX megközelítés két aspektusából ered. A dokumentum részeinek szimbolikus elnevezése lehetővé teszi a kereszthivatkozások automatikus frissítését a dokumentum szerkesztésekor. A környezet fogalma azt jelenti, hogy ugyanaz a forrásszöveg különböző kontextusokban másképp nézhet ki. Ez természetesen közvetlenül ellentmond a WYSIWYG elvnek, de ez a LaTeX alapvető erőssége. Számos számítástechnikai folyóirat , konferencia és kiadó saját LaTeX stílusfájlokat biztosít, amelyek a LaTeX forrásfájlba beépítve automatikusan a publikáláshoz szükséges formába fektetik a dokumentumot.

Hol tovább

Ha szeretné kipróbálni a LaTeX-et, egy MS-Windows változatot (ingyenesen) a http://www.eece.ksu.edu/~khc/tex.html címen szerezhet be. A LaTeX a legtöbb UNIX platformon és a legtöbb Linux disztribúcióban alapértelmezett, így ha ezek valamelyikét használod, próbáld ki a man latex beírását. Van egy FTP-oldal, amely számos hasznos LaTeX-eszközt, makrót és kapcsolódó dokumentumot tartalmaz: ftp.tex.ac.uk.

A LaTeX dokumentumírásról két nélkülözhetetlen könyv is létezik. Mindkettő rendkívül olvasmányos és informatív. A Leslie Lamport által írt LaTeX A Document Preparation System (ISBN 0-201-15790-X) az alaprendszert írja le, és nagyon jó könyv a kezdéshez. Elegendő információt tartalmaz ahhoz, hogy azonnal meg lehessen írni a legtöbb normál dokumentumot. A The LaTeX Companion by Mike Goossens, Frank Mittelbach and Alexander Samarin (ISBN 0-201-54199-8), részletesebb, és a LaTeX2e projekt által a LaTeX-hez hozzáadott összes új funkcióval foglalkozik. Ez a könyv akkor hasznos, ha sok dokumentumot akarunk írni a LaTeX segítségével, és a nyelvet saját ízlésünkre szeretnénk szabni. Elmagyarázza, hogyan érhetünk el mindenféle egzotikus hatást, például a szöveg szív alakú elrendezését (ami talán hasznos lehet bizonyos, közvetlenül február 14-e előtt írt dokumentumoknál). Mindkét könyvet az Addison-Wesley adja ki.

A logika jobb

A LaTeX dokumentumkészítő rendszer az évek során fejlődött és javult. Rendkívül robusztus, és olyan funkciókat biztosít, amelyekkel szöveges és matematikai tartalmú dokumentumokat lehet publikálható szabványok szerint írni. A LaTeX dokumentum leírása egy programozási nyelv segítségével történik, ami a LaTeX felhasználójának a hagyományos programozási nyelvek minden erejét és rugalmasságát biztosítja. Az írásmód arra kényszeríti a felhasználót, hogy a dokumentumokat inkább a logikai felépítésük, mint a fizikai megjelenésük szintjén tekintse. Ez kezdetben kissé frusztráló, de végső soron számos előnye van, például az újrafelhasználás támogatása és olyan általános dokumentumok létrehozása, amelyeknek több fizikai példánya is lehet.

Mark Harman az Észak-Londoni Egyetem (http://www.unl.ac.uk/~mark/welcome.html) Informatikai és Multimédia Technológiai Iskolájának kutatási igazgatója és megbízott vezetője. Elérhető a [email protected] e-mail címen vagy postai úton a következő címen: Mark Harman, Project Project, School of Informatics and Multimedia Technology, University of North London, Holloway Road, London N7 8DB.


1. ábra Egy egyszerű LaTeX dokumentum.

\documentstyle{article}

\begin{document}

hello world

\end{document}


2. ábra. Szakaszok

\documentstyle{article}

\begin{document}

\section{Introduction}

Ez egy meglehetősen rövid dokumentum, és ez a bevezetője.

\section{Rationale}

A dokumentum azért ilyen rövid, mert egyszerűen és példamutató.

\end{dokumentum}


3. ábra Szimbolikus hivatkozások

\dokumentumstílus{cikk}

\begin{document}

\section{Introduction}

\label{intro}

Ez egy meglehetősen rövid dokumentum, és ez a bevezetője.

\section{Rationale}

Ez a dokumentum rövid bevezetője a \ref{intro} szakaszban található.

\end{document}


Figure 4 Az Itemize környezet.

\begin{itemize}

\item Solid

\item Liquid

\item Gas

\end{itemize}


Figura 5 Az enumerate környezet.

\begin{enumerate}

\item Cenozoic

\begin{enumerate}

\item Quaternary

\item Tertiary

\end{enumerate}

\item Mezozoikum

\begin{enumerate}

\item Kréta

\item Jura

\item Triász

\end{enumerate}

\item Paleozoikum

\item Paleozoikum

\begin{enumerate}

\item Perm

\item Karbon

\item Devon

\item Szilur

\item Ordovícium

\item Ordovícium

\item Kambrium

\end{enumerate}

\item Precambrium

\end{enumerate}


6. ábra Paraméter nélküli parancsok.

\documentstyle{article}

\newcommand{\fruit} { alma }

\begin{document}

Az első megjelenő \fruit lesz az első \fruit, amit meg fogok enni.

\end{document}


A 7. ábra paraméterei:

\documentstyle{Cikk}

\newcommand{\lookup} { #1(#2) }

\begin{document}

Az A tömb legnagyobb elemének megkereséséhez az első elemet, \lookup{A}{0}, tároljuk a b változóban. Ezután az i változó által vezérelt ciklusba lépünk, 1-től kezdve a tömb végéig. A ciklus minden egyes pontján hasonlítsa össze az i elemet, \lookup{A}{i}, a b-ben lévő értékkel. Ha \lookup{A}{i} nagyobb, mint b, akkor rendelje \lookup{A}{i}-t b-hez.

\end{document}


8. ábra Paraméterek: C verzió.

\documentstyle{cikk}

\newcommand{\lookup} { #1 }

\begin{document}

Az A tömb legnagyobb elemének megkereséséhez tároljuk az első elemet, \lookup{A}{0}, a b változóban. Ezután az i változó által vezérelt ciklusba lépünk, 1-től kezdve a tömb végéig. A ciklus minden egyes pontján hasonlítsuk össze az i elemet, \lookup{A}{i}, a b-ben lévő értékkel. Ha \lookup{A}{i} nagyobb, mint b, akkor rendeljük \lookup{A}{i}-t b-hez.

\end{document}


A 9. ábra Számlálóváltozók.

\newcounter{pointnumber}

\setcounter{pointnumber}{1}

\newcommand{\point} { Point \thepointnumber \stepcounter{pointnumber} }

\pont

Egy ponthoz tartozó szöveg

\pont

Egy másik ponthoz tartozó szöveg

\pont

Még egy másik pont


10. ábra Jelzőváltozók.

\documentstyle{article}

\newcounter{language} % Basic esetén 1-re, C esetén 0-ra van állítva

\setcounter{language}{1}

\newcommand{\lookup}

{

\ifthenelse{\value{language} = 1} {#1(#2)} {#1}

}

\newcommand{\update}

{

\ifthenelse{\value{language} = 1} {LET #1(#2) = #3} {#1 = #3}

}

% A forloop parancs négy paramétert fogad el

% 1. A ciklus alsó határa – egész vagy egészértékű kifejezés.

% 2. A ciklus alsó határa. A ciklus felső határa – egy egész szám vagy egészértékű kifejezés.

% 3. A hurok vezérlő változója – egy egészértékű változó.

% 4. A ciklus teste – utasítások sorozata.

% A flag counter language, arra szolgál, hogy meghatározza a nyelvet, amelyen

% a ciklus szintaxisát írjuk.

\newcommand{\forloop}

{

\ifthenelse{\value{language} = 1}

{

FOR #3 = #1 TO #2

NEXT #3

}

{

for(#3=#1;#3 != #2;#3++)

\{

\}

}

\begin{document}

Hogy a 10-es értéket az A tömb 3. számú elemében tároljuk, azt írjuk \update{A}{3}{10}.

Hogy az A tömb 0-tól 10-ig terjedő elemeit 0 kezdeti értékkel inicializáljuk, használhatunk egy for-hurkot, 0-tól kezdve egészen 10-ig. Ezt így írnánk le

\forloop{0}{10}{i}{\update{A}{i}{0}}

\end{document}


11. ábra A 10. ábrán látható LaTeX-forrás lefordításának eredménye.

Hogy a 10-es értéket az A tömb 3. számú elemében tároljuk, azt írjuk, hogy LET A(3) = 10.

Hogy az A tömb 0-tól 10-ig terjedő elemeit 0 kezdeti értékkel inicializáljuk, használhatunk egy for-hurkot, 0-tól kezdve egészen 10-ig. Ezt így írnánk le

FOR i = 0 TO 10

LET A(i) = 0

NEXT i

(P)1997, Centaur Communications Ltd. Az EXE Magazin a Centaur Communications Ltd. kiadványa. A Centaur Communications és a szerzői jogtulajdonos kifejezett engedélye nélkül, amennyiben az más személy, sem részben, sem egészben nem tehető közzé semmilyen módon, beleértve az elektronikusat is.

EXE Magazine, St Giles House, 50 Poland Street, London W1V 4AX, e-mail [email protected]

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.