The j--problems-.tex format file



% j--problems-.tex
%
% This is a format file (based on plain TeX) for other j??problems?.tex
% files for the Vojtech Jarnik Mathematical Competition.  (Substitute
% the number of the year instead of the first two ??, substitute the
% category instead of the last ?.)
%
% This format is used to publish the problems that were given in a
% particular year and category on the web.  We typeset the problems
% (into a dvi file).  Then we convert the resulting dvi file to an
% image (a transparent gif file).  The following (Unix) commands are
% to be used to do so:
%
%	I=j12problems1
%
% (if, e.g., the file ``j12problems1.tex'' is to be processed)
%
%	tex \\mag=1220 \\input $I.tex
%	dvips -D118 -mode pcscreen -V $I.dvi
%	gs -sDEVICE=bmpmono -dNOPAUSE -dBATCH -r118 -sOutputFile=$I.bmp $I.ps
%	bmptoppm $I.bmp | pnmcrop -white > $I.pnm
%	pnmcat -white -topbottom \
%		1_white.pnm 1_white.pnm 1_white.pnm 1_white.pnm	1_white.pnm \
%		1_white.pnm 1_white.pnm 1_white.pnm 1_white.pnm	1_white.pnm \
%		$I.pnm \
%		1_white.pnm 1_white.pnm 1_white.pnm 1_white.pnm	1_white.pnm \
%		1_white.pnm 1_white.pnm 1_white.pnm 1_white.pnm	1_white.pnm \
%		1_white.pnm 1_white.pnm 1_white.pnm 1_white.pnm	1_white.pnm \
%		1_white.pnm 1_white.pnm 1_white.pnm 1_white.pnm | \
%	  ppmtogif -transparent==rgb:FF/FF/FF > $I.gif
%	rm $I.dvi $I.ps $I.bmp $I.pnm
%
% (Alternatively, the pcx format can be used instead of bmp --- use
% ``-sDEVICE=pcxmono'' and ``pcxtoppm''.  Alternatively, the resulting
% image could be saved as a png file --- use ``pnmtopng''.
%
% The ``1_white.pnm'' is a 1x1 pixel file containing one white pixel.
% It can be obtained using ``giftopnm 1_white.gif > 1_white.pnm''.
%
% In the image, the distance of two lines ("\baselineskip") is
% 24 pixels.  But the pnmcrop(1) utility crops all margins.
% Including the top and bottom one.
%     So we add some margin to the top (10 pixel lines) so that the
% first text line is 24 pixels high.  The letters on the first line
% ("The 12th Annual Vojtech Jarnik") are 14 pixels high.  As the heading
% is always the same, the number of 10 pixels can be taken as a rule
% here.
%     We also add some margin to the bottom (usually! 19 pixels) so that
% there are 24 pixels below the baseline of the last text line.  The
% depth of the letters on the last line (... [10 points]) is usually
% 5 pixels.  But if the last line contains the parenthesis (), the depth
% is 6 pixels (only 18 pixels to be added in such a case).  The right
% amount of pixels to add must always be determined manually.  It is
% necessary to inspect the resulting image in a graphic editor.)
%
% If you intend to print the result on the A4 paper, specify it:
%
%	tex \\let\\AIIIIpaper=1 \\input j12problems1.tex
%
% Appropriate \vsize will be used, the result will be centered on A4,
% appropriate page breaks will take place and so on.
% If you intend to print on the Letter (8.5"x11") or Legal (8.5"x14")
% paper, use:
%
%	tex \\let\\Letter=1 \\input j12problems1.tex
% or
%	tex \\let\\Legal=1 \\input j12problems1.tex
%
% No other paper sizes are defined here.
%
%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Nejprve opravy plain TeXu.
% Opravime
%	\makefootline -	opravime, aby fungoval i pri \offinterlineskip
%	\makeheadline -	neni spatne, jen at tam nejsou zadna tvrda cisla,
%			aby slo pouzivat i pri jinych radkovanich
%	\raggedbottom -	neni spatne, jen at tam nejsou zadna tvrda cisla
%	\normalbottom -	neni spatne, jen at tam nejsou zadna tvrda cisla
%	\Relbar       -	neni spatne, jen ho zjednodusime
%	\models       -	neni spatne, jen at pouziva \Relbar tak jako
%			\Longleftarrow a \Longrightarrow
%	\mathhexbox   -	neni spatne, jen ho zjednodusime, aby se k sazbe
%			textovych znaku nepouzival matematicky mod
%	\dots         -	opravime, aby v textovem modu se pouzily tecky
%			z textoveho fontu, a z mat. fontu v mat. modu
%
% Rozsirime
%	\thinspace    -	rozsirime, aby dobre fungoval i mat modu
%	\negthinspace -	ditto
%	\enspace      -	ditto
%	\enskip       -	ditto
%	\quad         -	ditto
%	\qquad        -	ditto
%
%			Poznamka: uvedenou upravou maker
%				\thinspace, \negthinspace, \enspace,
%				\enskip, \quad, \qquad
%				se porusi kompatibilita s dokumentovanym
%				chovanim plain TeXu.
%
% Upravime / vylepsime
%	\cases        -	v podstate jej ponechavame beze zmeny.  Toto
%			makro v sobe pouziva \quad (v textovem rezimu).
%			Prikaz \quad umistime dovnitr matematickeho
%			modu, aby rozmery matice nezavisely na velikosti
%			textoveho fontu pouziteho v okoli formule
%	\matrix       -	ditto.
%
%			Navic: puvodni plainovska verze ma
%			v sobe zapomenutou mezeru -- za
%			prvnim ``\noalign{\kern-\baselineskip}''
%
%	\bordermatrix -	ditto.  Upravy:
%			- vsechno vsuneme do jednoho \vbox'u.
%			  Otevirani skupiny kolem dokola je pak
%			  zbytecne
%			- pred prikaz \m@th vsuneme prikaz
%			  \normalbaselines tak, jako je tomu
%			  i v predchozich makrech
%			- prikaz \thinspace nahradime za $\,$
%			  (jde o mezeru mezi levou natahovaci zavorkou
%			  a vnitrkem matice); v \pmatrix (i v \cases) se
%			  vzdy mezi zavorku a telo matice dava \,
%			- prikaz \quad dame do dolaru
%			- za druhy prikaz ``\omit\strut'' pridame jeste
%			  \hfil -- aby v boxu nevznikalo pustoprazdno
%			- \kern2\p@ pouzivany v horizontalnim smeru
%			  (misto mezi prvnim (vnejsim) sloupcem a
%			  natahovaci zavorkou) zameneno za $\mkern3.6mu$
%			- \kern2\p@ pouzivany ve vertikalnim smeru
%			  (misto mezi prvnim (vnejsim) radkem a zbytkem
%			  matice) zameneno za .66667\jot
%
%			!!! je treba znovu zjistit sirku leve natahovaci
%			    zavorky \p@renwd.  Ale to lze udelat az po
%			    natazeni fontu.
%			    Az to budeme delat (opet pres \box0),
%			    nezapomeneme ten box zase vyprazdnit --
%			    v plainu je na to zapomenuto a pak se to
%			    ulozi i do vygenerovaneho formatu...
%
%	\eqalign      -	je dobre.  Jen pred \openup\jot pridame
%			prikaz \normalbaselines tak, jak to delame
%			i v prikazech vyse
%	\displ@y      -	ditto.  Upravy:
%			- pred \openup\jot pridame \normalbaselines
%			- rozmer ``-1000\p@'' nahradime ``-\@m\p@''
%
% Opravime pozdeji
%	\vdots        -	zaslouzi opravu, protoze tecky jsou z fontu,
%			ktery se pouzije v okoli matematiky (to by
%			zaviset nemelo).  Definice ovsem musi vzit
%			v uvahu i hodnotu \baselineskip, proto to
%			opravime nize...
%	\ddots        -	ditto ...
%

