
\hsize=11cm \vsize=16cm

\baselineskip=11dd
\parindent=1em
\tolerance=800
\emergencystretch=.33em
\clubpenalty=10000
\widowpenalty=10000

\font\tit=csbx10 scaled\magstep2
\font\mflogo=logo10
\font\petitt=cstt8
\font\eightit=csti8

% Macro loads the bbold fonts for mathematics in 10pt size
% 12.1.93                                   Petr Ol\v s\'ak

                               % Example for 12pt size:
\font\bbtext=bbold10           % \font\bbtext=bbold12
\font\bbscript=bbold7          % \font\bbscript=bbold9
\font\bbscriptscript=bbold5    % \font\bbscriptscript=bbold7
\font\bbex=cspex10             % \font\bbex=cspex10 scaled 1200

\newfam\bbfam
\newfam\bebfam

\textfont\bbfam=\bbtext
 \scriptfont\bbfam=\bbscript
 \scriptscriptfont\bbfam=\bbscriptscript

\textfont\bebfam=\bbex
 \scriptfont\bebfam=\bbex
 \scriptscriptfont\bebfam=\bbex

\def\sixt#1{\ifcase#1 0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or
 A\or B\or C\or D\or E\or F\fi}

\def\[{\delimiter"4\sixt\bbfam5B\sixt\bebfam02 }
\def\]{\delimiter"5\sixt\bbfam5D\sixt\bebfam03 }

\mathchardef\squarcap="1\sixt\bebfam46
\mathchardef\squarcapcup="1\sixt\bebfam48
\mathchardef\parallelism="1\sixt\bebfam4A
\mathchardef\interleaving="1\sixt\bebfam4C
\mathchardef\Dijkstra="1\sixt\bebfam4E
\mathchardef\circlevee="1\sixt\bebfam50
\mathchardef\circlewedge="1\sixt\bebfam52

\def\bbmathcodes{%
   \mathcode`\*="2\sixt\bbfam2A \mathcode`+="2\sixt\bbfam2B
   \mathcode`\(="4\sixt\bbfam28 \mathcode`\)="5\sixt\bbfam29
   \mathchardef\alpha="0\sixt\bbfam0B \mathchardef\beta="0\sixt\bbfam0C }

\def\bb{\fam\bbfam\bbmathcodes\bbtext}

%%%%%%%%%%%% end of macro

\def\title#1\par{\hrule\vskip12pt\centerline{\tit #1}
  \vskip7pt\hrule\bigskip}

