TeX

**TeH** (izgovara se *tek* ili *teh*) sistem je za obradu i prelom teksta na računaru. U osnovi ovog sistema leži METAFONT, jezik za opis fontova i slovni oblik *Computer Modern*. Njegov tvorac je Donald Knut, a prva stabilna verzija je realizovana 1978. godine. Njegova osnovna svrha je pisanje dokumenata, članaka i knjiga koje lepo izgledaju, strukturirano i jednostavno generišu tekst koji u sebi sadrži i druge štampane sadržaje sem običnog teksta, a tu se prvenstveno misli na naučne tekstove sa složenim matematičkim formulama i funkcijama kao i drugim simbolima. TeX je slobodan softver, i kao takav je dostupan širokom krugu korisnika.

TeX je popularan u akademskoj sferi, naročito kada su u pitanju matematika, kompjuterske nauke, ekonomija, inženjerstvo, fizika, statistika, i kvantitativna psihologija. U velikoj meri je rasprostranjen u Unix troff, drugom omiljenom sistemu za formatiranje teksta, u mnogim Unix instalacijama, i koristi se za različite namene. TeX je opšteprihvaćen kao najbolji način za slaganje složenih matematičkih formula, naročito kada se koristi u obliku LaTeX, ConTeXt ili nekog drugog paketa šablona, a danas se takođe koristi i za druge slovoslagačke poslove. Široko korišćen MIME type za TeX je `application/x-tex`. U okviru priprema sistema, njegovo ime je stilizovano kao TeX.

## Historija
Kada je 1968. godine objavljen prvi tom *[[The Art of Computer Programming]]* autora Donalda Knuta slaganje sloga je izvršeno hot metal typesetting, a podešeno na Monotype Corporation. Ova metoda, koja datira iz 19. veka, proizvela je "dobar klasični stil" cenjen od strane Knut-a. Kada je, 1976. godine, objavljeno drugo izdanje drugog toma cela knjiga morala je ponovo da prođe slaganje sloga pošto je Monotype tehnologija uveliko zamenjena phototypesetting, i originalni fontovi više nisu dostupni. Kada je Knut video galeriju dokaza njegove nove knjige 30. marta 1977. godine, našao je da strašno loše izgledaju. U to vreme, Knut je video prvi put izlaz digitalne pripreme sistema visokog kvaliteta, i zainteresovao se za digitalnu tipografiju. Razočaravajuća galerija dokaza dala mu je finalnu motivaciju da reši problem jednom za svagda i da za sve dizajnira sopstveni sistem za slaganje sloga. Dana 13.03.1977. godine, napisao je dopis samom sebi u kojem opisuje osnovne karakteristike TeX-a.

On je planirao da ga završi tokom odmora 1978. godine, ali se desilo da razvoj nije zamrznut i spreman za upotrebu sve do 1989. godine, više od deset godina kasnije. Desilo se da je Guy Stil posetio Stanford Univerzitet tokom leta 1978. godine, kada je Knut razvijao svoju prvu verziju TeX-a. Kada se te jeseni Stil vratio na Masačusetski tehnološki institut, prepisao je TeX ulaz/izlaz (I/O) da radi pod Incompatible Timesharing System (ITS) operativim sistemom. Prva verzija TeX je napisana u SAIL programming language i predviđena da radi na PDP-10 pod Stanford WAITS operativnim sistemom. Za kasnije verzije TeX-a, Knut je izmislio koncept literate programming, način da se proizvede kompaktibilni izvorni kod i umreženu dokumentaciju napisanu u TeX-u iz istog početnog fajla. Korišćen je jezik koji se zove WEB i proizvodi programe u DEC PDP-10 Pascal.

Nova verzija TeX, prepisana od nule i nazvana TeX82, objavljena je 1982. godine. Među drugim promenama, originalni algoritam za prelom reči na kraju reda je zamenjen novim algoritmom koji je napisao Frank Liang. Takođe, TeX82 koristi fixed-point arithmetic umesto floating-point, kako bi se osigurala reproduktivnost rezultata u različitim računarima, i uključuje pravu Turing-complete programskog jezika, nakon intenzivnog lobiranja od strane Guy Steele. Godine 1989. Donald Knut je objavio novu verziju TeX-a i METAFONT. Uprkos želji da zadrži program stabilnim, Knut je shvatio da 128 različitih karaktera za unos teksta nije dovoljno da primi druge jezike sem engleskog; stoga je glavna promena u verziji 3.0 sposobnost TeX-a za rad sa 8-bitnim ulazom, dozvoljavajući 256 različitih znakova unosa teksta.

