Diff for /gforth/Attic/texinfo.tex between versions 1.3 and 1.4

version 1.3, 1995/09/06 21:00:32 version 1.4, 1997/04/05 16:49:20
Line 1 Line 1
 %% TeX macros to handle texinfo files  %% TeX macros to handle texinfo files
   
 %   Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.  %  Copyright (C) 1985, 86, 88, 90, 91, 92, 93,
   %                94, 95, 1996 Free Software Foundation, Inc.
   
 %This texinfo.tex file is free software; you can redistribute it and/or  %This texinfo.tex file is free software; you can redistribute it and/or
 %modify it under the terms of the GNU General Public License as  %modify it under the terms of the GNU General Public License as
Line 14 Line 15
   
 %You should have received a copy of the GNU General Public License  %You should have received a copy of the GNU General Public License
 %along with this texinfo.tex file; see the file COPYING.  If not, write  %along with this texinfo.tex file; see the file COPYING.  If not, write
 %to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,  %to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 %USA.  %Boston, MA 02111-1307, USA.
   
   
 %In other words, you are welcome to use, share and improve this program.  %In other words, you are welcome to use, share and improve this program.
 %You are forbidden to forbid anyone else to use, share and improve  %You are forbidden to forbid anyone else to use, share and improve
 %what you give them.   Help stamp out software-hoarding!  %what you give them.   Help stamp out software-hoarding!
   
   
   % Send bug reports to bug-texinfo@prep.ai.mit.edu.
   % Please include a *precise* test case in each bug report.
   
   
   % Make it possible to create a .fmt file just by loading this file:
   % if the underlying format is not loaded, start by loading it now.
   % Added by gildea November 1993.
   \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
   
 % This automatically updates the version number based on RCS.  % This automatically updates the version number based on RCS.
 \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}  \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
 \deftexinfoversion$Revision$  \deftexinfoversion$Revision$
 \message{Loading texinfo package [Version \texinfoversion]:}  \message{Loading texinfo package [Version \texinfoversion]:}
   
 % Print the version number if in a .fmt file.  % If in a .fmt file, print the version number
 \everyjob{\message{[Texinfo version \texinfoversion]}\message{}}  % and turn on active characters that we couldn't do earlier because
   % they might have appeared in the input file name.
   \everyjob{\message{[Texinfo version \texinfoversion]}\message{}
     \catcode`+=\active \catcode`\_=\active}
   
 % Save some parts of plain tex whose names we will redefine.  % Save some parts of plain tex whose names we will redefine.
   
 \let\ptextilde=\~  
 \let\ptexlbrace=\{  
 \let\ptexrbrace=\}  
 \let\ptexdots=\dots  
 \let\ptexdot=\.  
 \let\ptexstar=\*  
 \let\ptexend=\end  
 \let\ptexbullet=\bullet  
 \let\ptexb=\b  \let\ptexb=\b
   \let\ptexbullet=\bullet
 \let\ptexc=\c  \let\ptexc=\c
   \let\ptexcomma=\,
   \let\ptexdot=\.
   \let\ptexdots=\dots
   \let\ptexend=\end
   \let\ptexequiv = \equiv
 \let\ptexi=\i  \let\ptexi=\i
   \let\ptexlbrace=\{
   \let\ptexrbrace=\}
   \let\ptexstar=\*
 \let\ptext=\t  \let\ptext=\t
 \let\ptexl=\l  \let\ptextilde=\~
 \let\ptexL=\L  
   
 % Be sure we're in horizontal mode when doing a tie, since we make space  % Be sure we're in horizontal mode when doing a tie, since we make space
 % equivalent to this in @example-like environments. Otherwise, a space  % equivalent to this in @example-like environments. Otherwise, a space
Line 53 Line 67
 % since \penalty is valid in vertical mode, we'd end up putting the  % since \penalty is valid in vertical mode, we'd end up putting the
 % penalty on the vertical list instead of in the new paragraph.  % penalty on the vertical list instead of in the new paragraph.
 {\catcode`@ = 11  {\catcode`@ = 11
  \gdef\tie{\leavevmode\penalty\@M\ }   % Avoid using \@M directly, because that causes trouble
    % if the definition is written into an index file.
    \global\let\tiepenalty = \@M
    \gdef\tie{\leavevmode\penalty\tiepenalty\ }
 }  }
 \let\~ = \tie                  % And make it available as @~.  \let\~ = \tie                  % And make it available as @~.
   
   
 \message{Basics,}  \message{Basics,}
 \chardef\other=12  \chardef\other=12
   
Line 86 Line 104
 \hyphenation{eshell}  \hyphenation{eshell}
   
 % Margin to add to right of even pages, to left of odd pages.  % Margin to add to right of even pages, to left of odd pages.
 \newdimen \bindingoffset  \bindingoffset=0pt  \newdimen \bindingoffset  
 \newdimen \normaloffset   \normaloffset=\hoffset  \newdimen \normaloffset   
 \newdimen\pagewidth \newdimen\pageheight  \newdimen\pagewidth \newdimen\pageheight
 \pagewidth=\hsize \pageheight=\vsize  
   
 % Sometimes it is convenient to have everything in the transcript file  % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,  % and nothing on the terminal.  We don't just call \tracingall here,
Line 110 Line 127
 \newdimen\cornerlong \newdimen\cornerthick  \newdimen\cornerlong \newdimen\cornerthick
 \newdimen \topandbottommargin  \newdimen \topandbottommargin
 \newdimen \outerhsize \newdimen \outervsize  \newdimen \outerhsize \newdimen \outervsize
 \cornerlong=1pc\cornerthick=.3pt        % These set size of cropmarks  \cornerlong=1pc\cornerthick=.3pt        % These set size of cropmarks
 \outerhsize=7in  \outerhsize=7in
 %\outervsize=9.5in  %\outervsize=9.5in
 % Alternative @smallbook page size is 9.25in  % Alternative @smallbook page size is 9.25in
Line 120 Line 137
 %---------------------End change-----------------------  %---------------------End change-----------------------
   
 % \onepageout takes a vbox as an argument.  Note that \pagecontents  % \onepageout takes a vbox as an argument.  Note that \pagecontents
 % does insertions itself, but you have to call it yourself.  % does insertions, but you have to call it yourself.
 \chardef\PAGE=255  \output={\onepageout{\pagecontents\PAGE}}  \chardef\PAGE=255  \output={\onepageout{\pagecontents\PAGE}}
 \def\onepageout#1{\hoffset=\normaloffset  \def\onepageout#1{%
 \ifodd\pageno  \advance\hoffset by \bindingoffset    \hoffset=\normaloffset
 \else \advance\hoffset by -\bindingoffset\fi    \ifodd\pageno  \advance\hoffset by \bindingoffset
 {\escapechar=`\\\relax % makes sure backslash is used in output files.    \else \advance\hoffset by -\bindingoffset\fi
 \shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%    {%
 {\let\hsize=\pagewidth \makefootline}}}%      \escapechar = `\\ % use backslash in output files.
 \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}      \indexdummies
       \shipout\vbox{%
         {\let\hsize=\pagewidth \makeheadline}%
         \pagebody{#1}%
         {\let\hsize=\pagewidth \makefootline}%
       }%
     }%
     \advancepageno
     \ifnum\outputpenalty>-20000 \else\dosupereject\fi
   }
   
 %%%% For @cropmarks command %%%%  %%%% For @cropmarks command %%%%
   
Line 140 Line 166
 %  %
 \def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up  \def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
 {\escapechar=`\\\relax % makes sure backslash is used in output files.  {\escapechar=`\\\relax % makes sure backslash is used in output files.
                  \shipout                   \shipout
                  \vbox to \outervsize{\hsize=\outerhsize                   \vbox to \outervsize{\hsize=\outerhsize
                  \vbox{\line{\ewtop\hfill\ewtop}}                   \vbox{\line{\ewtop\hfill\ewtop}}
                  \nointerlineskip                   \nointerlineskip
                  \line{\vbox{\moveleft\cornerthick\nstop}                   \line{\vbox{\moveleft\cornerthick\nstop}
Line 149 Line 175
                        \vbox{\moveright\cornerthick\nstop}}                         \vbox{\moveright\cornerthick\nstop}}
                  \vskip \topandbottommargin                   \vskip \topandbottommargin
                  \centerline{\ifodd\pageno\hskip\bindingoffset\fi                   \centerline{\ifodd\pageno\hskip\bindingoffset\fi
                         \vbox{                          \vbox{
                         {\let\hsize=\pagewidth \makeheadline}                          {\let\hsize=\pagewidth \makeheadline}
                         \pagebody{#1}                          \pagebody{#1}
                         {\let\hsize=\pagewidth \makefootline}}                          {\let\hsize=\pagewidth \makefootline}}
                         \ifodd\pageno\else\hskip\bindingoffset\fi}                          \ifodd\pageno\else\hskip\bindingoffset\fi}
                  \vskip \topandbottommargin plus1fill minus1fill                   \vskip \topandbottommargin plus1fill minus1fill
                  \boxmaxdepth\cornerthick                   \boxmaxdepth\cornerthick
                  \line{\vbox{\moveleft\cornerthick\nsbot}                   \line{\vbox{\moveleft\cornerthick\nsbot}
                        \hfill                         \hfill
                        \vbox{\moveright\cornerthick\nsbot}}                         \vbox{\moveright\cornerthick\nsbot}}
                  \nointerlineskip                   \nointerlineskip
                  \vbox{\line{\ewbot\hfill\ewbot}}                   \vbox{\line{\ewbot\hfill\ewbot}}
         }}          }}
   \advancepageno    \advancepageno
   \ifnum\outputpenalty>-20000 \else\dosupereject\fi}    \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
 %  %
Line 349 Line 375
 %\def\'{{'}}  %\def\'{{'}}
   
 % Used to generate quoted braces.  % Used to generate quoted braces.
   
 \def\mylbrace {{\tt \char '173}}  \def\mylbrace {{\tt \char '173}}
 \def\myrbrace {{\tt \char '175}}  \def\myrbrace {{\tt \char '175}}
 \let\{=\mylbrace  \let\{=\mylbrace
 \let\}=\myrbrace  \let\}=\myrbrace
   \begingroup
     % Definitions to produce actual \{ & \} command in an index.
     \catcode`\{ = 12 \catcode`\} = 12
     \catcode`\[ = 1 \catcode`\] = 2
     \catcode`\@ = 0 \catcode`\\ = 12
     @gdef@lbracecmd[\{]%
     @gdef@rbracecmd[\}]%
   @endgroup
   
   % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
   % Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H.
   \let\, = \c
   \let\dotaccent = \.
   \def\ringaccent#1{{\accent23 #1}}
   \let\tieaccent = \t
   \let\ubaraccent = \b
   \let\udotaccent = \d
   
   % Other special characters: @questiondown @exclamdown
   % Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss.
   \def\questiondown{?`}
   \def\exclamdown{!`}
   
   % Dotless i and dotless j, used for accents.
   \def\imacro{i}
   \def\jmacro{j}
   \def\dotless#1{%
     \def\temp{#1}%
     \ifx\temp\imacro \ptexi
     \else\ifx\temp\jmacro \j
     \else \errmessage{@dotless can be used only with i or j}%
     \fi\fi
   }
   
 % @: forces normal size whitespace following.  % @: forces normal size whitespace following.
 \def\:{\spacefactor=1000 }  \def\:{\spacefactor=1000 }