\def\cite#1|#2:#3,#4\par{\line
  {\hfil\vbox{\hsize=7cm\it \noindent#1\par\smallskip
  \rm#2: \it#3, \rm#4}}\medskip}

\chyph
\hyphenation{pod-in-dexov‚}

\def\MF{{\mflogo META}\-{\mflogo FONT}}
\def\LaTeX{L\kern-.36em\raise.5ex\hbox{\sevenrm A}\kern-.12em\TeX}
\def\m{\hskip.6em}
\def\uv#1{\vbox to0pt{\kern-.33ex\hbox{''}\vss}\kern-.1ex#1\kern-.1ex``}
\def\setverb{\def\do##1{\catcode`##1=12}\dospecials\obeyspaces}
{\catcode`\'=13
\gdef\begtt#1{\par\medskip\bgroup\setverb\catcode`\"=12
  \catcode`\'=13 \def'{\leavevmode\hbox\bgroup\let'=\egroup\eightit}
  \def\p{#1} \def\q{petitt} \ifx\p\q\baselineskip=.8\baselineskip \fi
  \obeylines \startverb{#1}}
\catcode`|=0 \catcode`\\=12
|gdef|startverb#1#2\endtt{|csname#1|endcsname #2|egroup|medskip}}
{\obeyspaces\gdef {\ }}

\catcode`\"=13
\def"{\leavevmode\hbox\bgroup\let"=\egroup\setverb\tt}



\title Dvojit‚ hranat‚ z vorky v~matematice
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\cite V~matematick‚ sazbˆ rozezn v me pˆt druh– z vorek: obl‚~$(\ )$,
hranat‚~$[\ ]$, slo‘en‚ (svorky)~$\{\ \}$, dvojit‚~$\[\ \]$ a
lomen‚~$\langle\ \rangle$.
|Pavel Pop: Ru‡n¡ sazba, u‡ebnice pro stud. obor Polygrafie, 1983.

P©ed ned vnem jsem pot©eboval za©adit do matematick˜ch text– dvojit‚
hranat‚ z vorky. Kolega Miroslav Dont sehnal na s¡ti font "bbold" v~\MF ov˜ch
zdrojov˜ch textech. Font obsahuje mal  i velk  p¡smena psan  dvojit˜m
tahem, d le tak‚ ©eck  p¡smena, nˆkter‚ matematick‚ oper tory a zm¡nˆn‚
z vorky. Autorem fontu je Alan Jeffrey.

U~\uv{dod vky} jsem nena¨el makro pro zaveden¡ tˆchto font– do \TeX u.
P©itom font obsahuje tabulky umo‘¤uj¡c¡ sazbu tˆchto z vorek v~libovoln‚
velikosti a d le obsahuje plno zaj¡mav˜ch symbol– a oper tor–.
Mysl¡m si, ‘e by mohlo ‡ten ©e zaj¡mat, jak se takov˜ font za©azuje do
matematiky, aby v¨e fungovalo jak v~z kladn¡, tak v~indexov‚ a podindexov‚
pozici a aby byly vyu‘ity v¨echny mo‘nosti fontu.

Vytvo©il jsem soubor "bb10.tex", kter˜ obsahuje zaveden¡ uveden‚ho fontu do
\uv{desetibodov‚ho} dokumentu. Na obsahu tohoto souboru si ilustrujeme
problematiku za©azen¡ matematick‚ho fontu.

\begtt{petitt}
% Macro loads the bbold fonts for mathematics in 10pt size
''
                               % Example for 12pt size:
\font\bbtext=bbold10           % \font\bbtext=bbold12
\font\bbscript=bbold7          % \font\bbscript=bbold9
\font\bbscriptscript=bbold5    % \font\bbscriptscript=bbold7
\font\bbex=cspex10             % \font\bbex=cspex10 scaled 1200
''
\newfam\bbfam
\newfam\bebfam
''
\textfont\bbfam=\bbtext
    \scriptfont\bbfam=\bbscript
    \scriptscriptfont\bbfam=\bbscriptscript
\textfont\bebfam=\bbex
    \scriptfont\bebfam=\bbex
    \scriptscriptfont\bebfam=\bbex
''
\def\sixt#1{\ifcase#1 0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or
 A\or B\or C\or D\or E\or F\fi}
''
\def\[{\delimiter"4\sixt\bbfam5B\sixt\bebfam02 }
\def\]{\delimiter"5\sixt\bbfam5D\sixt\bebfam03 }
''
\mathchardef\squarcap="1\sixt\bebfam46
\mathchardef\circlevee="1\sixt\bebfam50
'... atd...'
''
\def\bbmathcodes{%
   \mathcode`\*="2\sixt\bbfam2A \mathcode`+="2\sixt\bbfam2B
   \mathcode`\(="4\sixt\bbfam28 \mathcode`\)="5\sixt\bbfam29
   '... atd...'
   \mathchardef\alpha="0\sixt\bbfam0B
   \mathchardef\beta="0\sixt\bbfam0C
   '... atd...'}
''
\def\bb{\fam\bbfam\bbmathcodes\bbtext}
\endtt

Je vidˆt, ‘e jsou vlastnˆ pou‘ity ‡ty©i fonty --- "bbold10" pro z kladn¡
velikost, "bbold7" pro indexovou velikost, "bbold5" pro podindexovou
velikost a "cspex10" obsahuj¡c¡ speci ln¡ symboly Vpravo od p©¡kaz– "\font"
za procenty je uveden p©¡klad pro zaveden¡ font– pro dvan ctibodov˜
dokument. Analogicky lze zav‚st i fonty pro z kladn¡ velikost jeden cti
bod–. Chceme-li udˆlat univerz lnˆj¨¡ makro pro v¨echny velikosti (po vzoru
\LaTeX u), lze v~m¡stˆ p©¡kaz– "\font" zahrnout vˆtven¡ podle p© n¡
u‘ivatele. V¨echny pot©ebn‚ velikosti font– jsou v~dod vce "bbold"
obsa‘eny.

Makro zav d¡ dvˆ nov‚ \uv{rodiny} ("\fam"). Rodina "\bbfam" obsahuje velk 
a mal  p¡smena latinsk‚ abecedy i ©eck‚ ({\bb A B C a b c $\alpha$ $\beta$
...}), nˆkter‚ speci ln¡ znaky ({\bb \char35\ \char36\ \char37\
\char38\ \char94\ \char95\ \char92\ + * /}) a dal¨¡. Tato rodina shrnuje
uveden‚ znaky ve t©ech velikostech (z kladn¡, indexov  a podindexov 
poloha). V~t‚to rodinˆ jsou tak‚ \uv{v˜choz¡} velikosti z vorek $\[\ \]$.

Druh  rodina "\bebfam" zahrnuje jedinou velikost fontu speci ln¡ch symbol–.
Obsahuje \uv{zvˆt¨en‚} formy z vorek $\[\ \]$ a sedm oper tor– typu
\uv{suma} ve velikosti pro textov˜ styl i \uv{display}. Jedn  se
o~tyto oper tory: $\squarcap\quad \squarcapcup\quad \parallelism\quad
\interleaving\quad \Dijkstra\quad \circlevee\quad \circlewedge$.

Definice "\def\sixt#1" definuje p©¡kaz "\sixt", kter˜ vrac¡ ¨estn ctkov˜
z pis ‡¡sla p©¡slu¨n‚ rodiny. V~dal¨¡ch definic¡ch se v˜sledek tohoto
p©¡kazu pou‘ije jako jedna cifra ¨estn ctkov‚ho z pisu k¢du jednotliv˜ch
matematick˜ch objekt–.

\smallskip
\line{\hss
$ \left\[ \>
\vcenter{\advance\hsize by -20pt
N sleduje definice p©¡kaz– "\[" a "\]". Tyto p©¡kazy budou vracet
p©¡slu¨n‚ dvojit‚ hranat‚ z vorky ve v¨ech velikostech i libovolnˆ
\uv{nataho\-vateln‚}. K¢d p©¡kazu "\delimiter" ‡tˆte nap©. takto:
‡tverka -- jedn  se o~matematick˜ objekt typu \uv{open} (otev¡rac¡ z vorka),
"\sixt\bbfam5B" -- v˜choz¡ velikost se bere z~fontu rodiny "\bbfam" z~pozice 5B
a kone‡nˆ "\sixt\bebfam02" -- zvˆt¨en  velikost se vezme z~fontu rodiny
"\bebfam" z~pozice 02 (hexadecim lnˆ). V~poslednˆ jmenovan‚m fontu je
ulo‘ena informace tvaru \uv{©etˆz postupnˆ se zvˆt¨uj¡c¡ch z vorek},
p©i‡em‘ tento ©etˆz je zakon‡en odkazem na t©i znaky fontu: horn¡ ‡ st,
doln¡ ‡ st a st©edn¡ ‡ st z vorky. V~p©¡padˆ po‘adavku na ob©¡ z vorku si
\TeX\ veme horn¡ a doln¡ ‡ st a st©ed vypln¡ dostate‡n˜m po‡tem opakov n¡
st©edn¡ ‡ sti. Takov‚ z vorky vid¡te po stran ch tohoto odstavce. Stejn˜
princip zn te z~fontu "cmex10", kde jsou ulo‘eny \uv{natahovac¡} verze
v¨ech bˆ‘nˆ pou‘¡van˜ch z vorek.
} \>
\right\] $ \hss
}
\smallskip

Nyn¡ nap©¡klad

\begtt{petitt}
$$  \left\[ {A+B\over C + \left\[ {D+E\over F} \right\]} \right\],
    \quad \[1\]_{\[2\]_{\[3\]}}  $$
\endtt

\noindent povede na
$$
  \left\[ {A+B\over C + \left\[ {D+E\over F} \right\]} \right\],
  \quad \[1\]_{\[2\]_{\[3\]}}
$$

Upozor¤uji u‘ivatele \LaTeX u, ‘e\m "{x\over y}"\m znamen  tot‚‘, co\m
"\frac{x}{y}"\m a ‘e ozna‡en¡ dvojit˜ch z vorek sekvencemi "\[" a "\]"
jim m–‘e zp–sobit komplikace, proto‘e tyto sekvence jsou v~\LaTeX u~pou‘ity
pro vstup a v˜stup do/z matematick‚ho m¢du (jak si n hrada za dolary). Pokud
tyto sekvence nikdy v~tomto smyslu neu‘¡v te, m–‘ete je s~klidn˜m svˆdom¡m
pou‘¡vat pro dvojit‚ z vorky (re-definovat p–vodn¡ p©¡kaz). Ke koliz¡m
nedoch z¡.

Pokud si budete cht¡t uvedenou definici opsat, je vhodn‚ upozornit na
d–le‘itost mezery za k¢dem p©¡kazu "\delimiter". Kdyby tam nebyla, pak se
nap©¡klad "$\[1+1\]$" expanduje na

\begtt{tt}
$\delimiter"485B9021+1\delimiter"585D903$
\endtt

\noindent co‘ je ur‡itˆ nˆco jin‚ho, ne‘
\begtt{tt}
$\delimiter"485B902 1+1\delimiter"585D903 $
\endtt

D le v~makru n sleduj¡ definice oper tor– typu \uv{suma}.
Nap©¡klad p©¡kaz

\begtt{tt}
\mathchardef\squarcap="1\sixt\bebfam46
\endtt

\noindent
‡tˆte: sekvence "\squarcap" se definuje jako matematick˜ objekt typu
\uv{suma} (jedni‡ka v~k¢du), jeho‘ men¨¡ (textov ) verze se vezme z~fontu
rodiny "\bebfam" z~m¡sta 46 (hexadecim lnˆ). Ve fontu existuje odkaz 
z~men¨¡ verze na vˆt¨¡, tak‘e se o~to nemus¡me v~\TeX u~starat a nap©¡klad

\begtt{tt}
\squarcap_{n=1}^\infty = \circlevee_0^\infty
\endtt

\noindent
povede uvnit© textu na $\squarcap_{n=1}^\infty = \circlevee_0^\infty$,
zat¡mco v~\uv{display} stylu dostaneme

$$
\squarcap_{n=1}^\infty = \circlevee_0^\infty
$$

Kone‡nˆ p©¡kaz "\def\bb" v~makru definuje p©ep¡na‡ p¡sma "\bb",
kter˜ pracuje podobnˆ jako nap©¡klad zn m˜ p©ep¡na‡ "\bf".
Pou‘it¡ p©¡kazu "\bb" v~textov‚m re‘imu zp–sob¡ p©epnut¡ fontu d¡ky
p©¡kazu "\bbtext" (p©¡kaz "\fam\bbfam" se neprojev¡), zat¡mco 
v~matematick‚m re‘imu naopak \uv{zabere} p©¡kaz "\fam\bbfam" a p©¡kaz
"\bbtext" nem  vliv. Tak‘e nap©¡klad {\bb text z~naseho noveho fontu} byl
vyps n sekvenc¡

\begtt{tt}
nap©¡klad {\bb text z~naseho noveho fontu} byl ...
\endtt

\noindent
P–vodn¡ font nem  h ‡ky a ‡ rky. Pozorn˜ ‡ten © kn¡‘e‡ky \uv{The Pamphlet
on \TeX\ Fonts} si jistˆ v¨iml, ‘e font "bbold10" je demonstrov n pouze na
anglick‚ citaci.

Zat¡m jsem nemˆl pot©ebu ani chuŸ h ‡ky do metafontov˜ch zdroj– dopsat.
Jinak na tom byl Karel Hor k, kter˜ tuto vˆc dodˆlal. Proto je mo‘n‚, ‘e
v~t‚to uk zce u‘ uvid¡te jeho h ‡ek i ‡ rku.

Mnohem u‘ite‡nˆj¨¡ asi bude pou‘¡vat font v~matematick‚m re‘imu. Proto
p©ep¡na‡ "\bb" nav¡c spou¨t¡ p©¡kaz "\bbmathcodes", v~nˆm‘ se (lok lnˆ ---
v~r mci skupiny) p©edefinuj¡ matematick‚ objekty jako nap©. "+",
"\alpha" a podobnˆ. Tak‘e t©eba

\begtt{tt}
$$  {\bb \alpha (A + B) } = \alpha (A + B) $$
\endtt

\noindent vede na
$$
  {\bb \alpha\,(A + B) } = \alpha\,(A + B)
$$

V~definici p©¡kazu "\bbmathcodes" nap©¡klad

\begtt{tt}
\mathcode`\*="2\sixt\bbfam2A
\endtt

\noindent
lze ‡¡st takto: symbol "*" v~matematick‚m m¢du bude znamenat bin rn¡
oper tor (dvojka v~k¢du) bran˜ z~fontu rodiny "\bbfam" z~pozice 2A
(hexadecim lnˆ). Podobnˆ se ‡tou p©¡kazy "\mathchardef", kter‚ definuj¡
kontroln¡ sekvence "\alpha", "\beta" atd. Tyto definice nem m vypsan‚
d–slednˆ v¨echny ani ve vlastn¡m souboru maker, proto‘e se mi jev¡
v˜hodnˆj¨¡ tam za©azovat nov‚ matematick‚ kontroln¡ sekvence a‘ v~p©¡padˆ
pot©eby. Vy‘aduje to pracovat s~tabulkou fontu "bbold10" a s~rozmyslem.

Poznamenejme je¨tˆ, ‘e p©¡kaz "\mathcodes" v~definici p©ep¡na‡e "\bb"
zp–sobuje, ‘e "\bb" nen¡ \uv{ryz¡m} p©ep¡na‡em. Pou‘it¡ t‚to sekvence
zp–sobem:

\begtt{tt}
oby‡. text \bb jiny text \rm oby‡ejn˜ text
\endtt

\noindent zp–sob¡ toti‘ trval‚ p©edefinov n¡ matematick˜ch k¢d–. Je proto
nutn‚ buƒ ps t

\begtt{tt}
oby‡. text {\bb jiny text} oby‡ejn˜ text
\endtt

\noindent nebo zru¨it p©¡kaz "\bbmathcodes" z~definice sekvence "\bb".

Na z vˆr se p©izn m, ‘e jsem ztratil hodnˆ £sil¡ p©i vyp tr n¡ jedn‚
\uv{z ludnosti}. V¨imnˆte si, ‘e v~definici "\bbmathcodes" nen¡ u~p©¡kazu
"\mathcode`+=..." pou‘it backslash p©ed znakem plus, jak se slu¨¡ a pat©¡
(viz definice v¨ech ostatn¡ch k¢d–). Toti‘ kontroln¡ sekvence~"\+" je
definov na v~\hbox{Plainu} pro £‡ely tabbingu jako "\outer\def". To
zp–sobuje, ‘e nelze sekvenci~"\+" pou‘¡t uvnit© tˆla definice v~{\it
‘ dn‚m\/} smyslu. Tj. ani pro definici matematick‚ho k¢du znaku~"+"~.

Uveden‚ makro "bb10.tex" nen¡ zdaleka univerz ln¡. Na to p©¡jdou velice
rychle v¨ichni u‘ivatel‚ \LaTeX u. Pokud nap©¡klad p¡¨ete pozn mky pod
‡arou v~petitu a v~tˆchto pozn mk ch se vyskytne nˆjak˜ symbol z~fontu
"bbold", je t©eba pou‘¡t font "bbold8", p©i‡em‘ ten nen¡ makrem "bb10.tex"
zaveden. Podobnˆ, pokud se speci ln¡ symbol vyskytne ve zvˆt¨en‚m nadpise,
je nutno zav‚st p©¡slu¨nˆ zvˆt¨en‚ fonty. Technika zav dˆn¡ font–
automaticky podle po‘adovan‚ velikosti je vy©e¨ena v~\LaTeX u~(soubor
"lfonts.tex") a je¨tˆ l‚pe je ©e¨ena v~NFFS. Kdo chce, m–‘e se v~tˆchto
makrech inspirovat. S m si mysl¡m, ‘e pou‘it¡ speci ln¡ho fontu v~nadpise
‡i zmen¨en‚ pozn mce je pomˆrnˆ m lo ‡ast‚. Proto je mo‘n‚ takov˜ v˜skyt
©e¨it individu lnˆ. Pokud ale navrhujeme form t knihy (kde nap©. v¨echna
cvi‡en¡ budou s zen  men¨¡m p¡smem), je nutno celou vˆc do makra zahrnout a
v¨e po© dnˆ domyslet. Makrojazyk \TeX u~n m neklade ‘ dn  omezen¡.

€l nek jsem dal ‡¡st kolegovi Dontovi, kter˜ ned vno p©inesl zaj¡mavou
zpr vu pro doplnˆn¡. Na s¡ti nalezl bal¡k, zvan˜ {\tt St Mary's Road},
v~nˆm‘ je zahrnut font se zm¡nˆn˜mi z vorkami (autorem je Alan
Jeffrey spole‡nˆ s~Jeremy Gibbonsem). Nav¡c tam najdete \LaTeX ovsk‚
styly pro zaveden¡ fontu do dokumentu a font obsahuje podstatnˆ vˆt¨¡
mno‘stv¡ nov˜ch matematick˜ch znak–. Sta‡¡ tedy pouze uv‚st p©¡slu¨n˜
n zev stylu a o p©¡kazy typu "\mathcode" apod. se nemus¡te starat.
Chtˆl jsem ale ve sv‚m ‡l nku uk zat, ‘e zaveden¡ fontu na £rovni
\TeX-primitiv– nemus¡ b˜t zase tak komplikovan‚, t©eba‘e se jedn 
o~matematick˜ font. V˜hodou je, ‘e p©esnˆ v¡te, co m te zavedeno a jak.

\medskip
\line{17.1.1993 \hfil \it Petr Ol¨ k}

\bye