\catcode`@=11
\def\makefootline{%
	\baselineskip \normalbaselineskip
	\lineskiplimit -\maxdimen
	\kern \baselineskip
	\line {\the\footline}%
	%null
	%kern -\thr@@\baselineskip
}
\def\makeheadline{%
	\baselineskip \normalbaselineskip
	\lineskiplimit -\maxdimen
	\kern \topskip
	\kern -\tw@\baselineskip
	\line {\the\headline}%
	\null
	\kern \baselineskip
	\kern -\topskip
	\nointerlineskip
}
\catcode`@=12

\catcode`@=11
\def\raggedbottom{\topskip\@ne\topskip plus5\normalbaselineskip
				       \r@ggedbottomtrue }
\def\normalbottom{\topskip\@ne\topskip \r@ggedbottomfalse}
\catcode`@=12

\mathchardef \Relbar = "303D
\def \models {\mathrel |\joinrel \Relbar }

\def \mathhexbox #1#2#3{%
	\ifmmode
		\mathchar"#1#2#3 %
	\else
		{\the\textfont"#1\char"#2#3}%
	\fi
}

\catcode`@=11
\let \DOTSpace = \thinspace
\def \dot@ {.\DOTSpace }
\def \dots {\ifmmode \ldots \else \dot@\dot@\dot@ \fi }
\catcode`@=12

\catcode`@=11
\def \thinspace    {\ifmmode \mkern \thr@@ mu\else \kern .16667em\fi }
	\expandafter \expandafter
	\expandafter \def
	\expandafter \expandafter		% Insert a space at the
	\expandafter \thinspace			% end of the definition
	\expandafter \expandafter		% to break the <dimen>
	\expandafter {%				% syntax rule!
	\expandafter \thinspace \space }
\def \negthinspace {\ifmmode \mkern-\thr@@ mu\else \kern-.16667em\fi }
	\expandafter \expandafter \expandafter \def
	\expandafter \expandafter \expandafter \negthinspace
	\expandafter \expandafter \expandafter {%
	\expandafter \negthinspace \space }
\def \enspace      {\ifmmode \mkern       9mu\else \kern .5em\fi     }
	\expandafter \expandafter \expandafter \def
	\expandafter \expandafter \expandafter \enspace
	\expandafter \expandafter \expandafter {%
	\expandafter \enspace \space }

\def \enskip       {\ifmmode \mskip 9mu\else \hskip    .5em\fi \relax }
\def \quad         {\ifmmode \mskip18mu\else \hskip \@ne em\fi \relax }
\def \qquad        {\ifmmode \mskip36mu\else \hskip \tw@ em\fi \relax }
\catcode`@=12

