TeX
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
.
Története
[szerkesztés]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.
Betűszedő rendszer
[szerkesztés]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".
A TeX futtatása
[szerkesztés]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
[szerkesztés]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
[szerkesztés]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]
Megjegyzések
[szerkesztés]- ↑ A Wikipédia is ezen nyelv segítségével állítja elő matematikai kifejezését, ld. még: Wikipédia:Képletleíró nyelv.
Hivatkozások
[szerkesztés]- ↑ https://www-cs-faculty.stanford.edu/~knuth/abcde.html, https://mirror.kumi.systems/ctan/systems/knuth/dist/tex/tex.web
- ↑ Alexia Gaudeul (2006. március 27.). „Do Open Source Developers Respond to Competition?: The (La)TeX Case Study” (angol nyelven).
- ↑ Yannis Haralambous. Fonts & Encodings (Translated by P. Scott Horne). Beijing; Sebastopol, Calif: O’Reilly Media, 2007, pp. 235.
- ↑ Donald E. Knuth. Digital Typography. Commemorative lecture for the Kyoto Prize, Kyoto, 1996. Reprinted as chapter 1 of the book Digital Typography.
- ↑ Digital Typography, p. 5. "I had spent 15 years writing those books, but if they were going to look awful I didn't want to write any more."
- ↑ Donald E. Knuth. TEXDR.AFT, chapter 24 of the book Digital Typography.
- ↑ Donald E. Knuth. The future of TeX and METAFONT, NTG journal MAPS (1990), 489. Reprinted as chapter 30 of Digital Typography, p. 571.
- ↑ Alan Jeffrey. Lists in TeX's Mouth, TUGboat 11:2 (1990), 237–245.
- ↑ The TeXbook, p. 9.
- ↑ Kara Platoni, Love at First Byte Archiválva 2006. szeptember 25-i dátummal a Wayback Machine-ben. Stanford Magazine, May-June 2006
- ↑ The History of TeX
- ↑ Donald E. Knuth, The TeXbook, Ch. 16: Typing Math Formulas, p. 127.
Fordítás
[szerkesztés]- Ez a szócikk részben vagy egészben a TeX című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
További információk
[szerkesztés]- A MathML, az OpenMath és a TEX összehasonlítása (magyarul)
- TeX Felhasználók Szervezete (TUG, TeX Users Group) (angolul)
- Átfogó TeX Archívumhálózat (CTAN, Comprehensive TeX Archive Network) (angolul)
- Donald E. Knuth: The TeXbook A teljes könyv TeX forráskódja