Vznik TEXu
U kolébky TEXu stojí jediný člověk – Donald Ervin Knuth. Tvrdí se, že když někdy kolem roku 1977 přišel do tiskárny, aby provedl korekturu prvního dílu své knihy The Art of Computer Programming, byl hrubě nespokojen s kvalitou sazby. Když se dozvěděl, že nic lepšího neexistuje, rozhodl se, že vydání jeho knihy o rok počká a že takový program napíše. Ukázalo se, že projekt je velký a že vzniklý kód by mohl být nepřehledný. Proto nejdříve vznikl systém pro gramotné programování (a dokumentaci) – web. Pak teprve spatřil světlo světa nový sázecí systém – TEX. Ani písma se Knuthovi nelíbila. Bylo však třeba kvalitních vědeckých písem, a proto vznikl systém pro návrh písem METAFONT a v něm pak celá rodina písem Computer Modern. Více než desetiletou práci zakončil Knuth v roce 1990, kdy dokončil podporu osmibitových kódování a technologii virtuálních písem. Poté vyhlásil vývoj TEXu za dokončený a vrátil se k práci na The Art of Computer Programming. K TEXu se vrací jednou za rok, aby opravil chyby, pokud byly během uplynulého roku nějaké nalezeny. Při každé takové opravě přidá jednu číslici k verzi (naposledy se tak stalo před sedmi lety, takže dnes pravděpodobně používáte verzi 3.14159; loňská oprava se nepočítá, neboť se týkala pouze dokumentace). Odměna vypsanáAmerickou Matematickou Asociací za nalezení další chyby je 327,68 dolarů. Podobně D. E. Knuth čísluje i METAFONT – jeho verze je dnes 2.718.
TEX je zřejmě jediným systémem, který vám v dnešní době může zaručit, že dokument bude možné ze stejných podkladů vysázet i za padesát let.
Zdrojový kód TEXu je uložen v jediném souborutex.web, jehož velikost je něco málo přes jeden megabajt. Je tak zřejmě dodnes největším programovým monolitem.
I licence TEXu je zajímavá – šíření souboru tex.web je povoleno (1) pokud jste D. E. Knuth, nebo pokud (2) ve své kopii neprovedete absolutně žádnou změnu. Pro případnou modifikaci kompilovaného kódu jsou v systému web k dispozici nástroje, které umožňují provádět změny v pomocném souboru, aby hlavní soubor zůstal nedotčen.
Názvem TEX se často označuje kompletní instalace TEXového prostředí. Ta se skládá nástrojů pro manipulaci s písmy a virtuálními písmy, nástrojů pro generování bitmapových instancí písem, nástrojů pro manipulaci s metrikami písem, ze systému pro popis písem METAFONT, z vlastního programu TEX, dnes většinou i ve třech jeho dnes používaných rozšířeních – ε-TEX (eTEX), pdfTEX, Ω (Omega), maker se základními nadstavbami TEXu – plain TEX, LaTEX a ConTEXt, systému pro tvorbu písem – METAFONT, balíků maker pro TEX i METAFONT a z volně šiřitelných písem. Dále jsou dostupné i prohlížeče TEXových výstupů – třeba XDvi, ovladače pro generování výstupních formátů – dnes nejčastěji používaným je dvips pro PostScript. Pokud se jedná o programátorskou instalaci, naleznete ještě nadstavbu web (dnes spíš web2c), pomocí níž se TEX kompiluje.
To všechno dohromady tvoří základ pro práci s TEXem. V distribucích Linuxu nalezneme základní sestavu písem a maker pro běžné činnosti a jazyky. Pokud chceme více, nalezneme to hlavně v archivech CTAN. Sdružení uživatelů TEXu pravidelně vydávají celé TEXové CD, které uspokojí i zájemce o sazbu exotických jazyků, hieroglyfů či not.
Jak to všechno funguje?
Předpokládejme, že chceme vysázet v TEXu nějaký dokument. K tomu potřebujeme napsat zdrojový dokument v TEXu s příponou .tex. Na něj se spouští program zvaný virtex (většinou pomocí symbolických odkazů jakotex, latex apod.) nebo některá rozšířená verze TEXu. Ta si načte nastavení a poté soubor zvaný formát, což není nic jiného než předzpracovaná sbírka TEXových maker vhodná k rychlému natažení. Jeho přípona je .fmt a k jeho vytvoření se používá program initex, který se liší od virtexu jen v několika málo ohledech. Při vytváření formátu, ale také při vlastní práci TEXu, si můžeme vyžádat vložení dalšího souboru, například části dokumentu nebo souboru maker. Rozsáhlejší skupiny souborů s makry použitelné v jednom systému (a většinou i najednou) se nazývají nadstavby. Absolutní většina dokumentů používá nějaké nadstavby TEXu.
To však není jediné, co TEX potřebuje. Další nezbytností jsou písma. Samotný TEX se však nestará o to, jak takové písmo vypadá. Proto TEX nenačítá samotná písma, ale pouze informaci o šířkách a výškách písmen, ligaturách a podřezávacích párech, sklonu a dalších hodnotách. Tato souhrnná informace o písmu se nazývá metrika. V případě TEXu má příponu .tfm.
Písma se dnes většinou vyskytují v několika běžných formátech – Truetype, Type1 a Type3. Nezbytnou součástí TEXu jsou tedy převodníky metrik.
K TEXu ovšem neodmyslitelně patří vlastní formát písem. METAFONT však není pouze formát písem, jde o celý programovací jazyk a přes svou letitost zůstává nejsilnějším nástrojem pro popis písem. Zatímco ostatní formáty mohou popsat pouze obrys nebo středovou linii tahu, METAFONT umožňuje popsat tvar pera a jeho změny způsobené dynamikou tahu. Také možnost parametrizace písma je úžasná. Zatímco konkurenční systémy zápasí s Multiple Master formáty s jedním či dvěma stupni volnosti, běžné METAFONTové písmo jich mívá přes půl stovky. Zřejmě i proto byla většina pokusů o strojový převod písem z METAFONTu do jiného formátu nepříliš úspěšná.
Struktura práce s METAFONTem se podobá TEXu – máme tedy inimf, soubor s formátem s příponou .base, a běžně volaný virmf. Výsledkem práce METAFONTu však není nějaký zjednodušený vektorový popis, ale metrika a bitmapová instance písma pro příslušnou velikost a výstupní zařízení. Ta má příponu .gf a většinou se před použitím zkomprimuje speciálním programem a uloží do keše s příponou .pk. Je třeba si uvědomit, že rastrování pomocí METAFONTu je časově poměrně náročné a systém vznikal v době, kdy i i386 byla ještě hudbou budoucnosti a vyrastrování písem pro průměrný dokument trvalo několik hodin.
METAFONT se natolik zalíbil Johnu D. Hobbymu, že na jeho základě napsal METAPOST, program na kreslení postscriptových obrázků pomocí konstrukcí podobných METAFONTu.
V moderních TEXových instalacích nalezneme poměrně propracovaný systém generování písem a metrik na žádost, díky němuž se obejdeme bez předrastrovaného archivu běžných písem.
Pokud použitým rozšířením TEXu nebyl pdftex, získáme po skončení práce TEXu (kromě pomocných souborů) soubor DVI (DeVice Independent). Je to soubor, který popisuje, kam se TEX rozhodl umístit texty. Kromě toho může obsahovat speciální značky pro výstupní zařízení, jejichž pomocí se do TEXu implementují barvy, podpora obrázků, postscriptové funkce a další.
Tento soubor si již můžeme přímo prohlédnout DVI prohlížečem. Často jej však použijeme jako vstup převodníku do výstupního formátu. Může jím být PostScript (pomocí dvips), ale také soubor PCL či faxový dokument.
Tím jsme cestu TEXového dokumentu uzavřeli.
V distribuci však najdeme různé pomocné nástroje. Již jsem zmínil automatické generování bitmap a metrik na žádost. Nelze však zapomenout ani na systém pro vyhledávání požadovaných souborůkpathsea, různé konvertory, bibliografické nástroje, typografické pomůcky (například pro zákaz zlomu řádku po jednopísmenných předložkách v češtině) a nástroje pro ladění.
Poslední skupinu tvoří nástroje pro kompilaci TEXu a dalších programů ze souborů .web.
Příště se začneme věnovat blíže jednotlivým součástem TEXové distribuce.