\catcode`@=11
\def \cases #1{%
	\left\{\,%
	\vcenter {%
		\normalbaselines
		\m@th
		\ialign {$##\hfil$&$\quad$##\hfil\crcr#1\crcr}%
	}%
	\right.%							% \}
}
\def \matrix #1{%
	\null\,%
	\vcenter {%
		\normalbaselines
		\m@th
		\ialign {%
			\hfil$##$\hfil&&$\quad$\hfil$##$\hfil\crcr
			\mathstrut\crcr
			\noalign {\kern-\baselineskip}%
			#1\crcr
			\mathstrut\crcr
			\noalign {\kern-\baselineskip}%
		}%
	}\,%
}
\def \bordermatrix #1{%
	\null\;%
	\vbox {%
		\normalbaselines
		\m@th
		\setbox\z@\vbox {%
			\def\cr{%
				\crcr
				\noalign {%
					\kern .66667\jot
					\global\let\cr\endline
				}%
			}%
			\ialign {%
				$##$\hfil$\mkern3.6mu$\kern\p@renwd
					&$\,$\hfil$##$\hfil
					&&$\quad$\hfil$##$\hfil\crcr
				\omit\strut\hfil\crcr
				\noalign {\kern-\baselineskip}%
				#1\crcr
				\omit\strut\hfil\cr
			}%
		}%
		\setbox\tw@\vbox {%
			\unvcopy\z@
			\global\setbox\@ne\lastbox
		}%
		\setbox\tw@\hbox {%
			\unhbox\@ne
			\unskip
			\global\setbox\@ne\lastbox
		}%
		\setbox\tw@\hbox {$%
			\kern\wd\@ne
			\kern-\p@renwd
			\left (%
			\kern-\wd\@ne
			\global\setbox\@ne\vbox {%	% get the height
				\box\@ne		% of the first (!)
				\kern .66667\jot	% line
			}%
			\vcenter {%
				\kern-\ht\@ne		% move that up
				\unvbox\z@
				\kern-\baselineskip
			}\,%
			\right )%
		$}%
		\kern\ht\@ne				% move that down
		\box\tw@
	}%
}

\def \eqalign #1{%
	\null\,%
	\vcenter {%
		\normalbaselines
		\openup\jot
		\m@th
		\ialign {%
			\strut\hfil$\displaystyle{##}$%
				&$\displaystyle{{}##}$\hfil \crcr
			#1\crcr
		}
	}\,%
}
\def \displ@y {%
	\global\dt@ptrue
	\normalbaselines
	\openup\jot
	\m@th
	\everycr {\noalign {%
		\ifdt@p
			\global\dt@pfalse
			\ifdim\prevdepth >-\@m\p@
				\vskip-\lineskiplimit
				\vskip\normallineskiplimit
			\fi
		\else
			\penalty\interdisplaylinepenalty
		\fi
	}}%
}
\catcode`@=12



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Makro \s@lf
%

%catcode`@=11
%def \s@lf {\s@lf}
%catcode`@=12



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Uzitecne makro:
%	\hexDigit
%


\def \hexDigit #1{%
	\ifcase #1\relax
		0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
		8\or 9\or A\or B\or C\or D\or E\or F%
	\fi
}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Tri makra pro jarnikovskou soutez:
% \problem ............. nasleduje cislo problemu a jeho zneni
% \endproblem .......... nasleduje pocet bodu.
%			 Predpoklada se, ze za priklad jsou vzdy
%			 alespon 2 body!
%			 Jestlize priklad konci vysazenym vzorcem,
%			 pak je vhodne psat:
%			 $$
%			 ...
%			 \postdisplaypenalty=10000
%			 $$
%			 \endproblem 10
%
% \competitionheader ... definuje makra \jcYear, \jcDate a \jcCategory
%			 pro spolupraci s vystupni rutinou
%


\catcode`@=11
\def \problem #1 {%
	\vskip \z@ plus.6\vsize
	\penalty -250%
	\vskip \z@ plus-.6\vsize
	\bigskip
	\noindent {\bf Problem #1. }%
	% \ignorespaces		% (not necessary here)
}
\catcode`@=12


\catcode`@=11
\def \endproblem #1 {%
	\unskip
	\nobreak
	\hfil
	\allowbreak
	\quad
	\null
	\nobreak
	\hfill
	[#1~\kern\z@ points]{\finalhyphendemerits\z@ \par}%
		% insert \kern\z@ so that TeX does not
		% try to hyphenate the word "points"
		% (note also the tilde (non-breaking
		% space) before the \kern)
}
\catcode`@=12


%catcode`@=11
\def \competitionheader
		The #1 Annual Vojt\v ech Jarn\'\i k
		International Mathematical Competition
		Ostrava, #2
		Category #3
{%
	\def \jcYear     {#1}%
	\def \jcDate     {#2}%
	\def \jcCategory {#3}%
	%jcY@arth #1th\s@lf
}
%def \jcY@arth #1th#2\s@lf {\jcY@arrd #1rd\s@lf }
%def \jcY@arrd #1rd#2\s@lf {\jcY@arnd #1nd\s@lf }
%def \jcY@arnd #1nd#2\s@lf {\jcY@arst #1st\s@lf }
%def \jcY@arst #1st#2\s@lf {\def \jcYear {#1}}
%catcode`@=12


% Initial values.
%
\def \jcYear     {??th}
\def \jcDate     {??th Month ????}
\def \jcCategory {?}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Natahneme fonty.
%


