perm filename KERMAC.TEX[1,3]1 blob sn#542077 filedate 1980-11-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	% FONTS, CODES & SPECIAL CHARS.		READ MAXTEX for documentation.
C00010 00003	% ADJUSTMENTS FOR ESPANOL/ENGLISH
C00012 00004	% GLUE, BOXES, SPACING, INDENTATION, PARAGRAPHS
C00018 00005	% UNDERLINING, BOXIT, BRACING
C00025 00006	% HACKS
C00027 00007	% PAGE NUMBERING, TITLEPAGES, PAGE FORMAT
C00043 00008	% INITIALIZATIONS
C00052 ENDMK
C⊗;
% FONTS, CODES & SPECIAL CHARS.		READ MAXTEX for documentation.
\chcode '45←5   % %  ignores rest of line
\chcode '173←1	% {  beginning of group
\chcode '176←2  % }  end of group
\chcode '44←3   % $  begins math
\chcode '26←4   % ⊗  alignment tab
\chcode '43←6   % #  parameter character
\chcode '136←7  % ↑  superscript escape
\chcode '1←8    % ↓  subscript escape


	% Enormous font:
\font L←cmr40

	% For BIG headlines; see \Tit
\font A←cmr18

	% For headlines; see \tit
\font B←cmr12

	% Dunhill font; see \dunhill
\font C←cmdunh


	% 10pt; see \rm,\it,\sy,\sl,\bf,\tt,
	%	    \ti,\teniu,\tenfib,\caps,\tensc
\font a←cmr10 \font b←cmi10 \font c←cmsy10 \font d←cms10 \font e←cmb10 \font f←cmtt
\font D←cmti10 \font E←cmu10 \font F←cmfib  \font G←cmcsc \font H←cmsc10

	% 9pt; see \rm,\it,\sy,\sl,\bf,\tt,
	%	   \ti
\font g←cmr9  \font h←cmi9  \font i←cmsy9  \font j←cms9  \font k←cmb9  \font l←cmtt9
\font I←cmti9

	% 8pt; see \rm,\it,\sy,\sl,\bf,\tt,
	%	   \ti,\caps
\font m←cmr8  \font n←cmi8  \font o←cmsy8  \font p←cms8  \font q←cmb8
\font J←cmti8 \font K←cmssc8

	% To complete 10,9,8 family fonts:
\font r←cmr7  \font s←cmi7  \font t←cmsy7
\font u←cmr6  \font v←cmi6  \font w←cmsy6
\font x←cmr5  \font y←cmi5  \font z←cmsy5


	% Math. extended font
\font @←cmathx


	% For weird characters; see \ms
\font <←ms25

	% For graphics; see \grfx
\font >←grfx35


	% Stanford Logo; see \stanlogo
\font ;←sta200




	% Font family definitions:
\def\tenpoint{\def\rm{\:a}
	\def\it{\:b}
	\def\sy{\:c}
	\def\sl{\:d}
	\def\bf{\:e}
	\def\tt{\:f}
	\def\ti{\:D}
	\def\caps{\:G}
	\mathrm arx % 10,7,5
	\mathit bsy
	\mathsy ctz
	\usertenpoint}

\def\ninepoint{\def\rm{\:g}
	\def\it{\:h}
	\def\sy{\:i}
	\def\sl{\:j}
	\def\bf{\:k}
	\def\tt{\:l}
	\def\ti{\:I}
	\mathrm gux % 9,6,5
	\mathit hvy
	\mathsy iwz
	\userninepoint}

\def\eightpoint{\def\rm{\:m}
	\def\it{\:n}
	\def\sy{\:o}
	\def\sl{\:p}
	\def\bf{\:q}
	\def\ti{\:J}
	\def\caps{\:K}
	\mathrm mux % 8,6,5
	\mathit nvy
	\mathsy owz
	\usereightpoint}


	% Math extended font:
\mathex @

	% Good for text:
\def\tenfib{\:F}
\def\tensc{\:H}
\def\teniu{\:E}

	% Special fonts:
\def\dunhill{\:C}
\def\stanlogo{{\:;S}}  %(font contains only one char.)


	% Definitions of odd characters:
\def\biglp{\mathopen{\vcenter{\hbox{\:@\char'0}}}}
\def\bigrp{\mathclose{\vcenter{\hbox{\:@\char'1}}}}
\def\#{{\sy\char'161}}
\def\${{\sy\char'177}}
\def\%{{\char'45}}
\def\\{{\sy\char4}}


	% XGP conversion factor.  Multiply inches, etc. by it to get actual
	%   XGP inches.  Adjusted; decently exact.
\def\rfactor{.7861941}
% ADJUSTMENTS FOR ESPANOL/ENGLISH

	% The following two cancel each other:
\def\english{
	\def\Chapter{Chapter}
	\def\Theorem{Theorem}
	\def\Lemma{Lemma}
	\def\Corollary{Corollary}
	\def\Proposition{Proposition}
	\def\Proof{Proof}
	\def\Remark{Remark}
	\def\Contents{Contents}
	\def\Plates{Plates}
	\def\Notes{Notes}
	\def\Page{Page}
	\def\Figure{Figure}
	\def\Table{Table}
	\hyph 50
	\chcode '32←12	% ~
	\chcode '42←12	% "
	\def\"{\accent'23}
	\def\~{\accent'24}}
\def\espanol{\input espmac.tex }
% GLUE, BOXES, SPACING, INDENTATION, PARAGRAPHS

	% Boxes
\def\hjust{\hbox} 
\def\vjust{\vbox} 
\def\null{\hbox{}}
	% Superpose (see manual)
\def\spose#1{\hbox to 0pt{#1\hskip 0pt minus 10000000pt}}

	% Globs of glue (for justification)
\def\lft#1{#1\hfill}
\def\ctr#1{\hfill #1\hfill}
\def\rt#1{\hfill #1}
\def\top#1{#1\vfill}
\def\mid#1{\vfill #1\vfill}
\def\btm#1{\vfill #1}

	% Justification; note these set up an hbox:
\def\ljustline#1{\hbox to size{#1\hss}}
\def\ctrline#1{\hbox to size{\hss #1\hss}}
\def\rjustline#1{\hbox to size{\hss #1}}

	% Alignment
\def\lftcol#1{\vbox{\halign{\lft{##}\cr #1\cr}}}
\def\ctrcol#1{\ctrline{\vbox{\halign{\ctr{##}\cr #1\cr}}}}
\def\rtcol#1{\rjustline{\vbox{\halign{\rt{##}\cr #1\cr}}}}

	% Alignment (note #1 is set in math mode)
\def\lpile#1{\vcenter{\halign{\lft{$## $}\cr #1}}}
\def\cpile#1{\vcenter{\halign{\ctr{$## $}\cr #1}}}
\def\rpile#1{\vcenter{\halign{\rt{$## $}\cr #1}}}
\def\halskip#1{\noalign{\vskip #1}}

	% Spacing (see manual p.47)
\def\qquad{\quad\quad}
\def\xskip{\hskip 7pt plus 3pt minus 4pt}
\def\xxskip{\hskip 14pt plus 6pt minus 8pt}
\def\yskip{\par\penalty-50\vskip 3pt plus 3pt minus 2pt}
\def\yyskip{\par\penalty-100\vskip 6pt plus 6pt minus 4pt}


	% Display paragraph; two levels:
\def\displaypar#1{{\def\noindent{}
		   \null\vskip \dispparskip
		   \ctrline{\hbox par \displayparsize{#1}}}
		  \vskip \dispparskip}
\def\displayypar#1{{\let\displayparsize=\displayyparsize
		    \displaypar{#1}}}
	% Use this to remove glue after a display:
\def\parunskip{\vskip -\dispparskip}
	% Sizes and skips in \displaypar:
\def\displayparsize{5.25vu}
\def\displayyparsize{4.25vu}
\def\dispparskip{.075vu}	  	% compare \parskip

	% Indent 1/4 inch:
\def\indentqin{\indentparbysize{.25vu}}
	% Indent 1/2 inch:
\def\indenthin{\indentparbysize{.5vu}}
	% Indent one inch:
\def\indentin{\indentparbysize{1vu}}
	% Take a guess:
\def\indentparbysize#1{\hangindent#1 after 0\hmode\hskip\indentcrownskip}
\def\indentcrownskip{0pt}

	% Enumerate with hanging indentation: \enumerate1 <first par>\par
	%  \enumrind <second par keeping previous indentation>\par
	%  \enumrnext <subsequent par, advance number automatically>\par
\def\enumerate#1{\gdef\enumrfmt{\enumrnfmt}\setcount7 #1\enumrnext}
	% Similar, to previous one, but use letters instead of numbers; e.g.,
	%   \enumelett{H} numbers: H, I, J, K, ... (it is not "une omelette")
\def\enumelett#1{\gdef\enumrfmt{\enumrlfmt}\setcount7 #1\enumrnext}
	% Next two work for either letter or numbers:
\def\enumrnext{\xdef\junkie{\enumrfmt}
		\save8\hbox{\junkie}
		\advnce7
		\noindent\hangindent 1wd8
		\hmode\junkie\hskip 0pt}
\def\enumrind{\noindent\hangindent 1wd8 after0{}}
	% Format used for hanging numbers or letters:
\def\enumrnfmt{{\bf\count7.\quad}}
\def\enumrlfmt{{\bf\char\count7.\quad}}

	% Itemize with hanging mark: \itemize <first par>\par \itemzind <to keep
	%   indentation>\par \itemize <second marked par>\par
\def\itemize{\xdef\junkie{\itemzfmt}
	     \save8\hbox{\junkie}
	     \noindent\hangindent 1wd8
	     \hmode\junkie\hskip 0pt}
\def\itemzind{\noindent\hangindent 1wd8 after0{}}
	% Format used for hanging marks (currently a black triangle):
\def\itemzfmt{{\:@\char'170}\ }

	% To put a big capital letter begining a paragraph; #1 = indent for (2 or 3)
	%   lines, #2 = letter, #3 = paragraph
\def\capitalpar#1#2#3{\save8\hbox{\:L #2}
	\save9\hbox par size{\ragged 1000000
			\if2#1{{[pura \linebreak basura}}
			 \else{{mas \linebreak basuritas \linebreak aca}} }
	\vbox{\hbox{\:L #2}
		\vskip -1ht9
		\hbox par size{\hangindent 1.3wd8 for #1{}#3}}
	\vskip \dispparskip}
% UNDERLINING, BOXIT, BRACING

	% Underline in horizontal mode:
\def\undertext#1{$\underline{\hbox{#1}}$}

	% Overline in horizontal mode:
\def\overtext#1{$\overline{\hbox{#1}}$}

	% Set rules around box (manual ex. 21.4):
\def\boxit#1{\vbox{\hrule\hbox{\vrule\hskip3pt
	\vbox{\vskip3pt #1\vskip3pt}\hskip3pt\vrule}\hrule}}

	% See manual p.103 for these:
\def\dnbrace{$\char'772$\bracex$\char'775
	\char'774$\bracex$\char'773$}
\def\upbrace{$\char'774$\bracex$\char'773
	\char'772$\bracex$\char'775$}
\def\bracex{\leaders\hrule height 1.5pt \hfill}

	% To type things like 3rd: 3\th{rd}
\def\th#1{$↑{\hbox{\eightpoint #1}}$}
% HACKS

	% The End:
\def\bye{\endpage\end}

	% Enter horizontal mode:
\def\hmode{\ \unskip}

	% Kill spaces (dummy c. s.):
\def\¬{}

	% Set internal parameters (see manual):
\def\trace{\chpar0←}
\def\jpar{\chpar1←}
\def\hyph{\chpar2←}
\def\ragged{\chpar8←}

	% Trace aids:
\def\trmacro{\trace'355}
\def\trglue{\trace'77700147}
\def\trnorm{\trace'345}

	% See errata.txt:
\def\ifzero#1#2\else#3{\ifpos#1{#3}\else{\neg#1
    \ifpos#1{\neg#1 #3}\else{\neg#1 #2}}}
\def\neg#1{\setcount#1-\count#1}
	% Check for null token: \ifnull<token>\then{true clause}\else{false clause}
\def\ifnull#1\then#2\else#3{\def\jnk{#1@}\if@\jnk{#2}\else{#3}}
	% Advance +1 if \count#1 nonnegative; else by -1
\def\advnce#1{\ifpos#1{\advcount#1}\else{\advcount#1 by -1}}

	% To handle pseudo-counters (so as to leave some \count'ers to the luser):
\def\setq#1#2{\xdef#1{#2}}
\def\addq#1#2{\setcount9 #2\advcount9 by #1\setq{#2}{\count9}}
\def\inivar#1#2{\setq{#1}{#2}\addq{-1}{#1}}

	% See errata.txt & basic.tex:
\let \curfont=\:
%def\usefont#1{\curfont #1\def\fontcode{#1}}	% from ARK
%let\:=\usefont
% PAGE NUMBERING, TITLEPAGES, PAGE FORMAT

	% One real XGP inch (see errata.txt)
\varunit \rfactor in

	% Page handling
\def\endpage{\par\vfill\eject}	 % take a guess

	% Numbering; starts at page #1
\def\romannumbering#1{\setcount0 -#1}
\def\arabicnumbering#1{\setcount0 #1}

	% Intended use of generated pages:
\def\oneside{\gdef\ddvnum{F}}
\def\bothsides{\gdef\ddvnum{T}}

	% No-heading style; numbers at bottom
\def\noheading{\endpage
	\vsize 8.375vu		%\epagesize-\btmnrspace
	\gdef\thepage{\page\cbotnum}
	\let \titpage=\thepage
	\let \titlemark=\titlemarknh}

	% No-heading style; no numbers, full dimensions
\def\fullpages{\endpage
	\vsize \epagesize
	\gdef\thepage{\page}
	\let \titpage=\thepage
	\let \titlemark=\titlemarknh}





% THE following are for internal handling of pages; use at own risk:
	% Page design; all this well documented in DOCMAC
\hsize 6.25vu
\def\hshft{.125vu}	% horizontal shift: see \shftthepage

\def\epagesize{8.75vu}	% vsize of vbox containing \thepage (or \titpage)
\def\btmnrspace{.375vu}	% strip left for bottom numbers

\maxdepth 0pt
\topbaseline 0pt

	% Mark routine:
\def\titlemarknh#1#2{}	% For compatiblity with PAPMAC

	% Font for bottom numbers
\def\botfnt{\teniu}
\def\cbotnum{\vskip 0pt\vbox to \btmnrspace{\btm{\ctrline{\botfnt\dcount0}}}}
\def\dcount0{\ifpos0{-- \count0\ --}\else{\count0}}

	% Do #1 if \bothsides and even page; do #2 otherwise:
\def\ddvnmsel#1#2{\if T\ddvnum{\ifeven0{#1}\else{#2}}\else{#2}}

	% Box the page and shift it:
\def\thevbox#1{\vbox to \epagesize{#1}}
\def\shftthepage#1{
	\ddvnmsel{\moveleft\hshft\thevbox{#1}}{\moveright\hshft\thevbox{#1}} }

	% Output routine:
\output{\baselineskip 0pt\lineskip0pt
	\if T\tpage{\shftthepage{\titpage}\normalpage}
	      \else{\shftthepage{\thepage}}
	\advnce0}
% INITIALIZATIONS

	% Internal parameters:
\trnorm

	% page parameters (recall vu = xgp inches); see also page styles
\topskip 5pt plus 1pt minus 1pt
\botskip 5pt plus 1pt minus 1pt
\parindent 40pt
\parskip .075vu plus 1pt
\lineskip 1pt

	% Font initializations (see \eight,nine,tenpoint):
\def\usertenpoint{\baselineskip 12pt
		\dispskip 12pt plus 3pt minus 9pt
		\dispaskip 6pt plus 3pt
		\dispbskip 7pt plus 3pt minus 4pt
		\rm}
\def\userninepoint{\baselineskip 11pt
		\dispskip 11pt plus 3pt minus 8pt
		\dispaskip 6pt plus 3pt
		\dispbskip 6pt plus 3pt minus 3pt
		\rm}
\def\usereightpoint{\baselineskip 10pt
		\dispskip 9pt plus 3pt minus 7pt
		\dispaskip 4pt plus 2pt 
		\dispbskip 5pt plus 2pt minus 1pt
		\rm}

	% Miscellaneous:
\english		% see also \espanol
\noheading		% see also \fullpages and PAPMAC: three other styles
\oneside		% see also \bothsides
\arabicnumbering{1} 	% see also \romannumbering{#}
\tenpoint		% start with these fonts (cf \usertenpoint)



% FOR internal use:
\setcount8 0		% no chapter declared
\def\consnum#1{#1}
\def\tpage{F}		% see \titlepage in PAPMAC