TeX

thumb|Logo programu TeX

**TeX** je počítačový program určený na sadzbu dokumentov, ktorý vytvoril profesor Donald Knuth a kompletne ho zdokumentoval v knihách *The TeXBook* a *Tex: The program*. Program vyniká vysokou kvalitou matematickej sadzby, a preto je známy najmä v akademickom prostredí.

TeX sa vyslovuje *[tech]*, v anglicky hovoriacich krajinách niekedy *[tek]*, pretože pôvod názvu programu je v gréčtine — τεχ — posledný znak je písmeno chí. Názov vznikol z prvých troch písmen slova τεχνη, v preklade umenie.

## História
Keď Donald Knuth vydal v roku 1969 prvý diel svojej knihy *[[The Art of Computer Programming]]*, bol s kvalitou sadzby, ktorá bola vytvorená ešte na strojoch Monotype, spokojný. 

Pri druhom vydaní druhého dielu knihy bola už technológia Monotype úplne nahradená rýchlejšou, no menej kvalitnou fotosadzbou a sadzači do knihy zaniesli viaceré chyby. Knuth sa preto rozhodol vytvoriť program, ktorý by mu umožnil vysádzať knihu svojpomocne. Predpokladal, že prácu na programe dokončí v roku 1978, ale trvalo to viac ako o 10 rokov dlhšie. 

Prvá verzia TeXu bola vytvorená v programovacom jazyku SAIL. Pre ďalšie verzie programu vytvoril jazyk WEB, ktorý integruje dokumentáciu programu a jeho kód v jazyku Pascal (tzv. *literate programming* — dokumentované resp. kultivované programovanie).

V roku 1989 uvoľnil Knuth program TeX 3.0, v ktorom bolo použité 8-bitové kódovanie znakov, kým predošlé verzie (1.0 a 2.0) používali pre väčinu jazykov nedostatočné 7-bitové kódovanie.
Kód TeXu je od verzie 3.0 zmrazený (feature freeze) a jediné povolené úpravy sú opravy chýb. Od tejto verzie sa tiež zmenil spôsob značenia jednotlivých verzií — každá novšia verzia programu TeX má o jednu cifru čísla pí viacej (3.1 → 3.14 → 3.141 atď.). Knuth si želá, aby po jeho smrti bol program úplne zmrazený a označoval sa ako *TeX, version π* (pí) — symbol dokonalosti. Chyby nájdené v tejto verzii budú označené ako vlastnosti programu. Aktuálna verzia TeXu je 3.141592. Knuth vytvoril aj program Metafont na dizajn písma a navrhol v ňom klasicistické písmo *[[Computer Modern]]*. 

Program TeX je voľné dielo, hoci jeho logo je ochrannou značkou Americkej matematickej spoločnosti. To znamená, že každý má právo ho ľubovoľne upravovať a meniť, ale takto upravený program už nesmie byť šírený pod menom TeX. Príkladom je program CsTeX, prispôsobený sadzbe českých a slovenských textov.

## Jazyk TeXu

Pre vysadzanie dokumentu v programe TeX musíme samotný text doplniť značkami (t. j. príkazmi), ktoré upravia jeho formátovanie. Každý príkaz začína znakom „\“ (spätná lomka), ak príkaz má argument, uzatvorí sa ten do množinových zátvoriek. 

Používateľ si môže vytvárať vlastné príkazy, tzv. makrá, ktoré sú najväčšou devízou programu TeX a robia jeho jazyk veľmi mocným. Čistý program TeX má implementovaných približne 300 základných príkazov (tzv. primitíva), z ktorých sú zložené všetky ostatné príkazy — makrá. Keďže práca s primitívami je náročná, pretože sú príliš všeobecné, používa sa nad TeXom veľká skupina makier, ktoré sa nazývajú *formát*. 

Prvý formát (súbor makier) vytvoril sám Knuth súbežne s programom TeX a nazval ho plaintex. Doteraz vzniklo množstvo formátov (ConTeXt, AMSTeX, AMSLaTeX), najviac rozšírený je LaTeX od Leslieho Lamporta, ktorý obsahuje veľmi veľké množstvo makier.

## Vlastnosti

Program TeX obsahuje veľmi prepracované algoritmy pre klasickú aj matematickú sadzbu. V mnohých aspektoch (napr. riadkový zlom) nebol tento algoritmus doteraz prekonaný. K vysokej kvalite výstupov TeXu prispieva aj to, že program nepracuje interaktívne (nie je WYSIWYG), ale dávkovo — spracúva celý zdrojový text naraz. 

Princíp zalamovania riadkov a strán spočíva v tom, že TeX vytvorí mnoho variánt zlomu odseku, ohodnotí ich pomocou tzv. penált (na základe šírky medzier, počtu delení slov atď.) a napokon vysadí len odsek, ktorý získal najmenšiu penaltu. 