\catcode`@=11


%font \tenrm   = cmr10
%font \eithtrm = cmr7
%font \fiverm  = cmr5

%textfont0         = \tenrm
%scriptfont0       = \eithtrm
%scriptscriptfont0 = \fiverm
%def \rm {\fam\z@ \tenrm }


%font \teni   = cmmi10
%font \seveni = cmmi7
%font \fivei  = cmmi5

%skewchar\teni   = '177
%skewchar\seveni = '177
%skewchar\fivei  = '177

%textfont1         = \teni
%scriptfont1       = \seveni
%scriptscriptfont1 = \fivei
%def \mit {\fam\@ne }
%def \oldstyle {\fam\@ne \teni }


%font \tensy   = cmsy10
%font \sevensy = cmsy7
%font \fivesy  = cmsy5

%skewchar\tensy   = '60
%skewchar\sevensy = '60
%skewchar\fivesy  = '60

%textfont2         = \tensy
%scriptfont2       = \sevensy
%scriptscriptfont2 = \fivesy
%def \cal {\fam\tw@ }


%font \tenex    = cmex10
%font \tenexvii = cmex10 at 7pt		% (do not load)
%font \tenexv   = cmex10 at 5pt		% (do not load)

%textfont3         = \tenex
%scriptfont3       = \tenexvii		% (do not use)
%scriptscriptfont3 = \tenexv		% (do not use)

%textfont3         = \tenex
%scriptfont3       = \tenex
%scriptscriptfont3 = \tenex

%setbox0 = \hbox {\the\textfont3 B}	% the width of the
%p@renwd = \wd0				% big left parenthesis
\setbox0 = \box\voidb@x			% (for \bordermatrix)


%font \tenit    = cmti10
%font \sevenit  = cmti7
%font \sevenitv = cmti7 at 5pt

%textfont\itfam         = \tenit
%scriptfont\itfam       = \sevenit
%scriptscriptfont\itfam = \sevenitv
%def \it {\fam\itfam \tenit }


%font \tensl      = cmsl10
%font \eightslvii = cmsl8 at 7pt
%font \sixslv     = cmsl6 at 5pt

%textfont\slfam         = \tensl
%scriptfont\slfam       = \sevensl
%scriptscriptfont\slfam = \sixslv
%def \sl {\fam\slfam \tensl }


%font \tenbf   = cmbx10
%font \sevenbf = cmbx7
%font \fivebf  = cmbx5

%textfont\bffam         = \tenbf
%scriptfont\bffam       = \sevenbf
%scriptscriptfont\bffam = \fivebf
%def \bf {\fam\bffam \tenbf }


%font \tentt      = cmtt10
%font \eightttvii = cmtt8 at 7pt
%font \eightttv   = cmtt8 at 5pt

%textfont\ttfam         = \tentt
%scriptfont\ttfam       = \eightttvii
%scriptscriptfont\ttfam = \eightttv
%def \tt {\fam\ttfam \tentt }


\font \tenmsam   = msam10
%font \sevenmsam = msam7
%font \fivemsam  = msam5

\newfam\msamfam
\textfont\msamfam         = \tenmsam
%scriptfont\msamfam       = \sevenmsam
%scriptscriptfont\msamfam = \fivemsam
\def \msam {\fam\msamfam \tenmsam }


\font \tenmsbm   = msbm10
%font \sevenmsbm = msbm7
%font \fivemsbm  = msbm5

\newfam\msbmfam
\textfont\msbmfam         = \tenmsbm
%scriptfont\msbmfam       = \sevenmsbm
%scriptscriptfont\msbmfam = \fivemsbm
\def \msbm {\fam\msbmfam \tenmsbm }


\catcode`@=12



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Definujeme zbytek formatu (velikost sazby, radkovani apod.)
%


%topskip             = 10pt
%normalbaselineskip  = 12pt
%normallineskiplimit =  0pt
%normallineskip      =  1pt
%normalbaselines
%rm
			% is it == .4 of the height of the font \rm,
%maxdepth = .4pt	%    or == (1/3) \normalbaselineskip (more likely)?

%splittopskip = \topskip


%setbox\strutbox = \hbox {\vrule height 8.5pt depth 3.5pt width 0pt }


%catcode`@=11
%def\big #1{{\hbox{$\left#1\vbox  to8.5\p@{}\right.\n@space$}}}
%def\Big #1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
%def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
%def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}
%catcode`@=12


%delimitershortfall = 5pt
%nulldelimiterspace = 1.2pt
%scriptspace        = 0.5pt


%bigskipamount   = 12pt plus 4pt minus 4pt
%medskipamount   =  6pt plus 2pt minus 2pt
%smallskipamount =  3pt plus 1pt minus 1pt

%abovedisplayskip = 12pt plus 3pt minus 9pt
%belowdisplayskip = 12pt plus 3pt minus 9pt
%abovedisplayshortskip = 0pt plus 3pt
%belowdisplayshortskip = 7pt plus 3pt minus 4pt

%jot = 3pt			% == .25\normalbaselineskip?



% Na radkovani toho zavisi vice, napr. \vdots, \ddots, \footnoterule.
%


