% (c) 2008 Martin Mares <mj@ucw.cz>
\input epsf.tex
+\input btxmac.tex
+\input amssym.tex
\catcode`@=11
\parindent=0.8cm
\parskip=3pt plus 1pt minus 1pt
+% Parameters for final typesetting (bigger inner margins etc.)
+\newif\iffinal
+\finaltrue
+\newdimen\hwobble
+\advance\hsize by -10mm
+
+\iffinal
+\hwobble=10mm
+\else
+\hwobble=0mm
+\fi
+
+% Glue
+\smallskipamount=4pt plus 1.2pt minus 1.2pt
+\medskipamount=7pt plus 2.5pt minus 2pt
+\bigskipamount=15pt plus 5pt minus 4pt
+
+\abovedisplayskip=15pt plus 4pt minus 10pt
+\abovedisplayshortskip=0pt plus 3pt
+\belowdisplayskip=15pt plus 4pt minus 10pt
+\belowdisplayshortskip=8.5pt plus 3.5pt minus 4.5pt
+
%%% Miscellanea %%%
\def\em#1{{\it #1\/}}
+\def\df#1{{\it #1\/}} % when we define something
\def\O{{\cal O}}
-\def\<#1>{\leavevmode\hbox{\it #1\/}}
+\def\<#1>{\ifmmode
+ \mathchoice{\hbox{\it #1\/}}{\hbox{\it #1\/}}{\hbox{\eightti #1\/}}{\hbox{\sixti #1\/}}%
+ \else\leavevmode\hbox{\it #1\/}\fi}
\let\>=\noindent
-\def\qed{{\parfillskip=0pt\allowbreak\hfill\nobreak $\heartsuit$\par}}
-\let\endpart=\bye
+\def\qed{{\parfillskip=0pt\allowbreak\hfill\nobreak $\spadesuit$\par}}
+\def\qeditem{{\parfillskip=0pt\hfill\rlap{\hskip\rightskip\llap{$\spadesuit$}}\par}}
+\def\qedmath{\eqno{\spadesuit}}
+\def\FIXME#1{\>{\bo TODO:} #1}
+\def\symdiff{\mathbin{\Delta}}
+\def\rack#1#2{\setbox0=\hbox{#1}\hbox to \wd0{#2}}
+\def\o#1{\accent23 #1}
+\def\mst{\mathop{\rm mst}}
+\def\msf{\mathop{\rm msf}}
+\def\deg{\mathop{\rm deg}}
+\def\timesalpha{\mskip2mu\alpha}
+\def\timesbeta{\mskip2mu\beta}
+\def\tower{\mathbin\uparrow}
+\def\Forb{{\rm Forb}}
+\def\minorof{\preccurlyeq}
+\def\per{\mathop{\rm per}}
+\def\poly{\mathop{\rm poly}}
+\def\E{{\bb E}}
+\def\crpt{\mathbin{\Uparrow}}
+\def\C{{\cal C}}
+\def\sgc{\mathbin{.}}
+
+\def\brk{\hfil\break}
+
+% Bit strings
+\def\0{{\bf 0}}
+\def\1{{\bf 1}}
+\def\(#1){\mathord{\left<#1\right>}}
+
+% Bitwise operations
+\def\shl{\mathbin{<\!<}}
+\def\shr{\mathbin{>\!>}}
+\def\bop#1{\mathbin{\hbox{\sc #1}}}
+\def\band{\bop{and}}
+\def\bor{\bop{or}}
+\def\bxor{\bop{xor}}
+\def\bnot{\mathop{\hbox{\sc not}}}
+
+% A reversed version of \ddots with extra space at the top to get good alignment of exponents.
+\def\rddots{\mathinner{\mkern1mu\raise\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu
+ \raise4\p@\hbox{.}\mkern2mu\raise7\p@\hbox{.}\raise11\p@\hbox{}\mkern1mu}}
% Footnotes
\newcount\footcnt
\footcnt=0
-\def\foot#1{\global\advance\footcnt by 1{\parindent=0.25in\parskip=0pt\footnote{$^{\left<\the\footcnt\right>}$}{#1}}}
+\def\foot#1{\global\advance\footcnt by 1{\parindent=0.25in\parskip=0pt\footnote{$^{\bf\the\footcnt}$}{#1}}}
%%% Fonts %%%
\font\twelverm=cmr12
\font\twelveit=cmti12
-\font\twelvesl=cmsl12
\font\twelvebf=cmbx12
-\font\twelveb=csb12
-\font\twelvesc=cscsc12
+
+%\font\twelverm=pplr8z at 12pt
+%\font\twelveit=pplri8z at 12pt
+%\font\twelvebf=pplb8z at 12pt
+
+\font\twelvesl=cmsl12
+\font\twelveb=cmb12
+\font\twelvesc=cmcsc12
\def\mathf@nt#1#2#3#4{%
\toks0=\expandafter{\csname#1#2\endcsname}%
\def\fntmathsssize{6}
\def\fntmathsstok{six}
-\mathf@nt{\fntmathtok}{r}{\fntmathsize}{cs}\textfont0=\m@@f
-\mathf@nt{\fntmathstok}{r}{\fntmathssize}{cs}\scriptfont0=\m@@f
-\mathf@nt{\fntmathsstok}{r}{\fntmathsssize}{cs}\scriptscriptfont0=\m@@f
+\mathf@nt{\fntmathtok}{r}{\fntmathsize}{cm}\textfont0=\m@@f
+\mathf@nt{\fntmathstok}{r}{\fntmathssize}{cm}\scriptfont0=\m@@f
+\mathf@nt{\fntmathsstok}{r}{\fntmathsssize}{cm}\scriptscriptfont0=\m@@f
\mathf@nt{\fntmathtok}{mi}{\fntmathsize}{cm}\skewchar\m@@f='177\textfont1=\m@@f
\mathf@nt{\fntmathstok}{mi}{\fntmathssize}{cm}\skewchar\m@@f='177\scriptfont1=\m@@f
\mathf@nt{\fntmathsstok}{mi}{\fntmathsssize}{cm}\skewchar\m@@f='177\scriptscriptfont1=\m@@f
\mathf@nt{\fntmathstok}{sy}{\fntmathssize}{cm}\skewchar\m@@f='60\scriptfont2=\m@@f
\mathf@nt{\fntmathsstok}{sy}{\fntmathsssize}{cm}\skewchar\m@@f='60\scriptscriptfont2=\m@@f
\mathf@nt{\fntmathtok}{ex}{\fntmathsize}{cm}\textfont3=\m@@f\scriptfont3=\m@@f\scriptscriptfont3=\m@@f
-\mathf@nt{\fntmathtok}{ti}{\fntmathsize}{cs}\textfont\itfam=\m@@f
-\mathf@nt{\fntmathtok}{sl}{\fntmathsize}{cs}\textfont\slfam=\m@@f
-\mathf@nt{\fntmathtok}{bx}{\fntmathsize}{cs}\textfont\bffam=\m@@f
-\mathf@nt{\fntmathtok}{tt}{\fntmathsize}{cs}\hyphenchar\m@@f=-1\textfont\ttfam=\m@@f
+\mathf@nt{\fntmathtok}{ti}{\fntmathsize}{cm}\textfont\itfam=\m@@f
+\mathf@nt{\fntmathstok}{ti}{\fntmathssize}{cm}\scriptfont\itfam=\m@@f
+\mathf@nt{\fntmathsstok}{ti}{\fntmathssize}{cm}\scriptscriptfont\itfam=\m@@f
+\mathf@nt{\fntmathtok}{sl}{\fntmathsize}{cm}\textfont\slfam=\m@@f
+\mathf@nt{\fntmathtok}{bx}{\fntmathsize}{cm}\textfont\bffam=\m@@f
+\mathf@nt{\fntmathtok}{tt}{\fntmathsize}{cm}\hyphenchar\m@@f=-1\textfont\ttfam=\m@@f
+\mathf@nt{\fntmathtok}{msam}{\fntmathsize}{}\textfont\msafam=\m@@f
+\mathf@nt{\fntmathstok}{msam}{\fntmathssize}{}\scriptfont\msafam=\m@@f
+\mathf@nt{\fntmathsstok}{msam}{\fntmathsssize}{}\scriptscriptfont\msafam=\m@@f
+\mathf@nt{\fntmathtok}{msbm}{\fntmathsize}{}\textfont\msbfam=\m@@f
+\mathf@nt{\fntmathstok}{msbm}{\fntmathssize}{}\scriptfont\msbfam=\m@@f
+\mathf@nt{\fntmathsstok}{msbm}{\fntmathsssize}{}\scriptscriptfont\msbfam=\m@@f
% Blackboard bold font
\newfam\bbfam
\def\it{\fam\itfam\twelveit}
\def\bo{\fam\bffam\twelveb}
\def\bf{\fam\bffam\twelvebf}
-\def\tt{\fam\ttfam\twelvett\hyphenchar\currentfont=-1\relax}
+\def\tt{\fam\ttfam\twelvett\hyphenchar\twelvett=-1\relax}
\def\sc{\twelvesc}
\def\sl{\fam\slfam\twelvesl}
% Other fonts
\font\chapfont=csssdc17 scaled \magstep1
\font\secfont=csb14
+\font\secitfont=csbxti14
%%% FIXME
\footline={\hss\twelverm\folio\hss}
-%%% Vycty s odrazkami i cislovane %%%
+% We have to redefine \big and friends as we are using 12pt symbols
+\def\big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
+\def\Big#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
+\def\bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}
+\def\Bigg#1{{\hbox{$\left#1\vbox to20.5\p@{}\right.\n@space$}}}
+
+%%% Enumerated lists %%%
\newif\ifitem\itemtrue
\newbox\itembox
\def\endlist{\interlistskip\endgroup}
\def\ibull{\raise0.2ex\hbox{$\bullet$}} % Signs frequently used for \itemize
+\def\icirc{\raise0.2ex\hbox{$\circ$}} % Signs frequently used for \itemize
\def\idot{\raise0.2ex\hbox{$\cdot$}}
\def\istar{\raise0.2ex\hbox{$\ast$}}
\def\frenchsp@cing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m%
\sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
-%%% Verbatim mod na jednotliva slova %%%
+%%% Local verbatim mode %%%
\def\make@ther#1{\catcode`#1=12\relax}
\def\setverb@tim{\tt\frenchsp@cing\catcode`\`=13\catcode`\'=13\n@ligs%
\def\ttst@rt{\begingroup\setverb@tim\let|=\endgroup}
\let|=\ttst@rt
-%%% Verbatim mod na delsi text uzavreny v { } %%%
+%%% Verbatim mode for text in { } %%%
\newskip\verbglue\newskip\verblineglue
\verbglue=3pt plus 1pt minus 0.3pt
\def\verbinput#1{\begingroup\v@rbparams\input #1\endgroup}
-%%% Sazba algoritmu %%%
+%%% Algorithms %%%
% \algo{jmeno algoritmu}
% \algin popis vstupu
% \algout popis vystupu
% \endalgo
-\def\algo#1{
+\def\algo{
\interlistskip
\begingroup
\let\:=\algoitem
\parskip=1pt plus 1pt minus 0.3pt
\rightskip=2em
\itemcount=0
-{\bo Algoritmus\/} {\sc #1}
+\smallskip
}
\def\endalgo{\interlistskip\endgroup}
\def\algopar{\par
\leavevmode
}
\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{\par{\it Vstup:\/} }
-\def\algout{\par{\it Výstup:\/} }
+\def\algin{\par{\sl Input:\/} }
+\def\algout{\par{\sl Output:\/} }
-%%% Konstrukce pouzivane v algoritmech %%%
+%%% Constructs used in algorithms %%%
-% Priraditko
\def\={\leftarrow}
-
-% Komentar
\def\cmt#1{~~{\sl (#1)}}
-%%% Kapitoly %%%
+%%% Chapters, sections and proclamations %%%
\newcount\chapcount
\newcount\seccount
+\newcount\thmcount
+\newcount\tmpcount
\chapcount=0
\seccount=0
+\thmcount=0
+\def\currentid{??}
+\def\currentchap{??}
+
+\def\appendices{\chapcount=99}
+
+\def\oddpage{%
+\iffinal
+ \ifodd\pageno
+ \else
+ \hglue 1in \vfill\supereject
+ \fi
+\fi
+}
-\def\chapter#1{\vfill\eject
-\advance\chapcount by 1
-\seccount=0
-\leftline{\chapfont\the\chapcount. #1}
+\def\rawchapter#1{\vfill\supereject
+\oddpage
+\leftline{\chapfont #1}
\bigskip
}
+\def\unchapter#1{
+\rawchapter{#1}
+\writetoc{unchap}{#1}
+}
+
+\def\chapter#1{\advance\chapcount by 1
+\seccount=0
+\thmcount=0
+\footcnt=0
+% Chapter name
+ \ifnum\chapcount>99
+ \tmpcount=\chapcount
+ \advance\tmpcount by -100
+ \edef\currentchap{\ifcase\tmpcount A\or B\or C\or D\or E\or ZZZ\fi}
+ \else
+ \edef\currentchap{\the\chapcount}
+ \fi
+\edef\currentid{\currentchap}
+\rawchapter{\currentid. #1}
+\writetoc{chap}{#1}
+}
+
+\def\vensure#1{\dimen0=#1
+\vskip 0pt plus \dimen0
+\penalty-1000
+\vskip 0pt plus -\dimen0
+}
+
\def\section#1{\bigskip
+\vensure{0.5in}
\advance\seccount by 1
-\leftline{\secfont\the\chapcount.\the\seccount. #1}
+\thmcount=0
+\edef\currentid{\currentchap.\the\seccount}
+\leftline{\secfont\currentid. #1}
+\nobreak
\medskip
+\nobreak
+\writetoc{sec}{#1}
+}
+
+\def\para{\advance\thmcount by 1
+\edef\currentid{\currentchap.\the\seccount.\the\thmcount}
+\noindent {\bo \currentid.\enspace}}
+
+\def\proclaim#1{\para {\bo #1.\enspace}}
+
+\def\thm{\proclaim{Theorem}}
+\def\lemma{\proclaim{Lemma}}
+\def\defn{\proclaim{Definition}}
+\def\problem{\proclaim{Problem}}
+\def\obs{\proclaim{Observation}}
+\def\rem{\proclaim{Remark}}
+\def\alg{\proclaim{Algorithm}}
+\def\impl{\proclaim{Implementation}}
+\def\cor{\proclaim{Corollary}}
+\def\nota{\proclaim{Notation}}
+\def\example{\proclaim{Example}}
+
+\def\label#1{{\sl (#1)\/}\enspace}
+\def\labelx#1{\label{#1}\hfil\break\eatspaces}
+\def\eatspaces{\kern0pt}
+
+\def\thmn{\thm\labelx}
+\def\lemman{\lemma\labelx}
+\def\defnn{\defn\labelx}
+\def\corn{\cor\labelx}
+\def\algn{\alg\label}
+\def\notan{\nota\labelx}
+\def\examplen{\example\labelx}
+\def\problemn{\problem\labelx}
+\def\remn{\rem\labelx}
+
+\def\paran#1{\para {\sl #1.\/}\enspace\eatspaces}
+
+\def\proof{\noindent {\sl Proof.}\enspace}
+\def\proofsketch{\noindent {\sl Proof sketch.}\enspace}
+
+%%% Table of contents %%%
+
+\newwrite\toc
+\immediate\openout\toc=\jobname.toc
+\newif\iftoc
+\tocfalse
+
+\def\writetoc#1#2{
+ \toctrue
+ \toks0={\the\pageno}
+ \edef\tocaux{\write\toc{\noexpand\expandafter\noexpand\string\noexpand\csname toc#1\noexpand\endcsname{\currentid}{#2}{\the\toks0}}}
+ \tocaux
+ \tocfalse
}
-%%% Odkazy na kapitoly a jine objekty %%%
+\newwrite\tok
+\def\includetoc{
+\immediate\openin\tok=\jobname.tok
+\ifeof\tok
+\else
+\input \jobname.tok
+\fi
+\immediate\closein\tok
+}
+
+\def\tocchap#1#2#3{\smallskip\line{\bo #1.~~#2 \dotfill ~#3}}
+\def\tocsec#1#2#3{\line{#1.~~#2 \dotfill ~#3}}
+\def\tocunchap#1#2#3{\smallskip\line{\bo #2 \dotfill ~#3}}
+
+%%% References %%%
-% 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
+\immediate\openin\ids=\jobname.ids
\ifeof\ids
\else
-\input ids.aux
+\input \jobname.ids
\fi
\immediate\closein\ids
-\immediate\openout\ids=ids.aux
+\immediate\openout\ids=\jobname.ids
\def\ref#1{\expandafter\ifx\csname id#1\endcsname\relax
{\bo ??}%
\fi
}
-% Pojmenovavani objektu
-\def\chapid#1{\marginalie{#1}\writeid{ch#1}{\the\chapcount}}
-\def\secid#1{\marginalie{#1}\writeid{sec#1}{\the\chapcount.\the\seccount}}
+\def\id#1{\writeid{#1}{\currentid}}
+
+%%% Bibliography %%%
+
+%\bibliographystyle{abbrv}
+\bibliographystyle{mjalpha}
+\def\dumpbib{
+ \def\bblhook{\parskip=2pt plus 1pt minus 0.5pt}
+ \bibliography{biblio}
+}
+
+%%% Figures %%%
+
+\def\float#1#2{\midinsert
+\medskip
+\centerline{#1}
+\medskip
+\smallskip
+\centerline{#2}
+\endinsert}
+
+\def\figure#1#2#3{\float{\epsfxsize=#2\epsfbox{pic/#1}}{#3}}
+
+\def\multicap#1{
+\let\\=\break
+\vbox{\hsize=0.7\hsize
+\parindent=0pt
+\leftskip=0pt plus 0.3\hsize
+\rightskip=\leftskip
+\parfillskip=0pt
+#1
+}}
-% Odkazovani na objekty
-\def\chapref#1{\ref{ch#1}}
-\def\secref#1{\ref{sec#1}}
+%%% Stand-alone chapters %%%
+
+\def\endpart{
+ \section{Bibliography}
+ \dumpbib
+ \vfill\supereject\end
+}
+
+%%% Hyphenation %%%
+
+\hyphenation{Ra-ma-chan-dran}
+
+%%% Output routine %%%
+
+\output{\sagaoutput}
+
+\def\sagaoutput{\ifodd\pageno \hoffset=\hwobble \else \hoffset=0pt \fi
+\plainoutput}
+
+\def\makefootline{\baselineskip30pt\lineskiplimit 0pt\line{\the\footline}}
+
+\footline={\ifodd\pageno
+ {\hfil\twelvemi\the\pageno}%
+\else
+ {\twelvemi\the\pageno\hfil}%
+\fi
+}
%%% The End %%%