Co je to TeX?

Úvod

Snad se moc nezmýlíme, pokud budeme tvrdit, že největší část strávená prací s počítačem se týká zpracování textu. Od vynálezu knihtisku roku 1450 Gutenbergem se toho, pravda, hodně změnilo, ale snaha efektivně a esteticky předávat informace zůstala.

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 [texvn] (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.

Vznik a historie TeXu

Už samotný důvod vzniku TeXu může našinci připadat zvláštní. Na začátku roku 1977 byl Knuth nespokojen se sazbou své knihy "The Art of Computer Programming", která byla připravována nedokonalou analogovou fotosazbou. O pár týdnů později se seznámil s možnostmi digitální fotosazby, změnil plány na příští rok a rozhodl se vytvořit jazyk počítačové typografie TeX. Na podzim roku už byla hotova verze programu, která potvrdila možnost vytvoření takového programu. Pro nově vzniklý software bylo důležité ujmout se a získat budoucí uživatele. TeX je určen především pro sazbu náročných matematických textů, a proto Knuth 4. ledna 1978 přednesl pro Americkou matematickou společnost přednášku, kde vyzdvihl možnosti a přednosti TeXu.

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.

Způsob tvorby stránky

Je velmi obtížné nějak stručně popsat způsob tvorby stránky TeXem, neboť v originální dokumentaci je tomuto tématu věnováno skoro 100 stran. Dopustíme se tedy na tomto místě mnoha zjednodušení, které však nic nemění na komplikovanosti a dokonalosti sázecího algoritmu TeXu.

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.

Cyklus zpracování textu TeXem

Zpracování textu probíhá v cyklu, který se skládá ze tří částí. První část je příprava vstupního textu pomocí libovolného textového editoru. Tento vstupní soubor obsahuje kromě textu i řídící posloupnosti, které určují vzhled dokumentu, tj. formát řádky, odstavce a stránky, a které mohou ovlivnit mnoho dalších parametrů. TeX obsahuje asi 300 primitivních funkcí; další složitější posloupnosti mohou být definovány v průběhu zpracování textu (například již zmíněné balíky maker jako PlainTeX a další). Tak narozdíl od běžných textových procesorů, kde se pro tisk speciálních matematických symbolů, řeckých písmen apod. používají různé klávesnice, TeX obsahuje makra pro jejich sazbu; pokud tedy chceme například napsat [řecké písmeno alfa], stačí do vstupního souboru zapsat $\alpha$. Protože TeX vznikl v USA, jsou názvy řídících posloupností většinou odvozeny od anglických slov nebo jejich zkratek.

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ě.

Sazba matematiky

Rozebírat zde podrobně všechny možnosti matematické sazby nemůžeme, a proto si jen na jednoduchém příkladu ukážeme, jak se to dělá. Dejme tomu, že potřebuje vysázet následující vzorec:

[lim_n->infinity;_(1+(1/n))^n = e]

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.

Začleňování grafiky do TeXu

Co se týče začleňování grafiky do textu, je na tom TeX na první pohled poněkud hůř. Umožňuje pouze vynechání místa pro začlenění obrázku, popř. může do tohoto místa uložit informaci o obrázku pro ovladač výstupního zařízení. Vysvětlení pro toto chování TeXu je jednoduché. TeX vytváří .dvi soubor, který je na výstupním zařízení nezávislý, kdežto grafický obrázek je vždy určen pro výstupní zařízení s určitou rozlišovací schopností.

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í.

A jak je to s češtinou?

Přizpůsobení nějakého softwaru pro určitý jazyk můžeme rozdělit do několika stupňů:
  1. zpracování národních znaků, tj. pro češtinu znaků s akcenty (háček, čárka, kroužek a případně přehláska a stříška);
  2. národní speciality -- třídění, formát data a měny a ustálené typografické zvyklosti;
  3. dělení slov podle pravidel příslušného jazyka;
  4. převedení příkazů a klíčových slov do národního jazyka -- tento bod nacionalizace je velmi diskutabilní, neboť s jeho splněním padá kompatibilita se systémy pro jiná národní prostředí.

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.

Závěr

O tom, zda používat TeX, či nikoli, musí rozhodnout každý uživatel sám. Pokud je se svým stávajícím systémem na zpracování textu spokojen, není důvod, proč měnit, zvláště když je TeX, díky své zcela odlišné filozofii od jiných systémů na zpracování textů, poměrně komplikovaný. Pokud však potřebujete sázet spoustu matematiky, jinou možnost ani nemáte -- nic lepšího ještě dlouho existovat nebude.

Literatura:

  1. D. E. Knuth. The TeX Book. Addison Wesley, Reading, Massechussets, 1986.
  2. P. Novák, O. Ulrych. TeX. Softwarové noviny 3/33-48, 1992.

-- Jiří Kosek ml. --

© Jiří Kosek 1999