% Na radkovani dale zavisi \vdots.
% Zda se, ze neexistuje zadna dokumentace k tomu, jak cisla ve \vdots
% maji byt urcena.  Zamery autora TeXu v tomto miste jsou nezname.
% V uvahach nize se proto nejprve pokusime nejaka pravidla urcit.
%     Pouziti tohoto makra se predpoklada hlavne v maticich (\pmatrix).
% Jako standardni ukazku matice uvazujme
% $$
% \pmatrix {	a_{11} & a_{12} & \ldots & a_{1n} \cr
%		a_{21} & a_{22} & \ldots & a_{2n} \cr
%		\vdots & \vdots & \ddots & \vdots \cr
%		a_{m1} & a_{m2} & \ldots & a_{mn} }
% $$
% a
% $$
% \pmatrix {	y_1    \cr
%		\vdots \cr
%		y_k    }
% $$
% jak uvedeno v TeXbooku, strana 177.  Pro uvahy nize je mozne dolni
% indexy u promennych $a_{\ldots}$ vynechat.
%     Zamerem asi je, aby v tomto konkretnim pripade misto mezi spodnim
% okrajem dolni tecky z \vdots a horni hranou pismene "a" a mezi dolni
% hranou pismene "a" (resp. dolniho indexu) a hornim okrajem horni tecky
% bylo (priblizne) stejne.
%     Dalsim zamerem je, aby tecky z \vdots mezi sebou mely rozumnou
% vzdalenost, aby nebyly moc na sobe a aby ani nebyly prilis daleko od
% sebe.  Zda se, ze vertikalni mezera mezi nimi je volena tak, aby
%	<mezera> + <tecka> + <mezera> + <tecka> + <mezera> + <tecka>
%
% pokrylo cely jeden radek (proto je asi v plainu voleno
% \baselineskip=4pt (tj. 12pt / 3)), nebot standardni \baselineskip je
% prave 12pt.
%     [Pozn.:  Nezda se, ze by mezery byly voleny tak, jako kdybychom
% \ldots (resp. \cdots) otocili o 90 stupnu.  Vzdalenost mezi levymi
% okraji tecek v \ldots (i \cdots) je 4.44441pt, kdezto vzdalenost mezi
% dolnimi okraji tecek ve \vdots jsou 4pt.  Dale, kdyz jednou pouzijeme
% \vdots, asi je pouzijeme na celem radku matice.  Je proto vhodne tecky
% nepatrne srazit k sobe, aby vznikle bile misto nebylo prilis velike.]
%     Tedy k vypoctum:
%     Predne je treba uvazit, ze v \matrix se pouziva normalni
% \baselineskip (nikoliv zvetseny o hodnotu \jot jako v \eqalign).
% Dale, nad \vdots, vzhledem k tomu, jak je tato konstrukce vysoka, bude
% vzdy mezera podle \lineskip.
%     Mezi hornim okrajem horni tecky a dolni hranou pismene a tedy bude
% mezera velikosti \lineskip + \kern, ktery tam dame.
%     Mezi dolnim okrajem dolni tecky a horni hranou pismene a je naopak
% vzdy mezera velikosti \baselineskip - 1ex.
%     Dany kern tedy musime urcit tak, aby obe mezery si byly rovny.
% (Dole muze byt pripadne o neco vetsi.)
%
% (Pozn.: 1ex, ktery je nize uveden, je samozrejme z fontu pouzitych
% v matematice -- cmr, cmmi, cmsy, cmex -- \fontdimen5.)
%
% Rozmery:
%	\baselineskip = 12pt		(12pt / 3 = 4pt)
%	\lineskip     = 1pt		(12pt - 4.30554pt = 7.69446pt)
%	1ex           = 4.30554pt	(7.69446pt - 1pt = 6.69446pt)
%
\catcode`@=11
\def \vdot@ {\hbox {$.$}}
\def \vdots {%
	\vbox {%
		\baselineskip 4\p@
		\lineskiplimit \z@
		\kern 6\p@
		\vdot@
		\vdot@
		\vdot@
	}%
}
\catcode`@=12