Line 520  where each line of input produces a line Line 578  where each line of input produces a line
 \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount  \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
 \leftline{\hskip\leftskip{\rm#1}}}}  \leftline{\hskip\leftskip{\rm#1}}}}
   
   % @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.
   
   \def\inmargin#1{%
   \strut\vadjust{\nobreak\kern-\strutdepth
     \vtop to \strutdepth{\baselineskip\strutdepth\vss
     \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
   \newskip\inmarginspacing \inmarginspacing=1cm
   \def\strutdepth{\dp\strutbox}
   
 %\hbox{{\rm#1}}\hfil\break}}  %\hbox{{\rm#1}}\hfil\break}}
   
 % @include file    insert text of that file as input.  % @include file    insert text of that file as input.
   % Allow normal characters that  we make active in the argument (a file name).
 \def\include{\parsearg\includezzz}  \def\include{\begingroup
 %Use \input\thisfile to avoid blank after \input, which may be an active    \catcode`\\=12
 %char (in which case the blank would become the \input argument).    \catcode`~=12
 %The grouping keeps the value of \thisfile correct even when @include    \catcode`^=12
 %is nested.    \catcode`_=12
 \def\includezzz #1{\begingroup    \catcode`|=12
 \def\thisfile{#1}\input\thisfile    \catcode`<=12
     \catcode`>=12
     \catcode`+=12
     \parsearg\includezzz}
   % Restore active chars for included file.
   \def\includezzz#1{\endgroup\begingroup
     % Read the included file in a group so nested @include's work.
     \def\thisfile{#1}%
     \input\thisfile
 \endgroup}  \endgroup}
   
 \def\thisfile{}  \def\thisfile{}
Line 545  where each line of input produces a line Line 620  where each line of input produces a line
 % @sp n   outputs n lines of vertical space  % @sp n   outputs n lines of vertical space
   
 \def\sp{\parsearg\spxxx}  \def\sp{\parsearg\spxxx}
 \def\spxxx #1{\par \vskip #1\baselineskip}  \def\spxxx #1{\vskip #1\baselineskip}
   
 % @comment ...line which is ignored...  % @comment ...line which is ignored...
 % @c is the same as @comment  % @c is the same as @comment
Line 558  where each line of input produces a line Line 633  where each line of input produces a line
   
 \let\c=\comment  \let\c=\comment
   
   % @paragraphindent  is defined for the Info formatting commands only.
   \let\paragraphindent=\comment
   
 % Prevent errors for section commands.  % Prevent errors for section commands.
 % Used in @ignore and in failing conditionals.  % Used in @ignore and in failing conditionals.
 \def\ignoresections{%  \def\ignoresections{%
Line 592  where each line of input produces a line Line 670  where each line of input produces a line
 % incorrectly.  % incorrectly.
 %  %
 \def\ignoremorecommands{%  \def\ignoremorecommands{%
     \let\defcodeindex = \relax
   \let\defcv = \relax    \let\defcv = \relax
   \let\deffn = \relax    \let\deffn = \relax
   \let\deffnx = \relax    \let\deffnx = \relax
Line 615  where each line of input produces a line Line 694  where each line of input produces a line
   \let\printindex = \relax    \let\printindex = \relax
   \let\pxref = \relax    \let\pxref = \relax
   \let\settitle = \relax    \let\settitle = \relax
     \let\setchapternewpage = \relax
     \let\setchapterstyle = \relax
     \let\everyheading = \relax
     \let\evenheading = \relax
     \let\oddheading = \relax
     \let\everyfooting = \relax
     \let\evenfooting = \relax
     \let\oddfooting = \relax
     \let\headings = \relax
   \let\include = \relax    \let\include = \relax
   \let\lowersections = \relax    \let\lowersections = \relax
   \let\down = \relax    \let\down = \relax
Line 623  where each line of input produces a line Line 711  where each line of input produces a line
   \let\set = \relax    \let\set = \relax
   \let\clear = \relax    \let\clear = \relax
   \let\item = \relax    \let\item = \relax
   \let\message = \relax  
 }  }
   
 % Ignore @ignore ... @end ignore.  % Ignore @ignore ... @end ignore.
Line 638  where each line of input produces a line Line 725  where each line of input produces a line
 \def\menu{\doignore{menu}}  \def\menu{\doignore{menu}}
 \def\direntry{\doignore{direntry}}  \def\direntry{\doignore{direntry}}
   
   % Also ignore @macro ... @end macro.  The user must run texi2dvi,
   % which runs makeinfo to do macro expansion.  Ignore @unmacro, too.
   \def\macro{\doignore{macro}}
   \let\unmacro = \comment
   
   
   % @dircategory CATEGORY  -- specify a category of the dir file
   % which this file should belong to.  Ignore this in TeX.
   \let\dircategory = \comment
   
 % Ignore text until a line `@end #1'.  % Ignore text until a line `@end #1'.
 %  %
 \def\doignore#1{\begingroup  \def\doignore#1{\begingroup
Line 669  where each line of input produces a line Line 766  where each line of input produces a line
     \immediate\write16{If you are running another version of TeX, relax.}      \immediate\write16{If you are running another version of TeX, relax.}
     \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}      \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
     \immediate\write16{  Then upgrade your TeX installation if you can.}      \immediate\write16{  Then upgrade your TeX installation if you can.}
       \immediate\write16{  (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)}
     \immediate\write16{If you are stuck with version 3.0, run the}      \immediate\write16{If you are stuck with version 3.0, run the}
     \immediate\write16{  script ``tex3patch'' from the Texinfo distribution}      \immediate\write16{  script ``tex3patch'' from the Texinfo distribution}
     \immediate\write16{  to use a workaround.}      \immediate\write16{  to use a workaround.}
     \immediate\write16{}      \immediate\write16{}
     \warnedobstrue      \global\warnedobstrue
     \fi      \fi
 }  }
   
Line 749  where each line of input produces a line Line 847  where each line of input produces a line
 % Since we want to separate VAR from REST-OF-LINE (which might be  % Since we want to separate VAR from REST-OF-LINE (which might be
 % empty), we can't just use \parsearg; we have to insert a space of our  % empty), we can't just use \parsearg; we have to insert a space of our
 % own to delimit the rest of the line, and then take it out again if we  % own to delimit the rest of the line, and then take it out again if we
 % didn't need it.  % didn't need it.  Make sure the catcode of space is correct to avoid
   % losing inside @example, for instance.
 %  %
 \def\set{\parsearg\setxxx}  \def\set{\begingroup\catcode` =10 \parsearg\setxxx}
 \def\setxxx#1{\setyyy#1 \endsetyyy}  \def\setxxx#1{\setyyy#1 \endsetyyy}
 \def\setyyy#1 #2\endsetyyy{%  \def\setyyy#1 #2\endsetyyy{%
   \def\temp{#2}%    \def\temp{#2}%
   \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty    \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
   \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.    \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
   \fi    \fi
     \endgroup
 }  }
 \def\setzzz#1#2 \endsetzzz{\expandafter\xdef\csname SET#1\endcsname{#2}}  % Can't use \xdef to pre-expand #2 and save some time, since \temp or
   % \next or other control sequences that we've defined might get us into
   % an infinite loop. Consider `@set foo @cite{bar}'.
   \def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
   
 % @clear VAR clears (i.e., unsets) the variable VAR.  % @clear VAR clears (i.e., unsets) the variable VAR.
 %  %
Line 769  where each line of input produces a line Line 872  where each line of input produces a line
 % @value{foo} gets the text saved in variable foo.  % @value{foo} gets the text saved in variable foo.
 %  %
 \def\value#1{\expandafter  \def\value#1{\expandafter
                 \ifx\csname SET#1\endcsname\relax                  \ifx\csname SET#1\endcsname\relax
                         {\{No value for ``#1''\}}                          {\{No value for ``#1''\}}
                 \else \csname SET#1\endcsname \fi}                  \else \csname SET#1\endcsname \fi}
   
 % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined  % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
 % with @set.  % with @set.
Line 871  where each line of input produces a line Line 974  where each line of input produces a line
 \expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi  \expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
 \global\let\lastnode=\relax}  \global\let\lastnode=\relax}
   
   % @refill is a no-op.
 \let\refill=\relax  \let\refill=\relax
   
 % @setfilename is done at the beginning of every texinfo file.  % @setfilename is done at the beginning of every texinfo file.
Line 885  where each line of input produces a line Line 989  where each line of input produces a line
    \comment % Ignore the actual filename.     \comment % Ignore the actual filename.
 }  }
   
   % @bye.
 \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}  \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
   
 \def\inforef #1{\inforefzzz #1,,,,**}  % \def\macro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\macroxxx}
 \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},  % \def\macroxxx#1#2 \end macro{%
   node \samp{\ignorespaces#1{}}}  % \expandafter\gdef\macrotemp#1{#2}%
   % \endgroup}
   
   %\def\linemacro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\linemacroxxx}
   %\def\linemacroxxx#1#2 \end linemacro{%
   %\let\parsearg=\relax
   %\edef\macrotempx{\csname M\butfirst\expandafter\string\macrotemp\endcsname}%
   %\expandafter\xdef\macrotemp{\parsearg\macrotempx}%
   %\expandafter\gdef\macrotempx#1{#2}%
   %\endgroup}
   
   %\def\butfirst#1{}
   
   
 \message{fonts,}  \message{fonts,}
   
Line 901  where each line of input produces a line Line 1018  where each line of input produces a line
 \def\sf{\fam=\sffam \tensf}  \def\sf{\fam=\sffam \tensf}
 \let\li = \sf % Sometimes we call it \li, not \sf.  \let\li = \sf % Sometimes we call it \li, not \sf.
   
   % We don't need math for this one.
   \def\ttsl{\tenttsl}
   
 %% Try out Computer Modern fonts at \magstephalf  %% Try out Computer Modern fonts at \magstephalf
 \let\mainmagstep=\magstephalf  \let\mainmagstep=\magstephalf
   
 % Set the font macro #1 to the font named #2, adding on the  % Set the font macro #1 to the font named #2, adding on the
 % specified font prefix (normally `cm').  % specified font prefix (normally `cm').
 \def\setfont#1#2{\font#1=\fontprefix#2}  % #3 is the font's design size, #4 is a scale factor
   \def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
   
 % Use cm as the default font prefix.  % Use cm as the default font prefix.
 % To specify the font prefix, you must define \fontprefix  % To specify the font prefix, you must define \fontprefix
Line 914  where each line of input produces a line Line 1035  where each line of input produces a line
 \ifx\fontprefix\undefined  \ifx\fontprefix\undefined
 \def\fontprefix{cm}  \def\fontprefix{cm}
 \fi  \fi
   % Support font families that don't use the same naming scheme as CM.
   \def\rmshape{r}
   \def\rmbshape{bx}               %where the normal face is bold
   \def\bfshape{b}
   \def\bxshape{bx}
   \def\ttshape{tt}
   \def\ttbshape{tt}
   \def\ttslshape{sltt}
   \def\itshape{ti}
   \def\itbshape{bxti}
   \def\slshape{sl}
   \def\slbshape{bxsl}
   \def\sfshape{ss}
   \def\sfbshape{ss}
   \def\scshape{csc}
   \def\scbshape{csc}
   
 \ifx\bigger\relax  \ifx\bigger\relax
 \let\mainmagstep=\magstep1  \let\mainmagstep=\magstep1
 \setfont\textrm{r12}  \setfont\textrm\rmshape{12}{1000}
 \setfont\texttt{tt12}  \setfont\texttt\ttshape{12}{1000}
 \else  \else
 \setfont\textrm{r10 scaled \mainmagstep}  \setfont\textrm\rmshape{10}{\mainmagstep}
 \setfont\texttt{tt10 scaled \mainmagstep}  \setfont\texttt\ttshape{10}{\mainmagstep}
 \fi  \fi
 % Instead of cmb10, you many want to use cmbx10.  % Instead of cmb10, you many want to use cmbx10.
 % cmbx10 is a prettier font on its own, but cmb10  % cmbx10 is a prettier font on its own, but cmb10
 % looks better when embedded in a line with cmr10.  % looks better when embedded in a line with cmr10.
 \setfont\textbf{b10 scaled \mainmagstep}  \setfont\textbf\bfshape{10}{\mainmagstep}
 \setfont\textit{ti10 scaled \mainmagstep}  \setfont\textit\itshape{10}{\mainmagstep}
 \setfont\textsl{sl10 scaled \mainmagstep}  \setfont\textsl\slshape{10}{\mainmagstep}
 \setfont\textsf{ss10 scaled \mainmagstep}  \setfont\textsf\sfshape{10}{\mainmagstep}
 \setfont\textsc{csc10 scaled \mainmagstep}  \setfont\textsc\scshape{10}{\mainmagstep}
   \setfont\textttsl\ttslshape{10}{\mainmagstep}
 \font\texti=cmmi10 scaled \mainmagstep  \font\texti=cmmi10 scaled \mainmagstep
 \font\textsy=cmsy10 scaled \mainmagstep  \font\textsy=cmsy10 scaled \mainmagstep
   
 % A few fonts for @defun, etc.  % A few fonts for @defun, etc.
 \setfont\defbf{bx10 scaled \magstep1} %was 1314  \setfont\defbf\bxshape{10}{\magstep1} %was 1314
 \setfont\deftt{tt10 scaled \magstep1}  \setfont\deftt\ttshape{10}{\magstep1}
 \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}  \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
   
 % Fonts for indices and small examples.  % Fonts for indices and small examples (9pt).
 % We actually use the slanted font rather than the italic,  % We actually use the slanted font rather than the italic,
 % because texinfo normally uses the slanted fonts for that.  % because texinfo normally uses the slanted fonts for that.
 % Do not make many font distinctions in general in the index, since they  % Do not make many font distinctions in general in the index, since they
 % aren't very useful.  % aren't very useful.
 \setfont\ninett{tt9}  \setfont\ninett\ttshape{9}{1000}
 \setfont\indrm{r9}  \setfont\indrm\rmshape{9}{1000}
 \setfont\indit{sl9}  \setfont\indit\slshape{9}{1000}
 \let\indsl=\indit  \let\indsl=\indit
 \let\indtt=\ninett  \let\indtt=\ninett
   \let\indttsl=\ninett
 \let\indsf=\indrm  \let\indsf=\indrm
 \let\indbf=\indrm  \let\indbf=\indrm
 \let\indsc=\indrm  \setfont\indsc\scshape{10}{900}
 \font\indi=cmmi9  \font\indi=cmmi9
 \font\indsy=cmsy9  \font\indsy=cmsy9
   
 % Fonts for headings  % Chapter (and unnumbered) fonts (17.28pt).
 \setfont\chaprm{bx12 scaled \magstep2}  \setfont\chaprm\rmbshape{12}{\magstep2}
 \setfont\chapit{ti12 scaled \magstep2}  \setfont\chapit\itbshape{10}{\magstep3}
 \setfont\chapsl{sl12 scaled \magstep2}  \setfont\chapsl\slbshape{10}{\magstep3}
 \setfont\chaptt{tt12 scaled \magstep2}  \setfont\chaptt\ttbshape{12}{\magstep2}
 \setfont\chapsf{ss12 scaled \magstep2}  \setfont\chapttsl\ttslshape{10}{\magstep3}
   \setfont\chapsf\sfbshape{12}{\magstep2}
 \let\chapbf=\chaprm  \let\chapbf=\chaprm
 \setfont\chapsc{csc10 scaled\magstep3}  \setfont\chapsc\scbshape{10}{\magstep3}
 \font\chapi=cmmi12 scaled \magstep2  \font\chapi=cmmi12 scaled \magstep2
 \font\chapsy=cmsy10 scaled \magstep3  \font\chapsy=cmsy10 scaled \magstep3
   
 \setfont\secrm{bx12 scaled \magstep1}  % Section fonts (14.4pt).
 \setfont\secit{ti12 scaled \magstep1}  \setfont\secrm\rmbshape{12}{\magstep1}
 \setfont\secsl{sl12 scaled \magstep1}  \setfont\secit\itbshape{10}{\magstep2}
 \setfont\sectt{tt12 scaled \magstep1}  \setfont\secsl\slbshape{10}{\magstep2}
 \setfont\secsf{ss12 scaled \magstep1}  \setfont\sectt\ttbshape{12}{\magstep1}
 \setfont\secbf{bx12 scaled \magstep1}  \setfont\secttsl\ttslshape{10}{\magstep2}
 \setfont\secsc{csc10 scaled\magstep2}  \setfont\secsf\sfbshape{12}{\magstep1}
   \let\secbf\secrm
   \setfont\secsc\scbshape{10}{\magstep2}
 \font\seci=cmmi12 scaled \magstep1  \font\seci=cmmi12 scaled \magstep1
 \font\secsy=cmsy10 scaled \magstep2  \font\secsy=cmsy10 scaled \magstep2
   
 % \setfont\ssecrm{bx10 scaled \magstep1}    % This size an font looked bad.  % \setfont\ssecrm\bxshape{10}{\magstep1}    % This size an font looked bad.
 % \setfont\ssecit{cmti10 scaled \magstep1}    % The letters were too crowded.  % \setfont\ssecit\itshape{10}{\magstep1}    % The letters were too crowded.
 % \setfont\ssecsl{sl10 scaled \magstep1}  % \setfont\ssecsl\slshape{10}{\magstep1}
 % \setfont\ssectt{tt10 scaled \magstep1}  % \setfont\ssectt\ttshape{10}{\magstep1}
 % \setfont\ssecsf{ss10 scaled \magstep1}  % \setfont\ssecsf\sfshape{10}{\magstep1}
   
 %\setfont\ssecrm{b10 scaled 1315}       % Note the use of cmb rather than cmbx.  %\setfont\ssecrm\bfshape{10}{1315}      % Note the use of cmb rather than cmbx.
 %\setfont\ssecit{ti10 scaled 1315}      % Also, the size is a little larger than  %\setfont\ssecit\itshape{10}{1315}      % Also, the size is a little larger than
 %\setfont\ssecsl{sl10 scaled 1315}      % being scaled magstep1.  %\setfont\ssecsl\slshape{10}{1315}      % being scaled magstep1.
 %\setfont\ssectt{tt10 scaled 1315}  %\setfont\ssectt\ttshape{10}{1315}
 %\setfont\ssecsf{ss10 scaled 1315}  %\setfont\ssecsf\sfshape{10}{1315}
   
 %\let\ssecbf=\ssecrm  %\let\ssecbf=\ssecrm
   
 \setfont\ssecrm{bx12 scaled \magstephalf}  % Subsection fonts (13.15pt).
 \setfont\ssecit{ti12 scaled \magstephalf}  \setfont\ssecrm\rmbshape{12}{\magstephalf}
 \setfont\ssecsl{sl12 scaled \magstephalf}  \setfont\ssecit\itbshape{10}{1315}
 \setfont\ssectt{tt12 scaled \magstephalf}  \setfont\ssecsl\slbshape{10}{1315}
 \setfont\ssecsf{ss12 scaled \magstephalf}  \setfont\ssectt\ttbshape{12}{\magstephalf}
 \setfont\ssecbf{bx12 scaled \magstephalf}  \setfont\ssecttsl\ttslshape{10}{\magstep1}
 \setfont\ssecsc{csc10 scaled \magstep1}  \setfont\ssecsf\sfbshape{12}{\magstephalf}
   \let\ssecbf\ssecrm
   \setfont\ssecsc\scbshape{10}{\magstep1}
 \font\sseci=cmmi12 scaled \magstephalf  \font\sseci=cmmi12 scaled \magstephalf
 \font\ssecsy=cmsy10 scaled \magstep1  \font\ssecsy=cmsy10 scaled \magstep1
 % The smallcaps and symbol fonts should actually be scaled \magstep1.5,  % The smallcaps and symbol fonts should actually be scaled \magstep1.5,
 % but that is not a standard magnification.  % but that is not a standard magnification.
   
 % Fonts for title page:  % Fonts for title page:
 \setfont\titlerm{bx12 scaled \magstep3}  \setfont\titlerm\rmbshape{12}{\magstep3}
 \let\authorrm = \secrm  \let\authorrm = \secrm
   
 % In order for the font changes to affect most math symbols and letters,  % In order for the font changes to affect most math symbols and letters,
Line 1022  where each line of input produces a line Line 1166  where each line of input produces a line
 % The font-changing commands redefine the meanings of \tenSTYLE, instead  % The font-changing commands redefine the meanings of \tenSTYLE, instead
 % of just \STYLE.  We do this so that font changes will continue to work  % of just \STYLE.  We do this so that font changes will continue to work
 % in math mode, where it is the current \fam that is relevant in most  % in math mode, where it is the current \fam that is relevant in most
 % cases, not the current.  Plain TeX does, for example,  % cases, not the current font.  Plain TeX does \def\bf{\fam=\bffam
 % \def\bf{\fam=\bffam \tenbf}  By redefining \tenbf, we obviate the need  % \tenbf}, for example.  By redefining \tenbf, we obviate the need to
 % to redefine \bf itself.  % redefine \bf itself.
 \def\textfonts{%  \def\textfonts{%
   \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl    \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
   \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc    \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
   \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy    \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
   \resetmathfonts}    \resetmathfonts}
 \def\chapfonts{%  \def\chapfonts{%
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl    \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
   \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc    \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
   \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy    \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
   \resetmathfonts}    \resetmathfonts \setleading{19pt}}
 \def\secfonts{%  \def\secfonts{%
   \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl    \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
   \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc    \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
   \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy    \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl
   \resetmathfonts}    \resetmathfonts \setleading{16pt}}
 \def\subsecfonts{%  \def\subsecfonts{%
   \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl    \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
   \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc    \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
   \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy    \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
   \resetmathfonts}    \resetmathfonts \setleading{15pt}}
   \let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
 \def\indexfonts{%  \def\indexfonts{%
   \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl    \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
   \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc    \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
   \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy    \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl
   \resetmathfonts}    \resetmathfonts \setleading{12pt}}
   
 % Set up the default fonts, so we can use them for creating boxes.  % Set up the default fonts, so we can use them for creating boxes.
 %  %
Line 1059  where each line of input produces a line Line 1204  where each line of input produces a line
 \newcount\fontdepth \fontdepth=0  \newcount\fontdepth \fontdepth=0
   
 % Fonts for short table of contents.  % Fonts for short table of contents.
 \setfont\shortcontrm{r12}  \setfont\shortcontrm\rmshape{12}{1000}
 \setfont\shortcontbf{bx12}  \setfont\shortcontbf\bxshape{12}{1000}
 \setfont\shortcontsl{sl12}  \setfont\shortcontsl\slshape{12}{1000}
   
 %% Add scribe-like font environments, plus @l for inline lisp (usually sans  %% Add scribe-like font environments, plus @l for inline lisp (usually sans
 %% serif) and @ii for TeX italic  %% serif) and @ii for TeX italic
Line 1088  where each line of input produces a line Line 1233  where each line of input produces a line
 \def\restorehyphenation{\hyphenchar\font = `- }  \def\restorehyphenation{\hyphenchar\font = `- }
   
 \def\t#1{%  \def\t#1{%
   {\tt \nohyphenation \rawbackslash \frenchspacing #1}%    {\tt \rawbackslash \frenchspacing #1}%
   \null    \null
 }  }
 \let\ttfont = \t  \let\ttfont=\t
 %\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null}  
 \def\samp #1{`\tclose{#1}'\null}  \def\samp #1{`\tclose{#1}'\null}
 \def\key #1{{\tt \nohyphenation \uppercase{#1}}\null}  \setfont\smallrm\rmshape{8}{1000}
   \font\smallsy=cmsy9
   \def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{%
     \raise0.4pt\hbox{$\langle$}\kern-.08em\vtop{%
       \vbox{\hrule\kern-0.4pt
        \hbox{\raise0.4pt\hbox{\vphantom{$\langle$}}#1}}%
       \kern-0.4pt\hrule}%
     \kern-.06em\raise0.4pt\hbox{$\rangle$}}}}
   % The old definition, with no lozenge:
   %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
 \def\ctrl #1{{\tt \rawbackslash \hat}#1}  \def\ctrl #1{{\tt \rawbackslash \hat}#1}
   
 \let\file=\samp  \let\file=\samp
   \let\url=\samp % perhaps include a hypertex \special eventually
   \def\email#1{$\langle${\tt #1}$\rangle$}
   
 % @code is a modification of @t,  % @code is a modification of @t,
 % which makes spaces the same size as normal in the surrounding text.  % which makes spaces the same size as normal in the surrounding text.
