\ifnum \catcode37=13 \relax \else\def\edefverb{}\fi
% \if 1\autodocmanual \expandafter\ifx\csname skipsrc\endcsname \relax
% \kniha{Dokumenta�n� syst�m \MDef}{}{Martin Man��k} \else \newpage \fi
% \obsahknihy \section{Defini�n� soubor maker MDef} \vskip0pt\defverb
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                                                          %%
%%  Kodovani:     $Enc: win1250$                                            %%
%%  mdef.tex:     defini�n� soubor maker MDef                               %%
%%  verze:        2.0                                                       %%
%%  autor:        Martin Man��k (martin@mandak.net, http://www.mandak.net)  %%
%%  TeX system:   plainTeX a odvozen� syst�my                               %%
%%                                                                          %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                                                                          %%
%%  Tento soubor maker vznikl p�i tvorb� dokumentace k projektu Stabilita   %%
%%  letounu. Makra z n�j m��ete libovoln� ���it, pou��vat a modifikovat     %%
%%  jen s podm�nkou, �e bude ve Va�em dokumentu uveden autor tohoto         %%
%%  souboru maker stejn� jako ka�d�, kdo a kdy provedl n�jakou zm�nu.       %%
%%                                                                          %%
%%  Soubor je schopen s�m sebe dokumentovat spu�t�n�m d�vky                 %%
%%                          csplain mdef.tex                                %%
%%                      nebo pdfcsplain mdef.tex                            %%
%%  Dal�� informace zjist�te nejl�pe z takto vznikl� dokumentace...         %%
%%                                                                          %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\edefverb \def\nic{0}
%\def\nic{1}
\if 1\nic
 \hyphenation{} \vskip 6pt
 Tato sb�rka maker
 tvo�� ucelen� syst�m pro vytv��en� dokumentace. Je naps�na
 takov�m zp�sobem, �e umo��uje \uv{dokumentovat sama sebe}.
 Vznikla z d�vodu zbyte�n� komplikovanosti syst�mu \LaTeX, kter� sice
 m� velk� mo�nosti p�izp�soben�, ale p�sob� zna�n� t�kop�dn�m
 dojmem, mnoho �prav podle m�ch p�edstav by znamenalo t�eba i z�sahy do
 samotn�ho zdroje \LaTeX u nebo instalaci bal�k�, kter� �asto d�laj�
 spoustu v�c�, kter� v�bec nepot�ebuji a zbyte�n� tak zab�raj� m�sto v
 pam�ti, zpomaluj� zpracov�n� dokumentu a zt�uj� hled�n� p��padn�ch chyb.
 \par
 Jako �e�en� tohoto probl�mu jsem zvolil naps�n� vlastn� sady maker
 v plain\TeX u, kter�
 jsou snadno p�izp�sobiteln� m�m po�adavk�m jejich p��mou �pravou
 (na rozd�l od \LaTeX u zde v�dy v�m, co d�l�m).
 Vygenerov�n�m t�to dokumentace jste dostali n�vod,
 jak pou��vat zde definovan� makra, ale i vysv�tluj�c� koment��, z n�j�
 by m�lo b�t z�ejm�, co a jak upravit, abyste z�skali vlastn� po�adovan�
 vzhled dokumentu.
 Pokud budete m�t vlastn� specifick� po�adavky, pak v�m tento m�j v�tvor
 snad p�ijde vhod jako studijn� materi�l pro vytvo�en� vlastn�ch maker.
 \par
 Pokud budete m�t jak�koliv dotazy nebo p�ipom�nky k tomuto souboru
 maker nebo i obecn� k \TeX u, m��ete m� kontaktovat na emailov� adrese
 \mailodkaz{martin@mandak.net}{martin@mandak.net}.
 Nov� verze a informace k tomuto i jin�m program�m naleznete na adrese
 \httpodkaz{www.mandak.net}{http://www.mandak.net}.
 Sou�asn� dokumentace odpov�d� stavu p�ed implementac� pdf odkaz�.
 \subsection{Co je zahrnuto}
  Zde uv�d�m stru�n� seznam mo�nost� tohoto bal�ku maker:
   \begitem
     \item D�len� dokumentu na knihy, 5 �rovn� kapitol
     \item 3 �rovn� odr�ek nebo ��slovan�ch seznam�
     \item ��slovan� rovnice, obr�zky a tabulky
     \item verbatim prost�ed� v n�kolika verz�ch, vkl�d�n�
           dokumentovan�ho C++ nebo Tcl souboru
     \item generov�n� n�kolika typ� obsah�
     \item vkl�d�n� pozn�mek, r�zn� zna�ky k r�zn�m ��el�m (viz.
           kapitolu \secref{DocOstPrik})
     \item k��ov� reference na knihu, kapitolu, rovnici, str�nku, obr�zek,
           tabuku
     \item v�echny odkazy jsou p�i kompilaci pdf\TeX em funk�n� (od \MDef
           verze 2, dokumenty napsan� pro star�� verzi sta�� p�ekompilovat
           s novou verz� maker)
   \enditem
  Do budoucna:
   \begitem
    \item na�ten� obsahu v�dy na za��tku dokumentu kv�li pdf outlin�m.
          Moment�ln� se na��t� jen p�i obsahu, tak�e pokud by obsah
          byl na konci dokumentace, outlinky by asi byly 1rozm�rn�\dots
    \item Dod�lat reference mezi r�zn�mi objekty definovan� u�ivatelem.
          Pro odkazy na sekci ji� jsou, ale jen pro po��t�n� s bookno,
          samostatn� byly rozlad�ny a moment�ln� by asi zp�sobovaly chybu.
   \enditem

\subsection{Dokumenta�n� platforma}

Proto�e tento dokumenta�n� syst�m je sou��st� multiplatformn�ho projektu,
v�noval jsem zpracov�n� dokumentace velkou pozornost.
Vzhledem k univerz�lnosti byla vybr�na jako
prim�rn� platforma pro dokumentaci syst�m \TeX , kter� poskytuje
�pi�kov� v�stupy v oblastech publikace p�edev��m matematiky. Jeho velkou
p�ednost� je, �e v�stup je dvi nebo postscript (ide�ln� pro tisk),
ale p�edev��m dnes u� tak� pdf jako dnes asi nejuniverz�ln�j��
form�t pro dokumentaci
p�en�enou mezi platformami p�i dokonal�m zachov�n� form�tov�n�
v�ech grafick�ch prvk� i k�dov�n� n�rodn�ch znakov�ch sad.
V�hoda \TeX u je tak� mo�nost algoritmizovat zpracov�n� zdrojov�ch
text�, �eho� jsem s v�hodou vyu�ili p�i naprogramov�n� zpracov�n�
dokumentace vepsan� p��mo do zdrojov�ho C++ k�du.

Dal�� potenci�ln� alternativn� v�stupy  generovan� ze zdrojov�ch
k�d� \TeX u p�edpol�d�m xml resp. html, unixov� manu�lov� str�nky,
p��padn� help soubor pro MS Windows.
Vzhledem k co nejsnadn�j��mu p�izp�soben� vzhledu a konverz�m
dokumentace jsem zam�tl p�ipraven� dokumenta�n� form�ty jako
\LaTeX, proto�e p�i komplikovan�j��m p�izp�sobov�n� pou�it�ch styl�
n�m vy�lo jako jednodu��� vytvo�it si vlastn� od z�kladu p�izp�soben�
na�im po�adavk�m a v p��pad� pot�eby mnohem snadn�ji upraviteln�.

Zvolili jsme tedy vytvo�en� vlastn�ho form�tu na b�zi form�tu plain\TeX,
jeho� pou�it� je takov�, aby byly snadn� i po�adovan� konverze
do p��padn�ch jin�ch form�t� ne� dvi, ps a pdf. Vypracov�n� n�stroj� pro
alternativn� v�stupy je ot�zkou budouc�ho v�voje.

\subsection{Hierarchie dokumentace}
Dokumentace je zalo�ena na form�tu plain\TeX , tak�e funguj� klasick�
plainov� makra, ale ta by se nem�la p��mo pou��vat z d�vodu zachov�n�
pln� kontroly nad vzhledem dokumentu p�i generov�n� v�ech form�t�
dokumentace.

Z�kladn� d�len� dokumentace je na tzv. knihy, z nich� ka�d� by m�la
tvo�it ur�itou ��st dokumentace takov�m zp�sobem, aby se dala pou��t
jak samostatn�, tak i jako sou��st cel� kompletn� dokumentace.
Ka�d� kniha je d�le d�lena na kapitoly, p�i�em� m� mo�nost
hierarchick�ho d�len� a� na p�t �rovn� kapitol.

Syst�m je navr�en tak, aby bylo mo�no vytvo�it jak kompletn� dokumentaci
(v�echny knihy v jednom celku) tak d�l�� dokumentace, kdy pot�ebujeme
pouze ur�itou knihu, bez jak�chkoliv �prav zdrojov�ch k�d� dokumentace,
jen spu�t�n�m \TeX{} procesoru pro jin� soubor.

V�echna makra a nastaven� jsou ulo�ena v
souboru \soubor{mdef.tex}, kter� se p��kazem \texmac{\\input} vlo��
za za��tku ka�d� knihy i cel� dokumentace
(podrobn�ji viz. kapitolu \secref{DocKnihy}).
Struktura kompletn�ho dokumentu pak vypad� takto:
\begitem
 \item cel� dokumentace
  \iitem prvn� kniha
   \iiitem kapitoly a texty prvn� knihy\dots
  \iitem druh� kniha
   \iiitem kapitoly a texty druh� knihy\dots
  \iitem dal�� kniha\dots
   \iiitem kapitoly a texty dal�� knihy\dots
\enditem
P�i�em� ka�d� kniha m��e st�t tak� samostatn� a nez�visle na ostatn�ch.

\newpage
\section{U�ivatelsk� p��kazy dokumentace}
V n�sleduj�c� ��sti jsou stru�n� pops�ny p��kazy dokumentace definovan� v
souboru \soubor{mdef.tex}.
P�i psan� tohoto popisu jsem p�edpokl�dal, �e �ten�� je obezn�men se
z�kladn�mi principy a vlastnostmi syst�mu plain\TeX{} alespo� na �rovni
knihy \litref{Jemny}.

\subsection{D�len� na knihy}
\seclabel{DocKnihy}
Ka�d� kniha tvo�� bu�to ��st cel� dokumentace, anebo m��e existovat
samostatn�. T�m je vlastn� d�no, �e existuj� z hlediska na�eho
dokumenta�n�ho syst�mu �ty�i typy soubor�:
\begnum
 \item ko�enov� soubor cel� dokumentace\newline
       (viz. kapitolu \secref{DocMaindocMakro})
 \item soubory p�edstavuj�c� ko�enov� soubory jednotliv�ch knih\newline
       (viz. kapitolu \secref{DocKnihaMakro})
 \item dal�� soubory, na n� se soubory p�edchoz�ch dvou skupin odkazuj�.
       Jde o dal�� \TeX{} soubory, ale i grafick� �i jin� soubory
       pou�it� v dokumentaci.
 \item soubor \soubor{mdef.tex}, kter� je vlastn� speci�ln�m
       p��padem 3. skupiny soubor�. M� smysl, aby byl obsa�en pouze
       na za��tku soubor� 1. a 2. skupiny, jinde jeho \texmac{\\input}
       nem� smysl, ale jeho \texmac{\\input} nav�c nevad� --- soubor
       se \uv{s�m kontroluje}, aby
       byl zahrnut pouze p�i prvn�m \texmac{\\input mdef} a v
       dal��ch je jeho obsah vynech�n.
\endnum

\subsubsection{Popis hlavn�ho souboru}
\seclabel{DocMaindocMakro}
Hlavn� soubor je v�dy jen jeden pro cel� dokumenta�n� syst�m,
resp. pro ur�itou kombinaci spojen� n�kolika r�zn�ch knih
a p��kazem \texmac{\\input mdef} je z n�j vol�n soubor s makry a
definicemi dokumenta�n�ho syst�mu (podrobn�ji viz. kapitolu
\secref{DocDefinice}).

Pot� se spou�t� makro
\texmac{\\maindoc\l nadpis 1\p\l nadpis 2\p\l anotace\p}, kter� syst�mu
��k�, �e se kompiluje v�ce knih do jednoho celku a d�le vys�z� tituln�
stranu dokumentace (nadpis 1 a nadpis 2 jsou uprost�ed na dvou ��dc�ch)
a d�le stranu s anotac�, kde mohou b�t uvedeni auto�i, copyright apod.
Syntaxe anotace je takov�, �e v n� nesm� b�t v�cekr�t ��dkov�no
(\texmac{\\par}), tisku na v�ce ��dek se doc�l� makrem
\texmac{\\cr} (jako v prost�ed� \texmac{\\halign}), kter� znamen�
v�dy jedno za��dkov�n�.

Za makrem \texmac{\\maindoc} se p��kazem \texmac{\\input} volaj�
ko�enov� soubory knih a makra pro glob�ln� obsah,
viz. kapitolu \secref{DocObsah}. Mo�n� je zde vkl�dat i lok�ln�
obsahy knih v�dy
za p��slu�n�m souborem knihy (v tom p��pad� nebude takov� obsah
zahrnut p�i samostatn�m zpracov�n� knihy).
Dokumentace je ukon�ena plainov� p��kazem
\texmac{\\bye} nebo \texmac{\\end}.

\subsubsection{Popis knihy}
\seclabel{DocKnihaMakro}
Ka�d� kniha m��e b�t zpracov�na programem \TeX{} �i jin�m procesorem
samostatn� na jeho b�zi nebo jako sou��st v�t��ho dokumenta�n�ho celku.

Na za��tku ka�d�ho souboru knihy je \texmac{\\input mdef},
kter� zavede p��slu�n� makra pouze v p��pad�, �e se kompiluje pouze
jedna kniha. N�sledn� se vol� makro
\texmac{\\kniha\l nadpis 1\p\l nadpis 2\p\l autor\p}, kde nadpis 1 a
nadpis 2 maj� podobn� efekt jako u p��kazu \texmac{\\maindoc}, nadpis 1
bude pou�it v obsahu nebo v seznamu knih.
Autor (�i jin� vhodn� pozn�mka jako datum apod.) bude uveden v prav�m
doln�m rohu tituln� strany knihy (negeneruje se samostatn� str�nka s
anotac� jako u \texmac{\\maindoc}).

Za makrem \texmac{\\kniha} n�sleduje samotn� dokumentace. Ta m� v�echny
��slovan� objekty ��slov�ny v�dy od jedn� (jak ��slov�n� kapitol, tak
rovnic, tabulek\dots), je-li kniha sou��st� v�t��ho celku, je p�ed ka�d�
��slov�n� p�id�na ��msk� ��slice vyjad�uj�c� ��slo aktu�ln� knihy.
Pouze ��slov�n� str�nek je nez�visl� na knih�ch a je v�dy od za��tku
cel�ho dokumentu (a� knihy nebo kompletn� dokumentace) a� do konce
kontinu�ln�.

Soubor p�edstavuj�c� kmenov� soubor knihy je ukon�en makrem
\texmac{\\konecknihy},
kter� je definov�no tak, aby se ukon�ilo bu� pouze na��t�n� souboru (a
pokra�uje se nad�adzen�m souborem hlavn� dokumentace) nebo kompletn�
ukon�il b�h \TeX u (v p��pad� zpracov�n� pouze jedn� knihy).
Makro \texmac{\\konecknihy} m� vliv pouze na ukon�ov�n� na��t�n� souboru
\TeX em, z hlediska d�len� dokumentu na knihy nem� jin� v�znam, aktu�ln�
kniha pokra�uje a� do dal��ho makra \texmac{\\kniha} nebo ukon�en�
cel�ho dokumentu.

\subsection{Nadpisy}
K dispozici je p�t �rovn� nadpis�, v�echny jsou hierarchicky ��slov�ny a
je tedy pot�eba postupovat od vy��� �rovn� k ni��� (jinak se vynechan�
�rove� nadpisu projev� jako ��slo 0 v ��slov�n�). Postupuje se v tomto
po�ad�:
\begitem
 \item \texmac{\\section\l Nadpis prvn� �rovn�\p},
 \item \texmac{\\subsection\l Nadpis druh� �rovn�\p},
 \item \texmac{\\subsubsection\l Nadpis t�et� �rovn�\p},
 \item \texmac{\\partsection\l Nadpis �tvrt� �rovn�\p},
 \item \texmac{\\ppartsection\l Nadpis p�t� �rovn�\p},
 \item \texmac{\\nosection\l Nadpis �vodn�ku\p} --- ten je na hierarchii
       nez�visl�..
\enditem
V�echny �rovn� nadpis� jsou implicitn� uv�d�ny v obsahu a na kter�koliv
z nadpis� se lze odkazovat pomoc�
\texmac{\\seclabel} a
\texmac{\\secref}, viz. kapitolu \secref{DocReferenci}.

Makro \texmac{\\nosection} nen� ��slov�no, je zahrnuto z d�vodu
pot�eby ne��slovan�ch kapitol na za��tku dokumentace (mimo knihu).
V obsahu bude uvedeno na stejn� �rovni jako \texmac{\\section}.

\subsection{Odr�ky a ��slov�n�}
Makra pro odr�ky a ��slov�n� vypadaj� z pohledu u�ivatele maker
dokumenta�n�ho syst�mu tak, �e \uv{vnit�ek} seznamu
vypad� st�le stejn� a pokud se zm�n� uvozuj�c� zna�ka, lze jednodu�e
zm�nit ��slovan� seznam na seznam s odr�kami nebo obr�cen�.

Dostupn� jsou t�i �rovn� odr�ek nebo ��slov�n�.
Prost�ed� pro v��ty resp. pro odr�ky
za��n� p��kazem
\texmac{\\begnum} a kon�� p��kazem
\texmac{\\endnum} resp.
\texmac{\\begitem} a
\texmac{\\enditem}.

V obou prost�ed�ch se pro jednotliv� polo�ky pou��vaj� p��kazy
\texmac{\\item},
\texmac{\\iitem} a
\texmac{\\iiitem} pro p��slu�n� prvek prvn�, druh� a t�et� �rovn�.

V prost�ed�ch pro odr�ky a v��ty by se nem�l vyskytovat
\texmac{\\par}, tedy dvojit� za��dkov�n�, proto�e t�m doch�z� k chybn�mu
p�enastaven� parametr� sazby.

\subsection{Rovnice}
Rovnice a matematika jsou jednou z nejsiln�j��ch str�nek syst�mu \TeX{}.
Zahrnul jsem tedy n�kolik zp�sob� pro jejich vkl�d�n�:
\begnum
 \item P��mo do textu pomoc� odd�lova�� \texmac{\$},
 \item klasicky \uv{plainov�} pomoc� \texmac{\$\$}, p��slu�n� rovnice pak
       nebude ��slov�na,
 \item po vzoru \LaTeX u uzav�en� mezi \texmac{\\[} a \texmac{\\]},
       rovnice pak bude o��slov�na a lze se na ni odkazovat.
\if 10 \item soustavy rovnic???\dots \fi
\endnum
Syntaxe uvnit� rovnice mus� odpov�dat plain\TeX ov�m zvyklostem.

\subsection{Tabulky}

Tabulky v m�m syst�mu funguj� tak, �e se p��kazem \texmac{\\zactab}
zah�j� prost�ed� tabulky. Hned za t�mto p��kazem je v�e a� do konce
��dku br�no jako popisek k tabulce. Na dal��m ��dku je popis tabulky
podle syntaxe prost�ed� \texmac{\\halign}.
Za popisem tabulky na dal��m ��dku jsou ji� vlastn� data tabulky.

Pol��ka tabulky mohou b�t odd�lena bu� klasicky
\TeX ov� znakem \texmac{\&} nebo tabul�torem, co� umo��uje pou��t
nap�. tabulky exportovan� StarCalcem, Excelem nebo jin�m tabulkov�m
procesorem, datab�zov�m programem, programem pro m��en� a sb�r dat apod.
��dky tabulky se neukon�uj� sekvenc� \texmac{\\cr}, ale oby�ejn�m
za��dkov�n�m.
P�i pou�it� \texmac{\\cr} (nen� doporu�eno) nesm� b�t bezprost�edn�
p�ed ani za touto zna�kou za��dkov�no.

Tabulkov� prost�ed� je ukon�eno p��kazem \texmac{\\kontab} um�st�n�m na
samostatn�m ��dku.

Dal�� verz� tabulky je jej� obdoba bez popisku, m��e slou�it
nap�. k z�pisu soustav rovnic apod. Jej� ��slo nen� zapo��t�v�no do
po�tu tabulek.
Vnit�n� syntaxe t�to tabulky je stejn� jako v p�edchoz�m p��pad�, pouze m�sto
\texmac{\\zactab} a \texmac{\\kontab}
se pou�ije
\texmac{\\zacmat} a \texmac{\\konmat} a popis tabulky na prvn�m ��dku se
vynech�v� (tedy je rovnou za��dkov�no).

U obou typ� tabulek se horizont�ln� linka vkl�d� p��kazem
\texmac{\\linka} na samostatn�m ��dku. Chceme-li vlo�it dvojitou linku
(nap�. pro odd�len� z�hlav�), pou�ijeme m�sto \texmac{\\linka} p��kaz
\texmac{\\dlinka}. V sou�asn� verzi je tabulka
uzav�ena v jedin�m boxu, co� v praxi znamen�, �e se mus� vej�t na jednu
str�nku, jinak dojde k jej�mu p�ete�en� p�es okraje str�nky.

\subsection{Obr�zky}
Dokumentace umo��uje i vkl�d�n� obr�zk�.
Obr�zky mus� b�t p�ipraveny v r�zn�ch form�tech podle po�adovan�ho
v�stupu dokumentace. Pro postscriptov� v�stup je pot�eba m�t obr�zky ve
form�tu eps (encapsulated postscript) a to jak rastrov�, tak vektorov�.
Pro pdf v�stup se nejl�pe pou�ije form�t pdf
(vektorov� grafika) nebo pro rastrovou grafiku jpg �i tiff.
O tom, v jak�m form�tu se bude hledat obr�zek p�i zpracov�n� pdf\TeX em
rozhoduje makro \texmac{\\obrazekprip{p��pona}}, kde \texmac{p��pona}
je p��pona vkl�dan�ch grafick�ch obr�zk� a implicitn� je pdf. Po zavol�n�
tohoto makra se p��pona m�n� glob�ln� a bude se pou��vat pro obr�zky
a� do konce zpracov�n� dokumentu nebo do dal��ho zavol�n� makra
\texmac{\\obrazekprip} s jinou p��ponou.

Chceme-li m�t obr�zek v jin� ne� \uv{p�irozen�} velikosti, m��eme pou��t
registry \texmac{\\obrazekx} resp. \texmac{\\obrazeky}, kter� jsou typu
\texmac{dimen} a lze jim p�i�adit ���ku resp. v��ku (p��padn� oba parametry)
n�sleduj�c�ho obr�zku. Nulov� hodnota znamen� p�vodn� velikost a na
tuto hodnotu jsou oba registry nastaveny ihned po vlo�en� obr�zku.

Pou�it� makra pro vlo�en� obr�zku je n�sleduj�c�:
\texmac{\\obrazek\l soubor\p\l Popisek obr�zku\p},
kde soubor je jm�no souboru bez p��pony, tu si syst�m
p�ipoj� pro p��slu�n� v�stup jakou bude pot�ebovat (a soubor v
p��slu�n�m form�tu ov�em mus� existovat).

\subsection{Reference}
\seclabel{DocReferenci}
V jednotliv�ch knih�ch jsou zavedeny k��ov� reference na r�zn�
objekty. Odkazovat se lze na rovnice, tabulky, str�nky, obr�zky,
kapitoly, knihy, funguj� dop�edn� i zp�tn� reference.
V�echny reference spolehliv�
funguj� po troj�m pr�chodu \TeX{} procesorem. Druh� pr�chod je nutn� z
d�vodu vybaven� i dop�edn�ch referenc� (na�ten� souboru referenc�
z p�edchoz�ho b�hu), t�et�m pr�chodem dojde k p��padn�mu srovn�n�
odkaz� kter� se zm�nily nap�. v d�sledku prodlou�en� obsahu na v�ce
str�nek po druh�m pr�chodu \TeX{} procesorem.

P��slu�nou zna�ku \\label
je nejlep�� umis�ovat t�sn� za p��slu�n� objekt, na nej� chceme
odkazovat. Um�st�n� p�ed odkazovan� objekt zp�sob�, �e zna�ka bude
odkazovat na p�edchoz� objekt stejn�ho typu.
Konkr�tn� pr�kazy pro n�v�t� / odkaz jsou:
\zacmat
\hfil # &\qquad # \hfil& \qquad # \hfil
 knihy    & \texmac{\\knihalabel\l reference\p} & \texmac{\\kniharef\l reference\p}
 kapitoly & \texmac{\\seclabel\l reference\p}   & \texmac{\\secref\l reference\p}
 rovnice  & \texmac{\\eqlabel\l reference\p}    & \texmac{\\eqref\l reference\p}
 str�nky  & \texmac{\\strlabel\l reference\p}   & \texmac{\\strref\l reference\p}
 tabulky  & \texmac{\\tablabel\l reference\p}   & \texmac{\\tabref\l reference\p}
 obr�zky  & \texmac{\\obrlabel\l reference\p}   & \texmac{\\obrref\l reference\p}
\konmat
Syst�m \MDef{} m� definovanou prom�nnou \texmac{\\globalrefs}, kter� je
implicitn� nula a v tom p��pad� jsou v�echny reference v�dy lok�ln�
v r�mci jedn� knihy (tedy lze m�t i p�i jednom zpracov�n� dokumentace
v�ce stejn�ch zna�ek, ka�dou v jin� knize, i kdy� to z�sadn� nedoporu�uji).
Nastav�me-li \texmac{\\globalrefs} na jedni�ku, budou odkazy kapitol
v�ech �rovn�, odkazy na str�nku a odkazy na literaturu br�ny jako glob�ln�
a lze se odkazovat na kapitoly, str�nky a polo�ky literatury i mezi knihami
(ov�em v p��pad� stejn�ch zna�ek bude \TeX{} hl�sit chybu).

\subsection{Prost�ed� verbatim}
Prost�ed� verbatim funguje tak, �e v�e, co je naps�no mezi zadan�mi
zna�kami, je vys�zeno bez form�tov�n� --- tedy tak, jak je zaps�no ve
zdrojov�m textu. Toho se vyu��v� nap�. p�i sazb� zdrojov�ch k�d�
program� apod. Za t�mto ��elem je v syst�mu \MDef{} p�ipraveno n�kolik
prost�ed�:
\begnum
 \item \uv{oby�ejn�} verbatim, za��n� p��kazem
       \texmac{\\verb} a kon�� p��kazem \texmac{\\everb}, oba p��kazy
       je nejlep�� ps�t samostatn� stoj�c� na ��dku,
 \item verbatim s ��slov�n�m ��dek pro snadn�j�� orientaci ve zdrojov�ch
       textech. K zah�jen� a ukon�en� prost�ed� se pou�ij� p��kazy
       \texmac{\\cverb} a \texmac{\\ecverb}. �e se m� za��t ��slovat od
       za��tku (prvn�ho ��dku) ozn�m�me \TeX u p��kazem
       \texmac{\\begcfile}, jinak se ��sluje sekven�n� i p�es n�kolik
       vol�n� \texmac{\\cverb}.
 \item speci�ln� prost�ed� pro p��m� vkl�d�n� dokumentovan�ch zdrojov�ch
       text� program�, podrobn�ji viz. kapitolu \secref{DocDocInput}
\endnum

\subsection{Dokumentov�n� zdrojov�ch k�d� program�}
\seclabel{DocDocInput}
Syst�m \MDef{} umo��uje ps�t dokumentaci ke zdrojov�m text�m
program� (C++ a Tcl) p��mo do t�chto zdrojov�ch k�d�. To vede p�edev��m k
jednodu���mu udr�ovan� dokumentace p�i zm�n�ch v programu, ale tak� k
lep�� p�ehlednosti programu pro jeho autora i p��padn�ho upravovatele.

\subsubsection{Makra pro vlo�en� C++ souboru}
Jsou implementov�na dv� makra, kter� se li�� pouze zp�sobem ��slov�n�
��dek zdrojov�ho k�du programu. Jde vlastn� o \uv{speci�ln�}
\texmac{\\input} rutiny, kter� p�iprav� takov� chov�n� \TeX u, �e
soubor, kter� je b�n� kompilovateln� C++ kompil�torem se v nezm�n�n�
podob� d� za�adit do dokumentace a kompilovat takto \TeX em.

Zm�n�n� makra maj� stejnou syntaxi jako makro
\texmac{\\input}.
Jejich tvar je
\texmac{\\csrcdocinput soubor} a
\texmac{\\csrctldocinput soubor}, kde soubor je jm�ho C++ souboru v�etn�
p��pony. Prvn� z maker dokumentuje zdrojov� k�d a ��dky c��kovsk�ho
zdroje jsou ��slov�ny od jedn� postupn� tak , jako by v~souboru chyb�la
dokumentace. Tento zp�sob ale m��e n�komu vadit (p�i hled�n� v souboru
jsou ��sla ��dek v dokumentaci r�zn� od skute�n�ch), proto m��e pou��t
druhou verzi makra, kter� ��sluje ��dky podle jejich skute�n� pozice ve
vstupn�m souboru. Pokud budou v C++ souboru n�jak� \TeX ov� definice, kter�
nebudou \texmac{\\global}, budou tyto platit jen v r�mci vlo�en�ho souboru,
ve zbytku dokumentu se neprojev�.

\subsubsection{Syntaxe dokumentace C++ souboru}
Zdokumentov�n� lze aplikovat na jak�koliv C++ zdrojov� k�d programu.
Z�kladn�m pravidlem je, �e v�echna dokumentace je um�st�na v C++
koment��i (\uv{dvojlom�tko} \csrc{//}),
tud� ji c��kovsk� kompil�tor p�esko��. \TeX{} procesor je
ale nastaven tak, �e si t�chto dvojlom�tek \uv{nev��m�},
tak�e do nich lze ps�t voln� dokumentaci, kter� p�ed za��tkem v�pisu
zdrojov�ho k�du programu zapne prost�ed� \texmac{\\cverb} a p�ed dal��m
za��tkem dokumentace jej ukon��. V praxi m��e dokumentovan� C++
soubor vypadat nap�. takto:
\verb
// % Tento koment�� v koment��i se neobjev� nikde
// \section{N�jak� kapitola popisuj�c� program}
// Text p�edstavuj�c� popis programu, lze tady pou��vat b�n� \TeX ov�
// p��kazy nebo jen ps�t text\dots
// \par
// \dots{} Odstavec se bohu�el mus� ps�t jak je v��e p�edvedeno, dvojit�
// za��dkov�n� s dvojit�mi lom�tky nefunguje.
// \cverb
#include <stdio.h>

int main () {    // tohle se vyp�e jak je zaps�no (jsme ve verbatimu)
  printf ( "Ahoj sv�te!" ) ;
  return 0 ;
}
//\ecverb
// A zde m��e pokra�ovat dokumentace jako v p�edchoz�m p��pd�
// a� do konce souboru, jeho� na��t�n� \TeX em je ukon�eno standartn�:
// \endinput
\everb

\subsubsection{Makra pro vlo�en� Tcl souboru}
Analogicky jako vkl�d�n� c��kovsk�ho dokumentovan�ho souboru
funguje i dokumentov�n� Tcl soubor�. Pouze m�sto C++ koment��e
se pou�ije Tcl zp�sob \uv{\tclsrc{\#}} a soubory se vkl�daj�
pomoc� p��kaz�
\texmac{\\tclsrcdocinput} a
\texmac{\\tclsrctldocinput}.

\subsection{Pozn�mka}
Makro \texmac{\\poznamka} funguje tak, �e jeho parametrem je pozn�mka,
kter� se uvede ihned na m�st� vlo�en� makra. Vyps�na je kurz�vou,
odsazena 1 cm od lev�ho okraje a od okoln�ho textu odd�lena linkami ���e
50 mm. Parametr m��e obsahovat i \texmac{\\par}, tedy odstavcov� zlom,
kter� se projev� i v pozn�mce jako klasick� odstavec, ov�em se zm�n�n�mi
�pravami vzhledu oproti okoln�mu textu.

\subsection{Obsah}
\seclabel{DocObsah}
Dokumenta�n� syst�m umo��uje pou�it� n�kolika typ� obsahu podle
tisknut�ho rozsahu a hloubky �len�n�.
{\zactab Mo�nosti tisku obsahu
\vrule\quad\hfil\texmac{#}\quad&\vrule\quad #\hfil\quad\vrule
 \linka
  {\bf makro}\hfil    & \hfil{\bf Popis makra}
 \dlinka
  \\celyobsah    & Kompletn� obsah cel� dokumentace
 \linka
  \\seznamknih   & Obsah jako seznam knih v kompletn� dokumentaci
 \linka
  \\obsahknihy   & Obsah konkr�tn� knihy
 \linka
\kontab}

Prvn� dva uveden� zp�soby se mohou pou��vat, pouze pokud generujeme kompletn�
dokumentaci. Prvn� z nich ud�l� kompletn� obsah ze v�ech knih a s
nadpisy v�ech �rovn�. \texmac{\\seznamknih} funguje jako
\texmac{\\celyobsah} s t�m rozd�lem, �e kapitoly jsou vynech�ny a jde
tedy jen o v�pis knih, z nich� dokumentace sest�v�.

Posledn� je \texmac{\\obsahknihy}, kter� vytvo�� lok�ln� obsah pouze
aktu�ln� kompilovan� knihy. Pou�ije se v�dy aktu�ln� kniha, v n� je
obsah pou�it,
p�i�em� jsou zahrnuty v�echny kapitoly prvn� a� p�t� �rovn� p��slu�n�
knihy. Pokud je zpracov�v�na pouze jedna kniha (ne cel� dokumentace),
jde vlastn� o cel� obsah t� knihy.

\subsection{Odkazy na literaturu}
Odkazovat se na literaturu lze podobn� jako u ostatn�ch objekt� makrem
\texmac{\\litref\l zna�ka\p}. V m�st� vlo�en� bude ��slo literatury
ozna�en� zna�kou \texmac{zna�ka} v hranat�ch z�vork�ch.
��slov�n� literatury se d�je lok�ln� v r�mci ka�d� knihy.

Pro samotn� seznam literatury je nejl�pe napsat v�echny jeho polo�ky
na jednom m�st�.
Ka�d� polo�ka literatury se vkl�d� makrem
\texmac{\\literatura\l n�zev\p\l autor\p\l vyd�n�\p\l zna�ka\p}.
P��mo v m�st� vlo�en� tohoto makra bude polo�ka seznamu literatury a lze
se na ni odkazovat v��e zm�n�n�m makrem \texmac{\\litref}.

\subsection{Ostatn� p��kazy}\seclabel{DocOstPrik}
Dokumenta�n� syst�m obsahuje je�t� n�kolik dal��ch p��kaz� pro ozna�en�
ur�it�ch typ� textu. Tyto p��kazy se p�i tisku dokumentu nemus� v�bec
projevit, nebo jen zp�sob� nap�. tisk jin�m fontem ne� je okoln� text.
Budou ale ��eln� vyu�ity t�eba p�i tvorb� pdf nebo xml verze dokumentace
(nap�. hypertextov� odkazy) nebo ke generov�n� seznam� p��slu�n�ch
objekt�.

{\def\lp{\l\p } \catcode37=14
\zactab Seznam \uv{drobn�ch} p��kaz� dokumenta�n�ho syst�mu
\vrule\quad\hfil\texmac{#}\quad&\vrule\quad #\hfil\quad\vrule
 \linka
  {\bf P��kaz}\hfil       & \hfil{\bf Popis p��kazu}
 \dlinka
  \\soubor\lp        & parametr je jm�no souboru
  \\texmac\lp        & parametr je \TeX ovsk� makro, nen� jako verbatim!
  \\csrc\lp          & parametr je p��kaz v jazyce C �i C++
  \\tclsrc\lp        & parametr je p��kaz v jazyce Tcl
  \\tclargs\lp       & parametr jsou argumenty p��kazu v jazyce Tcl
  \\data\lp          & parametr jsou data vstupn�--v�stupn�ch soubor�
  \\httpodkaz\lp\lp  & 1. parametr ud�v� http adresu, %
                       2. je text, kter� bude slou�it jako odkaz
  \\ftpodkaz\lp\lp   & 1. parametr ud�v� ftp adresu, %
                       2. je text, kter� bude slou�it jako odkaz
  \\mailodkaz\lp\lp  & 1. parametr je e-mailov� adresa, %
                       2. je text, kter� bude slou�it jako odkaz
  \\newline          & \uv{tvrd�} od��dkov�n�
  \\newpage          & \uv{tvrd�} zlom str�nky
  \\\\               & makro pro tisk zp�tn�ho lom�tka
  \\l                & tiskne levou slo�enou z�vorku
  \\r                & tiskne pravou slo�enou z�vorku
  \\softinput \#1    & vlo�� do dokumentu soubor jen pokud existuje
  \\autodoc          & vlo�� do dokumentace popis bal�ku \MDef{} (jako knihu)
  \\autodocman       & jako \texmac{\\autodoc}, ale vlo�� pouze u�ivatelskou %
                       ��st (pou�it� p��kaz�)
  \\autodocman       & jako \texmac{\\autodoc}, ale vlo�� pouze ��st %
                       s popisem algoritm� maker \MDef
  \\eqcr             & v prost�ed� \texmac{\\eqalignno} m�sto \texmac{\\cr}, %
                       ��sluje ��dek jako rovnici (mo�n� odkazy)
 \linka
\kontab}

D�le mus�m zm�nit zm�nu \texmac{\\catcode} znaku \uv{_}, kter� je nastaveno
na 12 (tzn. oby�ejn� znak) z d�vodu �ast�ho v�skytu ve zdrojov�ch
k�dech program� psan�ch v jazyce C++. Pro matematick� prost�ed�
se v�znam tohoto znaku nem�n�.
\expandafter\ifx\csname skipsrc\endcsname \relax
\section{Literatura}
 \literatura{\TeX Book naruby}
            {Petr Ol��k}
            {Konvoj, Brno 2000, 80-85615-64-9}
            {TeXBook}
 \literatura{Typografick� syst�m \TeX}
            {Petr Ol��k}
            {Konvoj, Brno 2000, ISBN 80-85615-91-6}
            {TypoSysTeX}
 \literatura{Jemn� �vod do \TeX u}
            {Michael Doob, p�eklad a �prava Josef Dane�, Ji�� Vesel�}
            {CsTUG, Praha 1993, 3. upraven� vyd�n� �esk�ho p�ekladu}
            {Jemny}
 \literatura{XML pro ka�d�ho}
            {Ji�� Kosek}
            {Grada, Praha 2000, ISBN 80-7169-860-1}
            {xml}
 \literatura{Zpravodaj �eskoslovensk�ho sdru�en� u�ivatel� \TeX u}
            {r�zn� �l�nky}
            {CsTUG, Brno, ISSN 1211-6661}
            {zpravodaj}
 \literatura{\TeX Live 5d CD-ROM}
            {pdf\TeX{} examples aj.}
            {sdru�en� u�ivatel� \TeX u, VII. 2000}
            {TeXLivepdf}
\fi
\fi
% \fi
% \if 0\autodocsource \expandafter\endinput\else
%   \if 0\autodocmanual
%     \kniha{Popis dokumenta�n�ho syst�mu \MDef}{}{Martin Man��k} \obsahknihy
%   \else
%     \newpage
%   \fi
% \fi
%
% \section{Popis algoritm�} \seclabel{DocDefinice}
%   V n�sleduj�c� ��sti popisuji detailn� makra, kter�mi je syst�m \MDef
%   naprogramov�n. V sou�asn� verzi jsou pomoc� n�j psan� dokumenty
%   zpracovateln� csplain\TeX em pro dvi nebo ps v�stup. Probl�my ne�in� ani
%   kompilace pdfcsplain\TeX em pro v�stup ve form�tu pdf, ale zat�m nejsou
%   vyu�ity v�echny mo�nosti pro zpracov�n� t�mto programem.
%
% \subsection{Test na�ten� souboru}
%     Nejprve si program otestuje, zda byl ji� soubor maker na�ten. V p��pad�
%     dokumentace, kde je v�ce knih (viz. kapitolu \secref{DocKnihy}), se
%     nebudou makra na��tat n�kolikr�t, ale p�edev��m inicializace
%     n�kter�ch prom�nn�ch (nap�. ��slov�n� str�nek) n�kolikr�t b�hem
%     zpracov�n� dokumentu by vedla k nesmysln�m v�stup�m.
% \par
%     Jako test pro zji�t�n� na�ten� souboru jsem si vybral ��dic� sekvenci
%     \texmac{DefiniceNacteny}, kter� je definov�na po prvn�m pr�chodu
%     souborem maker a p�i jej� existenci v dal��ch pr�chodech je na��t�n�
%     souboru ihned ukon�eno. P�ipojen je i v�pis o t�chto �innostech
%     na termin�l.
% \defverb
\expandafter\ifx\csname DefiniceNacteny\endcsname \relax
    \expandafter\def \csname DefiniceNacteny\endcsname {1}
    \message{Na��t�m soubor mdef.tex...}
  \else
    \message{- p�esko�en}
    \expandafter\endinput \fi
\edefverb
%   \subsection{Inicializace prom�nn�ch (kniha)}
%     ��slo aktu�ln� zpracov�van� knihy je uchov�v�no v prom�nn�
%       \texmac{\\bookno}. Proto�e se ale pou��v� ��msk�ho ��slov�n� knih,
%       je definov�no i makro \texmac{\\thebook}, kter� je implicitn�
%       pr�zdn� --- p�i zpracov�n� jedn� knihy je toto ��slo vynech�v�no.
%       V tom
%       p��pad� tak� makro \texmac{\\konecknihy} bude ukon�ovat celou
%       dokumentaci a je tedy implicitn� definov�no jako \texmac{\\end}.
% \defverb
\def\thebook{}          % ��slo knihy ��msky, pou��v� se bez mezer kolem
\def\bookname{}         % jm�no aktu�ln� zpracov�van� knihy
\def\konecknihy{\end}   % implicitn� konec knihy
\newcount \bookno       % aktu�ln� ��slo knihy
\edefverb
%   \subsection{Inicializace prom�nn�ch (kapitoly)}
%     Zde stoj� za zm�nku p�edev��m makro \texmac{\\fpkapno}, v n�m� je
%       ulo�eno ��slo aktu�ln� kapitoly v�etn� ��sel v�ech �rovn�
%       podkapitol. Dal�� makra slou�� k uchov�n� n�zv� kapitol pro
%       pot�eby p�edev��m z�hlav� str�nek. Konkr�tn� v�znam maker je
%       z�ejm� z koment���:
% \defverb
\def\fpkapno{}          % m�sto ��sla aktualn� kapitoly bude �et�zec
\newcount \kapno        % aktu�ln� kapitola 1. �rovn�
\newcount \subkapno     % aktu�ln� kapitola 2. �rovn�
\newcount \subsubkapno  % aktu�ln� kapitola 3. �rovn�
\newcount \parkapno     % aktu�ln� kapitola 4. �rovn�
\newcount \pparkapno    % aktu�ln� kapitola 5. �rovn�
  % n�sleduj�c� definice se pou��vaj� pro hlavi�ku str�nky:
\def\fpkapname{}        % n�zev prvn� kapitoly aktu�ln� str�nky
\def\lpagelkap{}        % n�zev posledn� kapitoly na posledn� str�nce
\def\lpagefkap{}        % n�zev prvn� kapitoly na posledn� str�nce
\newcount \lastpagekap  % posledn� str�nka za��tku kapitoly
  % a tyto definice pou��v� pdf\TeX:
\expandafter\ifx\csname pdfoutput\endcsname \relax
\else
 \pdflinkmargin=0pt
 \pdfmovechars=2
 \pdfpkresolution=300
 \pdfuniqueresname=0
 \pdfcompresslevel=4
\fi
  % n�sleduj�c� definice se pou��vaj� pro hlavi�ku str�nky:
\def\fpkapname{}        % n�zev prvn� kapitoly aktu�ln� str�nky
\def\lpagelkap{}        % n�zev posledn� kapitoly na posledn� str�nce
\def\lpagefkap{}        % n�zev prvn� kapitoly na posledn� str�nce
\newcount \lastpagekap  % posledn� str�nka za��tku kapitoly


\edefverb
%   \subsection{Definice makra pro knihu}
%     Nejd��ve jsou vynulov�na v�echna po�itadla pro kapitoly,
%     k tomu m��eme doplnit nulov�n� o��slov�n� rovnic, tabulek\dots{}
%     D�le jsou definov�ny �daje pro tituln� str�nku knihy
%     (\texmac{\\nazev}, \texmac{\\podnazev} a \texmac{\\autor}).
% \par
%     Dal�� ��st definice je v�tven� podle toho, zda je zpracov�v�na
%     jen jedna kniha nebo kompletn� dokument:
%     \begitem
%     \item p�i samostatn� knize se definuje makro \texmac{\\thebook}
%           pro ��slov�n� knih jako pr�zdn�, pot� je vynulov�no po�itadlo
%           str�nek a vygenerov�na tituln� strana.
%     \item Je-li dokument slo�en z v�ce knih, je po p�echodu na novou str�nku
%           zv��eno ��slo knihy o 1, v makru \texmac{\\bookname} definujeme
%           jm�no knihy a makrem \texmac{\\thebook} definujeme ��msk�
%           o��slov�n� knihy.
%           Nakonec je proveden z�pis do souboru pro generov�n� obsahu a
%           makrem \texmac{\\titulknihy} je vys�zena tituln� str�nka knihy.
%     \enditem
% \defverb
\def\kniha #1#2#3{
  \litnum = 0   \kapno = 0
  \cisrov = 0   \cistab = 0      \cisobr = 0
  \subkapno = 0 \subsubkapno = 0 \parkapno = 0 \pparkapno = 0
  \def\nazev{\thebook{} #1}
  \def\podnazev{#2}
  \def\autor{#3}
  \expandafter\ifx\csname maindoccs\endcsname \relax
      \def\thebook{} \pageno = 0 \titulknihy
  \else
      \newpage
      \global\advance\bookno by1 \def\bookname{#1}
      \def\thebook{\uppercase\expandafter{\romannumeral\bookno}. }
      \titulknihy
      \maketoclinebook{\thebook #1}
      \expandafter\ifx\csname pdfoutput\endcsname \relax \else {
        \pdfdest name{book\thebook} fith
        \pdfoutline goto name{book\thebook} count 0 {\bookname}} \fi
  \fi}
\edefverb
%     \subsection{Kapitoly}
%     Podobn� jako kniha jsou definov�na i makra pro definici kapitol r�zn�ch
%     �rovn�. Nejd��ve se tedy nuluj� po�itadla v�ech hierarchicky ni���ch
%     objekt� a po�itadlo aktu�ln�ho objektu se zv��� o jedni�ku.
%     D�le je definov�no makro \texmac{\\fpkapno}, kter�
%     se pou��v� k ozna�ov�n� ��sla aktu�ln� kapitoly, ve \texmac{\\vbox}u
%     je vyps�n n�zev kapitoly s jej�m ��slem (\texmac{\\vbox} je pou�it
%     z d�vodu zalomen� p��padn�ho dlouh�ho nadpisu).
%     Z�porn� penalta p�ed n�zvem kapitoly slou�� k vynucen�
%     zalomen� str�nky v p��padech, kdy by byl jej� nadpis \uv{p��li� n�zko}
%     na str�nce.
%     Nakonec je pou�it p��kaz \texmac{\\maketocline}{\it x} p��slu�n�
%     �rovn� {\it x} pro z�pis nadpisu do souboru obsahu.
% \par
%     U hlavn� kapitoly \texmac{\\section} je nav�c vyhodnocen�
%     podm�nky pro p�i�azen� n�zvu nadpisu do hlavi�ky str�nky.
% \defverb
%\newcount\secc
%%%%
%\expandafter\def\csname secc1. \endcsname{3}
\newcount\secoutlinea
\newcount\secoutlineb
\newcount\secoutlinec
\newcount\secoutlined
\gdef\seccounter#1#2{\expandafter\gdef\csname #1\endcsname{#2}}
%%%%
\def\section #1{\subkapno = 0 \subsubkapno = 0 \parkapno = 0 \pparkapno = 0
  \def\fpkapno{\thebook\the\kapno . }
%  \newpage  % neni-li newpage, je \vskip 24pt:
  \def\fpkapname{#1} \vskip 24 pt
  \global\advance\kapno by1
  \penalty -2000
%%%%
  \expandafter\ifx\csname pdfoutput\endcsname \relax \else
    \expandafter\ifx\csname secc\fpkapno\endcsname \relax % neex.-li pocitadlo, je 0
      \expandafter\def\csname secc\fpkapno\endcsname{0}
    \fi
    \secoutlinea=0
    \pdfdest name {section\fpkapno} fith
    \pdfoutline goto name {section\fpkapno} count 
    \expandafter\csname secc\fpkapno\endcsname {\the\kapno. \fpkapname}
  \fi
%%%%
  \leftline{\bigggg\vbox{\fpkapno #1}}
  \ifnum \lastpagekap = \pageno
  \else  \global\lastpagekap=\pageno
         \edef\lpagefkap{\the\kapno . #1} \fi
  \edef\lpagelkap{\fpkapno #1}
  \vskip 0pt %-\parskip
  \maketoclinea{\fpkapno #1 }}
\edefverb
%     Dal�� makra pro ni��� �rovn� kapitol nejsou ji� popisov�na, funguj�
%     analogicky jako \texmac{\\section}. Jsou to:
%     \begitem
%       \item \texmac{\\subsection}
%       \item \texmac{\\subsubsection}
%       \item \texmac{\\partsection}
%       \item \texmac{\\ppartsection}
%     \enditem
% \defverb
\def\subsection #1{\global\advance\subkapno by1
  \subsubkapno = 0 \parkapno = 0 \pparkapno = 0
  \def\fpkapno{\thebook\the\kapno . \the\subkapno . }
  \def\fpkapname{#1} \vskip 20 pt \penalty -1500
  \expandafter\ifx\csname pdfoutput\endcsname \relax \else
    \expandafter\ifx\csname secc\fpkapno\endcsname \relax % neex.-li pocitadlo, je 0
      \expandafter\def\csname secc\fpkapno\endcsname{0}
    \fi
    \secoutlineb=0
    \advance\secoutlinea by1
    \maketoclinecc{secc\the\kapno . }{\the\secoutlinea}
    \pdfdest name{section\fpkapno} fith
    \pdfoutline goto name{section\fpkapno} count 
    \expandafter\csname secc\fpkapno\endcsname {\the\kapno . \the\subkapno . \fpkapname}
  \fi
  \leftline{\biggg\vbox{\fpkapno #1}}
  \vskip 0pt %-\parskip
  \maketoclineb{\fpkapno #1} }

\def\subsubsection #1{\global\advance\subsubkapno by1
  \parkapno = 0 \pparkapno = 0
  \def\fpkapno{\thebook\the\kapno . \the\subkapno .
      \the\subsubkapno . }
  \def\fpkapname{#1} \vskip 18 pt \penalty -1000
  \expandafter\ifx\csname pdfoutput\endcsname \relax \else
    \expandafter\ifx\csname secc\fpkapno\endcsname \relax % neex.-li pocitadlo, je 0
      \expandafter\def\csname secc\fpkapno\endcsname{0}
    \fi
    \secoutlinec=0
    \advance\secoutlineb by1
    \maketoclinecc{secc\the\kapno . \the\subkapno . }{\the\secoutlineb}
    \pdfdest name{section\fpkapno} fith
    \pdfoutline goto name{section\fpkapno} count 
    \expandafter\csname secc\fpkapno\endcsname 
    {\the\kapno . \the\subkapno . \the\subsubkapno . \fpkapname}
  \fi
  \leftline{\bigg\vbox{\fpkapno #1}}
  \vskip 0pt %-\parskip
  \maketoclinec{\fpkapno #1} }

\def\partsection #1{\global\advance\parkapno by1
  \pparkapno = 0
  \def\fpkapno{\thebook\the\kapno . \the\subkapno .
      \the\subsubkapno . \the\parkapno . }
  \def\fpkapname{#1} \vskip 14 pt \penalty -1000
  \expandafter\ifx\csname pdfoutput\endcsname \relax \else
    \expandafter\ifx\csname secc\fpkapno\endcsname \relax % neex.-li pocitadlo, je 0
      \expandafter\def\csname secc\fpkapno\endcsname{0}
    \fi
    \secoutlined=0
    \advance\secoutlinec by1
    \maketoclinecc{secc\the\kapno . \the\subkapno . \the\subsubkapno . }{\the\secoutlinec}
    \pdfdest name{section\fpkapno} fith
    \pdfoutline goto name{section\fpkapno} count 
    \expandafter\csname secc\fpkapno\endcsname 
    {\the\kapno . \the\subkapno . \the\subsubkapno . \the\parkapno . \fpkapname}
  \fi
  \leftline{\bigbf\vbox{\fpkapno #1}}
  \vskip 0pt %-\parskip
  \maketoclined{\fpkapno #1} }

\def\ppartsection #1{\global\advance\pparkapno by1
  \def\fpkapno{\thebook\the\kapno . \the\subkapno .
      \the\subsubkapno . \the\parkapno . \the\pparkapno . }
  \def\fpkapname{#1} \vskip 12 pt \penalty -1000
  \expandafter\ifx\csname pdfoutput\endcsname \relax \else
    \advance\secoutlined by1
    \maketoclinecc{secc\the\kapno . \the\subkapno . \the\subsubkapno . 
     \the\parkapno . }{\the\secoutlined}
    \pdfdest name{section\fpkapno} fith
    \pdfoutline goto name{section\fpkapno} count 0 
    {\the\kapno . \the\subkapno . \the\subsubkapno . 
     \the\parkapno . \the\pparkapno . \fpkapname}
  \fi
  \leftline{\big\vbox{\fpkapno #1}}
  \vskip 0pt %-\parskip
  \maketoclinee{\fpkapno #1} }
\edefverb
%  Nakonec je�t� definujeme makro \texmac{\\nosection}, jeho� v�stup
%  vypad� jako u makra \texmac{\\section} s t�m rozd�lem, �e takov�to
%  kapitola nen� o��slov�na. Toto makro je vhodn� nap�. pro �vod
%  kapitoly �i dokumentace. Z d�vodu n�pisu v hlavi�ce str�nky
%  p�episuje v�znam maker \texmac{\\thebook} a \texmac{\\bookname},
%  proto�e se jeho pou�it� p�edpokl�d� \uv{mimo knihu}.
% \defverb
\def\nosection #1{\def\fpkapno{}
  % \newpage  % neni-li newpage, je \vskip 24pt:
  \vskip 24 pt \penalty -2000
  \expandafter\ifx\csname pdfoutput\endcsname \relax \else {\pdfdest name{section\fpkapno} fith
    \pdfoutline goto name{section\fpkapno} count 0 {\fpkapname}} \fi
  \leftline{\bigggg\vbox{\fpkapno #1}}
  \ifnum \lastpagekap = \pageno %\message{NIC.}%
  \else \global\lastpagekap=\pageno %\message{NECO.}%
        \edef\lpagefkap{#1}\fi
  \edef\lpagelkap{#1}
  \vskip 0pt %-\parskip
  \def\thebook{} \def\bookname{#1}
  \maketoclinea{\fpkapno \noexpand#1 }}
\edefverb
%     \subsection{Zpracov�n� referenc� na knihu a kapitoly}
%     N�sledn� jsou definov�na makra pro odkaz a zna�ku na kapitolu a
%     d�le pomocn� makro \texmac{\\secREF}, kter� slou�� k
%     vlo�en� odkaz� ze souboru \soubor{\\jobname.ref} z p�edchoz�ho
%     b�hu \TeX{} procesoru (tj. zp�tn� reference).
%     \par
%     Makro \texmac{\\seclabel} zapisuje aktu�ln� ��slo a n�zev
%     kapitoly do souboru referenc� pomoc� makra \texmac{\\zapisref},
%     kde jsou pro v�stupn� rutinu \uv{anulov�na} makra pou��van�
%     v n�zvech kapitol, aby bylo mo�no je op�t na��st pro reference.
%     Z�rove� je br�na v �vahu hodnota po�itadla \texmac{\\globalrefs},
%     kter� ud�v�, zda se budou reference na kapitoly prov�d�t v r�mci
%     cel�ho dokumentu (tj. i mezi knihami) nebo v r�mci ka�d� knihy zvl᚝.
% \defverb
\newtoks\pisref
\newcount\globalrefs
\def\zapisref#1{{\let\_=\relax \let~=\relax \let\dots=\relax
               \let\TeX=\relax \let\MDef=\relax
               \pisref={#1}\edef\act{\write\REF{\the\pisref}}\immediate\act}}
\def\seclabel #1{%
   \if 0\the\globalrefs
       \zapisref{\string\secREF{\the\bookno#1}{\fpkapno \fpkapname}}
%       \zapisref{\string % \secREF{\the\bookno#1}{\fpkapno \fpkapname}
       \expandafter\ifx\csname pdfoutput\endcsname \relax \else
         \pdfdest name{\the\bookno#1} fitr width 210mm height 1em depth 0mm
       \fi
   \else \zapisref{\string % \secREF{#1}{\fpkapno \fpkapname}
     \expandafter\ifx\csname pdfoutput\endcsname \relax \secREF{#1}{\fpkapno \fpkapname} \else
       \pdfstartlink attr{/Border [0 0 0]}goto name{#1}
       \Blue\secREF{#1}{\fpkapno \fpkapname}\Black \pdfendlink
     \fi
   }
\fi}
\edefverb
%    \texmac{\\secref} dod� na v�stup �et�zec definovan� p��kazem
%    \texmac{\\seclabel} pokud existuje, jinak vyp�e \uv{War\-ning\dots}.
%    Op�t zde bereme v �vahu hodnotu \texmac{\\globalrefs}.
% \defverb
\def\secref #1{%
   \if 0\the\globalrefs
     \expandafter\ifx\csname sec:\the\bookno#1\endcsname \relax
       \message{Warning: Undefined sec number [#1] (local)}??%
     \else
%       \csname sec:\the\bookno#1\endcsname
          \expandafter\ifx\csname pdfoutput\endcsname \relax
            \csname sec:\the\bookno#1\endcsname
          \else
            \hbox{\pdfstartlink attr{/Border [0 0 0]}
            goto name{\the\bookno#1} \Blue
            \csname sec:\the\bookno#1\endcsname
            \Black\pdfendlink}\fi\fi
   \else%
     \expandafter\ifx\csname sec:#1\endcsname \relax
     \message{Warning: Undefined sec number [#1]}??%
     \else\csname sec:#1\endcsname
       \expandafter\ifx\csname pdfoutput\endcsname \relax \else
         \pdfdest name{#1} fith
       \fi
   %\fi
     \fi
   \fi}
\edefverb
%      Makro \texmac{\\secREF} je pomocn�m makrem, kter� se pou��v� p�i
%      na��t�n� a z�pisu souboru referenc�:
%      \begitem
%          \item p�i z�pisu je toto makro zaps�no, p�i�em� jeho parametry
%          jsou zna�ka odkazu a text ukazuj�c� na dan� m�sto (tj. zde
%          ��slo a n�zev kapitoly)
%          \item p�i na��t�n� souboru referenc� tato makra definuj� ��dic�
%          sekvence, kter� definuj� p��slul�n� odkazy nebo v p��pad�, �e
%          �idic� sekvence ji� existuje, hl�s� \uv{Error\dots}.
%      \enditem \vskip -20pt
% \defverb
\def\secREF #1#2{
     \expandafter\ifx\csname sec:#1\endcsname \relax
     \expandafter\def \csname sec:#1\endcsname {#2}
     \else \errmessage{Error: Double sec mark [#1]}\fi}
\edefverb
%     Analogick�m zp�sobem jsou definov�na i makra pro tvorbu referenc� na
%     v�echny ostatn� objekty, tak�e d�le ji� nejsou podrobn� popisov�na.
%     Zde dodefinujeme makra pro odkazy na knihu:
% \defverb
\def\knihalabel #1{
   \immediate\write\REF{\string\knihaREF{#1}{\thebook \bookname}}}
\def\kniharef #1{\expandafter\ifx\csname kniha:#1\endcsname \relax
   \message{Warning: Undefined book number [#1]}??%
   \else\csname kniha:#1\endcsname\fi}
\def\knihaREF #1#2{\expandafter\ifx\csname kniha:#1\endcsname \relax
      \expandafter\def \csname kniha:#1\endcsname {#2}
   \else \errmessage{Error: Double book mark [#1]}\fi}
\edefverb
%     \subsection{V��ty a odr�ky}
%   Pro tato prost�ed� nejd��ve definujeme po�itadla pro v�echny t�i
%   �rovn�. Prost�ed� podle hodnoty po�itadel rozezn�v� aktu�ln� stav, v
%   jak�m se \TeX{} procesor vzhledem k t�mto prost�ed�m vyskytuje.
%  \par
%   Je-li hodnota po�itadel nulov�, nejsme v ��dn�m prost�ed� v��t� �i
%   odr�ek. Je-li tato hodnota z�porn�, jsme v prost�ed� odr�ek (b�v�
%   nastavena na -1). P�i kladn�ch hodnot�ch po�itadel se vyskytujeme v
%   prost�ed� v��t� a p��slu�n� hodnoty po�itadel odpov�daj� o��slov�n�
%   aktu�ln� polo�ky v��tu.
% \defverb
\newcount\numitemnum \newcount\numiitemnum \newcount\numiiitemnum
\numitemnum = 0 \numiitemnum = 0 \numiiitemnum = 0
\let\puvitem=\item   % v \puvitem ponech�me p�vodn� v�znam \item
\edefverb
% Te� definujeme makra pro za��tek obou prost�ed�. Tato makra d�laj�
% pouze to, �e nastav� po�itadla v�ech t�� �rovn� do stavu, kter� byl
% pro ob� prost�ed� pops�n v p�edchoz�m odstavci.
% \defverb
\def\begitem{\numitemnum = -1 \numiitemnum = -1 \numiiitemnum = -1
             \par \bgroup \parindent 0pt \parskip 0pt}
\def\begnum{\numitemnum = 1 \numiitemnum = 1 \numiiitemnum = 1
            \par \bgroup \parindent 0pt \parskip 0pt}
\edefverb
% Na konci prost�ed� jsou ��ta�e uvedeny do nulov�ho stavu a je ukon�ena
% skupina (kterou zahajuje posledn� z polo�ek prost�ed�).
% Ukon�en� pro ob� prost�ed� jsou definov�na stejn� (proto je zde
% \texmac{\\def\\endnum\l \\enditem\p}).
% \defverb
\def\enditem{\vskip 0pt \egroup
             \numitemnum = 0 \numiitemnum = 0 \numiiitemnum = 0
             \vskip 0pt}
\def\endnum{\enditem}
\edefverb
%   N�sleduj�c� makra \texmac{\\item, \\iitem} a \texmac{\\iiitem}
%   definuj� postupn� v�echny t�i �rovn� polo�ek seznam� s ��slov�n�m nebo
%   odr�kami.
%  \par
%   Makro nejd��ve zkontroluje, zda byl zah�jen n�kter� ze seznam�.
%   V p��pad� pou�it� mimo seznam vyp�e \TeX{} chybu.
%   Pot� je makro rozd�leno na dv� ��sti podle toho, jestli se vyskytujeme
%   v ��slovan�m seznamu nebo seznamu s odr�kami.
%   S ka�dou polo�kou je zru�ena skupina, kter� je op�t zah�jena, jsou v n�
%   definov�ny rozm�ry aktu�ln� polo�ky a je uzav�ena dal�� polo�kou nebo
%   na konci ukon�ovac�m makrem prost�ed�.
%  \par
%   V seznamu s odr�kami je pouze nastaveno spr�vn� odsazen� textu
%   polo�ky a vyti�t�na jej� zna�ka.
%  \par
%   V ��slovan�m seznamu jsou nav�c nulov�ny v�echny ni��� �rovn�
%   ��slov�n�. Po vys�zen� ��sla polo�ky a jej�ho textu je ��slo polo�ky
%   zv��eno o jedni�ku.
% \defverb
\def\item{
  \ifnum\numitemnum = 0 \errmessage{Chybn� um�st�n� polo�ky item.}
  \else
    \par \hangafter=0 \hangindent=10mm
    \ifnum\numitemnum = -1
       \textindent{\hbox to10mm{\hfil$\bullet$\hfil}}
    \else
       \textindent{\hbox to10mm{\hfil\the\numitemnum . }}
       \advance\numitemnum by1 \numiitemnum = 97 \numiiitemnum = 1
    \fi
  \fi
}
\edefverb
% Ostatn� �rovn� polo�ek \uv{odr�kovan�ch} nebo ��slovan�ch seznam�
% jsou vytvo�eny analogicky k prvn� �rovni, li�� se p�i��t�n�m ��ta�e pro
% tu kterou �rove� v seznamu a rozm�ry a odsazen� polo�ek seznamu dan�
% �rovn�.
% \defverb
\def\iitem{
  \ifnum\numiitemnum = 0 \errmessage{Chybn� um�st�n� polo�ky iitem.}
  \else
    \par \hangafter=0 \hangindent=20mm
    \ifnum\numitemnum = -1
       \textindent{\hbox to20mm{\hfil$\circ$\quad}}
    \else
       \textindent{\hbox to20mm{\hfil\char\numiitemnum . }}
       \advance\numiitemnum by1 \numiiitemnum = 1
    \fi
  \fi
}
\def\iiitem{
  \ifnum\numiiitemnum = 0 \errmessage{Chybn� um�st�n� polo�ky iiitem.}
  \else
    \par \hangafter=0 \hangindent=30mm
    \ifnum\numitemnum = -1
       \textindent{\hbox to30mm{\hfil$\cdot$\quad}}
    \else
       \textindent{\hbox to30mm{\hfil\the\numiiitemnum . }}
       \advance\numiiitemnum by1
    \fi
  \fi
}
\edefverb
%  \subsection{Deklarace souboru referenc� a str�nkov� reference}
%     Zde je deklarov�n ukazatel na soubor \texmac{\\REF}, do n�j� budou
%     zapisov�ny v�echny reference pro na��t�n� v dal��m b�hu \TeX{}
%     procesoru. D�le jsou na tomto m�st� deklarov�na makra pro z�pis a
%     na��t�n� str�nkov� reference, tak jako u odkaz� na kapitoly
%     se bere v �vahu hodnota prom�nn� \texmac{\\globalrefs} pro tvorbu
%     odkaz� i mezi knihami.
% \defverb
\newwrite\REF
\def\strlabel #1{%
   \if 0\the\globalrefs
     \immediate\write\REF{\string\strREF{\the\bookno#1}{\the\pageno}}
   \else\immediate\write\REF{\string\strREF{#1}{\the\pageno}} \fi}
\def\strref #1{%
   \if 0\the\globalrefs
     \expandafter\ifx\csname str:\the\bookno#1\endcsname \relax
     \message{Warning: Undefined page number [#1]}??%
     \else\csname str:\the\bookno#1\endcsname\fi
   \else
     \expandafter\ifx\csname str:#1\endcsname \relax
     \message{Warning: Undefined page number [#1]}??%
     \else\csname str:#1\endcsname\fi
   \fi}
\def\strREF #1#2{\expandafter\ifx\csname str:#1\endcsname \relax
      \expandafter\def \csname str:#1\endcsname {#2}
   \else \errmessage{Error: Double page mark [#1]}\fi}
\edefverb
%  \subsection{Obsah}
%    Obsah je zde �e�en \uv{zp�sobem dvoj�ho na��t�n�}, jak jsem si jej
%    pro sebe nazval. Princip je takov�, �e v�echny polo�ky obsahu se
%    zapisuj� do souboru \soubor{\\jobname.top} p�i kter�mkoliv pr�chodu
%    \TeX u. Ale pokud tento soubor ji� existuje z minul�ho zpracov�n�, je
%    nejd��ve p�ekop�rov�n do \soubor{\\jobname.toc}, kter� je od t�
%    chv�le pouze pro �ten� a je na��t�n v p��pad� vol�n� n�kter�ho
%    z maker pro obsah.
% \par
%    Nejd��ve si mus�me zalo�it ukazatele na soubory pro �ten� a z�pis,
%    d�le prom�nnou pro ��slo knihy, pro kterou je generov�n obsah.
% \defverb
\newread\TOCTMP
\newwrite\TOC
\newcount\kaptoc
\edefverb
%   Pot� provedeme z�pis souboru \soubor{\\jobname.top} do souboru
%   \soubor{\\jobname.toc}. To je nejjednodu��� tak, �e nadefinujeme
%   v�echna makra, kter� se mohou vyskytnout v souboru
%   \soubor{\\jobname.top} tak, aby sama sebe zapsala do souboru
%   \soubor{\\jobname.toc}. Parametry zde pou�it�ch maker jsou:
%   \begnum
%      \item ��slo knihy
%      \item n�zev kapitoly v�etn� o��slov�n�
%      \item strana (resp. n�jak� ozna�en� m�sta), na kter� bude polo�ka
%            ukazovat
%   \endnum \vskip -20pt
% \defverb
\newtoks\pisretezec
\def\zapis#1{{\let\_=\relax \let~=\relax \let\dots=\relax
               \let\TeX=\relax \let\MDef=\relax
\pisretezec={#1}\edef\act{\write\TOC{\the\pisretezec}}\immediate\act}}

\def\toclinebook#1#2#3{\zapis{\string\toclinebook{#1}{#2}{#3}}}
\def\toclinea#1#2#3{\zapis{\string\toclinea{#1}{#2}{#3}}}
\def\toclineb#1#2#3{\zapis{\string\toclineb{#1}{#2}{#3}}}
\def\toclinec#1#2#3{\zapis{\string\toclinec{#1}{#2}{#3}}}
\def\toclined#1#2#3{\zapis{\string\toclined{#1}{#2}{#3}}}
\def\toclinee#1#2#3{\zapis{\string\toclinee{#1}{#2}{#3}}}
 \immediate\openout\TOC=\jobname.toc
   \immediate\openin\TOCTMP=\jobname.top
% test (ne)existence souboru \TOCTMP :
   \ifeof\TOCTMP\message{Soubor \jobname.top neexistuje...}
   \else\immediate\closein\TOCTMP\input \jobname.top\fi
 \immediate\closeout\TOC
 \immediate\openout\TOC=\jobname.top
\edefverb
%   Pot� definujeme jednotliv� ��dky pro r�zn� �rovn� kapitol, jak budou
%   vypadat v obsahu (tj. implicitn� p�i na�ten� souboru
%   \soubor{\\jobname.toc}). V�dy je vlo�ena podm�nka, zda se generuje
%   kompletn� obsah cel� dokumentace slo�en� z v�ce knihy nebo obsah pouze
%   jedn� knihy a� u� um�st�n� samostatn� nebo v r�mci v�t��ho celku.
% \defverb
\def\toclinebook#1#2#3{%
    \ifnum 0 = \the\kaptoc
     \vskip6pt \penalty -1500
     \line{{\bigbf #2\quad\dotfill\hbox to12mm{\hfil #3}}} \fi}%
\def\toclinea#1#2#3{%
    \ifnum 0 = \the\kaptoc
      \vskip6pt \penalty -1000
      \line{{\big #2\quad\dotfill\hbox to12mm{\hfil #3}}}%
    \else\ifnum #1 = \the\kaptoc
      \vskip6pt \penalty -1000
      \line{{\big #2\quad\dotfill\hbox to12mm{\hfil #3}}}%
    \fi\fi}
\def\toclineb#1#2#3{%
    \ifnum 0 = \the\kaptoc \line{\hskip24pt{\rm #2 \hfill #3}}%
    \else\ifnum #1 = \the\kaptoc \line{\hskip24pt{\rm #2 \hfill} #3}%
    \fi\fi}
\def\toclinec#1#2#3{%
    \ifnum 0 = \the\kaptoc \line{\hskip36pt{\rm #2 \hfill #3}}%
    \else\ifnum #1 = \the\kaptoc \line{\hskip36pt{\rm #2 \hfill} #3}%
    \fi\fi}
\def\toclined#1#2#3{%
    \ifnum 0 = \the\kaptoc \line{\hskip48pt{\rm #2 \hfill #3}}%
    \else\ifnum #1 = \the\kaptoc \line{\hskip48pt{\rm #2 \hfill} #3}%
    \fi\fi}
\def\toclinee#1#2#3{%
    \ifnum 0 = \the\kaptoc \line{\hskip60pt{\rm #2 \hfill #3}}%
    \else\ifnum #1 = \the\kaptoc \line{\hskip60pt{\rm #2 \hfill} #3}%
    \fi\fi}
\edefverb
%   N�sleduj�c� makro \texmac{\\xobsah} vyp�e obsah kapitoly ��slo
%   \texmac{\\kaptoc},
%   pokud je \texmac{\\kaptoc} v�t�� ne� 0. Je-li \texmac{\\kaptoc} rovno
%   nule, je vygenerov�n kompletn� obsah v�ech knih. K ob�ma je pou�ito
%   form�tov�n� uveden� v��e.
% \defverb
\def\xobsah{
   \ifnum \the\kaptoc = 0
         \newpage\bgroup\headline{\hfil}\leftline{{\biggg Obsah}}%
%         \maketoclinebook{Obsah}
   \else \newpage\bgroup\leftline{{\biggg Obsah \thebook\bookname}} \fi%
%         \maketoclinea{Obsah \thebook\bookname}\fi
   \immediate\openin\TOCTMP=\jobname.toc
   \ifeof\TOCTMP\message{Soubor \jobname.toc neexistuje...}%
   \else\immediate\closein\TOCTMP\input \jobname.toc \vskip 0pt
   \vfil\eject\egroup\fi
}
\edefverb
%   Makra \texmac{\\obsahknihy} a \texmac{\\celyobsah} generuj� ��ste�n�
%   nebo kompletn� obsah v��e zm�n�n�m zp�sobem.
%   Makro \texmac{\\seznamknih} vygeneruje stru�n�j�� kompletn� obsah, v
%   n�m� budou uvedeny pouze knihy. Makra vypisuj�c� do obsahu dal��
%   �rovn� kapitol jsou definov�na jako pr�zdn�.
% \if 10
%   V budoucnu do maker \texmac{\\celyobsah} a \texmac{\\seznamknih} bude
%   dopln�na kontrola, zda se generuje kompletn� dokumentace a ne
%   samostatn� kniha. \fi
% \defverb
\def\obsahknihy{\kaptoc = \the\bookno \xobsah}
\def\celyobsah{\kaptoc = 0 \xobsah}
\def\seznamknih{{\kaptoc = 0
    \def\toclinebook##1##2##3{%
	        \vskip6pt\line{{\bigbf ##2\quad\hrulefill\hbox to12mm{\hfil ##3}}} }
    \def\toclinea##1##2##3{}  % od t�to �rovn� se polo�ky v seznamu knih
    \def\toclineb##1##2##3{}  % neuv�d�j�...
    \def\toclinec##1##2##3{}
    \def\toclined##1##2##3{}
    \def\toclinee##1##2##3{}
    \xobsah}}
\edefverb
%   Ohledn� obsahu zb�v� dodefinovat je�t� makra pro z�pis p��slu�n�
%   obsahov� reference do souboru \soubor{\\jobname.top}.
%   Makr�m pro p��slu�n� �rovn� z�pisu se zad�v� pouze jm�no kapitoly �i
%   knihy. ��slo knihy a str�nka, na ni� budeme odkazovat se dopl�uje
%   automaticky. N�sleduj�c� makra jsou pak vol�na makry pro za��tek knihy nebo
%   kapitol:
% \defverb
\def\maketoclinebook#1{\zapis{\string\toclinebook{\the\bookno}{#1}{\the\pageno}}}
%\def\maketoclinea#1{\zapis{\string\toclinea{\the\bookno}{#1}{
%  \expandafter\ifx\csname pdfoutput\endcsname \relax \the\pageno \else
%  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
%  \Blue\the\pageno\Black \pdfendlink \fi}}}
\def\maketoclinea#1{\zapis{\string\toclinea{\the\bookno}{
  \expandafter\ifx\csname pdfoutput\endcsname \relax #1 \else
  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
  \Blue #1 \Black \pdfendlink \fi} {
  \expandafter\ifx\csname pdfoutput\endcsname \relax \the\pageno \else
  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
  \Blue\the\pageno\Black \pdfendlink \fi}}}
\def\maketoclineb#1{\zapis{\string\toclineb{\the\bookno}{#1}{
  \expandafter\ifx\csname pdfoutput\endcsname \relax \the\pageno \else
  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
  \Blue\the\pageno\Black \pdfendlink \fi}}}
\def\maketoclinec#1{\zapis{\string\toclinec{\the\bookno}{#1}{
  \expandafter\ifx\csname pdfoutput\endcsname \relax \the\pageno \else
  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
  \Blue\the\pageno\Black \pdfendlink \fi}}}
\def\maketoclined#1{\zapis{\string\toclined{\the\bookno}{#1}{
  \expandafter\ifx\csname pdfoutput\endcsname \relax \the\pageno \else
  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
  \Blue\the\pageno\Black \pdfendlink \fi}}}
\def\maketoclinee#1{\zapis{\string\toclinee{\the\bookno}{#1}{
  \expandafter\ifx\csname pdfoutput\endcsname \relax \the\pageno \else
  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
  \Blue\the\pageno\Black \pdfendlink \fi}}}
\def\maketoclinecc#1#2{\zapis{\string\seccounter{#1}{#2}}}
%\toclinee{\the\bookno}{#1}{
%  \expandafter\ifx\csname pdfoutput\endcsname \relax \the\pageno \else
%  \pdfstartlink attr{/Border [0 0 0]}goto name{section\fpkapno}
%  \Blue\the\pageno\Black \pdfendlink \fi}}}
\edefverb
% \subsection{Seznam literatury}
%  Pomoc� makra \texmac{\\literatura} je vys�zena  polo�ka literatury
%  p��mo v m�st� pou�it� tohoto makra.
%  K tomu ��elu v�hodn� vyu�ijeme plainov� makro \texmac{\\item}
%  (v prost�ed� v��t� bylo p�edefinov�no, p�vodn� v�znam z�stal
%  v \texmac{\\puvitem}). Z�rove� vol� zde definovan� makro
%  \texmac{\\litlabel}, kter� vytvo�� odkaz na danou polo�ku
%  literatury. Reference pak funkguje analogicky jako ostatn� reference,
%  v�stupem je ��slo literatury v hranat�ch z�vork�ch.
%  ��slov�n� literatury je ulo�eno v registru \texmac{\\litnum}.
% \defverb
\newcount\litnum
\def\literatura#1#2#3#4{
  \global\advance\litnum by1
  {\parindent 9mm \parskip 14pt
    \par
    \hangindent 24mm \hangafter 1
    \puvitem {\hbox to 9mm{\hfil{\bf [\the\litnum]}}}
    {{\rm#2}: {\it#1} }\newline
	{\rm#3}\par}
  \litlabel{#4}}

\def\litlabel #1{%
   \if 0\the\globalrefs
     \immediate\write\REF{\string\litREF{\the\bookno#1}{[\the\litnum]}}
   \else
     \immediate\write\REF{\string\litREF{#1}{[\the\litnum]}}
   \fi}
\def\litref #1{%
   \if 0\the\globalrefs
     \expandafter\ifx\csname lit:\the\bookno#1\endcsname \relax
     \message{Warning: Undefined lit number [#1]}??%
     \else\csname lit:\the\bookno#1\endcsname\fi
   \else
     \expandafter\ifx\csname lit:#1\endcsname \relax
     \message{Warning: Undefined lit number [#1]}??%
     \else\csname lit:#1\endcsname\fi
   \fi}
\def\litREF #1#2{\expandafter\ifx\csname lit:#1\endcsname \relax
     \expandafter\def \csname lit:#1\endcsname {#2}
   \else \errmessage{Error: Double lit mark [#1]}\fi}
\edefverb
%  \subsection{Rovnice}
%   Proto�e samotn� plain\TeX{} m� vcelku dosta�uj�c� mo�nosti pro psan�
%   rovnic, jsou dodefinov�na pouze makra pro mo�nosti ��slov�n� rovnic a
%   mo�nosti odkazovat se na n�.
%  \par
%   Makra \texmac{\\[} a \texmac{\\]} byla inspirov�na \LaTeX em a slou��
%   k sazb� ��slovan� rovnice, na ni� se lze odkazovat makrem
%   \texmac{\\eqref}.
%   Sekvence \texmac{\\eqcr} se pou��v� v prost�ed� \texmac{\\eqalignno}
%   m�sto \texmac{\\cr} z d�vodu ��slov�n� rovnic --- \texmac{\\eqcr}
%   p�id� na prav� stran� ��slo rovnice a zv�t�� jej o jedni�ku.
% \defverb
\newcount \cisrov
\cisrov = 0
\def\[{ \global\advance\cisrov by1 $$ }
\def\]{ \eqno (\thebook\the\cisrov)\quad $$ }
\def\eqcr{ \global\advance\cisrov by1 (\thebook\the\cisrov)\quad \cr }
\def\eqlabel #1{
   \immediate\write\REF{\string\eqREF{\the\bookno#1}{\thebook\the\cisrov}}}
\def\eqref #1{\expandafter\ifx\csname eq:\the\bookno#1\endcsname \relax
   \message{Warning: Undefined eq. number [#1]}??%
   \else(\csname eq:\the\bookno#1\endcsname)\fi}
\def\eqREF #1#2{\expandafter\ifx\csname eq:#1\endcsname \relax
      \expandafter\def \csname eq:#1\endcsname {#2}
   \else \errmessage{Error: Double eq. mark [#1]}\fi}
\edefverb
% \subsection{R�zn� definice}
%   Zde jsou definov�ny drobn�j�� definice pro r�zn� ��el, v�t�ina pouze
%   form�tuje text ur�it�m zp�sobem (nap�. jin� font), v budoucnu m��e b�t
%   p�id�no interaktivn� odkazov�n� nap�. na soubor nebo internetov�
%   odkaz, kter� z takto vytvo�en�ho dokumentu ud�l� t�eba \uv{klikac�}
%   pdf dokument. Jin� mo�nost je pou�it� takov�ch maker t�eba pro xml
%   dokumentaci, proto�e zde nen� pouze definov�n pouze vzhled v�stupu, ale
%   data jsou �len�na i podle v�znamu.
% \defverb
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% RUZNE DEFINICE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\soubor#1{{\tt #1}}  % N�zev souboru
\def\texmac#1{{\tt #1}}  % TeXovsk� makro
\def\csrc#1{{\tt #1}}    % c��kovsk� zdroj/p��kaz
\def\tclsrc#1{{\tt #1}}  % Tcl p��kaz
\def\tclargs#1{{\it #1}}  % Tcl parametry p��kazu
\def\data#1{{\tt #1}}    % data i/o souboru

\def\httpodkaz #1#2{{\tt  % internetov� odkaz {adresa}{text}
  \expandafter\ifx\csname pdfoutput\endcsname \relax #2\else
  \pdfstartlink attr{/Border [0 0 0]} user{
         /Subtype /Link
         /A <<
            /Type /Action
            /S /URI
            /URI (http://#1)
        >>}\Blue#2\Black\pdfendlink\fi}}
\def\ftpodkaz #1#2{{\tt  % internetov� odkaz {adresa}{text}
  \expandafter\ifx\csname pdfoutput\endcsname \relax #2\else
  \pdfstartlink attr{/Border [0 0 0]} user{
         /Subtype /Link
         /A <<
            /Type /Action
            /S /URI
            /URI (ftp://#1)
        >>}\Blue #2\Black\pdfendlink\fi}}
\def\mailodkaz #1#2{{\tt  % mailov� odkaz {adresa}{text}
  \expandafter\ifx\csname pdfoutput\endcsname \relax #2\else
  \pdfstartlink attr{/Border [0 0 0]} user{
         /Subtype /Link
         /A <<
            /Type /Action
            /S /URI
            /URI (mailto:#1)
        >>}\Blue #2\Black\pdfendlink\fi}}
\def\newline{ \hfil\break }  % nov� ��dek po vzoru LaTeXu
\def\newpage{ \vfil\eject }  % nov� str�nka po vzoru LaTeXu
\def\\{$\backslash$}         % zp�tn� lom�tko
\def\p{$\}$}                 % prav� slo�en� z�vorka
\def\l{$\{$}                 % lev� slo�en� z�vorka

%  n�sleduj�c� ��st je zde pouze pro zp�tnou kompatibilitu
% s ji� existuj�c� dokumentac�
\def\soub{\soubor}       % jm�no souboru
\def\shell #1{{\tt #1}}  % v�pis z p��kazov� ��dky
\def\cpp{\csrc}          % zdrojov� k�d v jazyce C nebo C++ (nen� to verbatim!)
\def\guim #1{{\it #1}}   % popisek objektu grafick�ho prost�ed�
\def\sip{$\rightarrow$}  % �ipka vpravo (pro popisky hierarche jako menu apod.)

\chyph                       % �esk� d�len� slov

\catcode`\_=12               % podtr��tko je oby�ejn� znak,
\everymath{\catcode`_=8 }    % ale v matematick�ch re�imech
\everydisplay{\catcode`_=8 } % z�st�v� jeho v�znam doln� index

%   D�le definujeme pou��van� loga \MDef{} a \LaTeX :
\def\MDef{M\kern-0.40em\hbox{D}%
           \kern-0.55em\lower-0.30ex\hbox{e}%
           \kern0.0em\lower0.125ex\hbox{f}}
\def\LaTeX{L\kern-.36em\raise0.5ex\hbox{\sevenrm A}\kern-.12em\TeX}
\edefverb
%   Definice makra \texmac{\\softinput}, kter� na�te soubor pouze v
%   p��pad�, �e existuje a nezp�sobuje nep��jemn� dotazy \TeX u
%   k u�ivateli:
% \defverb
\newread\test
\def\softinput#1{\immediate\openin\test=#1
   \ifeof\test\message{Soubor #1 neexistuje...}%
   \else\immediate\closein\test\input #1\fi}
\edefverb
%   N�sleduj�c� makro je reklamou autora tohoto bal�ku maker.
%   \if 10 (bez koment��e\dots ) \fi
% \defverb
\def\reklama{{~\vfil\newline\baselineskip 7 pt
 \rightline{\vbox{\halign{\strut\hfil##\cr \noalign{\hrule}
  \malit Tento dokument byl zpracov�n pomoc� maker 
         \httpodkaz{www.mandak.net}{{\maly \MDef}} v syst�mu 
         \httpodkaz{www.cstug.cz}{{\maly plain\TeX}}.\cr
%  \malit Copyright {\maly\copyright{}} 1999--2003 Martin Man��k
%         (\mailodkaz{magor@email.cz}{{\malit martin@mandak.net}})%
%         \cr
}}}}
 \eject}
\edefverb
%  \subsection{Pozn�mky}
%   Makro \texmac{\\poznamka} slou�� k vlo�en� pozn�mky, kter� bude
%   naho�e a dole odd�lena �arou �irokou 50 mm
%   (\texmac{\\hbox to50mm\\hfulefill}), mezi t�mito �arami bude
%   nadpis \uv{Pozn�mka:} a samotn� text pozn�mky odsazen� zleva o 10 mm
%   (\texmac{\\hskip 10mm}) a �irok� 15 cm, co� je o pr�v� t�ch 10 mm m�n�
%   ne� je defaultn� ���ka odstavce. Po vlo�en� parametru makra mus� b�t
%   je�t� \texmac{\\par}, jinak je hodnota \texmac{\\hsize} p�evzata z
%   glob�ln� prom�nn� a ne z vnit�ku makra (tady se projevuje nebezpe�nost
%   konstrukce \texmac{\\long\\def}).
% \defverb
\long\def\poznamka #1{\newline\hbox to50mm{\hrulefill}
\hfil\break\leftline{{\it Pozn�mka:}}\vskip 6pt%
\hbox{\hskip 10mm\vbox{{\hsize = 15cm
\it #1 \par}}}
\hbox to50mm{\hrulefill}\vskip 0pt}
\edefverb
%  \subsection{Tabulky}
%   Tabulky vyu��vaj� prost�ed� \texmac{\\halign} s n�kolika �pravami
%   oproti standartn�mu plain\TeX u: p�edev��m je kategorie znaku
%   tabul�tor definov�na jako 4, tedy stejn� jako m� znak \texmac{\&} a
%   lze pou��vat tabul�tor jako odd�lova� pol��ek tabulky.
%
%   Dal�� podstatnou zm�nou je kategorie znaku 0x0D, kter� je 13, tedy
%   aktivn� znak a jeho v�znam je nadefinov�n jako \texmac{\\cr}. Proto se
%   jako odd�lova� ��dek v tabulk�ch nesm� pou��vat \texmac{\\cr}, pokud
%   je mezi ��dky tabulky za��dkov�no i ve zdrojov�m souboru.
%
%   K tomu jsou dodefinov�na makra \texmac{\\linka} a \texmac{\\dlinka},
%   kter� vytvo�� jednoduchou resp. dvojitou vodorovnou linku mezi ��dky
%   tabulky. K~tomuto ��elu ob� makra vyu��vaj� obvykl�
%   \texmac{\\noalign\l\\hrule\p}.
%
%   Nejd��ve definujeme pomocn� makro \texmac{\\tabulex}, kter� nav�c
%   vys�z� a zapo��t� ��slo a popis tabulky:
% \defverb
\newcount\cistab
\cistab = 0
{\catcode`\^^M=13 %
 \catcode`\^^I=4  %
 \gdef\tabulex #1^^M#2^^M#3\kontab{\global\advance\cistab by1
                    \hfil\vbox{
                    %\vskip 0 pt
                    \bgroup %
                    \catcode9=4 \catcode13=13 %
                    \def\linka^^M{\noalign{\hrule}}
                    \def\dlinka^^M{\noalign{\hrule\break\vskip 1pt\hrule}}
                    \def^^M{ \cr } %
                    \offinterlineskip{ %
                     \halign{\strut #2 \cr %
                      #3 \crcr} }    } \egroup
        \centerline{{\it\hskip 0mm Tabulka \thebook\the\cistab: #1}}
        \egroup \vskip 0pt}
\edefverb
%   Dal��m pomocn�m makrem je \texmac{\\tabuley}, kter� vytvo�� tabulku
%   bez popisku a o��slov�n�.
% \defverb
 \gdef\tabuley^^M#1^^M#2\konmat{ %
                    \hfil\vbox{
                    %\vskip 0 pt
                    \bgroup %
                    \catcode9=4 \catcode13=13 %
                    \def\linka^^M{\noalign{\hrule}}
                    \def\dlinka^^M{\noalign{\hrule\break\vskip 1pt\hrule}}
                    \def^^M{ \cr } %
                    \offinterlineskip{ %
                     \halign{\strut #1 \cr %
                      #2 \crcr } }   } \egroup
                    \egroup \vskip 0pt}
}
\edefverb
%   Zb�v� dodefinovat makra pro za��tek a konec obou tabulkov�ch
%   prost�ed�, kter� spole�n� s p�edchoz�mi makry a makrem
%   \texmac{\\begtabx} vytv��� kompletn� tabulkov� prost�ed�.
% \defverb
\def\begtabx{\vskip 0pt\bgroup\catcode`\^^M=13 \catcode`\^^I=4 }
\def\zactab{\begtabx \tabulex }
\def\zacmat{\begtabx \tabuley}
\edefverb
%   Nakonec jsou samoz�ejm� definov�na makra pro reference na tabulku:
% \defverb
\def\tablabel #1{
   \immediate\write\REF{\string\tabREF{\the\bookno#1}{\thebook\the\cistab}}}
\def\tabref #1{\expandafter\ifx\csname tab:\the\bookno#1\endcsname \relax
   \message{Warning: Undefined tab number [#1]}(??)%
   \else\csname tab:\the\bookno#1\endcsname\fi}
\def\tabREF #1#2{\expandafter\ifx\csname tab:#1\endcsname \relax
      \expandafter\def \csname tab:#1\endcsname {#2}
   \else \errmessage{Error: Double tab mark [#1]}\fi}
\edefverb
%  \subsection{Obr�zky}
%   Vkl�d�n� obr�zk� do dokument� dvi, resp. ps se d�je pomoc�
%   souboru maker \soubor{epsf}, kter� je standardn� sou��st�
%   instalace \TeX u.
%   Do dokument� pdf je obr�zek vkl�d�n zp�sobem standartn�m v Han The
%   Thanhov� pdf\TeX u, pou��v� se p��pona \texmac{\\obrprip} definovan�
%   p�i vol�n� makra \texmac{\\obrazekprip}.
%   Obr�zek je vkl�d�n vlastn� do tabulky --- v prost�ed�
%   \texmac{\\halign} se snadno um�st� v�etn� jeho popisku:
% \defverb
\input epsf   % soubor epsf.tex by mel byt standartni soucasti texu
\newcount\cisobr
\cisobr=0
\def\obrazekprip #1{\gdef\obrprip{#1}}
\obrazekprip{pdf}
\newdimen\obrazekx
\newdimen\obrazeky
\obrazekx 0pt \obrazeky 0pt
\def\obrazek#1#2{\vskip 6pt \global\advance\cisobr by1
    \centerline{\vbox{\halign{\strut\hfil ##\hfil\cr
      \ifx\pdfoutput\undefined
        \epsfxsize \obrazekx \epsfysize \obrazeky
        \epsfbox{#1.eps} \epsfxsize 0pt \epsfysize 0pt \cr
      \else
	    \pdfimageresolution=96
        \ifdim \obrazekx = 0pt
          \ifdim \obrazeky = 0pt \immediate\pdfximage {#1.\obrprip}
          \else \immediate\pdfximage height \obrazeky {#1.\obrprip} \fi
        \else
          \ifdim \obrazeky = 0pt
            \immediate\pdfximage width \obrazekx {#1.\obrprip}
          \else
            \immediate\pdfximage width \obrazekx height \obrazeky {#1.\obrprip}
          \fi
        \fi
        \pdfrefximage \pdflastximage \cr
      \fi
      \if #2\relax \else
        \vbox to8pt{}
     \line{\hfil{\it Obr�zek \thebook\the\cisobr. #2}\hfil}\cr\cr \fi }}}
     \vskip 0pt}
\edefverb
%   A reference na obr�zky:
% \defverb
\def\obrlabel #1{
   \immediate\write\REF{\string\obrREF{\the\bookno#1}{\thebook\the\cisobr}}}
\def\obrref #1{\expandafter\ifx\csname obr:\the\bookno#1\endcsname \relax
   \message{Warning: Undefined pic number [#1]}(??)%
   \else\csname obr:\the\bookno#1\endcsname\fi}
\def\obrREF #1#2{\expandafter\ifx\csname obr:#1\endcsname \relax
      \expandafter\def \csname obr:#1\endcsname {#2}
   \else \errmessage{Error: Double pic mark [#1]}\fi}
\edefverb
%  \subsection{Verbatim}
%   Prost�ed� verbatim jsem v souboru maker v�noval velkou pozornost
%   vzhledem k p�edpokl�dan�mu vyu�it� p�i dokumentov�n� zdrojov�ch k�d�
%   program�.
%   \subsubsection{Ne��slovan� verbatim}
%   Tato z�kladn� verze verbatim prost�ed� pouze definuje kategorii
%   speci�ln�ch znak� jako 12, tedy z nich ud�l� \uv{oby�ejn�} znaky, d�le
%   definuje odstavec (\texmac{\\par}) takov�m zp�sobem, aby se provedlo i
%   v�cen�sobn� za��dkov�n� a nastav� takov� v�znam mezer, �e jsou
%   interpretov�ny i mezery na za��tku ��dku.
% \defverb
{\obeyspaces \gdef\activespace{\obeyspaces\let =\ }}
{\obeyspaces \gdef\activespace{\obeyspaces\let =\ }}
\def\setverb{\def\do##1{\catcode`##1=12}\dospecials}
\def\verb{\bgroup \setverb\activespace%
          \everypar{\hskip 10pt}
          \def\par##1{\endgraf\ifx##1\par\leavevmode\fi ##1}
          \parskip=0pt\obeylines\startverb}
{\catcode`\|=0 \catcode`\\=12
          |gdef|startverb#1\everb{|tt#1|egroup}}
\edefverb
%   \subsubsection{Verbatim s ��slov�n�m ��dek}
%   Pro ��slov�n� ��dek ve verbatim prost�ed� byla zavedeno dal�� makro
%   \texmac{\\cverb}, kter� nav�c vkl�d� p�i ka�d�m odstavci (tj. v na�em
%   p��pad� na ka�d�m zlomu ��dku) ��slo ��dky, kter� se po��t� od za��tku
%   dokumentu nebo od vol�n� makra \texmac{\\begcfile}, kter� nuluje
%   po�itadlo ��dek \texmac{\\cverbline}.
%
%   D�le se vyhodnocuje definov�n� makra \texmac{\\verblinefile}, kter�
%   pokud je 1, pou�ije se skute�n� ��slo ��dek ve vstupn�m souboru, jinak
%   se ��sluje v��e uveden�m zp�sobem z�visl�m pouze na vol�n� makra
%   \texmac{\\begcfile}
% \defverb
\def\setcverb{\def\do##1{\catcode`##1=12}\dospecials}
\def\cverb{%
           \if1\verblinefile\cverbline=\inputlineno\else\fi
           \vskip 0pt %\par
           \bgroup\setcverb\activespace%
           \everypar{\global\advance\cverbline by1%
                     \hbox to24pt{\hfil\the\cverbline}\qquad}
           \def\par##1{\endgraf\ifx##1\par\leavevmode\fi ##1}
           \parskip=0pt\catcode47=12\obeylines\startcverb}
{\catcode`\|=0 \catcode`/=12 \catcode`\\=12
          |gdef|startcverb#1\ecverb{|tt#1|egroup|vskip0pt}}
\newcount \cverbline
\def\begcfile{\cverbline = 0}
\def\verblinefile{0}
\edefverb
%   \subsubsection{Vkl�d�n� C++ a Tcl zdrojovv�ch soubor�}
%   Pro tuto funkci je znak / resp. \#{} definov�n jako aktivn�
%   (catcode 13) s t�m,
%   �e funguje jako makro (\texmac{\\ccomment}) a je-li n�sledov�n
%   dal��m lom�tkem (v C++), tato sekvence je
%   ignorov�na. V opa�n�m p��pad� se vys�z� lom�tko i n�sleduj�c� znak.
%
%   Ke vlo�en� souboru slou�� 2 makra. \texmac{\\csrctldocinput} nav�c
%   definuje \texmac{\\verblinefile} jako 1 a ��dky jsou tedy ��slov�ny
%   \uv{skute�n�}. Makro \texmac{\\csrcdocinput} pouze vynuluje ��ta�
%   ��dek prost�ed� verbatim a zdrojov� k�d C++ programu je ��slov�n, jako by
%   v C++ souboru dokumentace chyb�la.
% \defverb
{\catcode47=13
\gdef\ccomment#1{\ifx#1/\relax\else{\char47{}#1}\fi}
\gdef\csrctldocinput #1 {{\def\verblinefile{1}
                          \def\startcverb{\startcppverb}
                          \catcode47=13 \def/{\ccomment} \input #1 }}
\gdef\csrcdocinput #1 {{\begcfile
                          \def\startcverb{\startcppverb}
                          \catcode47=13 \def/{\ccomment} \input #1 }}}
{\catcode47=12 \catcode`\|=0 \catcode`\\=12
                  |gdef|startcppverb#1//\ecverb{|tt#1|egroup}}
\edefverb
%   Podobn� funguj� i makra pro vkl�d�n� zdrojov�ch Tcl soubor�,
%   ingorov�ny jsou naprosto v�echny znaky \#{} a nav�c bylo nutno
%   zm�nit \texmac{\\catcode} znaku $|$, kter� zde zastupuje
%   znak \#{} v definic�ch maker. D�le jsem musel p�edefinovat
%   definice \texmac{\\startcverb}, aby verbatim prost�ed�
%   obsahovalo i posledn� znak \#{} p�ed ka�d�m ukon�en�m verbatimu.
% \defverb
{\catcode35=13 \catcode124=6
\long\gdef\tclcomment{\relax}
\gdef\tclsrctldocinput |1 {{\def\verblinefile{1}
                            \def\startcverb{\starttclverb}
                            \catcode35=13 \def#{\tclcomment} \input |1 }}
\gdef\tclsrcdocinput |1 {{\begcfile
                          \def\startcverb{\starttclverb}
                          \catcode35=13 \def#{\tclcomment} \input |1 }} }
{\catcode`\#=12 \catcode`\|=6 \catcode`/=0 \catcode`\\=12
                  /gdef/starttclverb|1#\ecverb{/tt|1/egroup}}
\edefverb
%  \subsection{Parametry \TeX tu}
%   Dal�� definice se t�kaj� definov�n� pou��van�ch typ� font�, rozm�r�
%   zrcadla pro sazbu, parametr� pro sazbu mezer a penalt pro zalamov�n�
%   v r�zn�ch ��stech dokumentu.
% \defverb
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINICE FONT� PRO rm10 %%%%%%%%%%%%%%%%%%%%%%%%
% je-li definov�no \aFive, pou�ij� se parametry pro form�t A5
\expandafter\ifx\csname aFive\endcsname \relax
 \font\rm = csr10
 \font\bf = csbx10
 \font\it = csti10
 \font\tt = cstt10
 \font\sl = cssl10
 \font\sss = csss12
 \font\maly = csr8
 \font\malit = csti8
 \font\malytt = cstt9
 \font\big = csr10 scaled\magstep1
 \font\bigit = csti10 scaled\magstep1
 \font\bigbf = csbx10 scaled\magstep1
 \font\bigg = csr10 scaled\magstep2
 \font\biggg = csr10 scaled\magstep3
 \font\bigggg = csr10 scaled\magstep4
 \font\biggggss = csss12 scaled\magstep4
\else
 \font\rm = csr8
 \font\bf = csbx8
 \font\it = csti8
 \font\tt = cstt8
 \font\sl = cssl8
 \font\sss = csss10
 \font\maly = csr7
 \font\malit = csti7
 \font\malytt = cstt8
 \font\big = csr8 scaled\magstep1
 \font\bigit = csti8 scaled\magstep1
 \font\bigbf = csbx8 scaled\magstep1
 \font\bigg = csr8 scaled\magstep2
 \font\biggg = csr8 scaled\magstep3
 \font\bigggg = csr8 scaled\magstep4
 \font\biggggss = csss8 scaled\magstep4
\fi
\rm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ROZM�RY TeXTU PRO A4 %%%%%%%%%%%%%%%%%%%%%%%%%%%
\expandafter\ifx\csname aFive\endcsname \relax
 \hsize 16 cm                % ���ka
 \vsize 23.5 cm              % v��ka
 \hoffset 0 cm               % horizont�ln� ofset
 \voffset 0.3 cm             % vertik�ln� ofset
 \parindent 0 pt             % odsazen� za��tku odstavce
 \baselineskip 12 pt         % ��dkov�n�
 \parskip 10 pt              % proklad p�i \par
 \raggedbottom               % vynech�vat m�sto na str�nce
 \emergencystretch=4em       % natahovatelnost mezer
 \lineskip=0pt               % proklad ��dk� (vzd�lenost box�)
 \bigskipamount=12pt         % deformovateln� v�pl�ky - velk�
 \medskipamount=6pt          % ...                    - st�edn�
 \smallskipamount=3pt        % ...                    - mal�
 \widowpenalty=10000         % penalta za vdovy
 \clubpenalty=10000          % penalta za sirotky
 \expandafter\ifx\csname pdfoutput\endcsname \relax \else
  \pdfhorigin=2.53cm
  \pdfvorigin=2.83cm
  \pdfpagewidth=21cm
  \pdfpageheight=29.7cm
  \pdfdestmargin=2mm
 % \pdfthreadmargin=12pt%1em
  % nasledujici bude predefinovano v pdfcolor.tex, pokud bude toto ovsem
  % dostupne... Musi byt definovano az za definice softinput!
  \def\Blue{} \def\Black{}
  \softinput{pdfcolor.tex}
 \fi
\else
 \hsize 12 cm                % ���ka
 \vsize 17.0 cm              % v��ka
 \hoffset -1.0 cm               % horizont�ln� ofset
 \voffset -0.8 cm             % vertik�ln� ofset
 \parindent 0 pt             % odsazen� za��tku odstavce
 \baselineskip 10 pt         % ��dkov�n�
 \parskip 8 pt              % proklad p�i \par
 \raggedbottom               % vynech�vat m�sto na str�nce
 \emergencystretch=4em       % natahovatelnost mezer
 \lineskip=0pt               % proklad ��dk� (vzd�lenost box�)
 \bigskipamount=10pt         % deformovateln� v�pl�ky - velk�
 \medskipamount=5pt          % ...                    - st�edn�
 \smallskipamount=2.5pt        % ...                    - mal�
 \widowpenalty=10000         % penalta za vdovy
 \clubpenalty=10000          % penalta za sirotky
 \expandafter\ifx\csname pdfoutput\endcsname \relax \else
  \pdfhorigin=2.5cm
  \pdfvorigin=2.5cm
  \pdfpagewidth=148.5mm
  \pdfpageheight=21.0cm
  \pdfdestmargin=1.5mm
 % \pdfthreadmargin=12pt%1em
  % nasledujici bude predefinovano v pdfcolor.tex, pokud bude toto ovsem
  % dostupne... Musi byt definovano az za definice softinput!
  \def\Blue{} \def\Black{}
  \softinput{pdfcolor.tex}
 \fi
\fi
\edefverb
%  \subsection{Z�hlav� a pata str�nky}
%   Definice z�hlav� a paty str�nky je rozd�lena do dvou ��st�:
%   \begitem
%     \item pro r�zn� sud� a lich� str�nky (oboustrann� tisk)
%     \item pro v�echny str�nky stejn�
%   \enditem
%   Kter� varianta se pou�ije je d�no \uv{ru�n�m p�ep�na�em} ---
%   podm�nkou \texmac{\\if} (viz. k�d n�e).
%  \par
%   Definice si kontroluj�, zda se kompiluje jen jedna kniha nebo v�t��
%   celek a podle toho dosazuj� do z�hlav� n�zev knihy nebo hlavn�
%   kapitoly, u oboustrann�ho re�imu se st��d� um�st�n� v prav� a lev�
%   ��sti z�hlav�.
%
%   Pata str�nky vypad� v�dy stejn�: je na n� pouze ��slo str�nky, u
%   oboustrann�ho re�imu um�st�n� st��dav� vpravo a vlevo.
%  \par
%   Pomocn� makro \texmac{\\headkapname} kontroluje, zda neza�ala nov�
%   kapitola na aktu�ln� str�nce a podle toho dosad� spr�vn� �et�zec
%   (p�i kompilaci jedin� knihy by m�l b�t v z�hlav� jen n�zev prvn�
%   kapitoly na str�nce).
% \defverb
\def\headkapname{\ifnum \lastpagekap = \pageno \lpagefkap\else\lpagelkap\fi}

\if 10                                             % ,,ru�n� p�ep�na�`` re�imu
\headline{\ifodd \the\pageno                              % Ruzne sude a liche
            \expandafter\ifx\csname maindoccs\endcsname \relax
              {\malit\hrulefill~\lower2.3pt\hbox{\headkapname}}
            \else {\malit\hrulefill~\lower2.3pt\hbox{\thebook\bookname}}
            \fi
          \else \expandafter\ifx\csname maindoccs\endcsname \relax
              {\malit\lower2.3pt\hbox{\headkapname}~\hrulefill}
            \else {\malit\lower2.3pt\hbox{\thebook\bookname}~\hrulefill}\fi\fi}
          \footline{\ifodd \pageno \hfill{\bf \the\pageno}
                          \else {\bf \the\pageno}\hfill \fi}
\else\headline{                                       % Vsechny stranky stejne
 \expandafter\ifx\csname maindoccs\endcsname \relax
      {\malit\hrulefill~\lower2.3pt\hbox{\headkapname}}
   \else
      {\malit\hrulefill~\lower2.3pt\hbox{\thebook\bookname}}
   \fi}
 \footline{{\bf\hfill~\the\pageno}}
\fi
\edefverb
%  \subsection{Na�ten� referenc�}
%   V tomto m�st� je ji� mo�no na��st reference z p�edchoz�ho b�hu \TeX u,
%   proto�e jsou ji� definov�na v�echna makra v�ech typ� referenc�. Po
%   jejich na�ten� je soubor jobname.ref smaz�n, resp. otev�en jako
%   pr�zdn� pro dal�� z�pis referenc� v aktu�ln�m pr�chodu \TeX
%   procesoru.
% \defverb
\softinput{\jobname.ref}
\immediate\openout\REF=\jobname.ref
\edefverb
%  \subsection{Tituln� str�nka knihy}
%   Jako tituln� str�nku knihy vys�z� makro \texmac{\\titulknihy}
%   uprost�ed samostatn� str�nky t�lo maker
%   \texmac{\\nazev} a \texmac{\\podnazev}, d�le vpravo dole obsah makra
%   \texmac{\\autor}.
%
%   Na tituln� str�nce je vypnuta hlavi�ka i pati�ka str�nky i o��slov�n�
%   ��slem str�nky. Makro \texmac{\\titulknihy} je vol�no makrem
%   \texmac{\\kniha}, kter� definuje v�echny t�i pot�ebn� �daje pro jeho
%   sazbu.
% \defverb
\def\titulknihy{{%
 \headline{\hfil} \footline{} \nopagenumbers \vbox to3cm{ } \vfil
 \centerline{{\bigg\nazev}}\vskip 6pt \centerline{{\big\podnazev}}
 \vfil \vbox to5cm{ } \rightline{\autor} \eject}}
\edefverb
%   \subsection{Tituln� str�nka dokumentace}
%   Tituln� str�nka cel� dokumentace slo�en� z v�ce knih se s�z� podobn�
%   jako tituln� str�nka knihy s t�m rozd�lem, �e je u�ivatelem p��mo
%   vol�no makro \texmac{\\maindoc}.
%   Nejd��ve v n�m definuji kontroln� sekvenci \texmac{maindoccs} a v
%   p��pad�, �e byla tato ji� definov�na, ohl�s� \TeX{} chybu.
%   D�le je definov�n \texmac{\\konecknihy} jako \texmac{\\endinput}, tedy
%   ukon�en� souboru s knihou (v p��pd� kompilace pouze jedn� knihy je
%   toto makro definov�no jako \texmac{\\end}, aby se ukon�il kompletn�
%   b�h \TeX u).
%
%   Na kontroln� sekvenci \texmac{maindoccs} pak testuj� r�zn� makra, zda
%   se maj� chovat jako v jedin� knize nebo v�t��m dokumenta�n�m celku.
% \defverb
\def\maindoc #1#2#3{%
  \expandafter\ifx\csname maindoccs\endcsname \relax
    \expandafter\def \csname maindoccs\endcsname {}
    \else \errmessage{Error: Nelze mit dvakrat maindoc}\fi
  \def\konecknihy{\endinput}
\edefverb
%   N�sleduj�c� ��st makra \texmac{\\maindoc} s�z� tituln� str�nku
%   dokumentace podobn�m zp�sobem jako makro \texmac{\\titulknihy},
% \defverb
  {\headline{\hfil}\footline{}\nopagenumbers
    ~ \vfil\newline
    \centerline{\vbox{\halign{\strut\hfil##\hfil\cr
                           {\bigg #1}\cr~\cr{\big #2}\cr}}}
    \vfil\eject\pageno = 1
    \edefverb
%   ale s t�m rozd�lem, �e m�sto \texmac{\\autor} se s�z� na samostatn�
%   str�nce anotace (umis�uj� se zde nap�. auto�i, vydavatel,
%   copyright\dots), zde je pou�ito prost�ed� \texmac{\\halign}:
% \defverb
    \bgroup
    ~\vfil\newline\baselineskip 10 pt \malit
    \leftline{\vbox{\halign{ ##\hfil\cr #3 \crcr}}}
    \egroup
    \vskip 1.5cm\eject}}
\edefverb
%   T�m popis je algoritm� dokumenta�n�ch maker ukon�en. V n�sleduj�c�
%   kapitole se je�t� zm�n�m o mo�nostech samodokumentov�n� tohoto bal�ku.
%
%   \section{Syst�m autodokumentace}
%     S�m sebe dokumentuj�c� syst�m m� napadl p�i zevrubn�m sezn�men� se s
%     bal�kem docstrip. Rozhodl jsem se tedy n�co podobn�ho navrhnout p�i
%     dokumentov�n� m�ho syst�mu \MDef .
%    \subsection{Princip autodokumentace}
%     Dokumentace funguje podobn� jako prost�ed� verbatim, za��tek a
%     konec zdrojov�ho k�du se ozna�uje makry \texmac{\\defverb} a
%     \texmac{\\edefverb} a to, co nen� mezi t�mito zna�kami by m�lo b�t
%     \uv{schov�no} za procentem na za��tku ��dku, kter� je p�i
%     \uv{dokumenta�n�m} pr�chodu \TeX em ignorov�no a p�i b�n�m na��t�n�
%     souboru \soubor{mdef.tex} se pova�uje za b�n� koment��.
%     T�m je doc�leno, �e p�i prvn�m pr�chodu souboru mdef.tex se cel�
%     dokumentace ignoruje (U�ivatelsk� ��st je postavena do podm�nky
%     \texmac{\\if}, kde jsou dv� za sebou jdouc� definice stejn�ho
%     makra, jedna z nich je v koment��i a tud� se definuje pouze p�i
%     samodokumentov�n�, u popisu maker je pou�ito zm�n�n� procento v�ude).
%     P�i souhlasn�m \texmac{\\jobname} s n�zvem
%     defini�n�ho souboru maker se p�edpokl�d� generov�n� dokumentace sebe
%     sama a po dodefinov�n� v��e zm�n�n�ch souvislost� zavol� defini�n�
%     soubor s�m sebe, co� zp�sob�, �e text, kter� byl p�vodn� koment��em
%     je dokumentac� a ozna�en� zdrojov� text definic form�t� a p��kaz� je
%     vyps�n jako ��slovan� verbatim.
%   \par
%     Zahrnut� popisu tohoto dokumenta�n�ho syst�mu do jin� dokumentace
%     jako kniha je mo�n� pomoc� makra \texmac{\\autodoc} (resp.
%     \texmac{\\autodocsrc} nebo \texmac{\\autodocman}, viz. kapitolu
%     \secref{DocOstPrik}) v p��pad�, �e
%     soubor \soubor{mdef.tex} se nach�z� v aktu�ln�m adres��i (z n�j�
%     je \TeX{} spu�t�n).
%  \reklama \newpage \endinput
%  \newpage \endinput
%%%%%%%%%%%%%%%% T�mto skon�ila dokumentace mdef.tex %%%%%%%%%%%%%%%%%%%%%
%\defverb
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%% Zde je inputnut� cel� soubor maker i s vestav�nou dokumentac� %%%%%%%%%
%%%%%%%% pomoc� \defverb a \edefverb m�sto standartn�ch p��kaz�... %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\catcode`\|=0 \catcode`\\=12
          |gdef|startdefverb#1\edefverb{|malytt#1|egroup|vskip -|parskip}}
{\catcode13=12 \gdef\commentline#1^^M{\relax\catcode13=5}}
{\obeyspaces \gdef\activespace{\obeyspaces\let =\ }}
{\catcode37=13
   \gdef\autodoc{{
   \def\setdefverb{\def\do####1{\catcode`####1=12}\dospecials}
   \def\defverb{~\par~\vskip -\parskip\vskip -\parskip\vskip 4pt
           \bgroup\setdefverb\activespace
           \everypar{\global\advance\cverbline by1
                     \hbox to20pt{\hfil\the\cverbline}\quad}
           \def\par####1{\endgraf\ifx####1\par\leavevmode\fi ####1}
           \parskip=-4pt\parindent=0pt\obeylines\startdefverb}
   \cverbline = 0 \catcode37=13
   \long\def%##1 {\ifx %##1 \catcode13=12\commentline \else ##1\fi}
   \input mdef.tex }}
\gdef\autodocsrc{{\def\autodocmanual{0}\def\autodocsource{1}\autodoc}}
\gdef\autodocman{{\def\autodocmanual{1}\def\autodocsource{0}\autodoc}}
}


\def\autodocmanual{1}
\def\autodocsource{1}

% vzhledem k podivnostem opera�n�ch syst�m� nejmenovan� firmy M$
% je pot�eba testovat \jobname t�mhle hrozn�m zp�sobem...
\expandafter\def\csname JobName:\jobname\endcsname{}
\expandafter\ifx\csname JobName:MDEF\endcsname \relax
 \expandafter\ifx\csname JobName:mdef\endcsname \relax
  \expandafter\ifx\csname JobName:Mdef\endcsname \relax
   \expandafter\endinput\fi\fi\fi
% ... Ale mo�n� by to �lo l�pe pomoc� n��eho jako tolower uvnit� csname?

\expandafter\ifx\csname defverb\endcsname \relax \relax \else \endinput \fi
\message{Vytv���m autodokumentaci...}
\autodoc
\end