% Na radkovani zavisi take \ddots.
% Ani k \ddots zadna dokumentace, zda se, neni (zejmena k vertikalnim
% mezeram).  Nize uvedene uvahy jsou proto jen pokusem nejake pravidla
% urcit.
%     Predne lze snadno zjistit, ze celkova sirka konstrukce \ddots musi
% byt stejna jako celkova sirka konstrukce \ldots.  To je ostatne snadno
% odvoditelne z definic obou maker:
%     -	\ldots sestava ze tri tecek jako "punktuace".  Mezi dve tecky je
%	tedy vlozena mezera \thinmuskip, ktera je (obvykle!) rovna 3mu.
%     -	U \ddots je nejprve vlozena mezera 1mu, pak tecka (sirka tecky
%	je stejna jako sirka tecky pouzite u \ldots), pak mezera 2mu,
%	tecka, opet mezera 2mu, tecka a nakonec mezera 1mu.
% Vidime, ze celkova sirka obou konstrukci je rovna 3 teckam + 6mu.
% V obou pripadech je tedy stejna.
%     Druhym pravidlem je, ze vyska konstrukce \ddots musi byt stejna
% jako vyska konstrukce \vdots.  Vysku konstrukce \vdots ovsem jiz zname
% (viz vyse).
%     Nejzahadnejsi je ovsem vertikalni vzdalenost tecek.  Zda se, ze
% zamerem autora TeXu bylo, aby pri pouziti za standardni situace
% $$
% \pmatrix {	a      & a      & \ldots & a      \cr
%		a      & a      & \ldots & a      \cr
%		\vdots & \vdots & \ddots & \vdots \cr
%		a      & a      & \ldots & a      }
% $$
% (srovne priklad standardni matice vyse) primka prochazejici \ddots
% protinala obe protilehla pismenka "a" ve stejnem miste (nejlepe, aby
% tato primka sla priblizne stredem techto pismen).
%     Vime, ze mezi jednotlivymi sloupci tabulky je vlozena mezera
% velikosti jeden \quad.  Vertikalni vzdalenost radku (kolem radku
% s \vdots a \ddots) je take znama.  Toto pravidlo (predchozi odstavec)
% tedy urcuje, jaky sklon tecky \ddots maji mit.  (Horizontalne tato
% primka musi prekonat vzdalenost 1em + sirka \ddots + 1em + sirka
% pismene "a".  Vertikalne tato primka musi prekonat vzdalenost
% \lineskip + vyska \ddots + \baselineskip.)   Jelikoz vime, jakou
% horizontalni vzdalenost tecky maji mit (2/3 \thinmuskip), jejich
% vertikalni vzdalenost je plne urcena.
%    Konecne, vertikalni vzdalenost mezi hornim okrajem horni tecky a
% dolnim okrajem dolni tecky v \ddots -- tato vzdalenost urcena podle
% pravidla vyse -- bude pravdepodobne mensi nez vzdalenost mezi hornim
% okrajem horni tecky a dolnim okrajem dolni tecky ve \vdots.
%     Zrejme ma platit pravidlo, ze diagonalni tecky jsou vertikalne
% posunuty tak, aby, kdyz \vdots a \ddots vytiskneme vedle sebe,
% vzdalenost mezi hornimi okraji hornich tecek z \vdots a \ddots byla
% rovna vzdalenosti mezi dolnimi okraji dolnich tecek z \ddots a \vdots.
%
% Timto je konstrukce \ddots zcela popsana...  Ufff.
%
% (Pozn.: rozmer 1em (\fontdimen6) nize je vzat z fontu cmsy (rodina 2),
% ale ve vsech matematickych fontech (cmr, cmmi, cmsy, cmex) je stejny;
% sirka pismene "a" je vzata z matematicke italiky (cmmi);
% stejne tak rozmery tecky jsou mereny jako sirka a vyska boxu \hbox
% {$.\mkern2mu$}.)
%
% Rozmery:
%	\baselineskip = 12pt
%	\lineskip     = 1pt
%	1em           = 10.00002pt
%	sirka "a"     = 5.28589pt
%	sirka \ldots  = 11.66661pt
%	vyska \vdots  = 15.05554pt
%	sirka tecky + 2mu = 3.88887pt
%	vyska tecky       = 1.05554pt
%
% horizontalni vzdalenost, kterou primka musi prekonat:
%	1em        + \ldots     + 1em        + "a"
%	10.00002pt + 11.66661pt + 10.00002pt + 5.28589pt = 36.95254pt,
%
% vertikalni vzdalenost, kterou primka musi prekonat:
%	\lineskip + \vdots     + \baselineskip
%	1pt       + 15.05554pt + 12pt = 28.05554pt,
%
% jsou-li leve kraje dvou tecek od sebe vzdaleny horizontalne 3.88887pt,
% museji byt dolni okraje dvou tecek vzdaleny vertikalne:
%	(28.05554pt / 36.95254pt) * 3.88887pt = 2.95255pt,
%
% zaokrouhlime to na 3pt.
%
% Spocteme, o kolik museji byt tri tecky diagonalni posunuty nahoru, aby
% jejich graficky obraz byl centrovan v grafickem obrazu \vdots:
%     -	vyska graf. obrazu \ddots:
%		<tecka> + 3pt + <tecka> + 3pt + <tecka>
%
%     -	vyska graf. obrazu \vdots:
%		<tecka> + 4pt + <tecka> + 4pt + <tecka>
%
% Tecky diagonalni tedy museji byt posunuty o
%	4pt - 3pt = 1pt nahoru.
%
% Spocteme jeste mezeru nad tremi teckami diagonalnimi, aby celkova
% vyska teto konstrukce byla stejna jako \vdots:
%     -	vyska \vdots:
%		4pt + 4pt + <tecka> + 6pt
%     -	vyska od dolni hrany tri tecek diag. po horni okraj horni tecky:
%		1pt + 3pt + 3pt + <tecka>
%     -	rozdil obou vysek:
%		6pt + 1pt = 7pt
%
\catcode`@=11
\def \ddots {%
	\mathinner {%
		\mkern \@ne mu%
		\raise 7\p@ \vbox {%
			\kern 7\p@
			\vdot@
		}%
		\mkern \tw@ mu%
		\raise 4\p@ \vdot@
		\mkern \tw@ mu%
		\raise  \p@ \vdot@
		\mkern \@ne mu%
	}%
}
\catcode`@=12


% Udelame si svoji vlastni vystupni rutinu (silne inspirovanou vystupni
% rutinou plainu).  Vystupni rutina bude mit za ukol na kazde strance
% vytisknout hlavicku souteze.  Jestlize je cislo stranky > 1, pak se i
% vytiskne (na ctvrty radek hlavicky, za Category ..., do zavorky).
% Stranky budou mit \raggedbottom.
%
% (Pokud se vse vejde na jednu stranku, pak cislovani stranek neni
% potreba.
%     Cislovani stranek vlastne neni moc potreba ani jindy, protoze
% cislovane jsou jednotlive priklady (a kazda stranka je oznacena
% hlavickou).  K popleteni ruznych tisku ruznych rocniku proto nemuze
% dojit.
%     Predpokladem ovsem je, ze priklad nebude rozdelen na vice stranek
% (pokud se nevejde do zbyvajiciho mista na strance, bude cely preveden
% na novou stranku -- je potreba nastavit dostatecne pruzne mezery a
% nizke penalty; priklad nesmi byt ani moc dlouhy).  Pak kazdy na
% zacatku stranky uvidi hlavicku souteze (rocnik, kategorii) a na
% strance uvidi jednotlive priklady.  Snadno pak urci spravne poradi
% listu.)
%

\nopagenumbers
\raggedbottom
\output = {\jxxproblemsoutput}

