X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=macros.tex;h=b7f43851465e8b438812e34eb3d447a03afc45f5;hb=f76518370c437b42604c7c2c5ef56df95d471b32;hp=de53a87f7e2eca98a878a96dd9ebbedbd5a62802;hpb=4669766958557947f2f8dd68f2fb0578d333b737;p=saga.git diff --git a/macros.tex b/macros.tex index de53a87..b7f4385 100644 --- a/macros.tex +++ b/macros.tex @@ -2,6 +2,8 @@ % (c) 2008 Martin Mares \input epsf.tex +\input btxmac.tex +\input amssym.tex \catcode`@=11 @@ -14,28 +16,83 @@ \parindent=0.8cm \parskip=3pt plus 1pt minus 1pt +\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\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}% @@ -52,9 +109,9 @@ \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 @@ -62,10 +119,18 @@ \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 @@ -82,7 +147,7 @@ \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} @@ -95,11 +160,18 @@ % 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 @@ -122,6 +194,7 @@ \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$}} @@ -146,7 +219,7 @@ \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% @@ -165,7 +238,7 @@ \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 @@ -205,7 +278,7 @@ \def\verbinput#1{\begingroup\v@rbparams\input #1\endgroup} -%%% Sazba algoritmu %%% +%%% Algorithms %%% % \algo{jmeno algoritmu} % \algin popis vstupu @@ -215,14 +288,14 @@ % \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 @@ -232,56 +305,136 @@ \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 \chapcount=0 \seccount=0 +\thmcount=0 +\def\currentid{??} -\def\chapter#1{\vfill\eject -\advance\chapcount by 1 -\seccount=0 -\leftline{\chapfont\the\chapcount. #1} +\def\rawchapter#1{\vfill\supereject +\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 +\edef\currentid{\the\chapcount} +\rawchapter{\currentid. #1} +\writetoc{chap}{#1} +} + \def\section#1{\bigskip \advance\seccount by 1 -\leftline{\secfont\the\chapcount.\the\seccount. #1} +\thmcount=0 +\edef\currentid{\the\chapcount.\the\seccount} +\leftline{\secfont\currentid. #1} +\nobreak \medskip +\nobreak +\writetoc{sec}{#1} +} + +\def\para{\advance\thmcount by 1 +\edef\currentid{\the\chapcount.\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\kern 0pt} % Eat spaces + +\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\kern 0pt} + +\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\count0} + \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 ??}% @@ -291,13 +444,50 @@ \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{alpha} +\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 +}} + +%%% Stand-alone chapters %%% + +\def\endpart{ + \section{Bibliography} + \dumpbib + \vfill\supereject\end +} + +%%% Hyphenation %%% -% Odkazovani na objekty -\def\chapref#1{\ref{ch#1}} -\def\secref#1{\ref{sec#1}} +\hyphenation{Ra-ma-chan-dran} %%% The End %%%