Line 1123  where each line of input produces a line Line 1278  where each line of input produces a line
 }  }
   
 % We *must* turn on hyphenation at `-' and `_' in \code.  % We *must* turn on hyphenation at `-' and `_' in \code.
 % Otherwise, it is too hard to avoid overful hboxes  % Otherwise, it is too hard to avoid overfull hboxes
 % in the Emacs manual, the Library manual, etc.  % in the Emacs manual, the Library manual, etc.
   
 % Unfortunately, TeX uses one parameter (\hyphenchar) to control  % Unfortunately, TeX uses one parameter (\hyphenchar) to control
 % both hyphenation at - and hyphenation within words.  % both hyphenation at - and hyphenation within words.
 % We must therefore turn them both off (\tclose does that)  % We must therefore turn them both off (\tclose does that)
 % and arrange explicitly to hyphenate an a dash.  % and arrange explicitly to hyphenate at a dash.
 %  -- rms.  %  -- rms.
 {  {
 \catcode`\-=\active  \catcode`\-=\active
Line 1141  where each line of input produces a line Line 1296  where each line of input produces a line
 % ever called.  -- mycroft  % ever called.  -- mycroft
 \global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}  \global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder}
 }  }
   
 \def\realdash{-}  \def\realdash{-}
 \def\realunder{_}  \def\realunder{_}
 \def\codedash{-\discretionary{}{}{}}  \def\codedash{-\discretionary{}{}{}}
Line 1151  where each line of input produces a line Line 1307  where each line of input produces a line
   
 % @kbd is like @code, except that if the argument is just one @key command,  % @kbd is like @code, except that if the argument is just one @key command,
 % then @kbd has no effect.  % then @kbd has no effect.
   %
 \def\xkey{\key}  \def\xkey{\key}
 \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%  \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
 \ifx\one\xkey\ifx\threex\three \key{#2}%  \ifx\one\xkey\ifx\threex\three \key{#2}%
 \else\tclose{\look}\fi  \else{\tclose{\ttsl\look}}\fi
 \else\tclose{\look}\fi}  \else{\tclose{\ttsl\look}}\fi}
   
   % Check if we are currently using a typewriter font.  Since all the
   % Computer Modern typewriter fonts have zero interword stretch (and
   % shrink), and it is reasonable to expect all typewriter fonts to have
   % this property, we can check that font parameter.
   % 
   \def\ifmonospace{\ifdim\fontdimen3\font=0pt }
   
 % Typeset a dimension, e.g., `in' or `pt'.  The only reason for the  % Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
 % argument is to make the input look right: @dmn{pt} instead of  % argument is to make the input look right: @dmn{pt} instead of
Line 1166  where each line of input produces a line Line 1329  where each line of input produces a line
   
 \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}  \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
   
 \def\l#1{{\li #1}\null}         %  % @l was never documented to mean ``switch to the Lisp font'',
   % and it is not used as such in any manual I can find.  We need it for
   % Polish suppressed-l.  --karl, 22sep96.
   %\def\l#1{{\li #1}\null}
   
 \def\r#1{{\rm #1}}              % roman font  \def\r#1{{\rm #1}}              % roman font
 % Use of \lowercase was suggested.  % Use of \lowercase was suggested.
 \def\sc#1{{\smallcaps#1}}       % smallcaps font  \def\sc#1{{\smallcaps#1}}       % smallcaps font
 \def\ii#1{{\it #1}}             % italic font  \def\ii#1{{\it #1}}             % italic font
   
   % @pounds{} is a sterling sign.
   \def\pounds{{\it\$}}
   
   
 \message{page headings,}  \message{page headings,}
   
