
\appendix E. Uk�zky z form�tov�n� t�to kn��ky
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\begall{\medskip\bgroup\offinterlineskip \topskip=4pt
   \hrule\vrules\nobreak\setverb \parskip=0pt
   \everypar{\vadjust{\penalty100}\hbox to0pt{\kern-\parindent
      \hbox to\hsize{\vrule\strut\hfil\vrule}\hss}}
   \def\par{\endgraf\leavevmode}
   \catcode`\"=12 \obeylines\reducebaseline
   \startverb}
{\catcode`\|=0 \catcode`\\=12
  |gdef|startverb#1\endall{%
        |eightt#1|endgraf|nobreak|vrules|hrule|egroup|medskip}}

P�i form�tov�n� t�to kn��ky byl vstupn� text rozd�len podle
kapitol do jednotliv�ch soubor� {\tt t1.tex} a� {\tt t12.tex}.
\TeX{} p�itom zpracov�val jeden hlavn� soubor {\tt t.tex}, ze kter�ho se
jednotliv� \uv{kapitoly} volaly p��kazem "\input". V~dob� psan� jedn�
konkr�tn� kapitoly byly ostatn� p��kazy "\input" zakryt� procentem, aby se
autor mohl zam��it na zpracov�n� jedin� kapitoly.

V~hlavn�m souboru {\tt t.tex} jsou soust�ed�na ve�ker� makra pot�ebn� pro
form�tov�n� t�to kn��ky. V�jimku tvo�� jist� specializovan� makra �e��c�
n�jak� efekt, kter� se vyskytuje v~jedin� kapitole. Takov� makra jsou
za�azena uvnit� kapitoly do m�sta, kde se efekt �e��.

Nejprve si uk�eme, jak je ps�n text jednotliv�ch kapitol. Nap��klad
za��tek souboru {\tt t1.tex} vypad� takto:

%------------------------------------------------------------------------
\begall
\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 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 $\scriptstyle\tau\epsilon\chi$, tedy
nikoli \uv{teks} ale \uv{tech}.}
 -- program na elektronickou sazbu. \endall
%-------------------------------------------------------------------------

Pro vytvo�en� cit�tu v~z�hlav� byl pou�it p��kaz "\quotation" a pro
titul kapitoly p��kaz "\title".
%
D�le pro odkaz na literaturu byl pou�it p��kaz "\ncite" a pro vytvo�en�
pozn�mky pod �arou p��kaz "\footnote"\lb{footnote}.

Nyn� si uk�eme je�t� ��st textu, ve kter�m se vyskytuje �asto pou��van�
\uv{verbatim}\lb{verb} prost�ed�, uzav�en� do r�me�ku. Nap��klad �vod
odstavce 6.1 byl zaps�n v~souboru {\tt t6.tex} n�sledovn�:

%-----------------------------------------------------------------------
\begall
\sec Zaveden� nov�ho fontu
%%%%%%%%%%%%%%%%%%%%%%%%%%

Chceme-li pou��t n�jak� nestandardn� font, kter� nen� definov�n ve
form�tu, m��eme pou��t primitivn� p��kaz "\font". Uk�eme si to na
p��kladu. Tento p��klad je t�eba br�t jako experiment�ln� text;
v~��dn�m p��pad� ne jako n�vod na to, jak by m�ly vypadat ti�t�n�
dokumenty.

\begtt
  \font\tucny=csssbx10
  \font\vysoky=csdunh10
~
  Tady p��u p�smem z�kladn�ho �ezu (Roman),
  \it      zde jsem pou�il kurz�vu, definovanou ve form�tu (p��kaz it),
  \vysoky  nyn� p��u vysok�m p�smem, Kter� Vynikne U~P�smen Velk� Abecedy,
  \tucny   te� pou��v�m polotu�n� p�smo bez patek
  \rm      a nakonec zase z�kladn� �ez.
  \bye
\endtt

\noindent V�sledek po zpracov�n� dopadne takto:

\medskip\hrule
\line{\vrule\hss\vbox{\narrower\medskip
  \font\tucny=csssbx10
  \font\vysoky=csdunh10
  Tady p��u p�smem z�kladn�ho �ezu (Roman),
  \it      zde jsem pou�il kurz�vu, definovanou ve form�tu (p��kaz~it),
  \vysoky  nyn� p��u vysok�m p�smem, Kter� Vynikne U~P�smen Velk� Abecedy,
  \tucny   te� pou��v�m polotu�n� p�smo bez patek
  \rm      a nakonec zase z�kladn� �ez.
\medskip}\hss\vrule}
\hrule\medskip \endall
%---------------------------------------------------------------------

Pro \uv{verbatim} prost�ed� byly pou�ity dvojice p��kaz�
"\begtt" a "\endtt". Uvnit� tohoto prost�ed� je aktivn� jen znak
{\tt\char126}, kter� ud�l� mezeru. Automatick� dopl�ov�n� vlnek za
p�edlo�ky by toti� zp�sobilo, �e se vlnky v~tomto prost�ed� vytisknou a to
by �ten��e zbyte�n� ru�ilo. Nav�c n�m tento znak pom��e vytvo�it v~textu
pr�zdn� ��dek.

V�imneme si, �e fonty, kter� jsou pou�ity na jedin�m m�st�
v~dokumentu, jsou zavedeny a� na m�st� a nikoli v~hlavn�m souboru {\tt
t.tex}.

Nyn� si uk�eme obsah hlavn�ho souboru {\tt t.tex}. V~koment���ch je
stru�n� �e�eno, co kter� makro �e��. Je t�eba p�iznat, �e makra jsou �asto
jedno��elov�. Byla naps�na pro form�tov�n� t�to kn��ky. Nap��klad nikde se
nepracuje s~nadpisem del��m ne� jeden ��dek. Berme proto n�sleduj�c� uk�zku
jen jako jedno z~mo�n�ch roz���en� form�tu plain\TeX{}, kter� si neklade
za c�l b�t obecn� pou�iteln�. Uk�zka dokumentuje, �e toto roz���en� m��e
b�t relativn� p�ehledn� a nemus� b�t p��li� rozs�hl�. P�itom jsou zde
zahrnuta makra pro automatickou tvorbu obsahu, referenc� a makra pro
verbatim prost�ed�.

{\catcode`\!=13  \def!#1.{\lb{#1}\char`\!#1.}
\expandafter\begall\input t
}

