Prijeđi na sadržaj

TeX

Izvor: Wikipedija
  TeX
Održavač: Donald Knut
OS:cross-platform
Žanr: typesetting
Licenca:slobodan softver
Vebsajt: tug.org

TeH (izgovara se tek ili teh) sistem je za obradu i prelom teksta na računaru.[1] 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.

Istorija

[uredi | uredi kod]

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.[2] Kada je Knut video galeriju dokaza njegove nove knjige 30. marta 1977. godine, našao je da strašno loše izgledaju.[3] U to vreme, Knut je video po 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.[4]

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.[5][6] Godine 1989. Donald Knut je objavio novu verziju TeX-a i METAFONT.[7] 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.[8] 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.[9] Takođe, METAFONT nakon verzije 2.0 asimptotski teži e, 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.[10]

Sistem za slaganje sloga

[uredi | uredi kod]

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.[11] 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.[12] 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.[13] 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

[uredi | uredi kod]
Uzorak stranica napravljena korišćenjem TeX-a sa LaTeX makroima

Jednostavan Zdravo svete program u Plain TeX izgleda:

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 device independent 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

[uredi | uredi kod]

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:

Šablon:Markup

Formula je štampana na način kao da je osoba pisala rukom, ili složila jednačinu u tekst. U dokumentu, ulazni deo 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.[14] 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:

Šablon:Markup

Novi aspekti

[uredi | uredi kod]

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

[uredi | uredi kod]
Matematički tekst složen korišćenjem TeX-a i AMS Euler fonta

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.[15][16] 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.[17] 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 po prvi put, novi parametri razmaka moraju biti jasno definisani.[18]

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.[19] Specifikacija OpenType math fonta se u velikoj meri oslanja na TeX, ali ima i neke nove karakteristike / poboljšanja.[20][21][22]

Podela reči na slogove na kraju reda i poravnanje

[uredi | uredi kod]

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.[23] 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 mogućih tačaka prekida broj situacija koje se moraju proceniti naivno je . Međutim, metodom dinamičko programiranje, složenost algoritma može se svesti na (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 . 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.[24] 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.[25][26]

Korišćenje TeX-a

[uredi | uredi kod]

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.[27] 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.[28][29][30]

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.[31]

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

Zajednica

[uredi | uredi kod]
TeX Users Group's logo

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

[uredi | uredi kod]

Reference

[uredi | uredi kod]
  1. Samardžić, A. LATEX za autore (strana 7.), Kompjuter biblioteka Čačak. 2003. ISBN 978-86-7310-277-1. pp.
  2. Knuth, Donald Ervin, „1. Commemorative lecture for the Kyoto Prize, Kyoto, 1996”, Digital Typography 
  3. Digital Typography. str. 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."
  4. Knuth, Donald Ervin, TEXDR.AFT [mrtav link]
  5. Knuth & Plass. str. 144
  6. Donald E. Knuth, Knuth meets NTG members, NTG: MAPS. 16 (1996), 38–49. Reprinted as Questions and Answers, III, chapter 33 of Digital Typography. str. 648.
  7. Donald E. Knuth. The New Versions of TeX and METAFONT, TUGboat 10 (1989), 325–328; 11 (1990), 12. Reprinted as chapter 29 of Digital Typography.
  8. „TeX 14 release”. Pristupljeno 20. 01. 2014. 
  9. Donald E. Knuth. The future of TeX and METAFONT, NTG journal MAPS (1990), 489. Reprinted as chapter 30 of Digital Typography. str. 571.
  10. Donald E. Knuth and Pierre MacKay. Mixing Right-to-Left Texts with Left-to-Right Texts, TUGboat 8 (1987), 14–25. Reprinted as chapter 4 of Digital Typography.
  11. Jeffrey, Alan (1990), „Lists in TeX's Mouth”, TUGboat 11 (2): 237–45 
  12. Knuth 1984: str. 9
  13. Plain TeX (source code), CTAN 
  14. Knuth 1984: str. 127, Ch. 16: Typing Math Formulas
  15. Slater, Robert (1989), Portraits in Silicon, MIT Press, pp. 349, ISBN 9780262691314 
  16. Syropoulos, Apostolos; Tsolomitis, Antonis; Sofroniou, Nick (2003), Digital Typography Using LaTeX, Springer, pp. 93, ISBN 9780387952178 
  17. Donald E. Knuth. Questions and Answers II, TUGboat 17 (1996). str. 355–367. Reprinted as chapter 32 of Digital Typography. str. 620–624.
  18. Donald E. Knuth. Typesetting Concrete Mathematics, TUGboat 10 (1989). str. 31–36. str. 342. Reprinted as chapter 18 of Digital Typography. str. 367–378.
  19. Ulrik Vieth (2001) Math typesetting in TEX: The good, the bad, the ugly
  20. High-Quality Editing and Display of Mathematical Text in Office 2007 – Murray Sargent: Math in Office
  21. LineServices – Murray Sargent: Math in Office
  22. http://www.ntg.nl/maps/38/03.pdf
  23. Barnett, Michael P (1965), Computer Typesetting: Experiments and Prospects, Cambridge, MA: MIT Press 
  24. Knuth & Plass 1981
  25. „Donald E. Knuth” (PDF), TUGboat (Advogato) 21: 103–10, 2000, arhivirano iz originala na datum 2009-01-22, pristupljeno 2018-04-22 
  26. „4.1 fmt: Reformat paragraph text”, Core GNU utilities (GNU coreutils) manual, GNU Project, 2016 
  27. Beebe: str. 10
  28. Knuth, Donald Ervin; MacKay, Pierre (1987), „Mixing Right-to-Left Texts with Left-to-Right Texts” (PDF), TUGboat 8: 14–25 . Reprinted as „Chapter 4”, Digital Typography 
  29. Knuth, Donald Ervin (1996), „Questions and Answers I”, TUGboat 17: 7–22 . Reprinted as „Chapter 31”, Digital Typography, pp. 598 
  30. Knuth, Donald Ervin (1996), „Questions and Answers II”, TUGboat 17: 355–67 . Reprinted as „Chapter 32”, Digital Typography, pp. 616–17 
  31. O'Connell, Heath (2000). „Physicists Thriving with Paperless Publishing”. arXiv:physics/0007040. 

Literatura

[uredi | uredi kod]

Spoljašnje veze

[uredi | uredi kod]