Line 1186  where each line of input produces a line Line 1356  where each line of input produces a line
   
 \def\shorttitlepage{\parsearg\shorttitlepagezzz}  \def\shorttitlepage{\parsearg\shorttitlepagezzz}
 \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%  \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
         \endgroup\page\hbox{}\page}          \endgroup\page\hbox{}\page}
   
 \def\titlepage{\begingroup \parindent=0pt \textfonts  \def\titlepage{\begingroup \parindent=0pt \textfonts
    \let\subtitlerm=\tenrm     \let\subtitlerm=\tenrm
Line 1203  where each line of input produces a line Line 1373  where each line of input produces a line
    % Now you can print the title using @title.     % Now you can print the title using @title.
    \def\title{\parsearg\titlezzz}%     \def\title{\parsearg\titlezzz}%
    \def\titlezzz##1{\leftline{\titlefont{##1}}     \def\titlezzz##1{\leftline{\titlefont{##1}}
                     % print a rule at the page bottom also.                      % print a rule at the page bottom also.
                     \finishedtitlepagefalse                      \finishedtitlepagefalse
                     \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%                      \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
    % No rule at page bottom unless we print one at the top with @title.     % No rule at page bottom unless we print one at the top with @title.
    \finishedtitlepagetrue     \finishedtitlepagetrue
    %     %
Line 1223  where each line of input produces a line Line 1393  where each line of input produces a line
    \let\oldpage = \page     \let\oldpage = \page
    \def\page{%     \def\page{%
       \iffinishedtitlepage\else        \iffinishedtitlepage\else
          \finishtitlepage           \finishtitlepage
       \fi        \fi
       \oldpage        \oldpage
       \let\page = \oldpage        \let\page = \oldpage
Line 1311  where each line of input produces a line Line 1481  where each line of input produces a line
 %  %
 }% unbind the catcode of @.  }% unbind the catcode of @.
   
 % @headings double      turns headings on for double-sided printing.  % @headings double      turns headings on for double-sided printing.
 % @headings single      turns headings on for single-sided printing.  % @headings single      turns headings on for single-sided printing.
 % @headings off         turns them off.  % @headings off         turns them off.
 % @headings on          same as @headings double, retained for compatibility.  % @headings on          same as @headings double, retained for compatibility.
 % @headings after       turns on double-sided headings after this page.  % @headings after       turns on double-sided headings after this page.
 % @headings doubleafter turns on double-sided headings after this page.  % @headings doubleafter turns on double-sided headings after this page.
 % @headings singleafter turns on single-sided headings after this page.  % @headings singleafter turns on single-sided headings after this page.
 % By default, they are off.  % By default, they are off at the start of a document,
   % and turned `on' after @end titlepage.
   
 \def\headings #1 {\csname HEADINGS#1\endcsname}  \def\headings #1 {\csname HEADINGS#1\endcsname}
   
Line 1332  where each line of input produces a line Line 1503  where each line of input produces a line
 % title on inside top of left hand pages, and page numbers on outside top  % title on inside top of left hand pages, and page numbers on outside top
 % edge of all pages.  % edge of all pages.
 \def\HEADINGSdouble{  \def\HEADINGSdouble{
 %\pagealignmacro  
 \global\pageno=1  \global\pageno=1
 \global\evenfootline={\hfil}  \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}  \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}  \global\evenheadline={\line{\folio\hfil\thistitle}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}  \global\oddheadline={\line{\thischapter\hfil\folio}}
   \global\let\contentsalignmacro = \chapoddpage
 }  }
   \let\contentsalignmacro = \chappager
   
 % For single-sided printing, chapter title goes across top left of page,  % For single-sided printing, chapter title goes across top left of page,
 % page number on top right.  % page number on top right.
 \def\HEADINGSsingle{  \def\HEADINGSsingle{
 %\pagealignmacro  
 \global\pageno=1  \global\pageno=1
 \global\evenfootline={\hfil}  \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}  \global\oddfootline={\hfil}
 \global\evenheadline={\line{\thischapter\hfil\folio}}  \global\evenheadline={\line{\thischapter\hfil\folio}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}  \global\oddheadline={\line{\thischapter\hfil\folio}}
   \global\let\contentsalignmacro = \chappager
 }  }
 \def\HEADINGSon{\HEADINGSdouble}  \def\HEADINGSon{\HEADINGSdouble}
   
Line 1358  where each line of input produces a line Line 1531  where each line of input produces a line
 \global\oddfootline={\hfil}  \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}  \global\evenheadline={\line{\folio\hfil\thistitle}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}  \global\oddheadline={\line{\thischapter\hfil\folio}}
   \global\let\contentsalignmacro = \chapoddpage
 }  }
   
 \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}  \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
Line 1366  where each line of input produces a line Line 1540  where each line of input produces a line
 \global\oddfootline={\hfil}  \global\oddfootline={\hfil}
 \global\evenheadline={\line{\thischapter\hfil\folio}}  \global\evenheadline={\line{\thischapter\hfil\folio}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}  \global\oddheadline={\line{\thischapter\hfil\folio}}
   \global\let\contentsalignmacro = \chappager
 }  }
   
 % Subroutines used in generating headings  % Subroutines used in generating headings
Line 1389  July\or August\or September\or October\o Line 1564  July\or August\or September\or October\o
 \def\settitle{\parsearg\settitlezzz}  \def\settitle{\parsearg\settitlezzz}
 \def\settitlezzz #1{\gdef\thistitle{#1}}  \def\settitlezzz #1{\gdef\thistitle{#1}}
   
   
 \message{tables,}  \message{tables,}
   
 % @tabs -- simple alignment  % @tabs -- simple alignment
Line 1421  July\or August\or September\or October\o Line 1597  July\or August\or September\or October\o
   
 \newif\ifitemxneedsnegativevskip  \newif\ifitemxneedsnegativevskip
   
 \def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi}  \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
   
 \def\internalBitem{\smallbreak \parsearg\itemzzz}  \def\internalBitem{\smallbreak \parsearg\itemzzz}
 \def\internalBitemx{\itemxpar \parsearg\itemzzz}  \def\internalBitemx{\itemxpar \parsearg\itemzzz}
Line 1528  July\or August\or September\or October\o Line 1704  July\or August\or September\or October\o
 \def\tablez #1#2#3#4#5#6{%  \def\tablez #1#2#3#4#5#6{%
 \aboveenvbreak %  \aboveenvbreak %
 \begingroup %  \begingroup %
 \def\Edescription{\Etable}% Neccessary kludge.  \def\Edescription{\Etable}% Necessary kludge.
 \let\itemindex=#1%  \let\itemindex=#1%
 \ifnum 0#3>0 \advance \leftskip by #3\mil \fi %  \ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
 \ifnum 0#4>0 \tableindent=#4\mil \fi %  \ifnum 0#4>0 \tableindent=#4\mil \fi %
Line 1692  July\or August\or September\or October\o Line 1868  July\or August\or September\or October\o
 \flushcr}  \flushcr}
   
 % @multitable macros  % @multitable macros
 % Amy Hendrickson, 8/18/94  % Amy Hendrickson, 8/18/94, 3/6/96
 %  %
 % @multitable ... @endmultitable will make as many columns as desired.  % @multitable ... @end multitable will make as many columns as desired.
 % Contents of each column will wrap at width given in preamble. Width  % Contents of each column will wrap at width given in preamble.  Width
 % can be specified either with sample text given in a template line,  % can be specified either with sample text given in a template line,
 % or in percent of \hsize, the current width of text on page.  % or in percent of \hsize, the current width of text on page.
   
Line 1704  July\or August\or September\or October\o Line 1880  July\or August\or September\or October\o
 % To make preamble:  % To make preamble:
 %  %
 % Either define widths of columns in terms of percent of \hsize:   % Either define widths of columns in terms of percent of \hsize: 
 %   @multitable @percentofhsize .2 .3 .5  %   @multitable @columnfractions .25 .3 .45
 %   @item ...  %   @item ...
 %  %
 %   Numbers following @percentofhsize are the percent of the total  %   Numbers following @columnfractions are the percent of the total
 %   current hsize to be used for each column. You may use as many  %   current hsize to be used for each column. You may use as many
 %   columns as desired.  %   columns as desired.
   
   
 % Or use a template:  % Or use a template:
 %   @multitable {Column 1 template} {Column 2 template} {Column 3 template}  %   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
 %   @item ...  %   @item ...
 %   using the widest term desired in each column.  %   using the widest term desired in each column.
   %
   % For those who want to use more than one line's worth of words in
   % the preamble, break the line within one argument and it
   % will parse correctly, i.e.,
   %
   %     @multitable {Column 1 template} {Column 2 template} {Column 3 
   %      template}
   % Not:
   %     @multitable {Column 1 template} {Column 2 template} 
   %      {Column 3 template}
   
 % Each new table line starts with @item, each subsequent new column   % Each new table line starts with @item, each subsequent new column 
 % starts with @tab. Empty columns may be produced by supplying @tab's  % starts with @tab. Empty columns may be produced by supplying @tab's
 % with nothing between them for as many times as empty columns are needed,  % with nothing between them for as many times as empty columns are needed,
 % ie, @tab@tab@tab will produce two empty columns.  % ie, @tab@tab@tab will produce two empty columns.
   
 % @item, @tab, @multicolumn or @endmulticolumn do not need to be on their  % @item, @tab, @multitable or @end multitable do not need to be on their
 % own lines, but it will not hurt if they are.  % own lines, but it will not hurt if they are.
   
 % Sample multitable:  % Sample multitable:
Line 1740  July\or August\or September\or October\o Line 1926  July\or August\or September\or October\o
 %       %     
 %         They will wrap at the width determined by the template.  %         They will wrap at the width determined by the template.
 %   @item@tab@tab This will be in third column.  %   @item@tab@tab This will be in third column.
 %   @endmultitable  %   @end multitable
   
 % Default dimensions may be reset by user.  % Default dimensions may be reset by user.
 % @intableparskip will set vertical space between paragraphs in table.  % @multitableparskip is vertical space between paragraphs in table.
 % @intableparindent will set paragraph indent in table.  % @multitableparindent is paragraph indent in table.
 % @spacebetweencols will set horizontal space to be left between columns.  % @multitablecolmargin is horizontal space to be left between columns.
 % @spacebetweenlines will set vertical space to be left between lines.  % @multitablelinespace is space to leave between table items, baseline
   %                                                            to baseline.
   %   0pt means it depends on current normal line spacing.
   
 %%%%  %%%%
 % Dimensions   % Dimensions 
   
 \newdimen\intableparskip  \newskip\multitableparskip
 \newdimen\intableparindent  \newskip\multitableparindent
 \newdimen\spacebetweencols  \newdimen\multitablecolspace
 \newdimen\spacebetweenlines  \newskip\multitablelinespace
 \intableparskip=0pt  \multitableparskip=0pt
 \intableparindent=6pt  \multitableparindent=6pt
 \spacebetweencols=12pt  \multitablecolspace=12pt
 \spacebetweenlines=12pt  \multitablelinespace=0pt
   
 %%%%  %%%%
 % Macros used to set up halign preamble:  % Macros used to set up halign preamble:
 \let\endsetuptable\relax  \let\endsetuptable\relax
 \def\xendsetuptable{\endsetuptable}  \def\xendsetuptable{\endsetuptable}
 \let\percentofhsize\relax  \let\columnfractions\relax
 \def\xpercentofhsize{\percentofhsize}  \def\xcolumnfractions{\columnfractions}
 \newif\ifsetpercent  \newif\ifsetpercent
   
   %% 2/1/96, to allow fractions to be given with more than one digit.
   \def\pickupwholefraction#1 {\global\advance\colcount by1 %
   \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
   \setuptable}
   
 \newcount\colcount  \newcount\colcount
 \def\setuptable#1{\def\firstarg{#1}%  \def\setuptable#1{\def\firstarg{#1}%
 \ifx\firstarg\xendsetuptable\let\go\relax%  \ifx\firstarg\xendsetuptable\let\go\relax%
 \else  \else
   \ifx\firstarg\xpercentofhsize\global\setpercenttrue%    \ifx\firstarg\xcolumnfractions\global\setpercenttrue%
   \else    \else
     \ifsetpercent      \ifsetpercent
        \if#1.\else%         \let\go\pickupwholefraction   % In this case arg of setuptable
        \global\advance\colcount by1 %                                       % is the decimal point before the
        \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%                                       % number given in percent of hsize.
        \fi                                       % We don't need this so we don't use it.
     \else      \else
        \global\advance\colcount by1         \global\advance\colcount by1
        \setbox0=\hbox{#1}%         \setbox0=\hbox{#1 }% Add a normal word space as a separator;
                             % typically that is always in the input, anyway.
        \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
     \fi%      \fi%
   \fi%    \fi%
   \let\go\setuptable%  \ifx\go\pickupwholefraction\else\let\go\setuptable\fi%
 \fi\go}  \fi\go}
   
 %%%%  %%%%
 % multitable syntax  % multitable syntax
 \def\tab{&}  \def\tab{&\hskip1sp\relax} % 2/2/96
                              % tiny skip here makes sure this column space is
                              % maintained, even if it is never used.
   
   
 %%%%  %%%%
 % @multitable ... @endmultitable definitions:  % @multitable ... @end multitable definitions:
   
 \def\multitable#1\item{\bgroup  \def\multitable{\parsearg\dotable}
   
   \def\dotable#1{\bgroup
 \let\item\cr  \let\item\cr
 \tolerance=9500  \tolerance=9500
 \hbadness=9500  \hbadness=9500
 \parskip=\intableparskip  \setmultitablespacing
 \parindent=\intableparindent  \parskip=\multitableparskip
   \parindent=\multitableparindent
 \overfullrule=0pt  \overfullrule=0pt
 \global\colcount=0\relax%  \global\colcount=0\relax%
 \def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%  \def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
  % To parse everything between @multitable and @item :   % To parse everything between @multitable and @item :
 \def\one{#1}\expandafter\setuptable\one\endsetuptable  \setuptable#1 \endsetuptable
  % Need to reset this to 0 after \setuptable.   % Need to reset this to 0 after \setuptable.
 \global\colcount=0\relax%   \global\colcount=0\relax% 
  %   %
Line 1813  July\or August\or September\or October\o Line 2014  July\or August\or September\or October\o
  % \vtop will set a single line and will also let text wrap and    % \vtop will set a single line and will also let text wrap and 
  % continue for many paragraphs if desired.   % continue for many paragraphs if desired.
 \halign\bgroup&\global\advance\colcount by 1\relax%  \halign\bgroup&\global\advance\colcount by 1\relax%
 \vtop{\hsize=\expandafter\csname col\the\colcount\endcsname  \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
  % In order to keep entries from bumping into each other   % In order to keep entries from bumping into each other
  % we will add a \leftskip of \spacebetweencols to all columns after   % we will add a \leftskip of \multitablecolspace to all columns after
  % the first one.   % the first one.
  %  If a template has been used, we will add \spacebetweencols    %  If a template has been used, we will add \multitablecolspace 
  % to the width of each template entry.   % to the width of each template entry.
  %  If user has set preamble in terms of percent of \hsize   %  If user has set preamble in terms of percent of \hsize
  % we will use that dimension as the width of the column, and   % we will use that dimension as the width of the column, and
Line 1829  July\or August\or September\or October\o Line 2030  July\or August\or September\or October\o
   \ifsetpercent    \ifsetpercent
   \else    \else
    % If user has <not> set preamble in terms of percent of \hsize     % If user has <not> set preamble in terms of percent of \hsize
    % we will advance \hsize by \spacebetweencols      % we will advance \hsize by \multitablecolspace 
   \advance\hsize by \spacebetweencols    \advance\hsize by \multitablecolspace
   \fi    \fi
  % In either case we will make \leftskip=\spacebetweencols:   % In either case we will make \leftskip=\multitablecolspace:
 \leftskip=\spacebetweencols  \leftskip=\multitablecolspace
 \fi  \fi
 \noindent##}\cr%  \noindent##\multistrut}\cr%
  % \everycr will reset column counter, \colcount, at the end of   % \everycr will reset column counter, \colcount, at the end of
  % each line. Every column  entry will cause \colcount to advance by one.    % each line. Every column  entry will cause \colcount to advance by one. 
  % The table preamble   % The table preamble
  % looks at the current \colcount to find the correct column width.   % looks at the current \colcount to find the correct column width.
 \global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines  \global\everycr{\noalign{%
 \filbreak%% keeps underfull box messages off when table breaks over pages.  \filbreak%% keeps underfull box messages off when table breaks over pages.
 \global\colcount=0\relax}}}  \global\colcount=0\relax}}
   }
   
   \def\setmultitablespacing{% test to see if user has set \multitablelinespace.
   % If so, do nothing. If not, give it an appropriate dimension based on
   % current baselineskip.
   \ifdim\multitablelinespace=0pt
   %% strut to put in table in case some entry doesn't have descenders,
   %% to keep lines equally spaced
   \let\multistrut = \strut
   %% Test to see if parskip is larger than space between lines of
   %% table. If not, do nothing. 
   %%        If so, set to same dimension as multitablelinespace.
   \else
   \gdef\multistrut{\vrule height\multitablelinespace depth\dp0
   width0pt\relax} \fi
   \ifdim\multitableparskip>\multitablelinespace
   \global\multitableparskip=\multitablelinespace
   \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
                                         %% than skip between lines in the table.
   \fi%
   \ifdim\multitableparskip=0pt
   \global\multitableparskip=\multitablelinespace
   \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
                                         %% than skip between lines in the table.
   \fi}
   
   
 \message{indexing,}  \message{indexing,}
 % Index generation facilities  % Index generation facilities
Line 1856  July\or August\or September\or October\o Line 2083  July\or August\or September\or October\o
 % It automatically defines \fooindex such that  % It automatically defines \fooindex such that
 % \fooindex ...rest of line... puts an entry in the index foo.  % \fooindex ...rest of line... puts an entry in the index foo.
 % It also defines \fooindfile to be the number of the output channel for  % It also defines \fooindfile to be the number of the output channel for
 % the file that accumulates this index.  The file's extension is foo.  % the file that accumulates this index.  The file's extension is foo.
 % The name of an index should be no more than 2 characters long  % The name of an index should be no more than 2 characters long
 % for the sake of vms.  % for the sake of vms.
   
 \def\newindex #1{  \def\newindex #1{
 \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file  \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
 \openout \csname#1indfile\endcsname \jobname.#1 % Open the file  \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
 \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex  \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\doindex {#1}}  \noexpand\doindex {#1}}
 }  }
   
Line 1875  July\or August\or September\or October\o Line 2102  July\or August\or September\or October\o
   
 \def\newcodeindex #1{  \def\newcodeindex #1{
 \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file  \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
 \openout \csname#1indfile\endcsname \jobname.#1 % Open the file  \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
 \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex  \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\docodeindex {#1}}  \noexpand\docodeindex {#1}}
 }  }
   
Line 1887  July\or August\or September\or October\o Line 2114  July\or August\or September\or October\o
 \def\synindex #1 #2 {%  \def\synindex #1 #2 {%
 \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname  \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
 \expandafter\let\csname#1indfile\endcsname=\synindexfoo  \expandafter\let\csname#1indfile\endcsname=\synindexfoo
 \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex  \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\doindex {#2}}%  \noexpand\doindex {#2}}%
 }  }
   
Line 1896  July\or August\or September\or October\o Line 2123  July\or August\or September\or October\o
 \def\syncodeindex #1 #2 {%  \def\syncodeindex #1 #2 {%
 \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname  \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
 \expandafter\let\csname#1indfile\endcsname=\synindexfoo  \expandafter\let\csname#1indfile\endcsname=\synindexfoo
 \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex  \expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
 \noexpand\docodeindex {#2}}%  \noexpand\docodeindex {#2}}%
 }  }
   
Line 1944  July\or August\or September\or October\o Line 2171  July\or August\or September\or October\o
 \def\L{\realbackslash L}%  \def\L{\realbackslash L}%
 \def\ss{\realbackslash ss}%  \def\ss{\realbackslash ss}%
 % Take care of texinfo commands likely to appear in an index entry.  % Take care of texinfo commands likely to appear in an index entry.
   % (Must be a way to avoid doing expansion at all, and thus not have to
   % laboriously list every single command here.)
   \def\@{@}% will be @@ when we switch to @ as escape char.
   %\let\{ = \lbracecmd
   %\let\} = \rbracecmd
 \def\_{{\realbackslash _}}%  \def\_{{\realbackslash _}}%
 \def\w{\realbackslash w }%  \def\w{\realbackslash w }%
 \def\bf{\realbackslash bf }%  \def\bf{\realbackslash bf }%
 \def\rm{\realbackslash rm }%  %\def\rm{\realbackslash rm }%
 \def\sl{\realbackslash sl }%  \def\sl{\realbackslash sl }%
 \def\sf{\realbackslash sf}%  \def\sf{\realbackslash sf}%
 \def\tt{\realbackslash tt}%  \def\tt{\realbackslash tt}%
 \def\gtr{\realbackslash gtr}%  \def\gtr{\realbackslash gtr}%
 \def\less{\realbackslash less}%  \def\less{\realbackslash less}%
 \def\hat{\realbackslash hat}%  \def\hat{\realbackslash hat}%
 \def\char{\realbackslash char}%  %\def\char{\realbackslash char}%
 \def\TeX{\realbackslash TeX}%  \def\TeX{\realbackslash TeX}%
 \def\dots{\realbackslash dots }%  \def\dots{\realbackslash dots }%
 \def\copyright{\realbackslash copyright }%  \def\copyright{\realbackslash copyright }%
 \def\tclose##1{\realbackslash tclose {##1}}%  \def\tclose##1{\realbackslash tclose {##1}}%
 \def\code##1{\realbackslash code {##1}}%  \def\code##1{\realbackslash code {##1}}%
   \def\dotless##1{\realbackslash dotless {##1}}%
 \def\samp##1{\realbackslash samp {##1}}%  \def\samp##1{\realbackslash samp {##1}}%
 \def\t##1{\realbackslash r {##1}}%  \def\,##1{\realbackslash ,{##1}}%
   \def\t##1{\realbackslash t {##1}}%
 \def\r##1{\realbackslash r {##1}}%  \def\r##1{\realbackslash r {##1}}%
 \def\i##1{\realbackslash i {##1}}%  \def\i##1{\realbackslash i {##1}}%
 \def\b##1{\realbackslash b {##1}}%  \def\b##1{\realbackslash b {##1}}%
Line 1972  July\or August\or September\or October\o Line 2206  July\or August\or September\or October\o
 \def\kbd##1{\realbackslash kbd {##1}}%  \def\kbd##1{\realbackslash kbd {##1}}%
 \def\dfn##1{\realbackslash dfn {##1}}%  \def\dfn##1{\realbackslash dfn {##1}}%
 \def\emph##1{\realbackslash emph {##1}}%  \def\emph##1{\realbackslash emph {##1}}%
   \unsepspaces
 }  }
   
   % If an index command is used in an @example environment, any spaces
   % therein should become regular spaces in the raw index file, not the
   % expansion of \tie (\\leavevmode \penalty \@M \ ).
   {\obeyspaces
    \gdef\unsepspaces{\obeyspaces\let =\space}}
   
 % \indexnofonts no-ops all font-change commands.  % \indexnofonts no-ops all font-change commands.
 % This is used when outputting the strings to sort the index by.  % This is used when outputting the strings to sort the index by.
 \def\indexdummyfont#1{#1}  \def\indexdummyfont#1{#1}
Line 1982  July\or August\or September\or October\o Line 2223  July\or August\or September\or October\o
   
 \def\indexnofonts{%  \def\indexnofonts{%
 % Just ignore accents.  % Just ignore accents.
   \let\,=\indexdummyfont
 \let\"=\indexdummyfont  \let\"=\indexdummyfont
 \let\`=\indexdummyfont  \let\`=\indexdummyfont
 \let\'=\indexdummyfont  \let\'=\indexdummyfont
Line 1994  July\or August\or September\or October\o Line 2236  July\or August\or September\or October\o
 \let\u=\indexdummyfont  \let\u=\indexdummyfont
 \let\v=\indexdummyfont  \let\v=\indexdummyfont
 \let\H=\indexdummyfont  \let\H=\indexdummyfont
   \let\dotless=\indexdummyfont
 % Take care of the plain tex special European modified letters.  % Take care of the plain tex special European modified letters.
 \def\oe{oe}%  \def\oe{oe}%
 \def\ae{ae}%  \def\ae{ae}%
Line 2027  July\or August\or September\or October\o Line 2270  July\or August\or September\or October\o
 \let\var=\indexdummyfont  \let\var=\indexdummyfont
 \let\TeX=\indexdummytex  \let\TeX=\indexdummytex
 \let\dots=\indexdummydots  \let\dots=\indexdummydots
   \def\@{@}%
 }  }
   
 % To define \realbackslash, we must make \ not be an escape.  % To define \realbackslash, we must make \ not be an escape.
Line 2042  July\or August\or September\or October\o Line 2286  July\or August\or September\or October\o
 % workhorse for all \fooindexes  % workhorse for all \fooindexes
 % #1 is name of index, #2 is stuff to put there  % #1 is name of index, #2 is stuff to put there
 \def\doind #1#2{%  \def\doind #1#2{%
 % Put the index entry in the margin if desired.    % Put the index entry in the margin if desired.
 \ifx\SETmarginindex\relax\else%    \ifx\SETmarginindex\relax\else
 \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%      \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
 \fi%    \fi
 {\count10=\lastpenalty %    {%
 {\indexdummies % Must do this here, since \bf, etc expand at this stage      \count255=\lastpenalty
 \escapechar=`\\%      {%
 {\let\folio=0% Expand all macros now EXCEPT \folio        \indexdummies % Must do this here, since \bf, etc expand at this stage
 \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now        \escapechar=`\\
 % so it will be output as is; and it will print as backslash in the indx.        {%
 %          \let\folio=0 % We will expand all macros now EXCEPT \folio.
 % Now process the index-string once, with all font commands turned off,          \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
 % to get the string to sort the index by.          % so it will be output as is; and it will print as backslash.
 {\indexnofonts          %
 \xdef\temp1{#2}%          % First process the index-string with all font commands turned off
 }%          % to get the string to sort by.
 % Now produce the complete index entry.  We process the index-string again,          {\indexnofonts \xdef\indexsorttmp{#2}}%
 % this time with font commands expanded, to get what to print in the index.          %
 \edef\temp{%          % Now produce the complete index entry, with both the sort key and the
 \write \csname#1indfile\endcsname{%          % original text, including any font commands.
 \realbackslash entry {\temp1}{\folio}{#2}}}%          \toks0 = {#2}%
 \temp }%          \edef\temp{%
 }\penalty\count10}}            \write\csname#1indfile\endcsname{%
               \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
           }%
           \temp
         }%
       }%
       \penalty\count255
     }%
   }
   
 \def\dosubind #1#2#3{%  \def\dosubind #1#2#3{%
 {\count10=\lastpenalty %  {\count10=\lastpenalty %
Line 2125  July\or August\or September\or October\o Line 2377  July\or August\or September\or October\o
   
 \def\printindex{\parsearg\doprintindex}  \def\printindex{\parsearg\doprintindex}
   
 \def\doprintindex#1{%  \def\doprintindex#1{\begingroup
   \tex    \dobreak \chapheadingskip{10000}%
   \dobreak \chapheadingskip {10000}  
   \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other  
   \catcode`\$=\other  
   \catcode`\~=\other  
   \indexbreaks  
   %    %
   % The following don't help, since the chars were translated    \indexfonts \rm
   % when the raw index was written, and their fonts were discarded    \tolerance = 9500
   % due to \indexnofonts.    \indexbreaks
   %\catcode`\"=\active    \def\indexbackslash{\rawbackslashxx}%
   %\catcode`\^=\active    % Index files are almost Texinfo source, but we use \ as the escape
   %\catcode`\_=\active    % character.  It would be better to use @, but that's too big a change
   %\catcode`\|=\active    % to make right now.
   %\catcode`\<=\active    \catcode`\\ = 0
   %\catcode`\>=\active    \catcode`\@ = 11
   % %    \escapechar = `\\
   \def\indexbackslash{\rawbackslashxx}  
   \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt  
   \begindoublecolumns    \begindoublecolumns
   %    %
   % See if the index file exists and is nonempty.    % See if the index file exists and is nonempty.
Line 2155  July\or August\or September\or October\o Line 2400  July\or August\or September\or October\o
     % index.  The easiest way to prevent this problem is to make sure      % index.  The easiest way to prevent this problem is to make sure
     % there is some text.      % there is some text.
     (Index is nonexistent)      (Index is nonexistent)
     \else    \else
     %      %
     % If the index file exists but is empty, then \openin leaves \ifeof      % If the index file exists but is empty, then \openin leaves \ifeof
     % false.  We have to make TeX try to read something from the file, so      % false.  We have to make TeX try to read something from the file, so
Line 2169  July\or August\or September\or October\o Line 2414  July\or August\or September\or October\o
   \fi    \fi
   \closein 1    \closein 1
   \enddoublecolumns    \enddoublecolumns
   \Etex  \endgroup}
 }  
   
 % These macros are used by the sorted index file itself.  % These macros are used by the sorted index file itself.
 % Change them to control the appearance of the index.  % Change them to control the appearance of the index.
Line 2224  July\or August\or September\or October\o Line 2468  July\or August\or September\or October\o
   %    %
   % Insert the text of the index entry.  TeX will do line-breaking on it.    % Insert the text of the index entry.  TeX will do line-breaking on it.
   #1%    #1%
   % The following is kluged to not output a line of dots in the index if    % The following is kludged to not output a line of dots in the index if
   % there are no page numbers.  The next person who breaks this will be    % there are no page numbers.  The next person who breaks this will be
   % cursed by a Unix daemon.    % cursed by a Unix daemon.
   \def\tempa{{\rm }}%    \def\tempa{{\rm }}%
Line 2261  July\or August\or September\or October\o Line 2505  July\or August\or September\or October\o
 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
 }}  }}
   
 %% Define two-column mode, which is used in indexes.  % Define two-column mode, which we use to typeset indexes.
 %% Adapted from the TeXbook, page 416.  % Adapted from the TeXbook, page 416, which is to say,
 \catcode `\@=11  % the manmac.tex format used to print the TeXbook itself.
   \catcode`\@=11
   
 \newbox\partialpage  \newbox\partialpage
   
 \newdimen\doublecolumnhsize  \newdimen\doublecolumnhsize
   
 \def\begindoublecolumns{\begingroup  \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
   % Grab any single-column material above us.    % Grab any single-column material above us.
   \output = {\global\setbox\partialpage    \output = {\global\setbox\partialpage
     =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}%      =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}%
Line 2302  July\or August\or September\or October\o Line 2546  July\or August\or September\or October\o
   % Double the \vsize as well.  (We don't need a separate register here,    % Double the \vsize as well.  (We don't need a separate register here,
   % since nobody clobbers \vsize.)    % since nobody clobbers \vsize.)
   \vsize = 2\vsize    \vsize = 2\vsize
   \doublecolumnpagegoal  
 }  }
   
 \def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage}  
   
 \def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth  
   \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage  
   \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1}  
   \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3}  
   \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi  
   \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi  
 }  
 \def\doublecolumnpagegoal{%  
   \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@  
 }  
 \def\pagesofar{\unvbox\partialpage %  
   \hsize=\doublecolumnhsize % have to restore this since output routine  
   \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}  
 \def\doublecolumnout{%  \def\doublecolumnout{%
   \setbox5=\copy255    \splittopskip=\topskip \splitmaxdepth=\maxdepth
   {\vbadness=10000 \doublecolumnsplit}    % Get the available space for the double columns -- the normal
   \ifvbox255    % (undoubled) page height minus any material left over from the
     \setbox0=\vtop to\dimen@{\unvbox0}    % previous page.
     \setbox2=\vtop to\dimen@{\unvbox2}    \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage
     \onepageout\pagesofar \unvbox255 \penalty\outputpenalty    % box0 will be the left-hand column, box1 the right.
   \else    \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
     \setbox0=\vbox{\unvbox5}    \onepageout\pagesofar
     \ifvbox0    \unvbox255 \penalty\outputpenalty
       \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip  }
       \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth  \def\pagesofar{%
       {\vbadness=10000    % The contents of the output page -- any previous material,
         \loop \global\setbox5=\copy0    % followed by the two boxes we just split.
           \setbox1=\vsplit5 to\dimen@    \unvbox\partialpage
           \setbox3=\vsplit5 to\dimen@    \hsize = \doublecolumnhsize
           \ifvbox5 \global\advance\dimen@ by1pt \repeat    \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}%
         \setbox0=\vbox to\dimen@{\unvbox1}  }
         \setbox2=\vbox to\dimen@{\unvbox3}  \def\enddoublecolumns{%
         \global\setbox\partialpage=\vbox{\pagesofar}    \output={\balancecolumns}\eject % split what we have
         \doublecolumnpagegoal    \endgroup
       }    % Back to normal single-column typesetting, but take account of the
     \fi    % fact that we just accumulated some stuff on the output page.
   \fi    \pagegoal=\vsize 
   }
   \def\balancecolumns{%
     % Called on the last page of the double column material.
     \setbox0=\vbox{\unvbox255}%
     \dimen@ = \ht0
     \advance\dimen@ by \topskip
     \advance\dimen@ by-\baselineskip
     \divide\dimen@ by 2
     \splittopskip = \topskip
     % Loop until we get a decent breakpoint.
     {\vbadness=10000 \loop \global\setbox3=\copy0
       \global\setbox1=\vsplit3 to\dimen@
       \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}%
     \setbox0=\vbox to\dimen@{\unvbox1}%
     \setbox2=\vbox to\dimen@{\unvbox3}%
     \pagesofar
 }  }
   
 \catcode `\@=\other  \catcode `\@=\other
   
   
 \message{sectioning,}  \message{sectioning,}
 % Define chapters, sections, etc.  % Define chapters, sections, etc.
   
