V současné době většina uživatelů prochází jakousi pyramidou programů na zpracování textů. Většinou začíná s T602 nebo nějakým podobným jednoduchým editorem. Může se ale stát, že potřebuje používat větší množství fontů, začlenit do textu obrázek, graf nebo tabulku. Pak má ovšem velmi bohatou nabídku, zejména pokud se týká textových procesorů běžících pod MS-Windows (AmiPro, MS Word, WinText602, WordPerfect atd.). Pokud ani to uživateli nestačí, jsou pro něj těsně pod vrcholem pomyslné pyramidy připraveny DTP programy jako Ventura Publisher, PageMaker, 3B2 nebo QuarkXPress. Pokud by uživatel absolvoval tuto dlouhou cestu formou legálně zakoupených programů (jak jinak by také mohl), přišlo by ho to na pěkných pár desítek tisíc. A to ještě nedosáhl vrcholu pyramidy. Co se na něm skrývá? Ano, odpověď můžete naleznout v názvu článku, je to TeX. Slovo TeX se čte "tech", pochází totiž z řeckého (dovednost, umění).
Zvídavý čtenář, který slyší o TeXu poprvé si asi položil otázku, proč by nejdokonalejší měl být program, o kterém v žádném z mnoha počítačových magazínů, které čte, nebylo ani písmenko. O typografických kvalitách TeXu se vás pokusím přesvědčit v následujících odstavcích článku. S kvalitou souvisí i cena, která je pro většinu uživatelů důležitá. Tento program je "public domain", byl vytvořen na půdě Stanfordské university a jeho autor Donald Ervin Knuth ho věnoval široké veřejnosti k používání. Komerčně se šíří pouze některé speciální verze.
Mezi TeXem a ostatními textovými editory jsou velké rozdíly. U většiny editorů se text píše a průběžně zobrazuje už tak, jak bude vypadat (tzv. WYSIWYG -- What You See Is What You Get -- "co vidíš, to dostaneš"). Narozdíl od nich TeX potřebuje na svůj vstup text připravený v podstatě libovolným ASCII editorem, který kromě vlastního textu obsahuje příkazy, které určují jak se má s textem pracovat, tj. určují typ použitého písma, druh zarovnávání atd. Někdy se tedy můžeme setkat s označením WYWIWYG (What You Want Is What You Get -- "co chceš, to dostaneš"). Už nyní je tedy patrné, že zatímco z našich obvyklých programů dostaneme pouze to, co vidíme, z TeXu obdržíme to, co opravdu potřebujeme.
V srpnu 1978 se TeX dostal k prvním uživatelům. Dnes je tato verze označována jako TeX 78. O dva roky později, 22. února 1980, byla založena organizace, sdružující uživatele TeXu, která se jmenuje TUG (TeX Users Group) a téměř současně s jejím vznikem začal vycházet TUGBoat -- časopis plně věnovaný problematice TeXu. Později vznikaly i lokální organizace TUG, u nás existuje CSTUG, který mimo jiné čtyřikrát ročně vydává "Zpravodaj Československého sdružení uživatelů TeXu". Další významnou verzí je TeX82, který byl rozšířen o vylepšenou skupinu fontů Computer Modern. V roce 1989 byl Knuthem TeX přepracován tak, aby mohl pracovat se vstupním souborem, který obsahuje znaky s kódem 0-255 (do té doby podporoval pouze 128 kódů). Tak vznikl TeX 3.0, který je navíc multilinguální, tj. v jednom textu lze dělit slova podle pravidel různých jazyků.
TeX je velice mocný a dokonalý "formátovač" zejména pro matematické texty. Z této jeho specializace a veliké flexibility vyplývá pro začínajícího uživatele nepřátelskost a složitost celého programu. Aby bylo usnadněno zpracování textu, byly vytvořeny soubory maker, které uživateli mnohé usnadní. Nejznámějšími jsou PlainTeX, LaTeX, AmSTeX a LamSTeX. PlainTeX je nejjednodušší nadstavba a všechna ostatní makra ji používají jako svůj základ. LaTeX je určen zejména pro sazbu rozsáhlých publikací, a to nejen matematických, podporuje tvorbu obsahu, rejstříku a křížových referencí. AmSTeX je uzpůsoben pro sazbu složitých kratších matematických dokumentů a v LamSTeXu je patrná tendence rozšiřovat makra o nové další funkce a tím je vlastně sbližovat; je to totiž jakýsi "míšenec" AmSTeXu a LaTeXu.
Tvorba stránky má dvě fáze, které probíhají téměř současně. V první fázi se čte vstupní soubor a každému znaku se přiřadí jeho kategorie. Ze vstupního textu jsou zároveň vypuštěny přebytečné mezery a komentáře. Druhou fází je vlastní sazba stránky. Obecně lze říci, že se postupuje od nejjednodušších objektů k složitějším. Přitom za nejjednodušší objekt považujeme písmeno, které je charakterizováno svou šířkou, výškou nad účaří a hloubkou pod účaří. Tato písmenka jsou pak na základě těchto údajů skládány do slov a ta (s pomocí mezer, které mají definováno kromě své optimální velikosti i to o kolik mohou být smrštěny či roztaženy) do řádků, ty pak postupně do odstavců a ty po složení dají již konečný objekt -- stránku.
Z předchozího vypadá popis tvorby stránky velmi jednoduše, ve skutečnosti jsme ale opomněli spoustu možností, jako umístění tabulek na stránku, obtékání textu kolem obrázků, sazbu do sloupců, horní a dolní záhlaví, poznámky pod čarou a spoustu dalších. Vzhledem ke komplikovanosti sazby se TeX automaticky podle potřeby pohybuje mezi šesti režimy práce. Každý z režimů má na starost specifické úkoly: skládání písmenek na řádku a do slov, skládání řádek do odstavců, skládání odstavců na stránku (i do více sloupců), doplňování stránky o záhlaví, sazbu matematických vzorců atd.
Velice zajímavý je například způsob tvorby odstavce. TeX nejprve zkusí vysázet odstavec tak, aby nemusel použít dělení slov. Tato fáze je velmi rychlá, protože nemusí zjišťovat, jak je které místo slova vhodné k dělení. Pokud se mu to nepodaří (není-li šířka řádky příliš malá, stane se to málokdy), doplní slova o údaje o vhodnosti dělení a celý odstavec zpracuje znovu již s možností dělit slova.
TeX kontroluje i spoustu takových maličkostí, jako je to, aby odstavec nezačínal na poslední řádce stránky, nebo naopak nekončil na první řádce stránky. Dále TeX kontroluje, aby poslední slovo odstavce nebylo na samostatné řádce, a spoustu dalších "maličkostí", které ve skutečnosti velmi pozvednou estetický vzhled dokumentu.
Primitivní funkce je možné podle jejich činnosti zařadit do několika skupin:
Takto připravený vstupní soubor potom necháme přeložit TeXem, ten vytvoří .dvi soubor (device independant), který popisuje vzhled jednotlivých stránek tak, že stránka je soubor kódů znaků a příslušných fontů s údajem o jejich umístěná na stránce. Z těchto údajů pak může být dokument vytištěn nebo zobrazen na libovolném výstupním zařízení; tento soubor je tedy naprosto nezávislý na výstupním zařízení. To je také jedna ze silných stránek TeXu -- možnost tisknout dokumenty na čemkoliv, počínaje devítijehličkovou tiskárnou a konče osvitovou jednotkou s rozlišovací schopností několik tisíc dpi.
O vlastní zobrazení dokumentu, tj. .dvi souboru, se stará ovladač příslušného zařízení, který z informace obsažené v .dvi souboru a bitových map jednotlivých písmenek vytvoří konečnou podobu dokumentu a zobrazí ji na obrazovce nebo tiskárně.
Do vstupního souboru stačí zapsat: $$ \lim_{n \rightarrow \infty} \left(1 + {1 \over n} \right)^n = e $$, což není vůbec nepodobné tomu, jak by vám tento vzorec v Americe nadiktovali do telefonu.
Je tu však je ještě jedna možnost, vhodná zejména pro technické obrázky a grafy průběhu různých matematických funkcí: pomocí METAFONTu, programu na generování fontů pro TeX, vytvořit font, který obsahuje požadované obrázky. S nimi se pak pracuje jako s jednotlivými písmeny, které jsou stejně jako ostatní písmena nezávislá na výstupním zařízení.
Poslední dobou se objevuje mnoho programů, které umožňují, většinou až na úrovni ovladače obrazovky nebo tiskárny, začlenit do dokumentu obrázek v některém z rozšířených grafických formátů (PCX a jiné), nebo z různých programů (např. MATHEMATICA).
Kromě bitmapových obrázků lze do dokumentu zařazovat i obrázky v PostScriptu (EPS), při jejichž použití není ztrácena nezávislost na rozlišovací schopnosti výstupního zařízení.
Nejdůležitější věc, práce s českými písmy, je na první pohled velmi elegantně vyřešená už v původní anglofonní verzi TeXu. Písmo Computer Modern totiž obsahuje tzv. létající akcenty, samostatné znaky, které mohou být umístěny nad kterýmkoliv jiným písmenem. Bohužel kvůli malé zkušenosti D.E. Knutha s jazyky, které používají háček, není tvar tohoto znaménka příliš povedený. Mnohem větším nedostatkem je ale algoritmus používaný pro umísťování akcentů nad písmena. TeX to řeší nejjednodušším možným způsobem, akcent umístí nad logický střed boxu písmenka. To bohužel vždy není opticky nejlepší, zejména u větších fontů, zvláště pak skloněných (slanted a italica). Jisté problémy jsou ještě se znaky jako `ť' a `ď', neboť apostrof se nechová jako typický akcent.
Jediné úplné řešení je tedy vytvořit nové fonty, které budou obsahovat znaky s již umístěnými akcenty (tyto fonty ovšem budou nekompatibilní s ostatními), a používat TeX 3.0, který umožňuje zpracovat osmibitovou vstupní abecedu. Na setkání uživatelů CS-TeXu v červenci, byla přednesena přednáška o nové verzi programu (ten byl zároveň rozšířen mezi členy sdružení CSTUG), která mimo jiné obsahuje zmíněné osmibitové fonty s již umístěnými akcenty.
Jelikož je TeX velmi variabilní systém, není problém předefinovat takové věci jako je formát data a typografické zvyklosti. Tuto novou definici například obsahuje styl czech.sty.
Dělení slov je jednou z nejobtížnějších částí každého systému na zpracování textu. Pro češtinu, stejně tak jako pro většinu jazyků, neexistují zcela jednoznačná pravidla pro dělení. Při dělení slova v češtině má přednost dělení mezi příponou (případně předponou) a kořenem slova, slovo se může dělit po slabikách, ale jak bezpečně rozeznat slabiku. Navíc ještě čeština obsahuje slabikotvorné souhlásky, které celou situaci značně komplikují. Existuje samozřejmě mnoho dalších kritérií pro dělení slov, ale nemá smysl je zde jmenovat. V současné době existují dva způsoby dělení slov, pomocí algoritmického popisu pravidel dělení a pomocí tabulky dělení. TeX využívá druhou možnost, tj. algoritmus dělení řízený tabulkou. Ten poskytuje docela slušné výsledky a dokonalost řádkového zlomu TeXu navíc omezuje potřebu dělení slov na minimum.
Na závěr se ještě zmíníme o jednom typografickém pravidlu, specifickém pro češtinu. Na konci řádky nesmí zůstat neslabičná předložka. To lze v TeXu snadno vyřešit pomocí tzv. aktivního znaku `~', který představuje mezeru, ale v místě použití zakazuje lámat řádku. Existuje krátký program vlnka.exe, který ve vstupním textu za všechny neslabičné předložky automaticky doplní tento znak.
-- Jiří Kosek ml. --