
\quotation By preparing a manuscript in \TeX\ format, you will be telling a
computer exactly how the manuscript is to be transformed into pages whose
typographic quality is comparable to that of the worlds finest printers;
yet you won't need to do much more work than would be involved if you were
simply typing the manuscript on a ordinary typewriter.\\
Donald Ervin Knuth: The \TeX book.

\title Začínáme
%%%%%%%%%%%%%%%

Kdesi daleko v~Americe žije pán, který patří mezi zakladatele počítačových
věd. Jmenuje se Donald Knuth\lb{knuth} a je profesorem na Stanfordské univerzitě.
Velmi známá a dodnes nepřekonaná je jeho učebnice programování
{\it The Art of Computer Programming\/}
[\ncite{Knuth:ACP73-1}, \ncite{Knuth:ACP69-2}, \ncite{Knuth:ACP73-3}],
na jejíž dalších dílech pan profesor stále pracuje.
První díly této učebnice vyšly před více než dvaceti lety.
Tehdy pan profesor nebyl zcela spokojen s~kvalitou a rychlostí sazby svých
knih  a rozhodl se udělat počítačový program, který by umožnil provést sazbu
na počítači. Traduje se, že tak vznikl program \TeX{}%
     \footnote{Slovo \TeX{} se čte řecky $\tau\epsilon\chi$, tedy
               nikoli \uv{teks} ale \uv{tech}.}~--
program na elektronickou sazbu.

Pan profesor věnoval více než deset let života vývoji tohoto
počítačového systému a celou svou práci dal k~dispozici veřejnosti zdarma.
Jedná se o~program v~mnoha ohledech ojedinělý. Mezi jeho
nejsilnější stránky patří stabilita a nezávislost na zařízení.
Je to program, který je implementován v~rozličných vzájemně se velmi
lišících výpočetních systémech.
D.~Knuth shrnul svou práci o~elektronické sazbě do pětidílné monografie
{\it Computers \& Typesetting} [\ncite{Knuth:ct-a} až \ncite{Knuth:ct-e}].

Protože se jedná o~program velmi komplikovaný, je potřeba alespoň 
v~začátcích mít někoho, kdo nám při startu do hlubin možností tohoto programu
pomůže. Takovým pomocníkem může být i tato knížka.