Line 2518  July\or August\or September\or October\o Line 2762  July\or August\or September\or October\o
 \global\let\subsubsection = \appendixsubsubsec  \global\let\subsubsection = \appendixsubsubsec
 }}  }}
   
   % @centerchap is like @unnumbered, but the heading is centered.
   \outer\def\centerchap{\parsearg\centerchapyyy}
   \def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
   
 \outer\def\top{\parsearg\unnumberedyyy}  \outer\def\top{\parsearg\unnumberedyyy}
 \outer\def\unnumbered{\parsearg\unnumberedyyy}  \outer\def\unnumbered{\parsearg\unnumberedyyy}
 \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz  \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
Line 2562  July\or August\or September\or October\o Line 2810  July\or August\or September\or October\o
 \penalty 10000 %  \penalty 10000 %
 }}  }}
   
 \outer\def\appenixsection{\parsearg\appendixsecyyy}  \outer\def\appendixsection{\parsearg\appendixsecyyy}
 \outer\def\appendixsec{\parsearg\appendixsecyyy}  \outer\def\appendixsec{\parsearg\appendixsecyyy}
 \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz  \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
 \def\appendixsectionzzz #1{\seccheck{appendixsection}%  \def\appendixsectionzzz #1{\seccheck{appendixsection}%
