TeX

A TEX (ejtsd: tekh) vagy egyszerű formában TeX egy betűszedő rendszer, amelyet Donald E. Knuth készített. Főleg tudományos körökben népszerű, különösen a matematikai, fizikai és informatikai közösségekben.

A név a görög technê-ből ered, ezért az X (ami valójában egy nagybetűs khí) kiejtése a "technika" „ch”-jához hasonló.

A betűtípusleíró Metafont nyelvvel és a Computer Modern betűtípuscsaláddal egyetemben a TeX két célt tartott szem előtt: bárkinek megadni a magas színvonalú könyvek létrehozását észszerű mennyiségű munkával és egy olyan rendszer létrehozását, amely minden jelenkori és jövőbeli gépen ugyanolyan teljesítményű.

Általános vélemény szerint a TeX a legmegfelelőbb módja a matematikai képletek szedésének. A TeX magasabb szinten is népszerű, gyakorta használják a matematikában, számítástechnikában, közgazdaságtanban, mérnöki munkákban, fizikában és statisztikában. Számos Unix környezetben lecserélte a régi kedvenc troff formátum-nyelvet. A LaTeX (és egyéb sablon-nyelvek) megjelenése óta számos más szedési feladathoz is használják.

A TeX számára az általánosan elterjedt mime típus a application/x-tex.

Története 
Amikor Donald Knuth megírta a Számítógép-programozás művészete (The Art of Computer Programming) című könyvét, az 1969-es első kiadást Knuth elfogadta és szerinte "jó, ízléses stílusú" volt. Az 1976-os 2. kiadásnál azonban az előző könyvnél használt eljárás helyett egy újabbat használtak, a régi betűtípust lecserélve, amivel elégedetlen volt. Ebben az időben látta először egy magas minőségű digitális betűszedő rendszer kimenetét, amelynek hatására elkezdett a digitális betűszedés iránt érdeklődni. Az elkeserítő előzetes változatok után eldöntötte, hogy megírja saját digitális betűszedő programját. 1977. május 13-án írta le kezdetleges funkcióit egy emlékeztetőben. Eredetileg az 1978-as szabadságában akarta befejezni, ám véglegesítve csak 1989-ben lett.

A TeX első változatát SAIL nyelven készítette ami PDP-10-es számítógépeken futott a Stanford Egyetemen, WAITS operációs rendszer alatt. A TeX későbbi változatai számára Knuth megalkotta a literate programming  fogalmát: a módszert, hogy lefordítható forrásprogramot és jó minőségű, kereszthivatkozásokkal ellátott dokumentációt (mely természetesen TeX-hel szedendő) állítson elő ugyanazon forrásfile alapján. A nyelv neve WEB volt és Pascal nyelvű programokat állított elő.

A TeX új, nulláról újraírt verzióját TeX82 néven 1982-ben adta ki. Ebben többek között az elválasztó algoritmust egy újjal helyettesítette. Emellett a TEX82 fixpontos számábrázolást használ, amely segítségével különböző hardvereken egyaránt lefut.

A TeX egyes verzióinak egyedi számozása van. A hármas változattól kezdve a frissítéseket mindig egy újabb szám hozzáfűzése jelzi, melynek eredményeképp a verziószám aszimptotikusan közelít π-hez. A jelenlegi verziószám 3.141592. Ez is mutatja, hogy a TeX valójában az egyik legstabilabb program, melyet ismerünk, és csak apró frissítések várhatóak. Knuth kimondta, hogy „az abszolút utolsó változtatás (halálom után)” az lesz, hogy a TeX verziószáma π értékű lesz, mely ponton minden maradék hiba a program tulajdonságává (nem pedig hibájává) válik. Ez hasonló, mint ahogy a METAFONT az e-hez tart.

Betűszedő rendszer
A TeX parancsok visszafele perjellel (\) kezdődnek és kapcsos zárójelek ({}) között vannak csoportosítva. Mindazonáltal a TeX szinte minden beállítása menet közben változtatható, amelynek hatására az nehezen értelmezhető a TeX-en kívül. A TeX makró- és tokenalapú nyelv, a legtöbb parancsot, a felhasználó által definiáltakat is addig bővítik menet közben, amíg csak tokenek maradnak. A makrók véghívása (tail call) nem igényel memóriát és elérhetők a ha-akkor-amúgy (if-then-else) szerkezetek.

A rendszer négy szintre osztható: először is, beolvassa a karaktereket és ad nekik egy kategóriakódot (category code, néha catcode). A visszafele perjel (és minden nullás kategóriájú karakter), amelyeket betűk (11-es kategória) vagy egyéb egyedül levő karakter követnek egy utasítássorozattal lesznek helyettesítve. Ezután a makrókat és a feltételeseket a helyettesítőszövegükre cserélik. A harmadik fázis bemenete egy karakterfolyamból (beleértve a speciális jelentésűeket) és nem-növelhető parancssorozatokból (tipikusan hozzárendelések és vizuális parancsok) áll. Itt a szöveg bekezdésekre lesz tagolva. A negyedik fázisban pedig oldalakra tagolja.