%skip \footins = \bigskipamount
%count\footins = 1000
\dimen\footins = 24\normalbaselineskip

\catcode`@=11
\def \footnoterule {%
	\kern -\thr@@\p@	% \bigskipamount / 3 ?
	\hrule width 120bp%	% .4\hsize (see below; ratio 0.4 : 0.6 used)
	\kern \kern 2.6\p@	% the \hrule is .4pt high
}
\catcode`@=12

%skip \topins = 0pt
%count\topins = 1000
%dimen\topins = \maxdimen

\catcode`@=11
\def \jxxproblemsoutput {%
	\shipout \vbox {%
		%
		% Make sure the \rm font is selected.  Make sure we use
		% the right \baselineskip.  (Do not verify \topskip,
		% \vsize nor \maxdepth.)
		% And insert the Competition heading.
		%
		\rm
		\baselineskip \normalbaselineskip
		\lineskiplimit -\maxdimen
		\null
		\centerline {The\ \jcYear\ Annual\ Vojt\v ech\ Jarn\'\i k}%
		\centerline {International\ Mathematical\ Competition}%
		\centerline {Ostrava,\ \jcDate}%
		\centerline {Category\ \jcCategory
				\ifnum \pageno >\@ne\ (p.\ \folio)\fi }%
		\null
		\kern \baselineskip
		\kern -\topskip
		\nointerlineskip
		%
		% Insert the page body.
		%
		\vbox to\vsize {%
			\boxmaxdepth \maxdepth	% = .4pt
			\ifvoid\topins
			\else
				\unvbox\topins
			\fi
			\dimen@ \dp\@cclv
			\unvbox\@cclv		% \unvbox255
			\ifvoid\footins
				\kern -\dimen@
				\vfil
			\else
				\vfil
				\vskip \skip\footins
				\footnoterule
				\unvbox\footins
			\fi
		}%
	}%
	\advancepageno
	\ifnum \outputpenalty >-\@MM
	\else
		\dosupereject		% taken from plain TeX
	\fi
}
\catcode`@=12


% Zakazeme sirotky a vdovy.  Take deleni v odstavci neni dobre.
% A v rovnicich uz vubec ne.
%
\clubpenalty = 10000
\widowpenalty = 10000
\interlinepenalty = 200
\interfootnotelinepenalty = 200
\interdisplaylinepenalty = 10000
\displaywidowpenalty = 75
\postdisplaypenalty = 200


% Zbyva nastavit odstavec a rozmery zrcadla.
% Nasim zamerem je vysledek sazby jednotlivych souboru j??problems?.tex
% nejak umistit na web.  Vysledny dvi soubor proto prekonvertujeme na
% obrazek gif, ktery umistime na web k prohlizeni na monitoru (viz popis
% konverze na zacatku tohoto souboru).
%     Aby text byl na monitoru dobre citelny, pismo musi byt dostatecne
% velike -- v konecnych dusledcich nastavime takove zvetseni (viz
% komentar na zacatku tohoto souboru), aby 1bp sazby odpovidal 2 pixelum
% na obrazovce.
%     Sirka sazby by mela byt v souladu s ostatni koncepci webovych
% stranek.  Ostatni stranky jsou tvoreny tak, ze text zabira 400 pixelu
% (levy okraj 120 pixelu).  To by znamenalo sirku sazby pouhych 200bp,
% coz je opravdu uzka sazba a prinesla by dosti problemu.
%     Volime proto kompromisni reseni: sazba na obrazovce bude zabirat
% 600 pixelu (dame levy okraj 60 pixelu; sirka stranky s obrazkem je
% tedy zvetsena na 720 pixelu -- soucast kompromisu).  To znamena, ze
% sirka sazby bude 300bp.  (Sirka "papiru": 1in + 300bp + 1in.)
%     Styl odstavce bude klasicky, s odstavcovou zarazkou.  Jeji
% velikost se odviji od sirky sazby: asi 1/18 sirky sazby.
%     Vyska sazby.  Chceme, aby kazda kategorie byla umistena v jedinem
% obrazku (neboli, uvnitr kategorie nesmi dojit ke strankovemu zlomu).
% Vyska sazby proto musi byt nastavena co nejvetsi, teoreticky na
% nekonecno, prakticky v TeXu na \maxdimen (\maxdimen by byla velikost
% papiru, vyska sazby by byla o 2in mensi).  To ovsem prinese znacne
% potize technickeho razu (preci jenom, podpurne utility (dvips ...)
% nejsou na takove obrovske rozmery stavene).
%     Volime proto nejakou mensi, ale dostatecne velikou, delku papiru.
% Inspirujeme se tradicnimi anglosaskymi jednotkami: 1 sah (fathom) je
% to prave -- to je cely "svitek" papiru.  Vyska sazby bude o 2in mensi.
%     Ukazalo se vsak, ze vyska papiru 1 stopy je rovnez dostacujici.
% Dokud nedochazi k problemum, je vyhodnejsi pouzit tuto kratsi delku,
% protoze prislusna konverze na obrazek pak probehne rychleji.
%
% Klasicke anglosaske jednotky:
%
%		1 fathom = 2 yards = 6 feet = 72 inches.
%
%  !  Zvolene rozmery papiru nesmime zapomenout prenasobit hodnotou
% zvetseni (\mag / 1000), jinak GhostScript kus praveho okraje urizne.
% Cely tyden (mozna i dele) mi trvalo, nez mi toto doslo -- ughh !!! !!! !!!
%
%	* * *
%
% Dodatek:
% Nekdo mozna preci jenom bude touzit si to vytisknout na papir.  Pri
% publikaci na web jsme vysku "papiru" volili co nejvetsi.  Ale vyska
% skutecneho papiru je omezena.
%     Zakladni parametry sazby (jeji sirka, velikost odstavcove zarazky,
% radkovani, velikost pisma apod.) by mely zustat stejne jako na webu
% (protoze uzivatel si chce vytisknout to, co vidi na webu :-).
% Vysledek sazby by mel byt na papire (horizontalne) centrovan.
%     Pomoci nastaveneho \AIIIIpaper, \Letter nebo \Legal (viz komentar
% v hlavicce tohoto souboru) se dozvime vysku (i sirku) papiru.  Nahore
% ponechame horni okraj velikosti 1in (nebudeme ho delat mensi).
% (Pritom kazda stranka pak zacina stejnou hlavickou -- viz vystupni
% rutinu vyse.  Takze horni okraj bude jakoby o neco vetsi.)  Vysku
% sazby (\vsize) pak urcime tak, aby pomer velikosti horniho okraje
% (1in) ku velikosti dolniho okraje byl roven .4:.6 = 2:3.  (Volba
% okraju v pomeru 1:2 se neosvedcila, protoze dolni okraj byl prilis
% veliky; svetlost horniho okraje zpusobena hlavickou to nezachranila.)
% Dolni okraj tedy bude 1.5in.
%     Od vysky papiru tak odecteme 2.5in.  Takto upravenou vysku papiru
% podelime 12pt (velikost radkovani; zaokrouhlime vzdy dolu).  Dostaneme
% pocet radku, ktere na stranku vejdou.  Od tohoto poctu je ovsem
% potreba odecist 4 textove radky hlavicky plus jeden vynechany radek
% pod tim (5 radku celkem).
%     Pak je jeste potreba provest korekci, protoze prvni radka je
% vysoka jenom \topskip a ne \baselineskip.
%