Line 2620  July\or August\or September\or October\o Line 2868  July\or August\or September\or October\o
 \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}  \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
 \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz  \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
 \def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%  \def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
 \plainsecheading {#1}\gdef\thissection{#1}%  \plainsubsecheading {#1}\gdef\thissection{#1}%
 {\chapternofonts%  {\chapternofonts%
 \edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%  \edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
 \escapechar=`\\%  \escapechar=`\\%
Line 2665  July\or August\or September\or October\o Line 2913  July\or August\or September\or October\o
 \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}  \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
 \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz  \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
 \def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%  \def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
 \plainsecheading {#1}\gdef\thissection{#1}%  \plainsubsubsecheading {#1}\gdef\thissection{#1}%
 {\chapternofonts%  {\chapternofonts%
 \edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%  \edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
 \escapechar=`\\%  \escapechar=`\\%
Line 2703  July\or August\or September\or October\o Line 2951  July\or August\or September\or October\o
   
 % NOTE on use of \vbox for chapter headings, section headings, and  % NOTE on use of \vbox for chapter headings, section headings, and
 % such:  % such:
 %       1) We use \vbox rather than the earlier \line to permit  %       1) We use \vbox rather than the earlier \line to permit
 %          overlong headings to fold.  %          overlong headings to fold.
 %       2) \hyphenpenalty is set to 10000 because hyphenation in a  %       2) \hyphenpenalty is set to 10000 because hyphenation in a
 %          heading is obnoxious; this forbids it.  %          heading is obnoxious; this forbids it.
 %       3) Likewise, headings look best if no \parindent is used, and  %       3) Likewise, headings look best if no \parindent is used, and
 %          if justification is not attempted.  Hence \raggedright.  %          if justification is not attempted.  Hence \raggedright.
   
Line 2724  July\or August\or September\or October\o Line 2972  July\or August\or September\or October\o
                   \parindent=0pt\raggedright                    \parindent=0pt\raggedright
                   \rm #1\hfill}}\bigskip \par\penalty 200}                    \rm #1\hfill}}\bigskip \par\penalty 200}
   
 \def\heading{\parsearg\secheadingi}  % @heading, @subheading, @subsubheading.
   \def\heading{\parsearg\plainsecheading}
 \def\subheading{\parsearg\subsecheadingi}  \def\subheading{\parsearg\plainsubsecheading}
   \def\subsubheading{\parsearg\plainsubsubsecheading}
 \def\subsubheading{\parsearg\subsubsecheadingi}  
   
 % These macros generate a chapter, section, etc. heading only  % These macros generate a chapter, section, etc. heading only
 % (including whitespace, linebreaking, etc. around it),  % (including whitespace, linebreaking, etc. around it),
Line 2742  July\or August\or September\or October\o Line 2989  July\or August\or September\or October\o
 %%% Define plain chapter starts, and page on/off switching for it  %%% Define plain chapter starts, and page on/off switching for it
 % Parameter controlling skip before chapter headings (if needed)  % Parameter controlling skip before chapter headings (if needed)
   
 \newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt  \newskip\chapheadingskip
   
 \def\chapbreak{\dobreak \chapheadingskip {-4000}}  \def\chapbreak{\dobreak \chapheadingskip {-4000}}
 \def\chappager{\par\vfill\supereject}  \def\chappager{\par\vfill\supereject}
Line 2751  July\or August\or September\or October\o Line 2998  July\or August\or September\or October\o
 \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}  \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
   
 \def\CHAPPAGoff{  \def\CHAPPAGoff{
   \global\let\contentsalignmacro = \chappager
 \global\let\pchapsepmacro=\chapbreak  \global\let\pchapsepmacro=\chapbreak
 \global\let\pagealignmacro=\chappager}  \global\let\pagealignmacro=\chappager}
   
 \def\CHAPPAGon{  \def\CHAPPAGon{
   \global\let\contentsalignmacro = \chappager
 \global\let\pchapsepmacro=\chappager  \global\let\pchapsepmacro=\chappager
 \global\let\pagealignmacro=\chappager  \global\let\pagealignmacro=\chappager
 \global\def\HEADINGSon{\HEADINGSsingle}}  \global\def\HEADINGSon{\HEADINGSsingle}}
   
 \def\CHAPPAGodd{  \def\CHAPPAGodd{
   \global\let\contentsalignmacro = \chapoddpage
 \global\let\pchapsepmacro=\chapoddpage  \global\let\pchapsepmacro=\chapoddpage
 \global\let\pagealignmacro=\chapoddpage  \global\let\pagealignmacro=\chapoddpage
 \global\def\HEADINGSon{\HEADINGSdouble}}  \global\def\HEADINGSon{\HEADINGSdouble}}
Line 2768  July\or August\or September\or October\o Line 3018  July\or August\or September\or October\o
   
 \def\CHAPFplain{  \def\CHAPFplain{
 \global\let\chapmacro=\chfplain  \global\let\chapmacro=\chfplain
 \global\let\unnumbchapmacro=\unnchfplain}  \global\let\unnumbchapmacro=\unnchfplain
   \global\let\centerchapmacro=\centerchfplain}
   
 \def\chfplain #1#2{%  % Plain chapter opening.
   % #1 is the text, #2 the chapter number or empty if unnumbered.
   \def\chfplain#1#2{%
   \pchapsepmacro    \pchapsepmacro
   {%    {%
     \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000      \chapfonts \rm
                      \parindent=0pt\raggedright      \def\chapnum{#2}%
                      \rm #2\enspace #1}%      \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
       \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
             \hangindent = \wd0 \centerparametersmaybe
             \unhbox0 #1\par}%
   }%    }%
   \bigskip    \nobreak\bigskip % no page break after a chapter title
   \penalty5000    \nobreak
 }  }
   
 \def\unnchfplain #1{%  % Plain opening for unnumbered.
 \pchapsepmacro %  \def\unnchfplain#1{\chfplain{#1}{}}
 {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000  
                   \parindent=0pt\raggedright  % @centerchap -- centered and unnumbered.
                   \rm #1\hfill}}\bigskip \par\penalty 10000 %  \let\centerparametersmaybe = \relax
 }  \def\centerchfplain#1{{%
     \def\centerparametersmaybe{%
       \advance\rightskip by 3\rightskip
       \leftskip = \rightskip
       \parfillskip = 0pt
     }%
     \chfplain{#1}{}%
   }}
   
 \CHAPFplain % The default  \CHAPFplain % The default
   
 \def\unnchfopen #1{%  \def\unnchfopen #1{%