thumb|330px|Matematické vzorce písané fontom AMS Euler v programe TeX
Medzery v matematických vzorcoch sa riadia špeciálnymi pravidlami. Jednotlivé matematické znaky sú zaradené do rôznych kategórií (bin, ord, rel atď.) a podľa toho sú medzi nimi programom vkladané medzery rozličnej šírky. Na sadzbu matematických vzorcov používa TeX aj Wikipédia.

Vďaka makrám je možné v TeXu vysadiť takmer všetko — s vhodnými makrami možno vytvoriť šachové diagramy, notové partitúry, prezentácie.

## Príklady

Klasický program *[[Hello, world!]]* vytvoríme v TeXu (presnejšie vo formáte plaintex) pomerne jednoducho. Najprv musíme v textovom editore (napr. Vim, Emacs, Notepad) pripraviť zdrojový súbor „hello.tex“ s obsahom:

```
Hello, world!
\bye % značí TeXu koniec vstupného súboru
```

Pre spracovanie už len v príkazovom riadku napíšeme 

```
tex hello.tex
```

Výsledkom tohto príkazu bude súbor hello.dvi, ktorý bude obsahovať: 
: \mathrm{Hello,\ world!}

Znak % je tzv. komentár — znaky nasledujúce za týmto znakom sú TeXom do konca riadku ignorované. Ak chceme mať znak % aj na výstupe, napíšeme \%.

Ak chceme napísať matematický vzorec, musíme vzorec umiestniť medzi znaky „$“:

```
Veľká Fermatova veta: 
$$x^n+y^n=z^n\quad (n>2)$$
```

Výsledok spracovania TeXom:

Veľká fermatova veta:
:x^n+y^n=z^n\quad (n>2)

## Softvérové okolie

Zdrojový kód súčasného TeXu je napísaný v programovacom jazyku WEB, ktorý spája dokumentáciu programu spolu s jeho kódom v mierne upravenom jazyku Pascal, aby bola zaistená prenosnosť medzi rôznymi platformami. Vzhľadom na to, že program má už vyše 20 rokov, je vo viacerých ohľadoch odlišný od súčasných programov. Zvláštny je napríklad tým, že TeX hneď po svojom spustení alokuje vždy rovnakú časť operačnej pamäte, aj keď ju nemusí celú využiť. Moderné inštalácie TeXu sú pomocou programu *web2c* konvertované do programovacieho jazyka C, čo umožnuje užívateľovi do istej miery meniť veľkosť alokovanej pamäte.

Vstupný súbor musí byť vo formáte plain (bez pokročilého formátovania — farebný, rezy písma atď.). Výstupom spracovania zdrojového súboru programom TeX je súbor vo formáte dvi (**d**e**v**ice **i**ndependent), ktorý už obsahuje sformátovaný text. Existujú modifikácie TeXu, ktoré dokážu produkovať aj pdf či HTML súbory. 

TeX je väčšinou implementovaný vo forme distribúcií, ktoré umožňujú jeho jednoduchú inštaláciu a obsahujú veľké množstvo softvéru pre prácu s programom (fonty, editory, balíčky makier, dokumentáciu atď.). Najznámejšie distribúcie sú tetex, fpTeX, MiKTeX. Existujú tiež rôzne upravené formy TeXu ako jadeTeX, TeXinfo, TeX-XeT, Omega, pdfTeX. Posledný menovaný dokáže okrem dvi vytvoriť výstup aj do pdf formátu spoločnosti Adobe. 

Pre uľahčenie práce s TeXom existujú mnohé vizuálne frontendy (napr. LyX), pomocou ktorých môže dokumenty vytvárať aj človek, ktorý neovláda jazyk TeXu.

## Zaujímavosti

Donald Knuth ponúka za každú chybu objavenú v programe TeX peňažnú odmenu, pričom odmena za každú ďalšiu nájdenú chybu je dvojnásobná. Súčasná odmena má hodnotu takmer 328 amerických dolárov. Zatiaľ žiaden z takýchto šekov nebol preplatený, každý odmenený si ho uchoval ako cennú „relikviu“. 

Medzi užívateľmi TeXu je vytvorená určitá hierarchia na základe ich schopností:
*TeXnik*, *TeXpert*, *TeXhacker*, *TeXnique*. Samotný Knuth má najvyšší titul — *Wizzard*. 

## Iné projekty

## Externé odkazy
* Československé združenie užívateľov TeXu
* TeX users group
* TeX použiteľný cez Internet 
* Donald Knuth, tvorca TeXu 
* Miktex, distribúcia TeXu pre Windows 
* Petr Olšák, český TeXGuru 
* PdfTeX