\parindent = 16bp
%parskip   =  0pt plus 1pt

\hsize = 300bp


\ifx \AIIIIpaper\undefined
	\ifx \Letter\undefined
		\ifx \Legal\undefined

					% WWW %%%%%%%%%%%%%%%%%%%%%%%
%vsize = 72in	% = 1fathom
%vsize = 36in	% = 1yard
\vsize = 12in	% = 1foot
\advance \vsize by -2in		% 1in margins
\hoffset = 1in
\voffset = 1in

{
\catcode`@=11
\def \divthousand #1{%
	\ifx .#1%
		.000%
		\expandafter \divtho@@@@@
	\else
		\expandafter \divthousan@
	\fi
	#1%
}
\def \divthousan@ #1#2{%
	\ifx .#2%
		.00#1%
		\expandafter \divtho@@@@@
	\else
		\expandafter \divthousa@@
	\fi
	#1#2%
}
\def \divthousa@@ #1#2#3{%
	\ifx .#3%
		.0#1#2%
		\expandafter \divtho@@@@@
	\else
		\expandafter \divthous@@@
	\fi
	#1#2#3%
}
\def \divthous@@@ #1#2#3#4{%
	\ifx .#4%
		\expandafter \divthou@@@@
	\fi
	#1\divthous@@@ #2#3#4%
}
\def \divthou@@@@ #1\divthous@@@ #2#3.{.#1#2#3}
\def \divtho@@@@@ #1.{}
\catcode`@=12

\dimen0 = \hsize
\advance \dimen0 by 2in
\dimen0 = \expandafter \divthousand \the\mag. \dimen0

\dimen2 = \vsize
\advance \dimen2 by 2in			% Magnification can be done only if
\dimen2 = \ifdim \dimen2 > 72in		% the paper is not too tall (not
	\ifnum \mag < 1000		% greater than 1fathom = 72inches,
		\expandafter \divthousand \the\mag.	% say) so that the
	\fi				% dimen does not overflow.
\else					% Magnification can also be done if
	\expandafter \divthousand \the\mag.		% it means shrinking
\fi \dimen2				% in fact (\mag < 1000).

%
% A "message" for dvips: set the paper size
%
\special {papersize=\the\dimen0,\the\dimen2}
}

		\else

\hoffset = 8.5in			% Legal %%%%%%%%%%%%%%%%%%%%%
\voffset = 14in
\vsize = 69\normalbaselineskip
\advance \hoffset by -\hsize
\hoffset = .5\hoffset
\advance \voffset by -\vsize
\voffset = .4\voffset

		\fi
	\else

\hoffset = 8.5in			% Letter %%%%%%%%%%%%%%%%%%%%
\voffset = 11in
\vsize = 51\normalbaselineskip
\advance \hoffset by -\hsize
\hoffset = .5\hoffset
\advance \voffset by -\vsize
\voffset = .4\voffset

	\fi
\else

\hoffset = 210mm			% A4 paper %%%%%%%%%%%%%%%%%%
\voffset = 297mm
\vsize = 55\normalbaselineskip
\advance \hoffset by -\hsize
\hoffset = .5\hoffset
\advance \voffset by -\vsize
\voffset = .4\voffset

\fi

\advance \hoffset by -1truein
\advance \voffset by -1truein

\advance \vsize by -5\normalbaselineskip	% header
\advance \vsize by -\normalbaselineskip		% \topskip correction
\advance \vsize by \topskip


% This should be enough...
%



____________________________________________________________

[TeX source file]

[two levels back]