Line 2800  July\or August\or September\or October\o Line 3064  July\or August\or September\or October\o
 \par\penalty 5000 %  \par\penalty 5000 %
 }  }
   
   \def\centerchfopen #1{%
   \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                          \parindent=0pt
                          \hfill {\rm #1}\hfill}}\bigskip \par\penalty 10000 %
   }
   
 \def\CHAPFopen{  \def\CHAPFopen{
 \global\let\chapmacro=\chfopen  \global\let\chapmacro=\chfopen
 \global\let\unnumbchapmacro=\unnchfopen}  \global\let\unnumbchapmacro=\unnchfopen
   \global\let\centerchapmacro=\centerchfopen}
   
 % Parameter controlling skip before section headings.  
   
 \newskip \subsecheadingskip  \subsecheadingskip = 17pt plus 8pt minus 4pt  % Section titles.
 \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}  \newskip\secheadingskip
   
 \newskip \secheadingskip  \secheadingskip = 21pt plus 8pt minus 4pt  
 \def\secheadingbreak{\dobreak \secheadingskip {-1000}}  \def\secheadingbreak{\dobreak \secheadingskip {-1000}}
   \def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
   \def\plainsecheading#1{\sectionheading{sec}{}{#1}}
   
 % @paragraphindent  is defined for the Info formatting commands only.  % Subsection titles.
 \let\paragraphindent=\comment  \newskip \subsecheadingskip
   \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
   \def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
   \def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
   
 % Section fonts are the base font at magstep2, which produces  % Subsubsection titles.
 % a size a bit more than 14 points in the default situation.  \let\subsubsecheadingskip = \subsecheadingskip
   \let\subsubsecheadingbreak = \subsecheadingbreak
   \def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
   \def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
   
 \def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}  
 \def\plainsecheading #1{\secheadingi {#1}}  
 \def\secheadingi #1{{\advance \secheadingskip by \parskip %  
 \secheadingbreak}%  
 {\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000  
                  \parindent=0pt\raggedright  
                  \rm #1\hfill}}%  
 \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }  
   
   
 % Subsection fonts are the base font at magstep1,  
 % which produces a size of 12 points.  
   
 \def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}  
 \def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %  
 \subsecheadingbreak}%  
 {\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000  
                      \parindent=0pt\raggedright  
                      \rm #1\hfill}}%  
 \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }  
   
 \def\subsubsecfonts{\subsecfonts} % Maybe this should change:  
                                   % Perhaps make sssec fonts scaled  
                                   % magstep half  
 \def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}  
 \def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %  
 \subsecheadingbreak}%  
 {\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000  
                        \parindent=0pt\raggedright  
                        \rm #1\hfill}}%  
 \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}  
   
   % Print any size section title.
   % 
   % #1 is the section type (sec/subsec/subsubsec), #2 is the section
   % number (maybe empty), #3 the text.
   \def\sectionheading#1#2#3{%
     {%
       \expandafter\advance\csname #1headingskip\endcsname by \parskip
       \csname #1headingbreak\endcsname
     }%
     {%
       % Switch to the right set of fonts.
       \csname #1fonts\endcsname \rm
       %
       % Only insert the separating space if we have a section number.
       \def\secnum{#2}%
       \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
       %
       \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
             \hangindent = \wd0 % zero if no section number
             \unhbox0 #3}%
     }%
     \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak
   }
   
 \message{toc printing,}  
   
   \message{toc printing,}
 % Finish up the main text and prepare to read what we've written  % Finish up the main text and prepare to read what we've written
 % to \contentsfile.  % to \contentsfile.
   
 \newskip\contentsrightmargin \contentsrightmargin=1in  \newskip\contentsrightmargin \contentsrightmargin=1in
 \def\startcontents#1{%  \def\startcontents#1{%
    \pagealignmacro     % If @setchapternewpage on, and @headings double, the contents should
      % start on an odd page, unlike chapters.  Thus, we maintain
      % \contentsalignmacro in parallel with \pagealignmacro.
      % From: Torbjorn Granlund <tege@matematik.su.se>
      \contentsalignmacro
    \immediate\closeout \contentsfile     \immediate\closeout \contentsfile
    \ifnum \pageno>0     \ifnum \pageno>0
       \pageno = -1              % Request roman numbered pages.        \pageno = -1              % Request roman numbered pages.
    \fi     \fi
    % Don't need to put `Contents' or `Short Contents' in the headline.     % Don't need to put `Contents' or `Short Contents' in the headline.
    % It is abundantly clear what they are.     % It is abundantly clear what they are.
    \unnumbchapmacro{#1}\def\thischapter{}%     \unnumbchapmacro{#1}\def\thischapter{}%
    \begingroup                  % Set up to handle contents files properly.     \begingroup                  % Set up to handle contents files properly.
       \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11        \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
       \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi        \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
       \raggedbottom             % Worry more about breakpoints than the bottom.        \raggedbottom             % Worry more about breakpoints than the bottom.
Line 2892  July\or August\or September\or October\o Line 3164  July\or August\or September\or October\o
       \secfonts        \secfonts
       \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl        \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
       \rm        \rm
         \hyphenpenalty = 10000
       \advance\baselineskip by 1pt % Open it up a little.        \advance\baselineskip by 1pt % Open it up a little.
       \def\secentry ##1##2##3##4{}        \def\secentry ##1##2##3##4{}
       \def\unnumbsecentry ##1##2{}        \def\unnumbsecentry ##1##2{}
Line 2935  July\or August\or September\or October\o Line 3208  July\or August\or September\or October\o
   % This space should be plenty, since a single number is .5em, and the    % This space should be plenty, since a single number is .5em, and the
   % widest letter (M) is 1em, at least in the Computer Modern fonts.    % widest letter (M) is 1em, at least in the Computer Modern fonts.
   % (This space doesn't include the extra space that gets added after    % (This space doesn't include the extra space that gets added after
   % the label; that gets put in in \shortchapentry above.)    % the label; that gets put in by \shortchapentry above.)
   \advance\dimen0 by 1.1em    \advance\dimen0 by 1.1em
   \hbox to \dimen0{#1\hfil}%    \hbox to \dimen0{#1\hfil}%
 }  }
Line 2956  July\or August\or September\or October\o Line 3229  July\or August\or September\or October\o
   \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}    \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
 \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}  \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
   
   
 % This parameter controls the indentation of the various levels.  % This parameter controls the indentation of the various levels.
 \newdimen\tocindent \tocindent = 3pc  \newdimen\tocindent \tocindent = 3pc
   
 % Now for the actual typesetting. In all these, #1 is the text and #2 is the  % Now for the actual typesetting. In all these, #1 is the text and #2 is the
 % page number.  % page number.
 %  %
 % If the toc has to be broken over pages, we would want to be at chapters  % If the toc has to be broken over pages, we want it to be at chapters
 % if at all possible; hence the \penalty.  % if at all possible; hence the \penalty.
 \def\dochapentry#1#2{%  \def\dochapentry#1#2{%
    \penalty-300 \vskip\baselineskip     \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
    \begingroup     \begingroup
      \chapentryfonts       \chapentryfonts
      \tocentry{#1}{\dopageno{#2}}%       \tocentry{#1}{\dopageno{#2}}%
    \endgroup     \endgroup
    \nobreak\vskip .25\baselineskip     \nobreak\vskip .25\baselineskip plus.1\baselineskip
 }  }
   
 \def\dosecentry#1#2{\begingroup  \def\dosecentry#1#2{\begingroup
Line 2994  July\or August\or September\or October\o Line 3266  July\or August\or September\or October\o
 % can't do that in the \entry macro, since index entries might consist  % can't do that in the \entry macro, since index entries might consist
 % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)  % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
 %  %
   % \turnoffactive is for the sake of @" used for umlauts.
 \def\tocentry#1#2{\begingroup  \def\tocentry#1#2{\begingroup
   \hyphenpenalty = 10000    \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
   \entry{#1}{#2}%    \entry{\turnoffactive #1}{\turnoffactive #2}%
 \endgroup}  \endgroup}
   
 % Space between chapter (or whatever) number and the title.  % Space between chapter (or whatever) number and the title.
Line 3020  July\or August\or September\or October\o Line 3293  July\or August\or September\or October\o
 \newbox\pushcharbox    \newbox\bullbox  \newbox\pushcharbox    \newbox\bullbox
 \newbox\equivbox       \newbox\errorbox  \newbox\equivbox       \newbox\errorbox
   
 \let\ptexequiv = \equiv  
   
 %{\tentt  %{\tentt
 %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}  %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
 %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}  %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
Line 3032  July\or August\or September\or October\o Line 3303  July\or August\or September\or October\o
 %                                      depth .1ex\hfil}  %                                      depth .1ex\hfil}
 %}  %}
   
   % @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 \def\point{$\star$}  \def\point{$\star$}
   
 \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}  \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
 \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}  \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
 \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}  \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
   
 \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}  \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
   
 % Adapted from the TeXbook's \boxit.  % Adapted from the TeXbook's \boxit.
Line 3069  July\or August\or September\or October\o Line 3339  July\or August\or September\or October\o
 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
 \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie  \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
 \catcode `\%=14  \catcode `\%=14
 \catcode 43=12  \catcode 43=12 % plus
 \catcode`\"=12  \catcode`\"=12
 \catcode`\==12  \catcode`\==12
 \catcode`\|=12  \catcode`\|=12
Line 3077  July\or August\or September\or October\o Line 3347  July\or August\or September\or October\o
 \catcode`\>=12  \catcode`\>=12
 \escapechar=`\\  \escapechar=`\\
 %  %
   \let\,=\ptexcomma
 \let\~=\ptextilde  \let\~=\ptextilde
 \let\{=\ptexlbrace  \let\{=\ptexlbrace
 \let\}=\ptexrbrace  \let\}=\ptexrbrace
 \let\.=\ptexdot  \let\.=\ptexdot
 \let\*=\ptexstar  \let\*=\ptexstar
 \let\dots=\ptexdots  \let\dots=\ptexdots
   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}
   \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}
 \def\@{@}%  \def\@{@}%
 \let\bullet=\ptexbullet  \let\bullet=\ptexbullet
 \let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl  \let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext
 \let\L=\ptexL  
 %  %
 \let\Etex=\endgroup}  \let\Etex=\endgroup}
   
Line 3145  July\or August\or September\or October\o Line 3417  July\or August\or September\or October\o
 \def\cbl{{\circle\char'012\hskip -6pt}}  \def\cbl{{\circle\char'012\hskip -6pt}}
 \def\cbr{{\hskip 6pt\circle\char'011}}  \def\cbr{{\hskip 6pt\circle\char'011}}
 \def\carttop{\hbox to \cartouter{\hskip\lskip  \def\carttop{\hbox to \cartouter{\hskip\lskip
         \ctl\leaders\hrule height\circthick\hfil\ctr          \ctl\leaders\hrule height\circthick\hfil\ctr
         \hskip\rskip}}          \hskip\rskip}}
 \def\cartbot{\hbox to \cartouter{\hskip\lskip  \def\cartbot{\hbox to \cartouter{\hskip\lskip
         \cbl\leaders\hrule height\circthick\hfil\cbr          \cbl\leaders\hrule height\circthick\hfil\cbr
         \hskip\rskip}}          \hskip\rskip}}
 %  %
 \newskip\lskip\newskip\rskip  \newskip\lskip\newskip\rskip
   
 \long\def\cartouche{%  \long\def\cartouche{%
 \begingroup  \begingroup
         \lskip=\leftskip \rskip=\rightskip          \lskip=\leftskip \rskip=\rightskip
         \leftskip=0pt\rightskip=0pt %we want these *outside*.          \leftskip=0pt\rightskip=0pt %we want these *outside*.
         \cartinner=\hsize \advance\cartinner by-\lskip          \cartinner=\hsize \advance\cartinner by-\lskip
                           \advance\cartinner by-\rskip                            \advance\cartinner by-\rskip
         \cartouter=\hsize          \cartouter=\hsize
         \advance\cartouter by 18pt % allow for 3pt kerns on either          \advance\cartouter by 18pt % allow for 3pt kerns on either
 %                                    side, and for 6pt waste from  %                                    side, and for 6pt waste from
 %                                    each corner char  %                                    each corner char
         \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip          \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
         % Flag to tell @lisp, etc., not to narrow margin.          % Flag to tell @lisp, etc., not to narrow margin.
         \let\nonarrowing=\comment          \let\nonarrowing=\comment
         \vbox\bgroup          \vbox\bgroup
                 \baselineskip=0pt\parskip=0pt\lineskip=0pt                  \baselineskip=0pt\parskip=0pt\lineskip=0pt
                 \carttop                  \carttop
                 \hbox\bgroup                  \hbox\bgroup
                         \hskip\lskip                          \hskip\lskip
                         \vrule\kern3pt                          \vrule\kern3pt
                         \vbox\bgroup                          \vbox\bgroup
                                 \hsize=\cartinner                                  \hsize=\cartinner
                                 \kern3pt                                  \kern3pt
                                 \begingroup                                  \begingroup
                                         \baselineskip=\normbskip                                          \baselineskip=\normbskip
                                         \lineskip=\normlskip                                          \lineskip=\normlskip
                                         \parskip=\normpskip                                          \parskip=\normpskip
                                         \vskip -\parskip                                          \vskip -\parskip
 \def\Ecartouche{%  \def\Ecartouche{%
                                 \endgroup                                  \endgroup
                                 \kern3pt                                  \kern3pt
                         \egroup                          \egroup
                         \kern3pt\vrule                          \kern3pt\vrule
                         \hskip\rskip                          \hskip\rskip
                 \egroup                  \egroup
                 \cartbot                  \cartbot
         \egroup          \egroup
 \endgroup  \endgroup
 }}  }}
   