V�imneme si, �e v~makrech pro titulky kapitol a sekc� byla snaha
dodr�et ��dkov� rejst��k.\lb{radky}
Bohu�el tento typografick� ide�l nen� v~t�to knize dota�en do
d�sledku, proto�e �asto vkl�dan� uk�zky zdrojov�ch text� jsou s�zeny
osmibodov�m p�smem se z��en�m ��dkov�n�m. Rad�ji jsme dodr�eli po�adavek na
stejn� mezery nad a pod uk�zkou, ne� bychom se pou�t�li do vyrovn�v�n�
t�chto mezer tak, aby dal�� text byl znovu v ��dkov�m rejst��ku bez ohledu
na po�et ��dk� uk�zky. Tak� v~n�kter�ch dodatc�ch by po�adavek na dodr�en�
��dkov�ho rejst��ku p�sobil komplikace. Kdybychom s�zeli beletrii, pak
je dodr�en� ��dkov�ho rejst��ku podstatn� snaz��. Nakonec z~uk�zek hotov�ch
kn��ek, kam d�v�me tuto zak�zku tisknout, jsem pochopil, �e snaha po
dodr�en� ��dkov�ho rejst��ku pravd�podobn� nebude m�t cenu, proto�e kniha�
nebude s~takovou p�esnost� v�zat jednotliv� str�nky k~sob�.

Nyn� se podrobn�ji pod�v�me na makra, kter� n�jak�m zp�sobem pracuj�
s~pomocn�mi soubory. P�edev��m se vytv��� pomocn� soubor pro obsah {\tt
t.toc}\lb{toc} (je-li p��tomen p��kaz "\maketoc") a soubor
referenc� {\tt t.cit} (je-li p��tomen p��kaz "\makecit").
Pomocn� soubor {\tt t.toc} se na��t� v~m�st� p��kazu "\heretoc" a vytvo��
se obsah. Pot� se p�i zpracov�n� jednotliv�ch kapitol aktualizuje.
Soubor {\tt t.cit} se na��t� v~m�st� p��kazu "\makecit". \uv{V�domosti}
z~tohoto souboru jsou k~dispozici p��kaz�m "\cite", kter� jsou pou�ity
v~m�st�, kde se odkazujeme na literaturu. P�i zpracov�n� dodatku~D se soubor
{\tt t.cit} aktualizuje. 

