% CgMacros.tex of September 2, 1983 7:23 pm --- Stolfi % DESIRABLE CHANGES % Fix \lpike and \rpike in \small % Delete \un (leave only \uni, parallel to \inte) % Define \um#1{{\cmr\" #1}} and use \um{\rm o} instead of \uo, etc. % Delete \ety (leave only \empty) % FONT DEFINITIONS \font m_timesroman at 12truebp \font b_timesromani at 12truebp \font <_timesromanb at 12truebp \font M_math at 10 truebp \font S_arrows at 10 truebp \font v_cmtt \font p_timesroman at 8truebp \font o_timesromani at 8truebp \font t_timesromanb at 8truebp \font Z_timesromanbi at 8truebp \font e_cmr8 \font k_cmi8 \font y_cmsy8 \font h_cmtt8 \font N_math at 8 truebp \font R_Arrows at 8truebp % should be ArrowsTwo at 18truebp \font D_cmr6 \font J_cmi6 \font X_cmsy6 \font U_fleur at 28truebp \def\headerfont{\curfont <} % font used for headers and page no.s \def\titlefont{\curfont =} % font used for paper title % Relativized fonts (get the right size depending on context). % Default (12 point) \def\fx{\:v} % typewriter font \def\mrm{\:c} % math roman font \def\cmr{\:a} % computer modern roman \def\mal{\:M} % Alto math font \def\bi{\:w} % Bold italic font \def\em{\bf } % for emphasis \def\arfont{\:S} % arrows font % see also \rm, \bf, \it in TBasic.tex % Smaller (9 point) % Usage: {\small ...}, {\small\hbox par{...}}, etc % (\hbox par{\small ...} will get wrong \baselineskip & c.) \def\small{\baselineskip \smallbaselineskip pt \parskip \smallparskip pt \dispskip9pt plus3pt minus7pt \dispaskip0pt plus3pt \dispbskip 5pt plus3pt minus2pt \def\bxparskip{\smallbxparskip} \def\rm{\:p} \def\it{\:o} \def\bf{\:t} \def\bi{\:Z} \def\cmr{\:e} \def\mrm{\:e} \def\mal{\:N} \def\fx{\:h} \def\arfont{\:R} \mathrm eDf \mathit kJl \mathsy yXz \rm } % Math symbols. \def\leq{\mathrel{\char'424}} \def\geq{\mathrel{\char'425}} \def\neq{\not=} \def\dist{\mathop{\char d\char i\char s\char t}} \def\deg{^\circ} \def\gets{\mathrel{\char'440}} % assign. arrow \def\to{\mathrel{\char'441}} % limit arrow \def\lbrace{\{} \def\rbrace{\}} \def\la{\langle} \def\ra{\rangle} \def\implies{\mathrel{\char'451}} % right implication arrow \def\impliedby{\mathrel{\char'450}} % left implication arrow \def\doubleimpl{\mathrel{\char'454}} % two-way implication arrow \def\rmiff{\,\mathrel{\hbox{iff}}\,} % "iff" in roman font \def\rmif{\,\mathrel{\hbox{if}}\,} % "if" in roman font \def\rmand{\,\mathrel{\hbox{and}}\,} % "and" in roman font \def\rmor{\,\mathrel{\hbox{or}}\,} % "or" in roman font \def\inte{\mathbin{\char'534}} % infix intersection operator \def\uni{\mathbin{\char'533}} % infix union operator \def\and{\mathbin{\char'536}} % logical and operator \def\or{\mathbin{\char'537}} % logical or operator \def\equiv{\mathrel{\char'421}} % logical equivalence \def\land{\mathbin{\char'536}} % boolean and operator \def\lor{\mathbin{\char'537}} % boolean or operator \def\lnot{\mathop{\char'430}} % boolean not operator \def\xor{\oplus } \def\hull{\mathop{\char h\char u\char l\char l}} \def\bound#1{\partial {#1}} % boundary \def\clos#1{\bar{#1}} % closure \def\star{^\ast} % asterisk in superscript position. \def\iso{\mathrel{\char'430}} % single squiggle \def\simil{\mathrel{\char'431}} % double squiggle \def\empty{\emptyset} \def\forall{\mathop{\hbox{\mal A}}} \def\exists{\mathop{\hbox{\mal E}}} \def\reals{\hbox{\bi R\/}} % set of real numbers \def\integers{\hbox{\bi Z\/}} % set of all integers \def\sphere{\hbox{\bi S\/}} % needs dimensionality subscript \def\bar#1{{\overline{#1}}} \def\pr{^\prime} \def\prr{^{\prime\prime}} \def\rpike{\hbox{\arfont n}} % black triangle pointing right \def\lpike{\hbox{\arfont x}} % black triangle pointing left \def\hat#1{{\A #1}} % fix this! \def\det#1{\left\char'550614 #1 \right\char'550614} % determinant \def\set#1{{\{#1\}}} % set defined by enumeration \def\rset#1{{\leftset #1 \rightset}} % set defined by \relv \def\seq#1{\langle #1 \rangle} \def\sp{\,\,\,} % to denote unordered spans (segs, arcs, etc) \def\dollar{\char'44} \def\flower{{\curfont U B}} % upright lotus flower \def\bu{$\bullet$\ } % for items in text \def\item{\indent\bu} \def\note#1{{\small \bf << #1 >>}} % for annotations to manuscript % Obsolete macros (kept for backwards ompatibility only) \def\uo{{\cmr\"\rm o}} % umlaut o in roman \def\uu{{\cmr\"\rm u}} % umlaut u \def\ua{{\cmr\"\rm a}} % umlaut a \def\arc{\mathop{\char a\char r\char c}} \def\seg{\overline} % same as \bar \def\ety{\emptyset} % same as \empty \def\un{\mathbin{\char'533}} % infix union operator; same as \uni \def\span{\,\,\,} % same as \sp % macro for flagging TEX errors \def\bug{\hbox{\hskip1pt\vrule width10pt height10pt \hskip1pt}} % placeholders and notes for our use \def\xx#1{{\small \bf << #1 >>}} % Conditional expressions. \chcode'174_4 % alignment tab \def\alter#1{\left\lbrace\vcenter{ \halign{\lft{##}\quad\quad|\lft{##}\cr #1} }\right.} \def\va{\noalign{\vskip 3pt plus1pt}} % extra space after \cr \def\vb{\noalign{\vskip 6pt plus2pt}} \def\vc{\noalign{\vskip 9pt plus3pt}} \def\vd{\noalign{\vskip 12pt plus4pt}} % rectangular matrices % Usage: for a matrix of 5 columns, use % \matrix5{x{11}|x{12}|x{13}|x{14}|x{15}\cr % x{21}| ... | x{25}\cr % ... % x{m1}| ... |x{m5}\cr} % % Warning: uses counter #4 \def\matrixctrfmt{\ctr{$ ## $}} \def\matrixcr{\cr } \def\matrixhalign{\halign} \def\matrixreploop{\xdef\matrixaccum{\matrixaccum\matrixctrfmt} \advcount4 by-1 \ifpos4{\xdef\matrixaccum{\matrixaccum\hskip7pt |} \matrixreploop} \else{\xdef\matrixaccum{\matrixaccum\matrixcr}}} \def\matrix#1#2{\setcount4 #1 \xdef\matrixaccum{} \matrixreploop \xdef\matrixaccum{\matrixhalign{\matrixaccum #2}} \;\vcenter{\matrixaccum}\;} % Indented paragraph. \def\indent{\par\vskip 2pt\hangindent \textindent pt after 0 } % Page break control. \def\opteject{\vfil\penalty0\vfilneg} % optional break w/ short page \def\keep#1{\vbox to #1cm{} \vskip-#1cm} % keeps next #1 cm on same page % Paragraph break in \hbox par \def\bxparskipper{\vbox to \bxparskip pt{}} % for par spacing in boxed text \def\bxpar{\hfil\null\penalty-2000 \bxparskipper} % begin new left-justified paragraph \def\ctrpar{\hfil\null\penalty-2000 \bxparskipper\hfil } % begin new centered paragraph % Fake display math in \hbox par{...} % Usage: \bxpar\bxdisp{\pi>e}\bxpar % or \bxpar\bxdisp{\pi>e}\bxeqno{(73)}\bxpar \def\bxdisp#1{\hfil\vbox{\vskip 3pt \hbox{$\dispstyle #1 $}\vskip 3pt}} \def\bxeqno#1{\hfil \hbox{#1}\hfilneg} % Puts frame around box #1. \def\boxit#1{\vbox{\hrule\hbox{\vrule\hskip3pt\vbox{ \vskip3pt #1 \vskip3pt}\hskip3pt\vrule}\hrule}} % Program mode. % usage: {\progline1line2 ...linen\endprog} % (NOTE BRACES! ! ! !) \def\prog{\chcode'40_13\chcode'15_13\hsize\progwidth pt\def\ {\par}\parskip0pt\vskip3ptplus3pt\penalty-500\fx} \def\endprog{\vskip3ptplus3pt\hsize\textwidth pt\penalty-600} \def\prg#1{\hbox{\fx #1}} % usage: $\prg{line}$ \def\pgets{$\gets$} % left arrow in progs % Footnotes. % Use \foot7{Blah Blah} for footnote number 7. % Using \footfig7(3){Blah Blah} leaves space at the right margin of % the footnote for a figure 3cm high. % Use \ftpar to break paragraphs in a footnote. \def\footbox#1#2#3{{\small\hbox par #3 pt{$\null^{#1}$ #2}}} \def\footfigbox#1{\vbox to #1cm{\hbox to 0pt{\null}}} \def\footline{\vskip6pt plus10pt\hrule width 4cm\vskip4pt} \def\footfirstp#1{\if 1#1{\footline}\else{} \if \dag#1{\footline}\else{}} \def\foot#1#2{$\null^{#1}$\botinsert{\footfirstp{#1} \vskip 5pt plus2pt\footbox{#1}{#2}{\textwidth}}} \def\footfig#1(#2)#3{$\null^{#1}$\botinsert{\footfirstp{#1} \vskip 5pt plus2pt\hbox{ $\vcenter{\footbox{#1}{#3}{\ftfigwidth}} \vcenter{\footfigbox{#2}}$\hfil}}} \def\ftpar{\bxpar} % \par (of sorts) in footnotes % Small print paragraph. \def\digress#1{\vskip 1pt plus3pt \hangindent 15pt after0 {\small #1\par}\vskip1pt plus3pt} \def\dp{\hangindent 15pt after0} % new paragraph in digression % Problem and caveat prefixes. \def\prob{\problem{\count1} \advcount1} \def\problem#1{$\rpike$\ {\bf #1}.\ } \def\caveat{\vskip 4 pt plus 2 pt \it} % Theorem, lemma, conjecture and definition. \def\lemma{\theolemma{\it}{Lemma}} \def\theorem{\theolemma{\it}{Theorem}} \def\conjecture{\theolemma{\it}{Conjecture}} \def\definition{\theolemma{\rm}{Definition}} \def\theolemma#1#2#3#4{\par\vskip 5pt plus 3pt minus 3pt\hangindent \theostatindent pt {\bf #2 #3. }{#1 #4}\par\vskip 3pt plus 3pt} \def\tp{\hangindent\theostatindent pt after0 } % new par in thm.'s/def. statement \def\proof#1{ \hangindent\proofindent pt after0\begproofmark #1\penalty1000 \endproofmark\par\vskip 3pt plus 6pt} \def\pp{\hangindent \proofindent pt after0} % new par in proof % Algorithm format. % uses counters 3 (to compute useful width), 4 (to count bars), and % 5 (current nesting level). \def\algorithm#1#2#3{{\penalty-300\vskip10pt plus3pt minus3pt \hangindent \theostatindent pt {\bf Algorithm #1. }{\it #2}\par \vskip 3pt plus 2pt minus0pt\penalty 1000 \algbody{#3} \par\vskip 10pt plus 3pt minus 3pt}} \def\algbody#1{{ \parindent 0pt \hangindent 0pt after0 \baselineskip 0pt \lineskip0pt \setcount5 0 #1 \parindent\stdparindent pt}} \def\vbars{\setcount3 \algwidth\setcount4 \count5 \hskip \algindent pt\advcount3 by -\algindent \advcount3 by -\algindent % to indent right margin too \vbarsloop \hskip-\stepindent pt\advcount3 by \stepindent } \def\vbarsloop{\ifpos4 {\vrule width0.4pt \hskip-0.4pt \hskip\stepindent pt\advcount3 by -\stepindent \advcount4 by -1 \vbarsloop} \else {}} \def\afig#1{ \ftpar\vbox to #1cm{\null}\ftpar } % figure in algorithm steps \def\step#1{\par\hbox to \pagewidth pt {\vbars \hskip \snoindent pt\advcount3 by -\snoindent \hskip \contindent pt\advcount3 by -\contindent \vbox{ \vskip 2pt plus0pt minus0pt {\baselineskip12pt \lineskip1pt \hbox par \count3pt{\hskip-\contindent pt #1}} \vskip 2pt plus0pt minus0pt} \hfil}} \def\comm#1{\par\hbox to \pagewidth pt {\vbars \hskip \snoindent pt\advcount3 by -\snoindent \hskip \contindent pt\advcount3 by -\contindent \vbox{ \vskip 2pt plus0pt minus0pt {\small \hbox par \count3pt{#1}} \vskip 3pt plus0pt minus0pt} \hfil}} \def\begblock#1\endblock{\advcount5 by 1\ear #1\ear \advcount5 by-1} \def\ear{\par\hbox to \pagewidth pt {\vbars \vrule height 0.4pt width 3pt \hfil}} \def\sno#1 {{\baselineskip0pt \lineskip0pt \vbox{\hbox to \contindent pt{} \hbox{\bf #1.\hskip2pt}}}} % step number. \def\nono{\hskip \contindent pt } % for unnumbered steps. \def\sna#1{{\it #1}} % step name and comments. \def\blug{\hskip 3pt\blackslug} % Space for figure. % Use \fig5 for a figure 5cm high % Use \figno(7)5 for a figure with number (7) and 5 cm high \def\gnaw{} % to eat spaces after \fig etc \def\fig#1{\dispaskip0pt plus100pt $$\hbox to 2in{\vbox to #1cm{\null}}$$\dispaskip0pt plus3pt\gnaw} \def\figno(#1)#2{\dispaskip0pt plus100pt $$\vcenter{\hbox to 2in{\vbox to #2cm{\null}}}\eqno(\hbox{#1})$$\dispaskip0pt plus3pt\gnaw} \def\figcap#1#2{\ctrline{ \hbox par 5in{Figure #1. #2}}} % figure captions % Reference format. % Usage: \ref [\Boo] {\refauth{Boojum, C. D.} % \reftit{Salting jubjubs in glue.} % \refpub{J. of Beavers and Butchers V. 1 N. 357 (1999)} % \refrem{Charming; reminds me of smiles and soap.}} % fix the numbers after selecting the reference codes \def\ref [#1] #2{\vskip \refvskip pt\hbox to \textwidth pt{\hskip\refindent pt\hbox par \refbodywidth pt{\hbox to 0.0in {$\hskip -\refindent pt \hbox{[#1]} \hskip 0pt plus 1000pt minus 1000pt$}#2}}\par} ,J f >_//