Line 3251  July\or August\or September\or October\o Line 3523  July\or August\or September\or October\o
   \let\Esmalllisp = \nonfillfinish    \let\Esmalllisp = \nonfillfinish
   \let\Esmallexample = \nonfillfinish    \let\Esmallexample = \nonfillfinish
   %    %
   % Smaller interline space and fonts for small examples.    % Smaller fonts for small examples.
   \setleading{10pt}%  
   \indexfonts \tt    \indexfonts \tt
   \rawbackslash % make \ output the \ character from the current font (tt)    \rawbackslash % make \ output the \ character from the current font (tt)
   \gobble    \gobble
Line 3341  July\or August\or September\or October\o Line 3612  July\or August\or September\or October\o
   
 \gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }  \gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
 \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
   % This is used to turn on special parens
   % but make & act ordinary (given that it's active).
   \gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
   
 % Definitions of (, ) and & used in args for functions.  % Definitions of (, ) and & used in args for functions.
 % This is the definition of ( outside of all parentheses.  % This is the definition of ( outside of all parentheses.
Line 3549  July\or August\or September\or October\o Line 3823  July\or August\or September\or October\o
 \def\deftypefunargs #1{%  \def\deftypefunargs #1{%
 % Expand, preventing hyphenation at `-' chars.  % Expand, preventing hyphenation at `-' chars.
 % Note that groups don't affect changes in \hyphenchar.  % Note that groups don't affect changes in \hyphenchar.
 \functionparens  % Use \boldbraxnoamp, not \functionparens, so that & is not special.
   \boldbraxnoamp
 \tclose{#1}% avoid \code because of side effects on active chars  \tclose{#1}% avoid \code because of side effects on active chars
 \interlinepenalty=10000  \interlinepenalty=10000
 \advance\rightskip by 0pt plus 1fil  \advance\rightskip by 0pt plus 1fil
Line 3776  July\or August\or September\or October\o Line 4051  July\or August\or September\or October\o
   
 \def\deftpx #1 {\errmessage{@deftpx in invalid context}}  \def\deftpx #1 {\errmessage{@deftpx in invalid context}}
   
   
 \message{cross reference,}  \message{cross reference,}
 % Define cross-reference macros  % Define cross-reference macros
 \newwrite \auxfile  \newwrite \auxfile
Line 3783  July\or August\or September\or October\o Line 4059  July\or August\or September\or October\o
 \newif\ifhavexrefs  % True if xref values are known.  \newif\ifhavexrefs  % True if xref values are known.
 \newif\ifwarnedxrefs  % True if we warned once that they aren't known.  \newif\ifwarnedxrefs  % True if we warned once that they aren't known.
   
   % @inforef is simple.
   \def\inforef #1{\inforefzzz #1,,,,**}
   \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
     node \samp{\ignorespaces#1{}}}
   
 % \setref{foo} defines a cross-reference point named foo.  % \setref{foo} defines a cross-reference point named foo.
   
 \def\setref#1{%  \def\setref#1{%
Line 3816  July\or August\or September\or October\o Line 4097  July\or August\or September\or October\o
   \setbox0=\hbox{\printednodename}%    \setbox0=\hbox{\printednodename}%
   \ifdim \wd0 = 0pt    \ifdim \wd0 = 0pt
     % No printed node name was explicitly given.      % No printed node name was explicitly given.
     \ifx\SETxref-automatic-section-title\relax %      \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
         % Use the node name inside the square brackets.
         \def\printednodename{\ignorespaces #1}%
       \else
       % Use the actual chapter/section title appear inside        % Use the actual chapter/section title appear inside
       % the square brackets.  Use the real section title if we have it.        % the square brackets.  Use the real section title if we have it.
       \ifdim \wd1>0pt%        \ifdim \wd1>0pt%
Line 3825  July\or August\or September\or October\o Line 4109  July\or August\or September\or October\o
       \else        \else
         \ifhavexrefs          \ifhavexrefs
           % We know the real title if we have the xref values.            % We know the real title if we have the xref values.
           \def\printednodename{\refx{#1-title}}%            \def\printednodename{\refx{#1-title}{}}%
         \else          \else
           % Otherwise just copy the Info node name.            % Otherwise just copy the Info node name.
           \def\printednodename{\ignorespaces #1}%            \def\printednodename{\ignorespaces #1}%
         \fi%          \fi%
       \fi        \fi
       \def\printednodename{#1-title}%  
     \else  
       % Use the node name inside the square brackets.  
       \def\printednodename{\ignorespaces #1}%  
     \fi      \fi
   \fi    \fi
   %    %
Line 4019  July\or August\or September\or October\o Line 4299  July\or August\or September\or October\o
 % The trailing space in the following definition for supereject is  % The trailing space in the following definition for supereject is
 % vital for proper filling; pages come out unaligned when you do a  % vital for proper filling; pages come out unaligned when you do a
 % pagealignmacro call if that space before the closing brace is  % pagealignmacro call if that space before the closing brace is
 % removed.  % removed. (Generally, numeric constants should always be followed by a
   % space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }  \def\supereject{\par\penalty -20000\footnoteno =0 }
   
 % @footnotestyle is meaningful for info output only..  % @footnotestyle is meaningful for info output only..
Line 4144  July\or August\or September\or October\o Line 4425  July\or August\or September\or October\o
   
 % Set some numeric style parameters, for 8.5 x 11 format.  % Set some numeric style parameters, for 8.5 x 11 format.
   
 %\hsize = 6.5in  \hsize = 6in
   \hoffset = .25in
 \newdimen\defaultparindent \defaultparindent = 15pt  \newdimen\defaultparindent \defaultparindent = 15pt
 \parindent = \defaultparindent  \parindent = \defaultparindent
 \parskip 18pt plus 1pt  \parskip 3pt plus 2pt minus 1pt
 \setleading{15pt}  \setleading{13.2pt}
 \advance\topskip by 1.2cm  \advance\topskip by 1.2cm
   
   \chapheadingskip = 15pt plus 4pt minus 2pt
   \secheadingskip = 12pt plus 3pt minus 2pt
   \subsecheadingskip = 9pt plus 2pt minus 2pt
   
 % Prevent underfull vbox error messages.  % Prevent underfull vbox error messages.
 \vbadness=10000  \vbadness=10000
   
Line 4173  July\or August\or September\or October\o Line 4459  July\or August\or September\or October\o
   
 % Use @smallbook to reset parameters for 7x9.5 format  (or else 7x9.25)  % Use @smallbook to reset parameters for 7x9.5 format  (or else 7x9.25)
 \def\smallbook{  \def\smallbook{
     \global\chapheadingskip = 15pt plus 4pt minus 2pt
 % These values for secheadingskip and subsecheadingskip are    \global\secheadingskip = 12pt plus 3pt minus 2pt
 % experiments.  RJC 7 Aug 1992    \global\subsecheadingskip = 9pt plus 2pt minus 2pt
 \global\secheadingskip = 17pt plus 6pt minus 3pt    %
 \global\subsecheadingskip = 14pt plus 6pt minus 3pt    \global\lispnarrowing = 0.3in
     \setleading{12pt}
 \global\lispnarrowing = 0.3in    \advance\topskip by -1cm
 \setleading{12pt}    \global\parskip 2pt plus 1pt
 \advance\topskip by -1cm    \global\hsize = 5in
 \global\parskip 3pt plus 1pt    \global\vsize=7.5in
 \global\hsize = 5in    \global\tolerance=700
 \global\vsize=7.5in    \global\hfuzz=1pt
 \global\tolerance=700    \global\contentsrightmargin=0pt
 \global\hfuzz=1pt    \global\deftypemargin=0pt
 \global\contentsrightmargin=0pt    \global\defbodyindent=.5cm
 \global\deftypemargin=0pt    %
 \global\defbodyindent=.5cm    \global\pagewidth=\hsize
     \global\pageheight=\vsize
 \global\pagewidth=\hsize    %
 \global\pageheight=\vsize    \global\let\smalllisp=\smalllispx
     \global\let\smallexample=\smalllispx
 \global\let\smalllisp=\smalllispx    \global\def\Esmallexample{\Esmalllisp}
 \global\let\smallexample=\smalllispx  
 \global\def\Esmallexample{\Esmalllisp}  
 }  }
   
 % Use @afourpaper to print on European A4 paper.  % Use @afourpaper to print on European A4 paper.
Line 4219  July\or August\or September\or October\o Line 4503  July\or August\or September\or October\o
 \global\pageheight=\vsize  \global\pageheight=\vsize
 }  }
   
   \bindingoffset=0pt
   \normaloffset=\hoffset
   \pagewidth=\hsize
   \pageheight=\vsize
   
 % Allow control of the text dimensions.  Parameters in order: textheight;  % Allow control of the text dimensions.  Parameters in order: textheight;
 % textwidth; \voffset; \hoffset (!); binding offset.  All require a dimension;  % textwidth; voffset; hoffset; binding offset; topskip.
   % All require a dimension;
 % header is additional; added length extends the bottom of the page.  % header is additional; added length extends the bottom of the page.
   
 \def\changepagesizes#1#2#3#4#5{  \def\changepagesizes#1#2#3#4#5#6{
  \global\vsize= #1   \global\vsize= #1
    \global\topskip= #6
  \advance\vsize by \topskip   \advance\vsize by \topskip
  \global\voffset= #3   \global\voffset= #3
  \global\hsize= #2   \global\hsize= #2
Line 4237  July\or August\or September\or October\o Line 4528  July\or August\or September\or October\o
  \global\normaloffset= #4   \global\normaloffset= #4
  \global\bindingoffset= #5}   \global\bindingoffset= #5}
   
 % This layout is compatible with Latex on A4 paper.  % A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin
   % 29mm, hence bottom margin 28mm, nominal side margin 3cm.
 \def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}}  \def\afourlatex
           {\global\tolerance=700
           \global\hfuzz=1pt
           \setleading{12pt}
           \global\parskip 15pt plus 1pt
           \advance\baselineskip by 1.6pt
           \changepagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}
           }
   
   % Use @afourwide to print on European A4 paper in wide format.
   \def\afourwide{\afourpaper
   \changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}}
   
 % Define macros to output various characters with catcode for normal text.  % Define macros to output various characters with catcode for normal text.
 \catcode`\"=\other  \catcode`\"=\other
Line 4288  July\or August\or September\or October\o Line 4590  July\or August\or September\or October\o
 \catcode`\_=\active  \catcode`\_=\active
 \def_{\ifusingtt\normalunderscore\_}  \def_{\ifusingtt\normalunderscore\_}
 % Subroutine for the previous macro.  % Subroutine for the previous macro.
 \def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}}  \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}}
   
 % \lvvmode is equivalent in function to \leavevmode.  
 % Using \leavevmode runs into trouble when written out to  
 % an index file due to the expansion of \leavevmode into ``\unhbox  
 % \voidb@x'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our  
 % magic tricks with @.  
 \def\lvvmode{\vbox to 0pt{}}  
   
 \catcode`\|=\active  \catcode`\|=\active
 \def|{{\tt \char '174}}  \def|{{\tt \char '174}}
Line 4314  July\or August\or September\or October\o Line 4609  July\or August\or September\or October\o
 {\catcode`\==\active  {\catcode`\==\active
 \global\def={{\tt \char 61}}}  \global\def={{\tt \char 61}}}
   
   \catcode`+=\active
   \catcode`\_=\active
   
   % If a .fmt file is being used, characters that might appear in a file
   % name cannot be active until we have parsed the command line.
   % So turn them off again, and have \everyjob (or @setfilename) turn them on.
   % \otherifyactive is called near the end of this file.
   \def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
   
 \catcode`\@=0  \catcode`\@=0
   
 % \rawbackslashxx output one backslash character in current font  % \rawbackslashxx output one backslash character in current font
Line 4356  July\or August\or September\or October\o Line 4660  July\or August\or September\or October\o
 @let>=@normalgreater  @let>=@normalgreater
 @let+=@normalplus}  @let+=@normalplus}
   
   % Make _ and + \other characters, temporarily.
   % This is canceled by @fixbackslash.
   @otherifyactive
   
 % If a .fmt file is being used, we don't want the `\input texinfo' to show up.  % If a .fmt file is being used, we don't want the `\input texinfo' to show up.
 % That is what \eatinput is for; after that, the `\' should revert to printing  % That is what \eatinput is for; after that, the `\' should revert to printing
 % a backslash.  % a backslash.
Line 4366  July\or August\or September\or October\o Line 4674  July\or August\or September\or October\o
 % On the other hand, perhaps the file did not have a `\input texinfo'. Then  % On the other hand, perhaps the file did not have a `\input texinfo'. Then
 % the first `\{ in the file would cause an error. This macro tries to fix  % the first `\{ in the file would cause an error. This macro tries to fix
 % that, assuming it is called before the first `\' could plausibly occur.  % that, assuming it is called before the first `\' could plausibly occur.
   % Also back turn on active characters that might appear in the input
   % file name, in case not using a pre-dumped format.
 %  %
 @gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi}  @gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi
     @catcode`+=@active @catcode`@_=@active}
   
 %% These look ok in all fonts, so just make them not special.  The @rm below  %% These look ok in all fonts, so just make them not special.  The @rm below
 %% makes sure that the current font starts out as the newly loaded cmr10  %% makes sure that the current font starts out as the newly loaded cmr10

Removed from v.1.3  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>