A TeX rendszer precízen ismeri a betűk és szimbólumok méretét és ennek felhasználásával kiszámítja a lapok, a laponkénti sorok és a soronkénti karakterek optimális számát. Kimenete DVI (DeVice Independent, magyarul eszközfüggetlen) formátumú fájl, benne a karakterek végső helyeivel. Ez a DVI fájl közvetlenül elküldhető a nyomtatónak vagy más formátummá alakítható. Manapság gyakorta használják a PDFTeX-et, amely megkerüli a DVI-generálást teljes mértékben.

Az alap TeX-rendszer körülbelül 300 parancsot tud értelmezni. Mindazonáltal az alacsony szintű parancsokat ritkán használják a felhasználók közvetlenül. Knuth eredeti formátuma, a Plain TeX körülbelül 600 parancsot ad hozzá (elérhető a CTAN-ról). A leggyakrabban használt formátum a LaTeX, melyet eredetileg Leslie Lamport fejlesztett ki és támogatja a könyveket, leveleket, diákat stb. Emellett a referenciáknak és az egyenletek automatikus számozásának támogatását is bevezeti. Másik széleskörűen használt formátum az AMS-TeX, melyet az American Mathematical Society fejleszt és több felhasználóbarát parancsot is hozzáad, melyek módosíthatók például újságok által, amely ezáltal illeszkedik stílusukhoz. Az AMS-TeX legtöbb szolgáltatása használható LaTeX-ben az AMS "csomagokkal".

A TeX futtatása

Egy példa „Helló, világ!” program :

Hello, World
\bye % a fájl végét jelöli, nem része a kimenetnek
Ez például lehet egy myfile.tex fájlban, mivel .tex gyakori fájlkiterjesztése a sima TeX fájloknak.

Alapesetben minden, ami egy százalék jelet (%) követ, megjegyzésként lesz kezelve és nem fut le. Ezáltal ezen fájlon a TeX futtatásával (például a tex myfile.tex parancs parancssori begépelésével vagy egy grafikus felhasználói felületről indítva) egy DVI fájltípusú kimenet lesz. A DVI fájlok megtekinthetők a képernyőn avagy konvertálhatók megfelelő nyomtatókra, ahol illesztőprogram van hozzá (a nyomtatók támogatása általánosságban nem volt operációs rendszer-szintű, amikor a programot létrehozták).

Knuth azt mondta, hogy nem volt semmi velejárója annak, hogy a TeX a DVI-be mentett, továbbá a TeX újabb verziói, a pdfTeX, a XeTeX és a luaTeX már mind támogatják a közvetlen PDF-be való mentést.

Matematikai példa
A TeX a matematikai formulák számára külön szintaxist biztosít. Például a másodfokú egyenlet megoldóképlete TeX-ben:

A megoldóképlet $-b \pm \sqrt{b^2 - 4ac} \over 2a$
\bye

amely így néz ki:

A képlet úgy jelenik meg, ahogy egy ember kézzel lerajzolná azt avagy ahogy betűszedéssel létrehozná. Egy dokumentumban a matematikai módba lépést a $ jellel való kezdés jelzi, amelyet ezután a megfelelő szintaxissal beírt képlet követ, majd újból a $ jel. A megjelenített matematika (olyan képlet, amely új sorban, középre rendezve található) hasonló, csak $ helyett $$-t használ. Így például az előző megoldóképlet:

A megoldóképlet $$-b \pm \sqrt{b^2 - 4ac} \over 2a$$
\bye

így renderelődik:

Érdekességek 
Donald Knuth pénzbeli díjakkal jutalmazta azokat, akik hibát találtak a TeX-ben, és jelentették. A díj 2,56 dollárral kezdődött, és minden évben duplájára nőtt, amíg el nem érte a jelenlegi 327,68 dolláros összeget. Ez azonban nem tette szegénnyé Knuthot, mivel elég kevés hibát találtak a programban. Amúgy általában ezeket a csekkeket nem beváltani, hanem bekeretezni szokták, hogy bizonyítsák, hibát találtak a TeX programban.

Knuth egyszer elmagyarázta, hogy azért választotta a dollárjelet a matematikai mód jelölésére a plain TeX-ben, mert a matematikai betűszedést hagyományosan nagyon drágának tartották.

Megjegyzések

Hivatkozások

Fordítás

További információk 
 A MathML, az OpenMath és a TEX összehasonlítása 
 TeX Felhasználók Szervezete (TUG, TeX Users Group) 
 Átfogó TeX Archívumhálózat (CTAN, Comprehensive TeX Archive Network) 
 Donald E. Knuth: The TeXbook A teljes könyv TeX forráskódja

Kapcsolódó szócikkek 
 MiKTeX

TeX