TeX és LaTeX

Írta: Mayer Gyula - Sudár Csaba - Wettl Ferenc

(A PANEM Kiadó gondozásában megjelent LINUX-könyv 20. fejezetének kicsit módosított változata.)
 
 

Bevezetés

A TeX nyomdai minõségû dokumentumok elõállítására alkalmas szedõ- és tördelõprogram. Lelke a dokumentumok leírására alkalmas programnyelv, melyet a híres stanfordi matematikus Donald E. Knuth fejlesztett ki. A TeX-re úgy tekinthetünk, mint a tipográfia assemblerére, melyben minden tipográfiai feladat megoldható, de gyakran csak fáradtságos programozói munkával. A TeX-ben makrók is írhatók, ez viszont lehetõvé teszi, hogy a TeX-re egy magasabb szintû, barátságosabb programnyelv épüljön. Egy ilyen nyelv a LaTeX, melyet Leslie Lamport fejlesztett ki. Mára e program a tudományos, mûszaki szövegszerkesztésben meghatározóvá vált: többszáz folyóiratot LaTeX-ben készítenek, évente többezer könyv és megszámlálhatatlan mennyiségû kiadvány, dolgozat, egyetemi jegyzet, beszámoló, … készül LaTeX-ben, de használata a tipográfia egyéb területein is igen elterjedt. Az olyan bonyolult tipográfiai feladatok nyomdai minõségû megoldásában, mint amit a matematikai formulák szedése jelent, a TeX/LaTeX-rendszereknek máig sincs komoly versenytársuk a számítógépes programok között. A TeX logójáról annyit, hogy az a görög ,,tau/epszilon/khi/nû/éta'' szó (nagybetûkkel írva TEXNH) elsõ szótagja, és így ,,tech''-nek ejtendõ, nem ,,teksz''-nek. A LaTeX szokásos kiejtése ,,latech", angolosabban ,,létech''. A két logó írógép stílusban: TeX illetve LaTeX. A TeX jelenlegi verziószáma 3.14159, e verziószámot úgy képzik, hogy a ,,pi''-hez konvergáljon. 1994-ig a LaTeX verziószáma 2.09 volt. Ekkor készült el a LaTeX2e (ejtsd latech-kettõ-epszilon), ami egy nagyobb projekt, a 2000-re tervezett új verzió, a LaTeX3 elkészítése felé tett elsõ lépés eredménye.

Ebben a fejezetben röviden áttekintjük a LINUX-ban és egyúttal minden UNIX rendszerben is megtalálható, de a többi széles körben elterjedt operációs rendszer alatt is futó TeX programcsaládot, egyúttal kitérünk azokra a kevesek által ismert módszerekre is, amelyekkel kényelmesen írhatunk magyar szöveget. Azoknak, akik további ismeretekre vágynak, az INTERNET-et és a magyar nyelvû könyveket ajánljuk figyelmébe.

A TeX-hel (és így a LaTeX-hel is) kapcsolatos anyagok gyûjtõhelye a CTAN szerver (CTAN = Comprehensive TeX Archive Network). Címe:

A Nemzeti Információs Infrastruktúra Fejlesztési Programnak köszönhetõen itthon is van rendszeresen frissített tükre, mely az alábbi címen található: A továbbiakban az ftp címeknek ezt az állandó elemét CTAN-ként rövidítjük. Ismertetõket a CTAN info alkönyvtárában találunk.

Magyar nyelvû könyv a TeX-rõl Bujdosó Gyöngyi és Fazekas Attila TeX kezdõlépések címû mûve, mely a TERTIA Kiadónál jelent meg 1996-ban. A LaTeX-rõl a PANEM Kiadó gondozásában Wettl Ferenc, Sudár Csaba, Mayer Gyula LaTeX kezdõknek és haladóknak címû mûve.

A TeX és a LaTeX

A TeX és a LaTeX programnyelve

A TeX rendszer rendkívül rugalmasan adaptálható a konkrét tördelési feladathoz és a felhasználó szokásaihoz.

A szövegformázó rendszerek egyik nehézsége az, hogyan válasszuk el a szedendõ szöveget a formázási parancsoktól. A TeX-ben a kettõt ugyanabban a fájlban helyezhetjük el, és megkülönböztetésül - alapesetben - bekszlessel jelöljük a parancsszavakat, például: \par (új bekezdés).

A TeX számára egy ASCII-fájlt kell készíteni, amelyben alapértelmezésben az angol ábécé betûin és a számjegyeken kívül csak a következõ jelek szerepelhetnek:

