From 86f64bb426a0552f8409a83942ea96cccd420bb2 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 15 Jan 2012 23:35:33 +0100 Subject: [PATCH] Makra: Sazba algoritmu, cviceni a odkazu z algobooku Pozor, tyto zmeny nejsou zpetne kompatibilni, je nutno predelat vsechny kapitoly. --- lecnotes.tex | 88 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 9 deletions(-) diff --git a/lecnotes.tex b/lecnotes.tex index 9606a84..ebf27cb 100644 --- a/lecnotes.tex +++ b/lecnotes.tex @@ -43,6 +43,9 @@ % ... 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 @@ -51,42 +54,54 @@ % \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) @@ -156,3 +171,58 @@ } \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 +} -- 2.39.2