Uk�eme si zpracov�n� seznamu literatury\lb{bibmac}. Seznam literatury
je ulo�en v~souboru {\tt cites.tex}, p�i�em� tento soubor je
vytvo�en Bib\TeX{}em. Vstupem pro Bib\TeX{} je soubor {\tt
cites.aux}, kter� m� tento obsah:

%-----------------------------------------------------------------------
\begall
\bibdata{bulletin,ruzne,master,tugboat}
\bibstyle{is-pl-cz}

\citation{Abrahams:TI90}
\citation{Appelt:TF88}
\citation{Borde:TE92}
\citation{Borde:MTE93}
\citation{Clark:PTP92}
\citation{Doob:TS193}
... atd. dal�� p��kazy \citation \endall
%-------------------------------------------------------------------------

Vid�me, �e hlavn� ��st seznamu literatury byla generov�na ze
standardn� datab�ze {\tt master} a {\tt tugboat} dostupn� na s�ti. 
Pro ��ely t�to kn��ky byla po��zena datab�ze {\tt bulletin} a {\tt
ruzne}. D�le byl upraven stylov� soubor {\tt is-plain.bst} pro �esk�
citace na {\tt is-pl-cz.bst}.

V�stupn� soubor po zpracov�n� Bib\TeX{}em vypadal takto:

%-------------------------------------------------------------------------
\begall
\input bibnames.sty \input path.sty \hyphenation{Kath-ryn Ker-n-i-ghan Krom-mes
  Lar-ra-bee Pat-rick Port-able Post-Script Pren-tice Rich-ard Ro-bert Richt-er
  Sha-mos Spring-er The-o-dore Uz-ga-lis} \input tugboat.def
\begin{thebibliography}{100}

\bibitem{Adobe:docstruct-spec}
{Adobe PostScript Developer Support Group}.
\newblock {Document Structuring Conventions} specification, version 2.1.
\newblock Technical Report PN LPS5001, {Adobe Systems Incorporated}, 1585
  Charleston Road, P.~O. Box 7900, Mountain View, CA 94039-7900, USA, Tel:
  (415) 961-4400, January 16 1989.
\newblock Dostupn� elektronicky z~\path|ps-file-server@adobe.com|
  pomoc� e-mailu, p��kaz {\tt send Documents \path|struct.ps.Zba|}. Na
  po�adavek {\tt send Index} dojde kompletn� rejs��k serveru.

\bibitem{Adobe:epsf-spec}
{Adobe PostScript Developer Support Group}.
\newblock {Encapsulated PostScript Files} specification version 2.0.
\newblock Technical Report PN LPS5002, Adobe Systems Incorporated,
  viz \cite{Adobe:docstruct-spec}, June 5 1989.
\newblock Dostupn� elektronicky jako~\cite{Adobe:docstruct-spec} v~souboru
  {\tt EPSF.ps.Zba}.
... atd. dal�� polo�ky \bibitem

\end{thebibliography} \endall
%------------------------------------------------------------------------------

Abychom nena��tali soubory deklarovan� zde na za��tku pomoc� "\input" a
abychom ignorovali \LaTeX{}ovsk� ozdoby typu
"\begin{thebibliography}", bylo pot�eba v~souboru {\tt ap-d.tex}
nejprve prov�st p�edefinov�n� p��kazu "\input" a dal��ch a pak teprve
na��st soubor {\tt cites.tex}. Soubor {\tt ap-d.tex} z~t�chto d�vod�
vypad� tro�ku komplikovan�:

%-------------------------------------------------------------------------
\begall
\appendix D. Literatura
%%%%%%%%%%%%%%%%%%%%%%%

V tomto dodatku je pom�rn� rozs�hl� soubor citac� o \TeX{}u.
Na v�t�inu t�chto titul� jsme odkazovali v jednotliv�ch kapitol�ch
v odstavci \uv{n�m�ty na dal�� �ten�}. Tam jsou tedy tituly se�azeny
tematicky, zat�mco zde je m�me abecedn�.