` ' " ; : . , ? ! @ # $ % ^ & * ( ) ~ - _ = + [ ] { } < > \ / |
A késõbbiekben megmutatjuk, hogy egyetlen paranccsal hogyan terjeszthetõ ki a fent megadott karakterkészlet úgy, hogy például a magyar ékezetes betûket is tartalmazza.

A fenti jelek közül 10-nek speciális jelentése van, ezért szövegben önálló betûként csak egy parancs segítségével adhatóak meg.
 
A KARAKTER A KARAKTER JELENTÉSE MEGJELENÍTÉSE
\ a parancsok kezdõkaraktere $\backslash$
$ matematikai környezet határa \$
#   \#
% megjegyzés \%
& tabulátor karakter \&
~ nem törhetõ szóköz \~{}
_ alsó index \_
^ felsõ index \^{}
{ blokk illetve argumentum határai $\{$
} blokk illetve argumentum határai $\}$
A TeX parancsok kétfélék lehetnek: vagy a \ karakter és utána néhány alfabetikus jel (például \hskip), vagy a \ karakter és utána egyetlen speciális karakter (például \"). A LaTeX-ben van egy harmadik típus, amikor a \ karakter után néhány alfabetikus jel, majd végül egy * karakter következik (például \section*, az ilyen parancsok mindig a * nélküli parancsok módosított változatai).

A parancs után { és } közé kerül az argumentum. A zárójelek elhagyhatók, ha az argumentum egyetlen jelbõl áll (pl. \sqrt2 és \sqrt{2} ugyanazt eredményezi). Egy parancsnak több argumentuma is lehet (legföljebb 9). Az is lehet, hogy nincs argumentuma, mint pl. a \par és \it parancsoknak. Egy argumentuma van az ékezet-parancsoknak, akárcsak a \centerline (középre zárás) és \underbar (aláhúzás) parancsoknak. A LaTeX-ben vannak opcionális argumentumok is, ezeket a [ és ] közé kell írni (pl. \sqrt[3]{2} a köbgyök kettõt megjelenítõ LaTeX-parancs).

Kapcsos zárójelekkel valójában környezetet jelölhetünk ki. Pl. a \it parancs kurzívra váltja a betûtípust, s ennek érvényességi körét korlátozhatjuk valamely környezetre. (Egyszerûség kedvéért a példáinkban ezentúl ékezetes betûket írunk; sima angol TeX-hel való fordításkor azonban ezek nem használhatók, csak a késõbb ismertetendõ módszerek valamelyikének alkalmazásával!) Normál szövegbe

azt kapjuk, hogy: … Egy másik példa: Eredménye:
Középre helyezett, részben aláhúzott cím
Az egymás melletti szóközök és tabok egyenértékûek egyetlen szóközzel (hogy pontosan mennyi helyet hagy ki, azt a TeX a finoman szabályozható tipográfiai elõírások alapján számolja ki), egy sorvége egyenlõ egy szóközzel, több sorvége pedig az új bekezdést jelöli, amit egyébként a \par paranccsal is létrehozhatunk.

A hullám karakter (~) a sortörés finomhangolását segíti: ha két szó közé ezt írunk a szóköz helyett, akkor látszatra közönséges szóköz az eredmény, azonban e helyen nem tör sort a program. Jól használható tehát a magyarban a mondat elején álló névelõ és az azt követõ szó között.

A % jeltõl a sor végéig tartó részt a TeX nem veszi figyelembe; így helyezhetõ el kommentár a fájlban.

Matematikai formulák szedése

A matematikai képletek szedése a TeX/LaTeX külön erõssége, melyet külön ún. matematikai mód támogat. TeX-ben a szövegközi matematikai képleteket $-jelek közé kell tenni (pl. $a+b$), míg a kiemelt, sorok közötti képleteket $$-jelek közé (pl. $$a+b$$). LaTeX-ben a szövegközi matematikai képletek a $-jelek helyett a \( és \) jelek közé is zárhatók. A kiemelt képletekre ugyan a LaTeX is elfogadja a $$-jeleket, de nem mindig mûködik tökéletesen, ezért használatukat jobb elkerülni, és helyettük a \[ és \] jelek közé írni a formulát (pl. \[ a+b \]).

A ^ és _ vezérlõkarakterek matematikai módban a felsõ ill. alsó indexek elhelyezésére szolgálnak:

ha $a_{12} = 3 $ és $b_7 = 4$ akkor $a_{12}^{b_7} = 9 \times 9$
Ezzel a lehetõséggel folyó szövegben is élhetünk, azonban a fenti példából látszik, hogy matematikai módban - a matematikában megszokott módon - a betûket változónak értelmezi a program és kurzív (pontosabban sajátos, kissé eltérõ metszésû matematikai kurzív) típussal szedi ki. Ezért a kitevõ környezetében vissza kell váltanunk az antikva betûtípusra a \rm (roman) paranccsal. Szintén a képletszedés hagyománya, hogy az ékezeteket másképpen kell elhelyezni matematikai ill. szövegmódban; ezt a TeX azzal is hangsúlyozza, hogy matematikai módban nem használhatók a fönt megismert ékezet-parancsok. Hogy tehát repülõ-ékezetes szöveget tehessünk ,,kitevõbe'', ki kell lépnünk a matematikai módból. A $ jelnek ebbõl a szempontból ellentéte a \hbox (horizontális doboz) parancs: az argumentumát vízszintes sorba szedendõ közönséges szövegként kezeli:
Az~1997$^{\rm dik}$ esztendõnek is január volt az 1$^{\hbox{s\H o}}$ hónapja.
A \hbox-on belül automatikusan a szöveg típusára vált a TeX, azonban a kitevõk automatikus kicsinyítését is elhagyja ilyenkor; a betûfokozatot tehát külön át kell állítani a \sevenrm paranccsal a kitevõben szokásos hét pontra:
Idén is január volt az 1$^{\hbox{\sevenrm s\H o}}$ hónap.

A TeX és a LaTeX futtatása

Legyen egy TeX- illetve LaTeX-fájl neve file.tex; ekkor az elõbbi esetben a >tex file az utóbbi esetben a >latex file parancs hatására újabb fájlok keletkeznek: a file.log (mely persze a logfájl, ami a fordítással kapcsolatos részleteket tartalmazza), és a kiszedett oldal megjelenítõeszköztõl független leírását binárisan kódolt formában tartalmazó file.dvi (device independent). LaTeX-ben általában még több további fájl is keletkezik, ezek táblázatát e rész végén megadjuk. Ha a dokumentumban belsõ hivatkozások vannak, akkor a >latex file parancsot akár kétszer is meg kell ismételni. (Ha az erdeti fájl nem .tex végzõdésû, akkor a teljes fájl nevét ki kell írni).

További programok szükségesek ahhoz, hogy a TeX/LaTeX munkájának eredményét (a dvi-fájl tartalmát) megtekinthessük. Ezeket meghajtóknak (driver) szokás nevezni, és nevük egyik (általában elsõ) fele a meghajtott eszközre utal. A képernyõn, az X grafikus felület alatt, az xdvi interaktív megjelenítõ használható. Szokás szerint >man xdvi tájékoztat a használatáról. Paraméterként a dvi-fájl nevét kell megadni; a .dvi végzõdés elhagyható. Több egyetlen gombnyomásból álló parancsot ismer (x ki-be kapcsolja egy egérrel vezérelhetõ panel megjelenítését, q pedig kilép).

A nyomtatómeghajtók egy állományt hoznak létre (a PostScript-et kivéve binárisat), melyet változtatás nélkül kell a nyomtatónak továbbítani. A különféle típusú HP lézernyomtatók saját nyelvére a dvilj, dvilj2p, dvilj4 és dvilj4l programok fordítanak, PostScript fájlt pedig dvips hoz létre ( http://www.radicaleye.com e kiváló program kanonikus URL-je, itthon tükrözve a CTAN: dviware/dvips alkönyvtárban). Ha egyéb típusú nyomtatónk van, akkor a PS nyelvrõl való újabb konverzióra van szükség: erre a feladatra alkalmas a GhostScript program, mely ismeri a legtöbb mátrixnyomtatót is. Néhány év óta a gnu archívumokban található GhostScript verzió elavult, ezért célszerû a friss 4.x Aladdin verziót használni (CTAN: support/ghostscript/aladdin). (Erre ugyan más licensz érvényes, azonban szintén szabad szoftver.) Pl. a

gs -sDEVICE=epson -r180x180 -sOutputFile=file.epson -dNOPAUSE file.ps quit.ps
paranccsal létrehozható egy kisfelbontású 24-tûs mátrixprinterre való állomány.

A dvips és gs egyaránt mûködhet szûrõként, így kimenetük közvetlenül is irányítható lpr-re.

Összefoglalva, a leggyakrabban használatos parancsok a következõk:

> tex file                  TeX program fordítása

> latex file                LaTeX-program fordítása, ha kell többször is

> xdvi file                 dvi fájl megtekintése

> dvilj file                dvi fájl konverziója LaserJet számára

> lpr -Pnyomtató file.lj    nyomtatás LaserJet-en

> dvips file.dvi -o file.ps  dvi-bõl ps-be alakítás

> ghostview file.ps         PostScript fájl megtekintése

> lpr -Pnyomtató file.ps    PostScript fájl kinyomtatása

A feldolgozás közben használt fájlok nevének kiterjesztései, és azok jelentése:

.tex .ltx              TeX/LaTeX forrásfájl

.dvi                   TeX/LaTeX outputja (device independent)

.log                   TeX/LaTeX-üzenetek fájlja

.clo .cls .sty         LaTeX osztályok és csomagok

.dtx                   dokumentált program

.aux                   segédfájl pl. hivatkozásokhoz (auxiliary)

.toc                   tartalomjegyzék (table of contents)

.lof                   ábrajegyzék (list of figures)

.lot                   táblázatjegyzék (list of tables)

.bib .bbl .blg .bst    bibliográfia

.ind .idx .ilg .ist    indexek

.tfm .mf .fd .pk       fontok betûinek méretei, és egyebek

.fmt                   formátum fájl

.poo .pol .pool        karakter pool fájl

Fontok

Történeti áttekintés

Egészen a TeX 2.98 verzióig nem létezett jó megoldás az ékezetes betûket tartalmazó szavak bevitelére és helyes elválasztására. (Ennek ellenére természetesen élelmes magyarok megkeresték a megoldást, és a Faggyas T. - Miklós D. kettõs 1988-ban megjelentette a MaTeX-et.)

Nem sokkal késõbb az európai felhasználóknak sikerült a TeX alkotójának, D. E. Knuthnak ellenállását megtörniük, és a 3.x verzió megteremtette a lehetõséget az angolnál bõvebb betûkészletû nyelvek kezelésére is.

A konkrét megvalósítás nélkülözhetetlen eleme a betûkiosztás szabványosítása, erre a corki konferencián került sor 1990-ben. Ezt követõen született meg az a fontleíró programcsomag (azaz METAFONT kód), mely a Knuth-féle cm betûkészletet kibõvítve és némiképp módosítva meg is valósítja ezt a kiosztást. Ezen új fontok dc kezdetû neveket kaptak, mint a késõbbi ec, azaz European Computer Modern fontok teszt-változatai. (Természetesen ezen eseményekkel párhuzamosan és sajnos tõlük függetlenül a MaTeX-nek az új helyzethez való adaptációja is megjelent Mayer Gyula révén.)

Az egységes európai kódolásra különbözõ összefüggésekben a Cork, dc, ec, T1, 8t jelöléseket alkalmazzák.

Sajnos máig sem készült el a plain.tex-nek olyan egységes módosítása, mely lehetõvé teszi, hogy felhasználói nemzetközileg egységesen éljenek az új lehetõségekkel; a legnagyobb lépést a rendkívül aktív német szervezet tette, létrehozva a german.sty által megvalósított szabványt, ezt vette alapul Kiss Emil magyar adaptációja (http://www.cs.elte.hu/~ewkiss/software/echun.html).

Másrészt viszont az új LaTeX fejlesztõi megírták és a törzskészletbe integrálták az európai nyelvek és az igen elterjedt PostScript fontok használatát lehetõvé tevõ kódot, s a képernyõn és a nyomtatón való megjelenítéshez szükséges segédprogramok is elkészültek.

A magas színvonalú PostScript fontok egy része az utóbbi években néhány cég ajándékaként már ingyenesen is használható.

A jelen helyzet tehát az, hogy a latin betûs európai nyelvek nagy többségét nemzetközi megállapodás alapján egységesen lehet kódolni, szavaikat a TeX helyesen el tudja választani (a nyelvváltásra bekezdésen belül is lehetõség van!), és a megjelenítéshez mind a Computer Modern, mind pedig egyéb fontok rendelkezésre állnak.

Az alábbiakban e rendszer elemeit ismertetjük, hogy azt az olvasó maga is felépíthesse és az újabb fejlesztéseket (vagy megvásárolt betûkészleteket) be tudja építeni.

Sajnos az új TeX-ben sem lehetséges az elválasztási algoritmusok futás közbeni betöltése, ezért a TeX-elést megelõzõen el kell dönteni, hogy a lehetséges három tucat nyelv közül melyeket kívánjuk személyes TeX-ünk által elválaszttatni (a ma szokásos implementációk legalább féltucat nyelv elválasztási szabályait képesek egyszerre tárolni.)

Fontok installálása

Valamely font installálásakor a metrikus adatokat tartalmazó tfm, valamint a betûképeket tartalmazó pk (korábban pxl azaz pixel) fájlokat úgy kell elhelyezni, hogy szedõrendszerünk különbözõ elemei megtalálják azokat.

Ez az alapséma különféleképp módosul, egyszerûsödik, vagy bonyolódik a különféle fontformátumok szerint. A TeX-hez saját fontleíró programnyelv (METAFONT) társul, a nagy betûforgalmazók viszont ettõl és egymástól is eltérõ rendszereket hoztak létre.

Ha a font mf forráskódja megvan (mint pl. a cm fontok esetében [a nyilvánosan hozzáférhetõ fontoknak a teljesség igényével összeállított listája havonta olvasható a comp.fonts és a comp.text.tex newsgroupokban]), akkor újabb rendszer esetében elegendõ a tfm fájlokat (Unix alatt ma már ezek is automatikusan generálódnak és a helyükre kerülnek) és a mf forráskódot elhelyezni, melybõl a pk-fájlok automatikusan generálódnak.

PostScript fontok esetében a metrikus adatokat az afm (Adobe font metrics), a körvonalleírásokat pedig a pfa (printer font ascii) vagy pfb (printer font binary) fájlok tartalmazzák.

A TrueType fontokból vagy szintén a grafikus rendszer (M$ Windows ill. Mac OS), vagy pedig a Ghostscript közvetítésével nyerhetõk bittérképek.

PS fontok esetén a legelterjedtebb és hagyományos 35 tagú alapkészlet (klónja) valamint néhány egyéb ingyen is kapható.

Minthogy a fontok és fontfájlok elnevezései igen tarka képet mutatnak (még egy gyártó is több különbözõ néven terjeszti azonos fontjait), a TeXesek általános szabványt dolgoztak ki a fontfájlok elnevezésére, melyet a fontname csomag tartalmaz. A jelenleg érvényes rendszer (v. 2.x) lényege, hogy a nyolc (case-insensitiv) karakterre korlátozott név elsõ karaktere a gyártóra utal (p = Adobe, u = URW), a következõ kettõ a típusra (tm = Times, pl = Palatino), ezután jön a változat (r = regular, i = italic, o = oblique) jele, végül a kódkiosztásé (7t = hét bites cm, 8t = nyolc bites Cork).

Magában az installálásban a fontlist LaTeX-csomagnak van fõ szerepe (CTAN: fonts/psfonts/tools/finst)!

TeX/LaTeX a LINUX-ban a teTeX

A mai LINUX rendszerekben a teTeX disztribúció a kurrens verzió 0.4 patchlevel 8, címe CTAN: systems/unix/teTeX használatos, mely a Karl Berry által karbantartott WEB2C implementáción (http://www.tug.org/web2c) alapszik: ez egy speciális (yacc és flex segítségével készített) PASCAL -> C fordítórendszer, és természetesen jól kihasználja a korszerû unixok nyújtotta lehetõségeket (1997 februárjában jelent meg a régóta várt 7.0-ás verzió CTAN: systems/unix/web2c).

Az installálás megkezdése elõtt célszerû ellenõrizni, nincs-e valamilyen korábbi TeX-installáció a gépünkön (PATH, TEXINPUTS környezeti változók, stb…).

Még ha mûködõ rendszerünk van, akkor is ajánlatos legalább az új európai (ec) fontokat, s az ezeket támogató új LaTeX verziót föltenni. Az ec fontok megléte a >mf ecrm1000 paranccsal ellenõrizhetõ.

A disztribúció összeállításakor az egyik legfõbb cél éppen az installálás megkönnyítése volt, és a szerzõ ezt a célt el is érte. A tudnivalók a distrib/INSTALL.bin (illetve kompilálni vágyók részére az INSTALL.src) fájlban olvashatók, illetve kicsit részletesebben a TETeXDOC.tex fájlban, mely installálás során a teTeX/texmf/doc/tetex könyvtárba kerül. Az ideiglenes installáló könyvtárban létre kell hozni a distrib alatti fát. A platformfüggetlen alapkészletet a distrib/base könyvtár két tar.gz-je tartalmazza. Ezután ki kell választani a processzorunknak megfelelõ bináris csomagot (azaz általában distrib/binaries/i386-linux.tar.gz-t). A doc, fonts és goodies alkönyvtárak anyagából legalább fonts/ec-fonts.tar.gz szükséges a magyar szedéshez. A distrib/install.sh burokprogram ezután az installálás nagy részét levezényli, majd a texconfig confall parancsot kell kiadni.

Érdekességként megemlítjük, hogy a Linux Documentation Project (rövidítve LDP) keretében létrejött könyveket is LaTeX-ben írják (az LDP hivatalos honlapja a http://sunsite.unc.edu/LDP/ címen található).

A TeX rövid ismertetése

Elsõként azt a sima (plain) változatot ismertetjük, melyet még maga Knuth tervezett és írt le, s megléte bármely installáció esetén biztosra vehetõ.

A csomag tördelõprogramja, a tulajdonképpeni TeX, karakteres módban futó alkalmazás, melyet szokásos módon a tördelendõ fájl nevével mint elsõ és egyetlen paraméterrel hívunk meg.

Ha a fájlban a tördelési feladat végét nem jelöljük az \end vagy inkább a \bye paranccsal, akkor a TeX interaktív módba kerül és * prompttal kerülünk szembe. (ENTER-re válaszul azért elárulja, hogyan szabadulhatunk tõle meg békésen.) Így tehát a legegyszerûbb TeX-fájl:

Elso, ekezet nelkuli muvem.\bye
Természetesen az összes valaha elképzelt ékezettel elláthatjuk betûinket, mégpedig többféleképpen is.

Ha arra törekszünk, hogy a világ bármely pontján egyértelmû legyen, milyen ékezeteket szántunk betûinkre, és egyúttal a legbutább levelezõprogram sem tudjon bennük kárt tenni, akkor a hét leggyakoribb ékezettípus a bekszlesen kívül egyetlen nem-betû karakterbõl álló rövid parancsjellel tehetõ a betûkre, pl. \^ a háztetõ vagy kalap ékezet. Minthogy a parancsjelek vége egyértelmû, ezek után nem kötelezõ (de szabad) szóközt tenni. A három magyar ékezet a betû elé tett \' (acute accent, azaz éles ékezet), \" (német umlaut, azaz dupla pont) ill. \H (long Hungarian umlaut) parancsokkal hozható létre:

M\'asodik, nem \'ekezet n\'elk\"uli m\H uvem.\bye
Plain TeX-ben a magyar írásra az egyik lehetõség az, hogy ISO-Latin2-ben kódolt szövegünket az új ec fontokkal szedetjük. Ezek közül a cmr10-nek a 8 bites készletben ecrm1000 felel meg. Ha mást nem teszünk, akkor a kettõs magyar ékezetek helyett az ISO-Latin1-ben az illetõ helyen lévõ karaktereket kapjuk, azaz az alábbi program eredményeként azt kapjuk, hogy "Elsõ ékezetes mûvem" (vagyis az õ betûn egy tilde (~), az û betûn egy kalap/tetõ (^) van).
\font\tenrm=ecrm1000
\tenrm
Elsõ ékezetes mûvem.
\bye
Ezen többféleképp segíthetünk. Az egyik lehetõség az, hogy a TeXen belül paranccsá tesszük ezt a négy karaktert (tehát az eddig ismertetetteken kívül létezhet olyan parancs is, mely egyetlen karakterbõl áll, amennyiben az ún. kategória-kódja 13!), méghozzá legyen jelentésük egyszerûen egyetlen, a megfelelõ másik pozíción található magyar ékezetes karakter. Írjuk át a kategória kódokat!
\font\tenrm=ecrm1000
\tenrm
\catcode`\û=13
\def û{\char'266 }
\catcode`\Û=13
\def Û{\char'226 }
\catcode`\õ=13
\def õ{\char'256 }
\catcode`\Õ=13
\def Õ{\char'216 }
Elsõ ékezetes mûvem.
\bye
A másik módszer az õ és û betûk problémájának megoldására az lehet, ha például egy rövidke flex programmal kicseréljük ezt a négy karaktert a T1 kódolás szerint szükségesre (azaz elvégezzük az oktális 0373 -> 0266, 0333 -> 0226, 0325 -> 0216, 0365 -> 0256 cseréket).

%option noyywrap

%%

\325 {printf("\216"); }

\365 {printf("\256"); }

\333 {printf("\226"); }

\373 {printf("\266"); }

%%

main()

{

yylex();

}

Paraméterek

Egy szöveg tördelését számos paraméterrel befolyásolhatjuk: tükörméret (szélesség: \hsize, magasság: \vsize), sortávolság (\baselineskip), bekezdés mélysége (\parindent), bekezdések közötti extra távolság (\parskip) stb. Ezeket többféle mértékegységben adhatjuk meg, melyek mindegyikének két betûs a rövidítése (didot pont = dd, ciceró = cc, angol pont = pt, pica = pc, hüvelyk vagyis inch = in, valamint cm, mm és az igen apró sp. Részletesen lásd a LaTeX mintapéldában a fejezet végén). Európában és Magyarországon is a dd (=0,38 mm) és a ciceró (=12 dd) a leggyakrabban használt egységek.

Pl. a \parindent = 10 dd parancs (globálisan) tíz pontra állítja a bekezdés mélységét; az egyenlõségjel és a szóközök elhagyhatók még a mértékegység jele után is.

Vannak más típusú értékeket felvevõ paraméterek is. Elõjeles egész szám pl. \looseness: azt jelöli, hogy a kurrens bekezdés sorainak számát az ideálistól (vagyis a legszebb eredményt adótól) mennyivel kívánjuk eltéríteni. Értékét minden paragrafus elején visszaállítja a TeX az alapértelmezésre, ami - persze csak ha át nem állítjuk - nulla. (A paraméterek nagy többségének globálisan adhatunk értéket, azaz ha nem valamilyen környezetben történik az értékadás, akkor a kapott érték végig megmarad, a program magától nem változtat rajta.) A \year, \month és \day paraméterek indításkor átveszik az operációs rendszertõl a kurrens értékeket; utána ezeket is megváltoztathatjuk. Bármely paraméter értékét kiszedethetjük a \the parancsnak a paraméter neve elé helyezésével:

Ezen írás az \the\year.\ évben készült,  s a sorok távolsága \the\baselineskip-nyi.
Az angolszász szedésben a mondatvégi pont után kissé nagyobb szóközt hagynak. Illendõ hát mondat közepi pont után jelölni, hogy oda csak normális köz kell: erre szolgál a kontrol-szóköz, vagyis az a parancsjel, melyben a bekszlest szóköz vagy újsor karakter követi.

A \parindent és a \baselineskip lehetséges értékei között érdekes különbség van. A sortávolság esetében engedélyezhetõ bizonyos rugalmasság, azaz megadható, hogy fölfelé és lefelé mekkora eltérést engedélyezünk az alapértéktõl.

Pl. \baselineskip 10dd plus 3.5 dd minus 4.99 dd
Ezzel a lehetõséggel könyvek szedésében nem szoktunk élni, hasznos azonban, ha például valamilyen megadott helyet kell adott mennyiségû szöveggel kitölteni egy plakáton.

Ilyen rugalmas távolságok még a \leftskip, a bekezdések minden sorára vonatkozó bal margó és párja, a \rightskip, s a bekezdések utolsó sorának jobbján kihagyandó távolság, a \parfillskip. Az elõbbi kettõ alapértéke nyilván nulla (pont), az utóbbi lehet nulla is, de lehet akármilyen nagy is. Erre a tetszõlegesen nyúló távolságra külön mértékegység van, a fil. A paraméter alapértéke tehát

\parfillskip = 0dd plus 1 fil
Végül van a paramétereknek egy különleges típusa, amelynek lista lehet az értéke, pl. az \everypar paranccsal meghatározhatjuk, milyen elemeket helyezzen el a TeX minden bekezdés elején: ezzel lehet a paragrafusok alakját egységesen módosítani, vagy éppen mindegyiket gondolatjellel kezdeni:
\everypar{-- }
Üres helyet nemcsak a paragrafusok szélein, hanem akárhol hagyhatunk. Vízszintes közt hagy \hskip rugalmas_mérték, függõlegeset pedig pl. \vskip 11dd plus 2dd minus 5dd. Ezek a spáciumok egyúttal alkalmas sor- illetve laptörési pontokul is szolgálnak, s ha éppen oda esik a töréspont, akkor a spácium elvész, hiszen nincs értelme sorok közötti vízszintes ill. lapok közötti függõleges spáciumnak.

Ha ezzel szemben olyan közt akarunk hagyni, melynél nem engedhetõ meg a törés - pl. a kihagyást jelölõ három pont közökkel követi egymást, de nem választhatók el - akkor a \kern mérték parancs alkalmazható.

Új parancsok definiálása

A meghatározható új parancsok vagy makrók legegyszerûbb típusának nincsen argumentuma. Ilyen például a program nevét jelölõ \TeX parancs, melyet a következõ utasítás hozott létre:
\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}
A \def parancs vezeti be a definíciót, utána az új parancsszó (vagy jel) következik, végül kapcsos zárójelek között a meghatározás. Az egyik újdonság az em mértékegység. Az említett abszolút egységeken kívül két relatív, az adott fonttól függõ is rendelkezésünkre áll, melyet a betûtervezõ határoz meg: ex az x, vagyis a föl-le nyúló szárak és gömbölyületek nélküli betûk magassága, és em, (elvileg) az M betû szélessége. Gátlástalan lelkek e paramétereket a \fontdimen5\fontnév=mérték, illetve pl. \fontdimen6\sevenrm=9.7dd parancsokkal írhatják át. A valóságban, pl. a \tenrm (azaz cmr10, tíz angol pontos Knuth-féle computer modern antikva) esetében em a normál szóköz háromszorosa és kb. 10%-kal több az M betû szélességénél. Ha már a betûkkel kapcsolatos méretekrõl esett szó, a névleges törzsméret a cm (és a belõlük származó ec) fontok esetében a legalacsonyabb és a legmagasabb pont távolsága, azaz a kerek zárójelek teljes magasságával egyezik meg.

A másik újdonság a \lower mérték \hbox{vízszintes szedés} parancs, mely az adott dobozt lesüllyeszti (vagy negatív mérték esetén fölemeli). A relatív mértékegységek használatának elõnye tehát, hogy egységes eredményt kapunk különbözõ betûtípusokban és méretekben is:

{\TeX\ \it\TeX\ \sevenrm\TeX\ \sevenbf\TeX\ \tt\TeX\ \fivebf\TeX}

A LaTeX rövid ismertetése

A LaTeX a TeX egy kiterjesztése, pontosabban egy TeX makrocsomag, mely alkalmas az egész dokumentum szerkezetének leírására is. Így LaTeX-ben elérhetõ, hogy a szerzõ mûvének csak logikai szerkezetével foglalkozzék, a vizuális megjelenés problémáival ne.

Számtalan különleges képességgel rendelkezik, ilyen például az automatikus sorszámozás, vagy az automatikus kereszthivatkozás készítés. A következõkben felvillantjuk a LaTeX néhány elemét.

LaTeX-fájlok szerkezete

A LaTeX-fájlok szerkezete a következõ:

\documentclass[opciók]{osztály}

    bevezetõ rész (preambulum)

\begin{document}

    a dokumentum teste

\end{document}

Általában egy LaTeX-program elsõ sorában a \documentclass parancs szerepel. Egy kivétel van, nevezetesen a \documentclass sor elé beírható bármely, a programunk által használt fájl, például grafika fájlja, stílusfájl, …. Ennek módja a filecontents környezet alkalmazása:

\begin{filecontents}{fájlnév}

    fájl tartalma

\end{filecontents}

A LaTeX látva e parancsot a fájl tartalmá-t átírja a fájlnév nevû fájlba néhány megjegyzéssorral együtt, amennyiben ilyen nevû fájl még nem létezik. (Ha létezik, nem csinál semmit). Így a dokumentum feldolgozásakor már a fájlnév nevû fájl is rendelkezésre fog állni. A filecontents környezet helyett a filecontents* használandó, ha nem akarjuk, hogy TeX megjegyzéssorok kerüljenek a fájlba (pl. egy grafikai fájl esetén ezt kell alkalmaznunk).

Térjünk vissza a \documentclass parancsra. Ebben a parancsban adjuk meg, hogy a LaTeX-dokumentum milyen dokumentumosztályba tartozzék (a LaTeX 2.09-ben az elsõ sorban a \documentstyle parancs szerepelt, amit a LaTeX2e is megért, de ekkor az újabb verzió többlettudása nem használható). A LaTeX2e standard osztályai: article (cikkírásra szolgál, ennek verziói a proc, ami konferenciacikkekhez készült, a LaTeX programok dokumentálásához készült az ltxdoc, valamint az ltxguide, amit néhány ismertetõ használ), book (könyvírásra), report (beszámolókhoz), letter (levélíráshoz), slides (fóliákhoz). Például egy egyszerû cikk írását a

\documentclass{article}
sorral kezdhetjük. Felsoroljuk a parancsban használható standard opciókat, az alapértelmezést aláhúzzuk. Ezek vonatkozhatnak a papír méretére: a4paper (297x210mm), a5paper (210x148mm), b5paper (250x176mm), letterpaper (11x8.5in), legalpaper (14x8.5in), executivepaper (10.5x7.25in), vagy kifejezhetik a betûk méretét: 10pt, 11pt, 12pt, a lap fekvését: landscape, hogy a dokumentum egy- vagy kétoldalas, egy- vagy kéthasábos legyen: oneside, twosideonecolumn, twocolumn, hogy legyen-e külön címlap: titlepage, notitlepage. A matematikai képletek a fleqn opció esetén nem középre, hanem a bal margótól beljebb, azonos távolságra kerülnek, míg a leqno opció használatakor a képletek sorszámai a lap bal oldalára kerülnek, nem jobbra. Például egy egyszerû cikk írását külön címlappal, 11 pontos betûmérettel, A4-es papírmérettel a
\documentclass[titlepage,11pt,a4paper]{article}
sorral kezdhetjük.

Csomagok

Ezután következik a felhasznált csomagok felsorolása, erre a \usepackage parancs szolgál. Alakja:

\usepackage[opciók]{csomag neve}[release dátuma]

Néhány a gyakran használt csomagok közül: inputenc (=input encoding: az input karakterek kódolásának módja), fontenc (a belsõ kódolás kiválasztása), makeidx (indexek kezelésének megkönnyítése), showidx (az indexek megjelenítése az elõfordulásuk helyén, a lap margóján), array, delarray, hhline, longtable, tabularx (táblázatok kezelését segítõ csomagok), multicol (többhasábos szedés), graphics, graphicx (grafikai parancsok), color (színes dokumentum készítéséhez), mfnfss, psnfss (Metafont illetve PostScript fontok kezelése). Vannak csomagok, melyek a legtöbb disztribúcióban szerepelnek:  babel (többnyelvû LaTeX), amsmath (az Amerikai Matematikai Társaság AMS-TeX-verziójának LaTeX-re átírt változata).

Például ha azt akarjuk, hogy a babel programcsomagnak a LaTeX-et magyarító lehetõségeit használhassuk (pl. a Contents helyett Tartalom, Part helyett Rész, … legyen kiírva, a dátum automatikusan magyar formátumú legyen, stb …) a következõt kell megadni:

\usepackage[magyar]{babel}
Ha szeretnénk magyar ékezetes betûket használni az inputban (pl. az olvashatatlan t\'{\i}zb\H{o}l, esetleg a t\'\i zb\H ol karaktersorozatok helyett azt írnánk inkább, hogy tízbõl), és a UNIX gépek által ismert ISO-Latin2 (azaz az ISO-8859-2), vagy a WINDOWS szabványos magyar (azaz CE jelû, közép-európai ) betûkészletét használnánk, akkor hívjuk meg az inputot kódoló inputenc csomagot:
\usepackage[latin2]{inputenc}
Ez a parancs akkor is jó, ha LINUX alatt csak a ISO-Latin1-es karakterkészlet áll rendelkezésünkre, vagy ha WINDOWS alatt a nyugat-európai betûkészletet használtuk. E karakterkészletek és az ISO-Latin2-es, közép-európaiak a magyarban használt betûket tekintve csak 4 helyen térnek el: a ISO-Latin2 õ, Õ , û és Û betûi helyén a ISO-Latin1-ben õ, Õ, û illetve Û jelenik meg (hullámos o, kalapos u), mint azt már korábban is említettük. Így ezeket a betûket használva a fenti parancs után a ISO-Latin1-ben írt szöveg is helyesen kódolódik.

A belsõ kódolásban a kiterjesztett T1 (Cork) kódrendszer használatához a

\usepackage[latin2]{inputenc}
parancsot kell megadni.

A \documentclass és a \usepackage parancsok után további, az egész dokumentumra vonatkozó parancsok adhatók ki. Itt szokás egyes méreteket (pl.: margókat) átállítani, új parancsokat definiálni, a cikk címét, szerzõjét, a dátumot … megadni. Például:

\documentclass[10pt,a4paper]{article}
%
\usepackage{t1enc}
\usepackage[latin2]{inputenc}
\usepackage[magyar]{babel}
%
\title{\LaTeX\ teljesen kezdõknek}
\author{Szerzõ János}
\date{1997. március 30.}


A dokumentum teste

Ez után következik maga a dokumentum, ami a \begin{document} és az \end{document} parancsok közti része a fájlnak. Logikailag három részre oszlik, az elsõ részben a cím, szerzõ, dátum, tartalomjegyzék, … kiírását szabályozzuk, a középrészbe kerül maga a mû, míg a harmadik részben gondoskodunk az indexek, irodalmi hivatkozások, … kiíratásáról. Például az elõbb megadott preambulum után cikkünk a következõ sorokkal folytatódhat:
\begin{document}
\maketitle


A dokumentum fejezetekre osztása

A fejezetek hierarchiájában az alábbi szintek adhatók meg: \part, \chapter (article esetén nem használható), \section, \subsection, \subsubsection, \paragraph, \subparagraph. (A letter osztályban egyik fenti parancs sem használható.) Ezek automatikus számozása elõre adott módon történik, de átprogramozható. A sorszám elnyomása a címben a parancs után tett * karakterrel érhetõ el a legegyszerûbben. Példa:
 \documentclass{article}
     ...
 \begin{document}
 \section{Elsõ fejezet címe}
     ...
   \subsection*{...}
       ...
      \subsubsection*{...}
         ...
 \section{...}
     ...
 \end{document}
Nagyobb dokumentumokat érdemes több külön fájlba írni, és a fõdokumentumba csak a fájlok neveit írni. Erre az \include parancs szolgál. Ha az egész dokumentumnak egy részét akarjuk csak újrafordítani, használjuk a \includeonly parancsot. Az alábbi példában szereplõ könyv 4 fejezetbõl áll, és most a harmadikat fordítjuk le. A fordítás a hivatkozások, indexek, oldalszámozás … elkészítése miatt a többi fejezeten is végighalad.
 \documentclass{book}
    \includeonly{fejezet3}
 \begin{document}
    \include{fejezet1}
    \include{fejezet2}
    \include{fejezet3}
    \include{fejezet4}
 \end{document}

Táblázatok

Táblázatok és mátrixok készítésére használható a
\begin{tabular}[pozíció]{oszlopok}
        a táblázat sorai
\end{tabular}
illetve
\begin{array}[pozíció]{oszlopok}
        a mátrix sorai
\end{array}
környezet. A pozíció opcionális értéke t (top) ill. b (bottom) lehet, ekkor a táblázat felsõ ill. alsó sora lesz illesztve a környezetéhez, egyébként pedig a középsõ. Az oszlopok az l (left), r (right), c (centered), p {szélesség}, | vagy || jelek sorozata lehet. Az l, r, c azt mondja meg, hogy a táblázat adott oszlopa balra, jobbra ill. középre legyen igazítva. A p{szélesség} azt írja le, hogy a szöveg milyen széles sorokba legyen szedve, a | és || pedig a függõleges elválasztó vonalak számát adja meg. Például az alábbi egyszerû táblázat az utána megadott kóddal kapható meg:
 
Bevétel: 100
Kiadás: 100000
\begin{tabular}{lr}
   Bevétel: & 100   \\
   Kiadás: & 100000
\end{tabular}

Kereszthivatkozások

Egy hely címkével való megjelölésére a \label{címke} parancs szolgál. E címké-vel megjelölt hely (pl. fejezet, képlet, ábra, táblázat, ...) sorszámát a \ref{címke} paranccsal lehet kiíratni, míg a hely oldalszámát a \pageref{címke} paranccsal. Ha egy szövegben kereszthivatkozások vannak, akkor kétszer kell fordítani (azaz kétszer kell futtatni a latex programot).

Irodalomjegyzék, hivatkozások

Könyvek, cikkek írásakor nagyon gyakran elõfordul, hogy valamely más könyvre, cikkre, monográfiára stb. kell hivatkoznunk. Ennek a szokásos módja a könyv, cikk végén elhelyezett irodalomjegyzék ill. hivatkozás lista. Ilyen listát a következõ formában tudunk megadni, közvetlenül a \end{document} utasítás elõtt.
\begin{thebibliography}{példa_név}
        \bibitem[név]{címke} hivatkozott mû
        ..........
 \end{thebibliography}
Az opcionális név paraméterrel lehet konkrét azonosítót megadni, pl. [Lamport_1994], ellenkezõ esetben a mû automatikus sorszámot kap. A LaTeX szövegben a \cite{címke} utasítással hivatkozhatunk a mûre. A hivatkozáslista neve book osztály esetén Irodalomjegyzék, article esetén Hivatkozások. (Lásd a fejezet végén szereplõ LaTeX példát.)

A szerencsétlen szerzõk általában több mûvet is írnak azonos témában, melyek hivatkozásai között igen nagy az átfedés. (Gyerekkori barátok, fõnökök, a cikk referensének mûveire illik hivatkozni.) A mezei megoldás az, hogy a hivatkozáslistánkat egyik LaTeX fájlból átmásoljuk egy másikba. A probléma ezzel az, hogy olyan mûvek is szerepelnek majd a listánkban amire nem is hivatkozunk. Egy másik kellemetlenség akkor adódik, ha két kiadó más-más formátumot ír elõ a hivatkozásokra. Ezen próbál segíteni a BIBTeX program.

Használatához létre kell hozni egy szöveges adatbázist melyben a következõ példához hasonló elemek vannak:

@BOOK{Kobayashi_I,
  author = {Kobayashi, Shoshichi and Nomizu, Katsumi},
  title = {Foundations of Differential Geometry},
  year = 1963,
  volume = {I},
  publisher = {Wiley Interscience, New York - London}
}
Az adatokat tartalmazó fájl szokásos kiterjesztése .bib. A hivatkozás a korábban említett módon történik pl. \cite{Kobayashi_I}. A thebibliography környezet helyett a
\bibliography{adatbázis_fájl_név}
\bibliographystyle{stílus}
parancsokat kell használnunk. A stílus lehet plain, unsrt, alpha ill. a kiadó vagy magunk által készített stílus. A fordításhoz elõször ki kell adni a >latex file, majd a >bibtex file és végül újra a >latex file parancsot. Az elsõ parancs hatására létrejön a file.aux fájl, ami a hivatkozási információkat tartalmazza. Ezt és az adatbázist felhasználva a bibtex létrehozza a file.bbl-t ami már a korábban említett formában hordozza a hivatkozáslistát. Végül a harmadik utasítással kerül a dvi fájlba a lista. Bõvebben lásd a BIBTeX dokumentációt.