Od verzije 3, TeX se koristio karakterističnim numeričkim sistemom za označavanje verzije, gde su dopune označene dodavanjem ekstra cifre na kraju decimale, tako da broj verzija asimptotski teži . To je odraz činjenice da je TeX sada veoma stabilan, a samo su male ispravke predviđene. Trenutna verzija TeX-a je 3.14159265; poslednji put je ažuriran 2014-01-12. Dizajn je zamrznut nakon verzije 3.0, nove karakteristike ili fundamentalne promene neće biti dodavane, tako da će sve nove verzije sadržati samo bug fixes. Iako je sam Donald Knut predložio nekoliko oblasti u kojima bi se TeX mogao poboljšati, on je naveo da čvrsto veruje da ima nepromenjen sistem koji će proizvesti isti izlaz sada i u budućnosti, što je važnije od uvođenja nove funkcije. Iz tog razloga on je izjavio da je "apsolutno konačna promena (da se učini nakon moje smrti)" da se promeni broj verzije na , i u tom trenutku sve preostale greške će postati karakteristike. Takođe, METAFONT nakon verzije 2.0 asimptotski teži , i slične promene će biti primenjene nakon Knutove smrti.

Pošto je izvorni kod TeX-a u suštini u javnom domenu (vidi dole), drugim programerima je dozvoljeno (i izričito se podstiču) za poboljšanje sistema, ali je potrebno da koristite drugi naziv za distribuciju modifikovanog TeX-a, što znači da u izvorni kod mogu dalje razvijati. Na primer, omega projekat je razvijen posle 1991. godine, prvenstveno za poboljšanje Tek za višejezične pripremne sposobnosti. Knut je razvio "nezvaničnu" modifikovanu verziju, kao što je TeX-XeT, koji omogućava korisniku mešovite tekstove napisane leva na desno i sa desna na levo u pisanoj formi, a u istom dokumentu.

## Sistem za slaganje sloga
TeX komande obično počinju sa backslash i grupisane su u vitičastim zagradama. Skoro sve sintaksne osobine TeX-a se mogu menjati u hodu, što TeX ulaz čini teškim za analizu osim samog TeX-a. TeX je macro- i token-based language: mnogo komandi, uključujući i one koje definiše korisnik, je prošireno u hodu, a samo su izvršni neproširivi tokeni ostali. Zbog toga je samo proširenje praktično bez sporednih efekata. Tail recursion makroi ne zauzimaju prostor memorije, a if-then-else konstrukcije su na raspolaganju. Ovo čini da je TeX Turing-complete jezik čak i na nivou proširenja. Sistem se može podeliti u četiri nivoa: u prvom, karakteri se čitaju iz ulaznog fajla i dodeljen im je kod kategorije (ponekad se naziva "catcode", skraćeno). Kombinacija backslash (zapravo, bilo koji znak od nulte kategorije) zatim slova (karakteri kategorije 11) ili nekog drugog karaktera zamenjuje kontrolni znak sekvence. U tom smislu, ova faza je kao leksičke analize, iako ne formira brojeve iz cifara. U narednoj fazi, sa mogućnošću proširenja kontrolne sekvence (kao što su uređaja ili definisanim makroima) su zamenjeni njihovim tekstom. Ulaz za treću fazu je tada tok znakova (uključujući i one sa posebnim značenjem) i unexpandable kontrolne sekvence (obično zadatke i vizuelne komande). Sada se karakteri montiraju u paragrafu. TeX-ov algoritam za prelom paragrafa radi tako što optimizuje tačku preloma za ceo paragraf. Četvrta faza prekida vertikalnu listu linija i drugog materijala u okviru jedne strane.