\begingroup
\hbadness=1500
\let\oriinput=\input       % Uvnit� souboru cites.tex ignorujeme \input
\def\input#1 {} \def\begin#1#2{} \def\end#1{} \def\noopsort#1{}
\let\oricite=\cite
\def\cite#1{\if[#1\let\next=\removeparam
   \else\oricite{#1}\let\next=\relax\fi \next}
\def\removeparam#1]#2{\oricite{#2}}
\parindent=0pt \leftskip=2em
\def\bibitem#1{%
  \advance\numcite by 1
  \immediate\write\cit{\string\bibcite{#1}{\the\numcite}}
  \indent\llap{[\the\numcite]\enspace}\ignorespaces}
\def\newblock{\penalty-100\space}
\let\em=\it
\parskip=\medskipamount

\let\METAFONT=\mf  \let\MF=\mf      % Zna�ky pro loga vypadaj� odli�n�.
\def\path|#1|{{\tt #1}}
\def\FWEB{{\tt FWEB}} \def\WEB{{\tt WEB}}
\let\AMSTEX=\AMSTeX \let\AmSTeX=\AMSTeX
\def\Dash{---} \def\emdash{---}
\def\PiCTeX{PiC\TeX} \def\PiC{PiC} \def\BaSiX{BaSiX}
\let\sf=\relax \let\eightrm=\relax

\oriinput cites

\endgroup \endall
%------------------------------------------------------------------------

Nakonec si p�edvedeme uk�zky z~textu v~tomto dodatku~E. Bylo definov�no nov�
\uv{verbatim} prost�ed� "\begall" -- "\endall", kter� nav�c p�episuje
pr�zdn� ��dky a znak {\tt\char126} nech�v� jako oby�ejn�.
Za��tek souboru {\tt app-e.tex} vypad� tedy takto:

{\catcode`\|=0 \catcode`\\=12
  |gdef|startverb#1\endtt{%
        |eightt#1|nobreak|vrules|hrule|egroup|medskip}}

%-----------------------------------------------------------------------
\begtt
\appendix E. Uk�zky z form�tov�n� t�to kn��ky
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
~
\def\begall{\medskip\bgroup\offinterlineskip \topskip=4pt
   \hrule\vrules\nobreak\setverb \parskip=0pt
   \everypar{\vadjust{\penalty100}\hbox to0pt{\kern-\parindent
      \hbox to\hsize{\vrule\strut\hfil\vrule}\hss}}
   \def\par{\endgraf\leavevmode}
   \catcode`\"=12 \obeylines\reducebaseline
   \startverb}
{\catcode`\|=0 \catcode`\\=12
  |gdef|startverb#1\endall{%
        |eightt#1|endgraf|nobreak|vrules|hrule|egroup|medskip}}
~
P�i form�tov�n� t�to kn��ky byl vstupn� text rozd�len podle
... atd.
\endtt
%------------------------------------------------------------------

Uk�zka obsahu souboru {\tt t.tex} byla do textu dodatku zavedena
n�sledovn�:

%-------------------------------------------------------------------
\begtt
P�itom jsou zde zahrnuta makra pro automatickou tvorbu
obsahu, referenc� a makra pro verbatim prost�ed�.
~
{\catcode`\!=13  \def!#1.{\lb{#1}\char`\!#1.}
\expandafter\begall\input t
}
~
V�imneme si, �e v~makrech pro titulky kapitol a sekc� byla snaha
... atd.
\endtt
%-------------------------------------------------------------------

Samoz�ejm� v~souboru {\tt t.tex} mus� b�t za p��kazem "\bye" uvedena je�t�
sekvence "\endall". Trik s~"\expandafter" se pou��v� pro na�ten� souboru ve
\uv{verbatim}\lb{verb} tvaru (nap��klad listingy program�).

Vyk�i�n�k je nastaven jako aktivn� znak, proto�e pot�ebujeme do listingu
odkazovat. Nap��klad v rejst��ku je u hesla \uv{uvozovky} odkaz na
str�nky:~\pg{uv}. Tento seznam str�nek byl vytvo�en p��kazem "\pg{uv}".
Tam, kde mluv�me o~uvozovk�ch, m�me v~textu p��kazy "\lb{uv}".
Jedn� se o~zna�ky pro k���ov� odkazy. Abychom mohli odkazovat na i~stranu,
kde je v�pis souboru {\tt t.tex}, je pot�eba do tohoto souboru ps�t m�sto
"\lb" n�co jin�ho. Ve verbatim prost�ed� by toti� sekvence "\lb" nem�la
��dn� efekt~-- pouze by se obkreslila do v�stupu. P��eme tedy m�sto p��kazu
"\lb{uv}" text {\tt !uv.} a �in�me tak v oblasti koment��e, aby text nem�l
��dn� vliv p�i prvn�m �ten� souboru {\tt t.tex}.


