% 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...
%
|