TeX ima precizno znanje o veličinama svih znakova i simbola, kao i načina na koji koristi ove informacije, i načina na koji izračunava optimali raspored slova po redu i redova po strani. Na kraju proizvodi DVI fajl ("DeVice Independent") koji sadrži konačne položaje svih znakova. Ovakav `*.dvi` fajl može biti štampan direktno na odgovarajući štampač, ili može biti konvertovan u drugi format. Danas se često koristi pdfTeX, kojim se potpuno zaobilazi DVI. Osnovni sistem razume oko 300 komandi, koje se zovu *primitives*. Ove komande su niskog nivoa i retko se koriste od strane korisnika, a većina njih obezbeđuje funkcionalnost formata datoteka (predumped memory images of TeX after large macro collections have been loaded). Knutov originalni podrazumevani format, sa dodatnih 600 komandi je Plain TeX. Najrasprostranjeniji format je LaTeX, prvobitno razvijen od strane Leslie Lamport, koji obuhvata stilove dokumenata za knjige, pisma, sjaldove, itd, i dodaje podršku za referenciranje i automatsko numerisanje poglavlja i jednačina. Još jedan format koji je u širokoj upotrebi je AMS-TeX, koji je proizveden od strane Američkog matematičkog društva i pruža mnogo više user-friendly komandi, kojima se može izmeniti časopis na način da se uklopi sa stilom njihove izdavačke kuće. Većina karakteristika AMS-TeX može se koristiti u LaTeX pomoću AMS "paketa". Ovo se naziva AMS-LaTeX. Drugi formati uključujući ConTeXt, pre svega se koriste za stono izdavaštvo i većinom su napisani od strane Hans Hagen na Pragma.

### Kako TeX radi

Jednostavan Zdravo svete program u Plain TeX izgleda:


```latex
Zdravo, Svete
\bye % marks the end of the file; not shown in the final output
```


Ovo može biti u datoteci *myfile.tex* jer je * .tex * uobičajena ekstenzija za obične TeX datoteke. Po default, sve što sledi je znak za procenat na liniji za komentar, i to je tekst koji TeX ignoriše. Pokrećući na ovom fajlu (na primer, kucajući tex myfile.tex u command-line interpreter, ili pozivajući ga iz grafičkog korisničkog interfejsa) stvoriće se izlazni fajl pod nazivom *myfile.dvi*, koji predstavlja sadržaj stranice u **d**e**v**ice **i**ndependent formatu (DVI). DVI fajl može sada biti gladan na ekranu monitora ili konvertovan u odgovarajući format za bilo koji od različitih štampača čiji device driver postoji (podrška za štampač uglavnom nije karakteristika operativnih sistema u vreme kada je stvorena TeX). Knut je rekao da ne postoji ništa inherentno u TeX-u što zahteva DVI kao izlazni format, a kasnije Tex verzije, pre svega pdfTeX, XeTeX i LuaTeX, daju podršku direktno u PDF.

### Primer matematičke formule

Posebno za matematičke formule TeX nudi drugačiju tekstualnu sintaksu. Na primer, kvadratna jednačina (čije je rešenje kvadratna formula) pojavljuje se kao:

Formula je štampana na način kao da je osoba pisala rukom, ili složila jednačinu u tekst. U dokumentu, ulazni deo *[[TeX#math mode|matematički model]]* se vrši počevši sa $ simbolom, zatim se unosi formula u TeX sintaksi, i zatvara sa drugim istim simbolom sa kojim je otvorena. Knut je u šali objasnio da je izabrao znak dolar da ukaže na početak i kraj matematičkog moda u plain TeX-u jer je slaganje sloga i matematičkih formula tradicionalno trebalo da bude skupo. *Display mathematics* (matematička formula predstavljena u centru novog reda) je slična predhodnom primeru ali koristi $$ umesto jednog $ simbola. Na primer, gornja kvadratna formula predstavljena na matematički način je:

## Novi aspekti
Softver TeX-a obuhvata nekoliko aspekata koji nisu bili dostupni, ili su nižeg kvaliteta u, drugim programima za pripremu teksta u vreme kada je TeX objavljen. Neke od novina su bazirane na osnovu zanimljivih algoritama, a dovele su do nekoliko teza koje su objavili Knutovi studenti. Dok su neka od ovih otkrića sada uključena u druge programe za slaganja sloga, drugi, kao što su pravila za matematički razmak, su još uvek jedinstveni.

### Matematički razmak

Pošto je osnovni cilj TeX jezika kvalitetna priprema za izdavače knjiga, Knut je posvetio veliku pažnju razmacima i pravilima za matematičke formule. On je radio na tri rada koji se smatraju standardima izvrsnosti matematičke tipografije: složio je slog za knjige izdavačke kuće Addison-Wesley Publishing's (koja je štampala knjigu *The Art of Computer Programming*), a naročito rad od Hans Wolf i Joseph Louis Lagrange (termodinamičke inovacije, +1856); izdanja matematičkog žurnala *[[Acta Mathematica]]* koji datira iz perioda oko 1900. godine; i kopiju *[[Indagationes Mathematicae]]*, Holandskog matematičkog časopisa. Knut je pažljivo pogledao ove štampane radove da bi sortirao i pronašao najbolji skup pravila za razmak. Dok TeX daje neka osnovna pravila i alate potrebne da odredite odgovarajuće razmak, tačni parametri zavise od fonta koji se koristi za pisanje formule. Na primer, razmak za Knutov font Computer Modern je precizno i fino podešen tokom godina, a sada je i postavljen; ali kada se drugi fontovi, kao što su AMS Euler, koriste prvi put, novi parametri razmaka moraju biti jasno definisani.

Priprema sloga za matematičke formule u TeX-u nije bez kritike, naročito u vezi sa tehničkim detaljima pokazatelja fonta, koji su dizajnirani u eri kada je značajna pažnja posvećena zahtevima za skladištenje. To je dovelo do nekih "hacks" preopterećenja u nekim oblastima, što je zauzvrat dovelo do zahteva za drugim "hacks". Na nivou estetike, takođe je kritikovano osvežavanje teksta. Specifikacija OpenType math fonta se u velikoj meri oslanja na TeX, ali ima i neke nove karakteristike / poboljšanja.

### Podela reči na slogove na kraju reda i poravnanje
U poređenju sa ručnim pripremama, problem poravnanja je lako rešiti u digitalnom sistemu kao što je TeX, koji, pod uslovom da su obezbeđeni dobri primeri za prelom reda, može automatski širiti razmak između reči da popuni prostor do kraja reda. Problem je, dakle, da se pronađe skup kontrolnih tačaka koje će dati najviše vizuelno prijatan rezultat. Mnogi algoritmi za podelu reči na kraju reda koriste ''first-fit'' approach, gde su utvrđene tačke prekida za svaku liniju jedna za drugom, a ne dozvoljavaju da se tačka prekida menja pošto je se izabrana. Takav sistem nije u stanju da definiše tačku prekida u zavisnosti od efekta koji će imati na sledećim linijama. Poređenja radi, *ukupan-fit* algoritama za razbijanje linija koji koristi TeX, a koji je razvijen od strane Donalda Knuta i Michael Plass razmatra *sve* moguće tačke prekida u pasusu, i potom nalazi optimalnu kombinaciju linije prekida koji će proizvesti najviše globalno prijatan aranžman.

Formalno, algoritam definiše vrednost pod nazivom *loše* koja je povezana sa svakim mogućim prelomom linije; loše se povećava ukoliko se mesta na liniji moraju da protežu ili previše smanjuju da bi linija zadržala tačnu širinu. Kazne se dodaju ako je prelomna tačka posebno nepoželjna: na primer, ako se mora crticom podeliti reč, ako su dve linije za redom prelomljene na slogove na kraju reda, ili ako je vrlo labava linija posle koje odmah sledi veoma kratka linija. Ako paragraf sadrži n mogućih tačaka prekida broj situacija koje se moraju proceniti naivno je 2^n. Međutim, metodom dinamičko programiranje, složenost algoritma može se svesti na O(n^2) (vidi Veliko O notacija). Dalja pojednostavljenja (na primer, ne testiraju veoma verovatnu tačku prekida kao što je rastavljanje u prvoj reči na stav), dovode do efikasnog algoritma čiji je pokrenut vreme je gotovo uvek reda n. Sličan algoritam se koristi za određivanje najboljih načina da se prekine paragraf preko dve strane, kako bi se izbeglo udovice ili siročad (linije koje se pojavljuju samo na stranici dok je ostatak paragrafa je na sledećoj ili prethodnoj strani). Međutim, generalno, teza od Michael Plass pokazuje kako je problem preloma strane može biti NP-complete zbog dodatnih komplikacija postavljanja figura. TeX je usvojio nekoliko drugig programa za stvaranje algoritma za prelom linije, kao što su Adobe InDesign (a desktop publishing application) i GNU fmt Unix korisnost komandne linije.

## Korišćenje TeX-a
U nekoliko tehničkih oblasti, kao što su informatika, matematika, inženjerstvo i fizika, TeX je postao de fakto standard. Brojni magazini, žurnali i listovi u ovim oblastima su proizvedeni upotrebnom TeX-a ili LaTeX-a, omogućavajući autorima da pošalju svoje sirove rukopise napisane u TeX-u. Mnoge publikacije u drugim oblastima, uključujući rečnike i pravne publikacije, koje su proizvedene koristeći TeX, nisu bile tako uspešne kao u više tehničkim oblastima, jer TeX je prvenstveno namenjen matematici. Kada je dizajnirao TeX, Donald Knut nije verovao da bi jedan sistem za slaganje sloga odgovarao potrebama svih; umesto toga, on je dizajnirao mnoge kukice unutar programa tako da je bilo moguće pisati proširenja, i objavio je izvorni kod, nadajući se da će izdavači prilagoditi dizajn njihovim potrebama. Dok su takvi dodaci stvorani (uključujući i neke dodatke od strane samog Knuta), većina ljudi će povećati TeX samo pomoću makroa i to je ostao sistem povezan sa tehničkim pripremama.

Moguće je koristiti TeX za automatsko generisanje sofisticiranog rasporeda kada su u pitanju XML podatci. Razlike u sintaksi između dva opisa jezika može da se prevaziđe uz pomoć TeXML. U kontekstu XML objavljivanja, TeX se na taj način može smatrati kao alternativa za XSL-FO. TeX dozvoljava da se naučni radovi u matematičkim disciplinama svodu na relativno male fajlove, koje bi mogle biti izrečene na strani klijenta, što omogućava potpuno slaganje sloga u naučnim radovima koji se razmenjuju preko ranog Interneta, čak i kada slanje velikih datoteka bilo teško. Ovo je utrlo put za stvaranje spremišta naučnih radova, kao što su arXiv, kroz koje radovi mogu biti 'objavljeni' bez posrednika izdavača.

Moguće je ubaciti TeX formule u MedijaViki stranice koristeći `<math>` oznaku.

## Zajednica

Značajna lica u TeX zajednici uključujući TeX Users Group, koja izdaje TUGboat i *[[The PracTeX Journal]]*, pokrivaju širok spektar tema iz digitalne tipografije od značaja za TeX. Deutschsprachige Anwendervereinigung TeX je najveća korisnička grupa u Nemačkoj. TeX Users Group je osnovana 1980. godine u obrazovne i naučne svrhe, i nudi organizaciju za one koji imaju interes za tipografiju i dizajn fonta, a pri tome su korisnici TeX sistema za slaganje sloga koji je izumeo Donald Knut. TeX Users Group zastupa interese TeX korisnika širom sveta. TeX Users Group objavljuje časopis TUGboat tri puta godišnje. tex.stackexchange.com je aktivna lokacija za pitanja i odgovore kako za nove tako i za iskusne TeX korisnike podjednako.

## Povezano
* LaTeX

## Reference

## Literatura

* 
* .
* . The source code of the book in TeX (and a needed set of macros [ftp://tug.ctan.org/pub/tex-archive/systems/knuth/dist/lib/manmac.tex]) is available online on CTAN. It is provided only as an example and its use to prepare a book like The TeXbook is not allowed.
* . The full source code of TeX; also [ftp://tug.ctan.org/pub/tex-archive/systems/knuth/dist/tex/tex.web available] on CTAN. Being written using literate programming, it contains plenty of human-readable documentation.
* .
* . Reprinted as .
*  contains extensive documentation about the algorithms used in TeX.
* .
* .
* .
*  on AMS-TeX.
* .

## Vanjske veze

* .
* 
* .
* .
* .
* 
* .
* . Knuth discusses software patenting, structured programming, collaboration and his development of TeX. The oral history discusses the writing of *[[The Art of Computer Programming]]*.
* Eijkhout, Victor. ''TeX by Topic'' 
* [ftp://ftp.gwdg.de/pub/ctan/info/impatient/book.pdf *TeX for the Impatient*] 
* Walsh, Norman. ''Making TeX Work''
* TeX Reference Manual via Google Book Search
* Knuth tells the story of TeX's creation link to the first clip in the series.
* Knuth lectures on TeX   – Filmed in the 1980s, Stanford university.
* Knuth declares TeX obsolete, unveils successor at TUG 2010
* What’s new since TEX?