TeX | |
![]() | |
Fejlesztő | Donald Knuth |
Első kiadás | 1978 |
Legfrissebb stabil kiadás | 3.141592653 (stabil verzió, 2021. január)[1] |
Programozási nyelv | Eredetileg WEB |
Operációs rendszer | multiplatform |
Állapot | aktív |
Kategória | betűszedés |
A TeX weboldala |
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ű.[2]
Általános vélemény szerint a TeX a legmegfelelőbb módja a matematikai képletek szedésének.[mj 1][3] 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
.
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.[4][5] 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.[6] 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.[7] Ez hasonló, mint ahogy a METAFONT az e-hez tart.
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.[8]
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.[9] 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".
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.
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:
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.[10][11]
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.[12]