% ... pokud je v seznamu:
\def\qeditem{{\parfillskip=0pt\hfill\rlap{\hskip\rightskip\llap{$\heartsuit$}}\par}}
+% Zvyrazneni pojmu
+\def\em#1{{\it #1\/}}
+
% Poznamky pod carou
\newcount\footcnt
\footcnt=0
% \noindent se casto hodi, tak na nej mame zkratku
\let\>=\noindent
-% Sazba algoritmu:
-% \algo
+%%% Sazba algoritmu %%%
+
+% \algon{jmeno algoritmu}
% \algin popis vstupu
% \:krok
% \:krok
% \::vnoreny krok
-% \algout pop
+% \algout popis vystupu
% \endalgo
-\def\algo{
-\begingroup
+\def\typedalgo#1#2{
\vskip\preitemizeskip
+\begingroup
\let\:=\algoitem
\parskip=1pt plus 1pt minus 0.3pt
\rightskip=2em
\itemcount=0
+{\bo #1\/} \alg{#2}%
}
+\def\algo#1{\typedalgo{Algoritmus}{#1}}
+\def\proc#1{\typedalgo{Procedura}{#1}}
\def\endalgo{\vskip\postitemizeskip\endgroup}
+\let\endproc=\endalgo
\def\algopar{\par
\parindent=2em
\hangindent=4em
\hangafter=1
\leavevmode
}
-\def\algoitem{\algopar\advance\itemcount by 1
+\def\algoitem{
+\ifnum\itemcount=0\smallskip\fi
+\algopar\advance\itemcount by 1
\hbox to 2em{\hss \the\itemcount. }%
\futurelet\next\algoitemh}
\def\algoitemh{\ifx\next:\let\next=\algohang\else\let\next=\relax\fi\next}
\def\algohang:{\advance\hangindent by 2em \hskip 2em\futurelet\next\algoitemh}
-\def\algin{\:{\I Vstup:} }
-\def\algout{\:{\I Výstup:} }
+\def\algin{\par{\it Vstup:\/} }
+\def\algout{\par\smallskip{\it Výstup:\/} }
+
+% Jmeno algoritmu v textu nebo ve formuli
+\def\alg#1{\hbox{\csc #1}}
+
+%%% Konstrukce pouzivane v algoritmech %%%
% Priraditko
\def\={\leftarrow}
-% Komentar v programu
+% Komentar
\def\cmt#1{~~{\sl (#1)}}
% Nekolikapismenkova promenna (mozno pouzit v textovem i math modu)
}
\footline={\hfil {\tenrm\the\count0}\hfil \llap{\sevenrm\currentversion}}
+
+%%% Cviceni %%%
+
+\newcount\excount
+
+\def\exercises{\medskip
+\begingroup
+\h{Cvièení}
+\nobreak
+\excount=0
+\advance\leftskip by 1.5em
+\parindent=0pt
+}
+
+\def\endexercises{\endgroup}
+
+\long\def\exwith#1#2{\par
+\advance\excount by 1
+\>\llap{\hbox to 1.5em{\the\excount\rlap{#1}.\hfil}}%
+#2}
+
+% Cviceni obycejne a tezsi
+\def\ex{\exwith{}}
+\def\exx{\exwith{*}}
+\def\exxx{\exwith{*\kern-0.1em*}}
+
+% Napoveda, pise se pod cviceni, ale casem se bude sama sazet na jinem miste knizky
+\long\def\hint#1{\par
+\>\em{Hint:} #1}
+
+% Reseni cviceni, pise pod cviceni (a pripadne pod \hint)
+\long\def\solution#1{\par
+\>\em{Øe¹ení:} #1}
+
+%%% Odkazy na kapitoly a jine objekty %%%
+
+% Poridime si soubor, do ktereho budeme zapisovat identifikatory
+\newwrite\ids
+\def\writeid#1#2{\immediate\write\ids{\string\def\expandafter\string\csname id#1\endcsname{#2}}}
+
+\immediate\openin\ids=ids.aux
+\ifeof\ids
+\else
+\input ids.aux
+\fi
+\immediate\closein\ids
+\immediate\openout\ids=ids.aux
+
+\def\ref#1{\expandafter\ifx\csname id#1\endcsname\relax
+{\bo ??}%
+\immediate\write16{*** Warning: Reference #1 undefined ***}%
+\else
+\csname id#1\endcsname
+\fi
+}