Při odhalování tajemství \TeX{}u určitě rádi přijmeme pozvání na malou
\uv{virtuální návštěvu}. Zajdeme na kus řeči za svým dávným přítelem Ferdou,
který už má s~\TeX{}em jisté zkušenosti třeba na počítačích s~operačním
systémem Linux\lb{linux}%
   \footnote{Linux je kvalitní operační systém UNIXového typu, který 
             je možné získat včetně zdrojových textů zdarma. Viz 
             {\tt http://www.linux.cz}.}.
Ferda nás jistě rád pozve ke svému počítači, aby nám ukázal, jak se
s~\TeX{}em pracuje. Stojíme (nebo sedíme) u~jeho přístroje a díváme se mu
přes rameno, co kutí. Ferda nám předvede, jak připravit v~\TeX{}u dopis.

%V~počítači je připravena dávka, která startuje systém \TeX\ a která se
%například jmenuje {\tt tex.bat}\lb{bat}. O~další podrobnosti se zatím nebudeme
%zajímat. Poté, co Ferda napíše v~DOSu příkaz "tex dopis.tex",
%% proběhne v~počítači jistá inicializace \TeX u~a
%na obrazovce se objeví \uv{menu}, které nabízí několik možností, co budeme
%dělat se souborem {\tt dopis.tex}.
%
%První položka, která nás v~\uv{menu} bude zajímat, má název {\tt Edit}.
%Ferda zvolí právě tuto položku, což způsobí vyvolání nějakého ASCII editoru
%pro soubor "dopis.tex". Zde záleží na Ferdovi, jaký editor si pořídí
%nebo jaký se mu líbí. Editor není přímou součástí \TeX u~a každý uživatel
%si nakonfiguruje takový editor, který mu nejvíce vyhovuje.

Nejprve Ferda otevře nějaký textový editor. Záleží pouze na Ferdovi,
jaký editor si pořídí nebo jaký se mu líbí. Editor není přímou součástí
\TeX{}u a každý uživatel si nakonfiguruje takový editor, který mu nejvíce
vyhovuje. V~editoru napíše Ferda následující text.

\goodbreak

\begtt
Vážení telefonní ústředníci!
~
V~důsledku vaší "úpravy cen" jsem se rozhodl odhlásit telefon, na který
jsem předtím mnoho let zoufale čekal. Věřím, že kromě vás i případní
konkurenti zdárně pokračují v~budování nových linek a že přijde den, kdy
si budu moci vybrat z~nabídky více firem.
~
Chtěl bych v~této souvislosti upozornit na to, že v~normálně fungujících
státech je běžné, že zákazník telekomunikačních služeb má více možností než
jen dvě: platit podle rozhodnutí monopolu anebo nemít telefon.
~
Příjemnou zábavu při čtení podobně laděných dopisů přeje
~
                                                    Ferdinand Mravenec
\bye
\endtt

\def\povel#1{\leavevmode\lower3.9pt\hbox{\vbox{
   \hrule\hbox{\vrule\strut\ {\tt#1} \vrule}\hrule}}\kern1.5pt}

Poté Ferda ukončí práci v~editoru a soubor {\tt dopis.tex} uloží na disk.
Je možné, že editor obsahuje nabídku s~alternativami, co dále se s~textem
může dělat. V~nabídce bychom mohli najít třeba položku s~názvem {\tt TeX}.
Také je možné spustit \TeX{}
z~příkazové řádky v~jiném Linuxovém terminálu 
povelem~\povel{csplain dopis.tex}.
Vložením uvedeného povelu se rozeběhne vlastní program
\TeX{} (se základním formátem csplain, který popíšeme podrobněji
v~dalších kapitolách).
Vstupním souborem \TeX{}u je {\tt dopis.tex}. Program vypíše
na obrazovku hlášení o~své činnosti, kterému
zpočátku nemusíme rozumět. V~tuto chvíli je zajímavá jen informace v~hranatých
závorkách: {\tt [1]}. Ta říká, že \TeX\ vytvořil jednu stránku dokumentu
s~pořadovým číslem~1. Máme-li rozsáhlejší dokument a pomalejší počítač,
většinou při zpracování \TeX{}em pozorujeme, jak přibývají \uv{zalomené}
stránky právě podle hranatých závorek s~čísly.

\TeX\ \uv{vysází} text do odstavců a stránek podle údajů, které přečte ze
vstupního souboru, a vytvoří výstupní soubor {\tt dopis.dvi}\lb{dvi},
v~němž jsou uloženy všechny metrické informace o~umístění jednotlivých
písmen na stránkách. Tento výsledek si nyní můžeme prohlédnout dalším
programem, který se vyvolá z~nabídky nebo z~příkazového řádku.
Ferda použil povel~\povel{xdvi dopis}, což spustí program {\tt xdvi}\lb{xdvi},
který zobrazí výstup \TeX{}u na obrazovce v~X~Window Systemu.\lb{xwin}
Prohlížeč zobrazí na obrazovce výsledek práce \TeX{}u v~čitelné podobě tak,
jak to bude vypadat na tiskárně.

\medskip\hrule
\line{\vrule\hss\vbox{\narrower\medskip
   Vážení telefonní ústředníci!

   V~důsledku vaší ''úpravy cen'' jsem se rozhodl odhlásit telefon, na který
   jsem předtím mnoho let zoufale čekal. Věřím, že kromě vás i případní
   konkurenti zdárně pokračují v~budování nových linek a že přijde den, kdy
   si budu moci vybrat z~nabídky více firem.

   Chtěl bych v~této souvislosti upozornit na to, že v~normálně fungujících
   státech je běžné, že zákazník telekomunikačních služeb má více možností než
   jen dvě: platit podle rozhodnutí monopolu anebo nemít telefon.

   Příjemnou zábavu při čtení podobně laděných dopisů přeje

                                                    Ferdinand Mravenec
\medskip}\hss\vrule}
\hrule\medskip

Vidíme, že \TeX\ rozdělil vstupní text na odstavce\lb{odstavec},
přičemž oddělovačem
mezi odstavci je ve vstupním souboru prázdný řádek. Každý odstavec má zcela
nově \uv{zalomené} řádky~-- konce řádků ve vstupním souboru vesměs
neodpovídají konečnému výsledku. Kromě toho si všimneme, že ačkoli Ferda
před svým jménem udělal více mezer, \TeX\ tuto skutečnost
vůbec nerespektoval.

Při prohlížení výstupu na obrazovce Ferda prohlásil, že se mu to tak
nelíbí. Chtěl by tomu dát nějakou lepší formu. Ve vstupním textu zatím
uvedl pouze dva druhy speciálních formátovacích příkazů \TeX u. Jedním z~nich
jsou prázdné řádky (příkaz pro ukončení odstavce) a druhým je příkaz
"\bye"\lb{bye}.
Tímto slůvkem se Ferda neloučí s~telefonními ústředníky, ale s~\TeX em.
Přesněji~-- \TeX\ \uv{zalomí} poslední (zde jedinou) stránku dokumentu a ukončí
svou činnost. Jak dále uvidíme, většinou se formátovací příkazy od běžného
textu liší právě znakem \frqq"\"\flqq{} před názvem příkazu.

Aby dopis vypadal lépe, přidá Ferda do vstupního textu souboru některé
další příkazy. Vrátí se proto do textového editoru a doplní
do vstupního souboru další údaje. Prohlížeč výstupu \TeX{}u může
Ferda ponechat ve vedlejším okénku a nemusí jej zavírat.
Postupně začne Ferda řešit před našimi zraky tyto formátovací požadavky:

\subpar Posunout podpis doprava.
%-------------------------------
Řádek se svým jménem obohatí Ferda o~příkaz "\rightline", který zajistí, že
text napsaný za ním ve složených závorkách bude vypsán na pravou zarážku.
Dále před svým jménem použije přepínač písma "\it", který způsobí, že bude
podpis vysázen kurzívou\lb{kurziva}
("it" je zkratka pro {\it italic\/}). Řádek
s~podpisem je tedy ve vstupním souboru opraven takto:

\medskip\indent
"\rightline{\it Ferdinand Mravenec}"


\subpar Přidat datum dopisu.
%---------------------------
To provede Ferda například přidáním řádku

\medskip\indent
"\rightline{V Praze dne \today}"
\medskip \noindent
Příkaz "\rightline" už známe.
Nový je příkaz "\today", který zajistí vysázení textu s~aktuálním datem. Zde
ale pozor! Toto není standardní příkaz \TeX u. Takové příkazy připravují
pro uživatele lidé, kteří umějí v~\TeX{}u programovat.
Připravují pro ně různé tzv.~{\it styly}\lb{sty}, které nastavují \TeX\ do
jistých režimů. Například jiný styl bude pro psaní dopisu a jiný při
sestavování nějaké technické dokumentace. Další styly definují
užitečné příkazy. Tak zrovna příkaz "\today" je definován v~souboru
{\tt czech.sty}, který umožňuje \TeX{}u hovořit českým jazykem.
Přesněji řečeno, datum bude vysázeno česky, zapne se algoritmus dělení
slov podle českého jazyka a aktivuje se plno dalších užitečných věcí
(podrobněji jsou vlastnosti souboru {\tt czech.sty} popsány v~kapitole páté).
V~okamžiku použití příkazu
"\today" už musí \TeX\ tento příkaz znát. Proto je třeba před jeho použitím
(nejlépe někde na začátku dokumentu)
vložit povel pro načtení souboru {\tt czech.sty}\lb{czechsty}:

\medskip\indent
"\input czech.sty"
\medskip\noindent

Programátoři takový příkaz určitě znají (většinou ho nazývají {\tt include}).
Příkaz způsobí, že \TeX\ přesměruje svůj vstup na specifikovaný soubor a po
jeho načtení pokračuje ve čtení dalších řádků hlavního vstupního souboru.

\subpar Oslovení napsat výrazně.
%-------------------------------
Celé oslovení uzavře Ferda do složených závorek
(\TeX{} je interpretuje jako začátek a konec jisté skupiny) a vloží na
začátek skupiny přepínač písma "\bf"\lb{bfit}.
Tento přepínač způsobí, že text ve
skupině bude sázen polotučně ("bf" je zkratka pro {\bf bold face}). Oslovení
tedy po Ferdových opravách dopadlo takto:
\medskip\indent
"{\bf Vážení telefonní ústředníci!}"

   
\subpar Mezi oslovením a prvním odstavcem vynechat trochu místa.
%---------------------------------------------------------------
Za oslovení vloží Ferda příkaz "\vskip 0.9cm", který vytvoří
vertikální mezeru požadovaných rozměrů.

\subpar Uvozovky.
%----------------
Text \uv{úpravu cen} má Ferda uzavřený do uvozovek. Vidíme,
že \TeX\ vysázel uvozovky zcela špatně (''~'').
V~české sazbě mají uvozovky vypadat takto:~(\uv{\hbox{~}}).
Ve formátu csplain, který byl pro tento dopis použit, 
je definován příkaz "\uv"\lb{uv}. Ten způsobí výstup českých uvozovek. 
Píšeme tedy "\uv{úpravy cen}".

\subpar List nemá být dole opatřen číslem strany.
%------------------------------------------------
Někam na začátek dokumentu Ferda vloží příkaz "\nopagenumbers", který potlačí
tisk čísla strany.

\subpar Vložit vertikální mezeru před rozloučením.
%-------------------------------------------------
Analogicky, jako v~případě mezery za oslovením Ferda vloží na příslušné
místo příkaz "\vskip 0.6". Všimněme si, že Ferda udělal chybu~-- zapomněl
napsat jednotku, v~níž je zapsán délkový parametr. Zatím mu to
neprozrazujme a čekejme, co se stane dál.

\subpar Implicitní písmo se pro dopisy nehodí.
%---------------------------------------------
Použitý základní formát csplain implicitně pracuje s~různými variantami
písma z~rodiny tzv.~\CS-fontů, což je statická antikva (původně písmo
Computer Modern). Takové písmo se spíše
hodí do technických dokumentů, ale v~dopisech vypadá příliš studeně. Ferda
proto napíše úplně na začátek dokumentu ještě jeden "\input", kterým
zavede soubor \hbox{\tt cpalatin.tex}. Díky němu bude celý dopis vysázen
v~písmu Palatino. Přepínače "\bf" a "\it" budou přepínat
do variant písma Palatino, zatímco jinak by přepínaly mezi
variantami~\CS-fontů. Mimoto může Ferda použít soubory
{\tt ctimes.tex}, {\tt cbookman.tex}, {\tt chelvet.tex},
{\tt cavantga.tex} a {\tt cncent.tex}, které zapínají sazbu v~písmech
Times-Roman, Bookman, Helvetica, Avantgarde a NewCentury. Písmeno
{\tt c} na začátku názvu souborů znamená, že se jedná o počeštěné verze
těchto písem.

\medskip
Po opravách uloží Ferda vstupní soubor {\tt dopis.tex} na disk a
znovu vyvolá program \TeX. Ten při čtení souboru {\tt dopis.tex}
objeví syntaktickou chybu. Na obrazovce se vypíše následující
chybové hlášení\lb{texerr}.

\begtt
!Illegal unit of measure (pt inserted)
<to be read again>
                   P
<to be read again>
                   ř
l.20 Př
       íjemnou zábavu při čtení urgencí jednotlivých žádostí o~tel...
?
\endtt

\noindent
\TeX\ zde praví, že je zvolena nesprávná metrická jednotka s~názvem "Př".
Jsou to totiž první dvě písmena za chybně zadaným příkazem "\vskip".
Navíc je patrné, že k~nehodě došlo na řádku 20. Tento řádek je na obrazovce
vypsán a v~místě chyby \uv{roztržen} na dva. Otazník na obrazovce vyzývá
Ferdu, aby něco učinil. Ten na to chvíli nechápavě kouká a záhy zvolá:
\uv{Aha! Zapomněl jsem napsat jednotku u~příkazu {\tt \char`\\vskip}.}
Tato situace nám určitě silně připomíná ladění programu pod nějakým
kompilátorem.

Pokud Ferda na otazník odpoví klávesou "Enter", \TeX\ si chybu opraví po
svém. Zde dosadí za neznámou jednotku tiskařský bod \uv{"pt"}, který je asi
třicetkrát menší než centimetr. Tuto jednotku asi Ferda neměl na mysli, a
proto se výstup \TeX{}u bude lišit od původního záměru autora.
Na otazník může Ferda odpovědět také znakem "x", kterým ukončí předčasně
práci \TeX u. Potom Ferda ve svém vstupním textu chybu opraví.

V~tuto chvíli je dobré upozornit na to, že existují editory, které zobrazí ve
svém okénku nejen soubor "dopis.tex", ale v~jiném místě též hlášení \TeX{}u
o~chybách, které je uloženo v~souboru "dopis.log". Navíc tyto editory dokážou
posunovat kurzor postupně na všechny výskyty chyb v~dokumentu (je-li jich
více), takže to vypadá podobně jako ladění programu v~prostředí Borland~C.
Ve vedlejším okénku navíc může být permanentně spuštěn prohlížeč výsledného
{\tt dvi}, který automaticky aktualizuje zobrazení podle výsledku
z~posledního úspěšného běhu \TeX{}u. Určitou představu o~možném
pracovním prostředí může čtenář získat z~obrázku na staně~\pg{ukazka}.

%\medskip
Opravený soubor vypadá následovně:

\goodbreak

\begtt
\input cpalatin.tex
\input czech.sty
\nopagenumbers
~
\rightline{V Praze dne \today}
~
{\bf Vážení telefonní ústředníci!}
~
\vskip 0.9cm
V~důsledku vaší \uv{úpravy cen} jsem se rozhodl odhlásit telefon, na který
jsem předtím mnoho let zoufale čekal. Věřím, že kromě vás i případní
konkurenti zdárně pokračují v~budování nových linek a že přijde den, kdy
si budu moci vybrat z~nabídky více firem.
~
Chtěl bych v~této souvislosti upozornit na to, že v~normálně fungujících
státech je běžné, že zákazník telekomunikačních služeb má více možností než
jen dvě: platit podle rozhodnutí monopolu anebo nemít telefon.
~
\vskip 0.6cm
Příjemnou zábavu při čtení podobně laděných dopisů přeje
~
\rightline{\it Ferdinand Mravenec}
\bye
\endtt

\noindent
a výsledek po zpracování \TeX em:\lb{ustred}

%\let\ferdarm=\tenrm 
\font\ferdarm=pplr8z
%\let\ferdabf=\tenbf 
\font\ferdabf=pplb8z
%\let\ferdait=\tenit 
\font\ferdait=pplri8z

\medskip\hrule
\line{\vrule\hss\vbox{\narrower\medskip
   \ferdarm
   \hfill{V Praze dne 1. prosince 1998}

   {\ferdabf Vážení telefonní ústředníci!}

   \vskip 0.9cm
   V~důsledku vaší \uv{úpravy cen} jsem se rozhodl odhlásit telefon, na který
   jsem předtím mnoho let zoufale čekal. Věřím, že kromě vás i případní
   konkurenti zdárně pokračují v~budování nových linek a že přijde den, kdy
   si budu moci vybrat z~nabídky více firem.

   Chtěl bych v~této souvislosti upozornit na to, že v~normálně fungujících
   státech je běžné, že zákazník telekomunikačních služeb má více možností než
   jen dvě: platit podle rozhodnutí monopolu anebo nemít telefon.

   \vskip 0.6cm
   Příjemnou zábavu při čtení podobně laděných dopisů přeje

   \hfill{\ferdait Ferdinand Mravenec}\medskip
}\hss\vrule}
\hrule\medskip
 
Poznamenejme, že ukázka se od skutečnosti bude trošku lišit. Implicitně je
voleno tiskové zrcadlo pro stranu A4, tj. šířka jednotlivých
řádků je poněkud větší. \TeX{} tedy zalomí řádky na jiných místech a odstavce
budou vypadat jinak. Samozřejmě, že rozměr zrcadla můžeme rovněž zapsat
zcela přesně do dokumentu pomocí jistých parametrů, které jsou v~této
knize uvedeny na straně~\pg{nastavenizrcadla}.

%Ferda nyní vybere z~\uv{menu} položku "Print", která
%spustí program, jehož jediným úkolem je vytisknout výsledek činnosti \TeX{}u na
%tiskárně.

%My se s~Ferdou loučíme a plni dojmů odcházíme.

\citeinfo
%%%%%%%%%

Pro první seznámení s~\TeX{}em je velmi dobrá knížka Michaela Dooba
{\it Jemný úvod do \TeX{}u\/}~\cite{Doob:GIT-cz},
která vyšla jako překlad anglického originálu
{\it A~Gentle Introduction to \TeX\/}~\cite{Doob:GIT}.
Originální text i překlad je v~elektronické podobě volně k dispozici
v~mezinárodní počítačové síti.
%Autor myslí na začínající \TeX{}isty i ve své další práci
%{\it Starting from~1\/}~\cite{Doob:TS193}.
Ve veřejné síti najdete též 22\,stránkový textík 
\uv{na jeden večer} {\it První setkání
s~\TeX{}em\/}~\cite{Olsak:prvni}, který jsem napsal pro své studenty.

Mnoho knížek pro začátečníky se opírá o~nejčastěji používané \TeX{}ovské
makro \LaTeX, o~němž se stručně zmíníme v~kapitole třetí (str.~\pg{latex}).
Pro uživatele, který se nechce zabývat intenzívně sazbou, ale chce občas
něco napsat, je makro \LaTeX{} dobrý nástroj.
{\it Ne příliš stručný úvod do systému \LaTeX\twoe\/}~\cite{Partl:lshort}
je asi stostránkový úvodní manuál k~\LaTeX{}u a může být
dobrým startem do světa \TeX{}u. Český překlad od Michala Kočera
je součástí počeštěné
distribuce \TeX{}u. Každý si jej může zpracovat \TeX{}em a vytisknout.
%Mezi \uv{čtení na jeden večer} patří i knížka
%{\it Úvod do systému \itLaTeX\/}~\cite{Pala:LaTeX}.
Na různých vysokých školách vycházejí skripta o~\TeX{}u v~rámci předmětů,
které se nějakým způsobem dotýkají elektronické sazby a \TeX{}u.
V~Brně na VŠ zemědělské vyšla skripta J.~Rybičky
{\it Systémy pro počítačovou sazbu\/}~\cite{Rybicka:sazba-92} a
{\it Zpracování textů počítačem\/}~\cite{Rybicka:texty-92}.
Autor též napsal samostatnou knížku o~\LaTeX{}u~\cite{Rybicka:LaTeXz}.
V~Praze byla k~mání dnes už starší skripta FEL ČVUT
{\it Sázecí systém \itLaTeX\/}~\cite{Bily:LaTeX}.

Souběžně s~prvním vydáním této knížky vyšla v~Americe kniha
Normana Walshe {\it Making \TeX{} Work\/}~\cite{Walsh:MTW}.
Když jsem měl možnost jeho knížku později prolistovat, překvapilo mě, jak
hodně se členění informací v~Normanově a mojí knížce shoduje.
Přitom jsme v~době, kdy knížky vznikaly, vzájemně o~sobě vůbec něvěděli.

