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

version 1.3, 2000/05/15 14:04:12 version 1.4, 2002/08/14 09:00:22
Line 3 Line 3
 % Load plain if necessary, i.e., if running under initex.  % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi  \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %  %
 \def\texinfoversion{1999-09-25.10}  \def\texinfoversion{2002-03-26.08}
 %  %
 % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99  % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
 % Free Software Foundation, Inc.  %               2000, 01, 02 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 30 Line 30
 % Please try the latest version of texinfo.tex before submitting bug  % Please try the latest version of texinfo.tex before submitting bug
 % reports; you can get the latest version from:  % reports; you can get the latest version from:
 %   ftp://ftp.gnu.org/gnu/texinfo.tex  %   ftp://ftp.gnu.org/gnu/texinfo.tex
 %   (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)  %     (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
 %   ftp://texinfo.org/tex/texinfo.tex  %   ftp://texinfo.org/texinfo/texinfo.tex
 %   ftp://us.ctan.org/macros/texinfo/texinfo.tex  %   ftp://tug.org/tex/texinfo.tex
 %   (and all CTAN mirrors, finger ctan@us.ctan.org for a list).  %     (and all CTAN mirrors, see http://www.ctan.org),
 %   /home/gd/gnu/doc/texinfo.tex on the GNU machines.  %   and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
   % 
 % The texinfo.tex in any given Texinfo distribution could well be out  % The texinfo.tex in any given Texinfo distribution could well be out
 % of date, so if that's what you're using, please check.  % of date, so if that's what you're using, please check.
 % Texinfo has a small home page at http://texinfo.org/.  % 
   % Texinfo has a small home page at http://texinfo.org/ and also
   % http://www.gnu.org/software/texinfo.
 %  %
 % Send bug reports to bug-texinfo@gnu.org.  Please include including a  % Send bug reports to bug-texinfo@gnu.org.  Please include including a
 % complete document in each bug report with which we can reproduce the  % complete document in each bug report with which we can reproduce the
Line 50 Line 53
 %   texindex foo.??  %   texindex foo.??
 %   tex foo.texi  %   tex foo.texi
 %   tex foo.texi  %   tex foo.texi
 %   dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.  %   dvips foo.dvi -o  # or whatever; this makes foo.ps.
 % The extra runs of TeX get the cross-reference information correct.  % The extra TeX runs get the cross-reference information correct.
 % Sometimes one run after texindex suffices, and sometimes you need more  % Sometimes one run after texindex suffices, and sometimes you need more
 % than two; texi2dvi does it as many times as necessary.  % than two; texi2dvi does it as many times as necessary.
 %  %
 % It is possible to adapt texinfo.tex for other languages.  You can get  % It is possible to adapt texinfo.tex for other languages.  You can get
 % the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.  % the existing language-specific files from the full Texinfo distribution.
   
 \message{Loading texinfo [version \texinfoversion]:}  \message{Loading texinfo [version \texinfoversion]:}
   
Line 170 Line 173
 }%  }%
 \fi  \fi
   
   % add check for \lastpenalty to plain's definitions.  If the last thing
   % we did was a \nobreak, we don't want to insert more space.
   % 
   \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
     \removelastskip\penalty-50\smallskip\fi\fi}
   \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
     \removelastskip\penalty-100\medskip\fi\fi}
   \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
     \removelastskip\penalty-200\bigskip\fi\fi}
   
 % For @cropmarks command.  % For @cropmarks command.
 % Do @cropmarks to get crop marks.  % Do @cropmarks to get crop marks.
 %  %
Line 214 Line 227
     \normalturnoffactive  % \ in index entries must not stay \, e.g., if      \normalturnoffactive  % \ in index entries must not stay \, e.g., if
                    % the page break happens to be in the middle of an example.                     % the page break happens to be in the middle of an example.
     \shipout\vbox{%      \shipout\vbox{%
         % Do this early so pdf references go to the beginning of the page.
         \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
         %
       \ifcropmarks \vbox to \outervsize\bgroup        \ifcropmarks \vbox to \outervsize\bgroup
         \hsize = \outerhsize          \hsize = \outerhsize
         \vskip-\topandbottommargin          \vskip-\topandbottommargin
Line 243 Line 259
         \unvbox\footlinebox          \unvbox\footlinebox
       \fi        \fi
       %        %
       \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi  
       %  
       \ifcropmarks        \ifcropmarks
           \egroup % end of \vbox\bgroup            \egroup % end of \vbox\bgroup
         \hfil\egroup % end of (centering) \line\bgroup          \hfil\egroup % end of (centering) \line\bgroup
Line 430 Line 444
   % environments.  --karl, 6may93    % environments.  --karl, 6may93
   %{\advance \baselineskip by -\singlespaceskip    %{\advance \baselineskip by -\singlespaceskip
   %\kern \baselineskip}%    %\kern \baselineskip}%
   \setleading \singlespaceskip    \setleading\singlespaceskip
 }  }
   
 %% Simple single-character @ commands  %% Simple single-character @ commands
Line 687  where each line of input produces a line Line 701  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.  % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
   % paragraph.  For more general purposes, use the \margin insertion
 \def\inmargin#1{%  % class.  WHICH is `l' or `r'.
 \strut\vadjust{\nobreak\kern-\strutdepth  %
   \vtop to \strutdepth{\baselineskip\strutdepth\vss  
   \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}  
 \newskip\inmarginspacing \inmarginspacing=1cm  \newskip\inmarginspacing \inmarginspacing=1cm
 \def\strutdepth{\dp\strutbox}  \def\strutdepth{\dp\strutbox}
   %
 %\hbox{{\rm#1}}\hfil\break}}  \def\doinmargin#1#2{\strut\vadjust{%
     \nobreak
     \kern-\strutdepth
     \vtop to \strutdepth{%
       \baselineskip=\strutdepth
       \vss
       % if you have multiple lines of stuff to put here, you'll need to
       % make the vbox yourself of the appropriate size.
       \ifx#1l%
         \llap{\ignorespaces #2\hskip\inmarginspacing}%
       \else
         \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
       \fi
       \null
     }%
   }}
   \def\inleftmargin{\doinmargin l}
   \def\inrightmargin{\doinmargin r}
   %
   % @inmargin{TEXT [, RIGHT-TEXT]}
   % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
   % else use TEXT for both).
   % 
   \def\inmargin#1{\parseinmargin #1,,\finish}
   \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
     \setbox0 = \hbox{\ignorespaces #2}% 
     \ifdim\wd0 > 0pt
       \def\lefttext{#1}%  have both texts
       \def\righttext{#2}%
     \else
       \def\lefttext{#1}%  have only one text
       \def\righttext{#1}%
     \fi
     %
     \ifodd\pageno
       \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
     \else
       \def\temp{\inleftmargin\lefttext}%
     \fi
     \temp
   }
   
 % @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).  % Allow normal characters that  we make active in the argument (a file name).
Line 784  where each line of input produces a line Line 836  where each line of input produces a line
 %  %
 \def\asis#1{#1}  \def\asis#1{#1}
   
 % @math means output in math mode.  % @math outputs its argument in math mode.
 % We don't use $'s directly in the definition of \math because control  % We don't use $'s directly in the definition of \math because we need
 % sequences like \math are expanded when the toc file is written.  Then,  % to set catcodes according to plain TeX first, to allow for subscripts,
 % we read the toc file back, the $'s will be normal characters (as they  % superscripts, special math chars, etc.
 % should be, according to the definition of Texinfo).  So we must use a  % 
 % control sequence to switch into and out of math mode.  % @math does not do math typesetting in section titles, index
   % entries, and other such contexts where the catcodes are set before
   % @math gets a chance to work.  This could perhaps be fixed, but for now
   % at least we can have real math in the main text, where it's needed most.
   %
   \let\implicitmath = $%$ font-lock fix
   %
   % One complication: _ usually means subscripts, but it could also mean
   % an actual _ character, as in @math{@var{some_variable} + 1}.  So make
   % _ within @math be active (mathcode "8000), and distinguish by seeing
   % if the current family is \slfam, which is what @var uses.
   % 
   {\catcode95 = \active  % 95 = _
   \gdef\mathunderscore{%
     \catcode95=\active
     \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
   }}
 %  %
 % This isn't quite enough for @math to work properly in indices, but it  % Another complication: we want \\ (and @\) to output a \ character.
 % seems unlikely it will ever be needed there.  % FYI, plain.tex uses \\ as a temporary control sequence (why?), but
   % this is not advertised and we don't care.  Texinfo does not
   % otherwise define @\.
   % 
   % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
   \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
 %  %
 \let\implicitmath = $  \def\math{%
 \def\math#1{\implicitmath #1\implicitmath}    \tex
     \mathcode`\_="8000 \mathunderscore
     \let\\ = \mathbackslash
     \implicitmath\finishmath}
   \def\finishmath#1{#1\implicitmath\Etex}
   
 % @bullet and @minus need the same treatment as @math, just above.  % @bullet and @minus need the same treatment as @math, just above.
 \def\bullet{\implicitmath\ptexbullet\implicitmath}  \def\bullet{\implicitmath\ptexbullet\implicitmath}
Line 878  where each line of input produces a line Line 955  where each line of input produces a line
   \def\dopdfimage#1#2#3{%    \def\dopdfimage#1#2#3{%
     \def\imagewidth{#2}%      \def\imagewidth{#2}%
     \def\imageheight{#3}%      \def\imageheight{#3}%
       % without \immediate, pdftex seg faults when the same image is
       % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
     \ifnum\pdftexversion < 14      \ifnum\pdftexversion < 14
       \pdfimage        \immediate\pdfimage
     \else      \else
       \pdfximage        \immediate\pdfximage
     \fi      \fi
       \ifx\empty\imagewidth\else width \imagewidth \fi        \ifx\empty\imagewidth\else width \imagewidth \fi
       \ifx\empty\imageheight\else height \imageheight \fi        \ifx\empty\imageheight\else height \imageheight \fi
       {#1.pdf}%        \ifnum\pdftexversion<13
            #1.pdf%
          \else
            {#1.pdf}%
          \fi
     \ifnum\pdftexversion < 14 \else      \ifnum\pdftexversion < 14 \else
       \pdfrefximage \pdflastximage        \pdfrefximage \pdflastximage
     \fi}      \fi}
   \def\pdfmkdest#1{\pdfdest name{#1@} xyz}    \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
   \def\pdfmkpgn#1{#1@}    \def\pdfmkpgn#1{#1}
   \let\linkcolor = \Cyan    \let\linkcolor = \Blue  % was Cyan, but that seems light?
   \def\endlink{\Black\pdfendlink}    \def\endlink{\Black\pdfendlink}
   % Adding outlines to PDF; macros for calculating structure of outlines    % Adding outlines to PDF; macros for calculating structure of outlines
   % come from Petr Olsak    % come from Petr Olsak
Line 902  where each line of input produces a line Line 985  where each line of input produces a line
     \expandafter\xdef\csname#1\endcsname{\the\tempnum}}      \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
   \def\pdfmakeoutlines{{%    \def\pdfmakeoutlines{{%
     \openin 1 \jobname.toc      \openin 1 \jobname.toc
     \ifeof 1\else\bgroup      \ifeof 1\else\begingroup
       \closein 1         \closein 1 
       \indexnofonts        \indexnofonts
       \def\tt{}        \def\tt{}
       % thanh's hack / proper braces in bookmarks          \let\_ = \normalunderscore
         % Thanh's hack / proper braces in bookmarks  
       \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace        \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
       \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace        \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
       %        %
       \def\chapentry ##1##2##3{}        \def\chapentry ##1##2##3{}
         \let\appendixentry = \chapentry
       \def\unnumbchapentry ##1##2{}        \def\unnumbchapentry ##1##2{}
       \def\secentry ##1##2##3##4{\advancenumber{chap##2}}        \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
       \def\unnumbsecentry ##1##2{}        \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}}
       \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}        \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
       \def\unnumbsubsecentry ##1##2{}        \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}}
       \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}        \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
       \def\unnumbsubsubsecentry ##1##2{}        \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}}
       \input \jobname.toc        \input \jobname.toc
       \def\chapentry ##1##2##3{%        \def\chapentry ##1##2##3{%
         \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}          \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
         \let\appendixentry = \chapentry
       \def\unnumbchapentry ##1##2{%        \def\unnumbchapentry ##1##2{%
         \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
       \def\secentry ##1##2##3##4{%        \def\secentry ##1##2##3##4{%
         \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}          \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
       \def\unnumbsecentry ##1##2{%        \def\unnumbsecentry ##1##2##3{%
         \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##3}}{##1}}
       \def\subsecentry ##1##2##3##4##5{%        \def\subsecentry ##1##2##3##4##5{%
         \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}          \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
       \def\unnumbsubsecentry ##1##2{%        \def\unnumbsubsecentry ##1##2##3##4{%
         \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##4}}{##1}}
       \def\subsubsecentry ##1##2##3##4##5##6{%        \def\subsubsecentry ##1##2##3##4##5##6{%
         \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
       \def\unnumbsubsubsecentry ##1##2{%        \def\unnumbsubsubsecentry ##1##2##3##4##5{%
         \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##5}}{##1}}
       \input \jobname.toc        \input \jobname.toc
     \egroup\fi      \endgroup\fi
   }}    }}
   \def\makelinks #1,{%    \def\makelinks #1,{%
     \def\params{#1}\def\E{END}%      \def\params{#1}\def\E{END}%
Line 986  where each line of input produces a line Line 1072  where each line of input produces a line
   \def\pdfurl#1{%    \def\pdfurl#1{%
     \begingroup      \begingroup
       \normalturnoffactive\def\@{@}%        \normalturnoffactive\def\@{@}%
         \let\value=\expandablevalue
       \leavevmode\Red        \leavevmode\Red
       \startlink attr{/Border [0 0 0]}%        \startlink attr{/Border [0 0 0]}%
         user{/Subtype /Link /A << /S /URI /URI (#1) >>}%          user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
Line 1013  where each line of input produces a line Line 1100  where each line of input produces a line
   \def\makelink{\addtokens{\toksB}%    \def\makelink{\addtokens{\toksB}%
     {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}      {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
   \def\pdflink#1{%    \def\pdflink#1{%
     \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}      \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
     \linkcolor #1\endlink}      \linkcolor #1\endlink}
   \def\mkpgn#1{#1@}   
   \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}    \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
 \fi % \ifx\pdfoutput  \fi % \ifx\pdfoutput
   
Line 1032  where each line of input produces a line Line 1118  where each line of input produces a line
 % We don't need math for this one.  % We don't need math for this one.
 \def\ttsl{\tenttsl}  \def\ttsl{\tenttsl}
   
 % Use Computer Modern fonts at \magstephalf (11pt).  % Default leading.
 \newcount\mainmagstep  \newdimen\textleading  \textleading = 13.2pt
 \mainmagstep=\magstephalf  
   % Set the baselineskip to #1, and the lineskip and strut size
   % correspondingly.  There is no deep meaning behind these magic numbers
   % used as factors; they just match (closely enough) what Knuth defined.
   %
   \def\lineskipfactor{.08333}
   \def\strutheightpercent{.70833}
   \def\strutdepthpercent {.29167}
   %
   \def\setleading#1{%
     \normalbaselineskip = #1\relax
     \normallineskip = \lineskipfactor\normalbaselineskip
     \normalbaselines
     \setbox\strutbox =\hbox{%
       \vrule width0pt height\strutheightpercent\baselineskip
                       depth \strutdepthpercent \baselineskip
     }%
   }
   
 % 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').
Line 1064  where each line of input produces a line Line 1167  where each line of input produces a line
 \def\scshape{csc}  \def\scshape{csc}
 \def\scbshape{csc}  \def\scbshape{csc}
   
   \newcount\mainmagstep
 \ifx\bigger\relax  \ifx\bigger\relax
 \let\mainmagstep=\magstep1    % not really supported.
 \setfont\textrm\rmshape{12}{1000}    \let\mainmagstep=\magstep1
 \setfont\texttt\ttshape{12}{1000}    \setfont\textrm\rmshape{12}{1000}
     \setfont\texttt\ttshape{12}{1000}
 \else  \else
 \setfont\textrm\rmshape{10}{\mainmagstep}    \mainmagstep=\magstephalf
 \setfont\texttt\ttshape{10}{\mainmagstep}    \setfont\textrm\rmshape{10}{\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
Line 1101  where each line of input produces a line Line 1207  where each line of input produces a line
 \font\smalli=cmmi9  \font\smalli=cmmi9
 \font\smallsy=cmsy9  \font\smallsy=cmsy9
   
   % Fonts for small examples (8pt).
   \setfont\smallerrm\rmshape{8}{1000}
   \setfont\smallertt\ttshape{8}{1000}
   \setfont\smallerbf\bfshape{10}{800}
   \setfont\smallerit\itshape{8}{1000}
   \setfont\smallersl\slshape{8}{1000}
   \setfont\smallersf\sfshape{8}{1000}
   \setfont\smallersc\scshape{10}{800}
   \setfont\smallerttsl\ttslshape{10}{800}
   \font\smalleri=cmmi8
   \font\smallersy=cmsy8
   
 % Fonts for title page:  % Fonts for title page:
 \setfont\titlerm\rmbshape{12}{\magstep3}  \setfont\titlerm\rmbshape{12}{\magstep3}
 \setfont\titleit\itbshape{10}{\magstep4}  \setfont\titleit\itbshape{10}{\magstep4}
Line 1138  where each line of input produces a line Line 1256  where each line of input produces a line
 \font\seci=cmmi12 scaled \magstep1  \font\seci=cmmi12 scaled \magstep1
 \font\secsy=cmsy10 scaled \magstep2  \font\secsy=cmsy10 scaled \magstep2
   
 % \setfont\ssecrm\bxshape{10}{\magstep1}    % This size an font looked bad.  
 % \setfont\ssecit\itshape{10}{\magstep1}    % The letters were too crowded.  
 % \setfont\ssecsl\slshape{10}{\magstep1}  
 % \setfont\ssectt\ttshape{10}{\magstep1}  
 % \setfont\ssecsf\sfshape{10}{\magstep1}  
   
 %\setfont\ssecrm\bfshape{10}{1315}      % Note the use of cmb rather than cmbx.  
 %\setfont\ssecit\itshape{10}{1315}      % Also, the size is a little larger than  
 %\setfont\ssecsl\slshape{10}{1315}      % being scaled magstep1.  
 %\setfont\ssectt\ttshape{10}{1315}  
 %\setfont\ssecsf\sfshape{10}{1315}  
   
 %\let\ssecbf=\ssecrm  
   
 % Subsection fonts (13.15pt).  % Subsection fonts (13.15pt).
 \setfont\ssecrm\rmbshape{12}{\magstephalf}  \setfont\ssecrm\rmbshape{12}{\magstephalf}
 \setfont\ssecit\itbshape{10}{1315}  \setfont\ssecit\itbshape{10}{1315}
Line 1168  where each line of input produces a line Line 1272  where each line of input produces a line
   
 % 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,
 % we have to define the \textfont of the standard families.  Since  % we have to define the \textfont of the standard families.  Since
 % texinfo doesn't allow for producing subscripts and superscripts, we  % texinfo doesn't allow for producing subscripts and superscripts except
 % don't bother to reset \scriptfont and \scriptscriptfont (which would  % in the main text, we don't bother to reset \scriptfont and
 % also require loading a lot more fonts).  % \scriptscriptfont (which would also require loading a lot more fonts).
 %  %
 \def\resetmathfonts{%  \def\resetmathfonts{%
   \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy    \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
   \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf    \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
   \textfont\ttfam = \tentt \textfont\sffam = \tensf    \textfont\ttfam=\tentt \textfont\sffam=\tensf
 }  }
   
   
 % 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
Line 1189  where each line of input produces a line Line 1292  where each line of input produces a line
   \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\tenttsl=\textttsl    \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
   \resetmathfonts}    \resetmathfonts \setleading{\textleading}}
 \def\titlefonts{%  \def\titlefonts{%
   \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl    \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
   \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc    \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
Line 1218  where each line of input produces a line Line 1321  where each line of input produces a line
   \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc    \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
   \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy    \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
   \let\tenttsl=\smallttsl    \let\tenttsl=\smallttsl
   \resetmathfonts \setleading{11pt}}    \resetmathfonts \setleading{10.5pt}}
   \def\smallerfonts{%
     \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
     \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
     \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
     \let\tenttsl=\smallerttsl
     \resetmathfonts \setleading{9.5pt}}
   \let\smallexamplefonts = \smallerfonts
   
 % 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 1332  where each line of input produces a line Line 1442  where each line of input produces a line
   
 \def\realdash{-}  \def\realdash{-}
 \def\codedash{-\discretionary{}{}{}}  \def\codedash{-\discretionary{}{}{}}
 \def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}  \def\codeunder{%
     % this is all so @math{@code{var_name}+1} can work.  In math mode, _
     % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
     % will therefore expand the active definition of _, which is us
     % (inside @code that is), therefore an endless loop.
     \ifusingtt{\ifmmode
                  \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
                \else\normalunderscore \fi
                \discretionary{}{}{}}%
               {\_}%
   }
 \def\codex #1{\tclose{#1}\endgroup}  \def\codex #1{\tclose{#1}\endgroup}
   
 %\let\exp=\tclose  %Was temporary  
   
 % @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.
   
Line 1521  where each line of input produces a line Line 1639  where each line of input produces a line
    \oldpage     \oldpage
    \endgroup     \endgroup
    %     %
      % Need this before the \...aftertitlepage checks so that if they are
      % in effect the toc pages will come out with page numbers.
      \HEADINGSon
      %
    % If they want short, they certainly want long too.     % If they want short, they certainly want long too.
    \ifsetshortcontentsaftertitlepage     \ifsetshortcontentsaftertitlepage
      \shortcontents       \shortcontents
Line 1534  where each line of input produces a line Line 1656  where each line of input produces a line
      \global\let\contents = \relax       \global\let\contents = \relax
      \global\let\shortcontents = \relax       \global\let\shortcontents = \relax
    \fi     \fi
    %  
    \ifpdf \pdfmakepagedesttrue \fi  
    %  
    \HEADINGSon  
 }  }
   
 \def\finishtitlepage{%  \def\finishtitlepage{%
Line 1670  where each line of input produces a line Line 1788  where each line of input produces a line
 }  }
   
 % Subroutines used in generating headings  % Subroutines used in generating headings
 % Produces Day Month Year style of output.  % This produces Day Month Year style of output.
   % Only define if not already defined, in case a txi-??.tex file has set
   % up a different format (e.g., txi-cs.tex does this).
   \ifx\today\undefined
 \def\today{%  \def\today{%
   \number\day\space    \number\day\space
   \ifcase\month    \ifcase\month
Line 1679  where each line of input produces a line Line 1800  where each line of input produces a line
   \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec    \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
   \fi    \fi
   \space\number\year}    \space\number\year}
   \fi
   
 % @settitle line...  specifies the title of the document, for headings.  % @settitle line...  specifies the title of the document, for headings.
 % It generates no output of its own.  % It generates no output of its own.
Line 2291  width0pt\relax} \fi Line 2413  width0pt\relax} \fi
   \let\item = \relax    \let\item = \relax
 }  }
   
 % Ignore @ignore ... @end ignore.  % Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu,
   % @direntry, and @documentdescription.
 %  %
 \def\ignore{\doignore{ignore}}  \def\ignore{\doignore{ignore}}
   
 % Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.  
 %  
 \def\ifinfo{\doignore{ifinfo}}  
 \def\ifhtml{\doignore{ifhtml}}  \def\ifhtml{\doignore{ifhtml}}
   \def\ifinfo{\doignore{ifinfo}}
   \def\ifplaintext{\doignore{ifplaintext}}
 \def\ifnottex{\doignore{ifnottex}}  \def\ifnottex{\doignore{ifnottex}}
 \def\html{\doignore{html}}  \def\html{\doignore{html}}
 \def\menu{\doignore{menu}}  \def\menu{\doignore{menu}}
 \def\direntry{\doignore{direntry}}  \def\direntry{\doignore{direntry}}
   \def\documentdescription{\doignore{documentdescription}}
   \def\documentdescriptionword{documentdescription}
   
 % @dircategory CATEGORY  -- specify a category of the dir file  % @dircategory CATEGORY  -- specify a category of the dir file
 % which this file should belong to.  Ignore this in TeX.  % which this file should belong to.  Ignore this in TeX.
Line 2329  width0pt\relax} \fi Line 2452  width0pt\relax} \fi
   % We must not have @c interpreted as a control sequence.    % We must not have @c interpreted as a control sequence.
   \catcode`\@ = 12    \catcode`\@ = 12
   %    %
   % Make the letter c a comment character so that the rest of the line    \def\ignoreword{#1}%
   % will be ignored. This way, the document can have (for example)    \ifx\ignoreword\documentdescriptionword
   %   @c @end ifinfo      % The c kludge breaks documentdescription, since
   % and the @end ifinfo will be properly ignored.      % `documentdescription' contains a `c'.  Means not everything will
   % (We've just changed @ to catcode 12.)      % be ignored inside @documentdescription, but oh well...
   \catcode`\c = 14    \else
       % Make the letter c a comment character so that the rest of the line
       % will be ignored. This way, the document can have (for example)
       %   @c @end ifinfo
       % and the @end ifinfo will be properly ignored.
       % (We've just changed @ to catcode 12.)
       \catcode`\c = 14
     \fi
   %    %
   % And now expand that command.    % And now expand the command defined above.
   \doignoretext    \doignoretext
 }  }
   
Line 2408  width0pt\relax} \fi Line 2538  width0pt\relax} \fi
     \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont      \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
     \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont      \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
     \let\tensf=\nullfont      \let\tensf=\nullfont
     % Similarly for index fonts (mostly for their use in smallexample).      % Similarly for index fonts.
     \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont      \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
     \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont      \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
     \let\smallsf=\nullfont      \let\smallsf=\nullfont
       % Similarly for smallexample fonts.
       \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
       \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
       \let\smallersf=\nullfont
     %      %
     % Don't complain when characters are missing from the fonts.      % Don't complain when characters are missing from the fonts.
     \tracinglostchars = 0      \tracinglostchars = 0
Line 2523  width0pt\relax} \fi Line 2657  width0pt\relax} \fi
 \def\ifclearfail{\nestedignore{ifclear}}  \def\ifclearfail{\nestedignore{ifclear}}
 \defineunmatchedend{ifclear}  \defineunmatchedend{ifclear}
   
 % @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text  % @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
 % following, through the first @end iftex (etc.).  Make `@end iftex'  % read the text following, through the first @end iftex (etc.).  Make
 % (etc.) valid only after an @iftex.  % `@end iftex' (etc.) valid only after an @iftex.
 %  %
 \def\iftex{\conditionalsucceed{iftex}}  \def\iftex{\conditionalsucceed{iftex}}
 \def\ifnothtml{\conditionalsucceed{ifnothtml}}  \def\ifnothtml{\conditionalsucceed{ifnothtml}}
 \def\ifnotinfo{\conditionalsucceed{ifnotinfo}}  \def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
   \def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
 \defineunmatchedend{iftex}  \defineunmatchedend{iftex}
 \defineunmatchedend{ifnothtml}  \defineunmatchedend{ifnothtml}
 \defineunmatchedend{ifnotinfo}  \defineunmatchedend{ifnotinfo}
   \defineunmatchedend{ifnotplaintext}
   
 % We can't just want to start a group at @iftex (for example) and end it  % We can't just want to start a group at @iftex (etc.) and end it at
 % at @end iftex, since then @set commands inside the conditional have no  % @end iftex, since then @set commands inside the conditional have no
 % effect (they'd get reverted at the end of the group).  So we must  % effect (they'd get reverted at the end of the group).  So we must
 % define \Eiftex to redefine itself to be its previous value.  (We can't  % define \Eiftex to redefine itself to be its previous value.  (We can't
 % just define it to fail again with an ``unmatched end'' error, since  % just define it to fail again with an ``unmatched end'' error, since
Line 2587  width0pt\relax} \fi Line 2723  width0pt\relax} \fi
 }  }
   
 % @defindex foo  ==  \newindex{foo}  % @defindex foo  ==  \newindex{foo}
   %
 \def\defindex{\parsearg\newindex}  \def\defindex{\parsearg\newindex}
   
 % Define @defcodeindex, like @defindex except put all entries in @code.  % Define @defcodeindex, like @defindex except put all entries in @code.
   %
   \def\defcodeindex{\parsearg\newcodeindex}
   %
 \def\newcodeindex#1{%  \def\newcodeindex#1{%
   \iflinks    \iflinks
     \expandafter\newwrite \csname#1indfile\endcsname      \expandafter\newwrite \csname#1indfile\endcsname
     \openout \csname#1indfile\endcsname \jobname.#1      \openout \csname#1indfile\endcsname \jobname.#1
   \fi    \fi
   \expandafter\xdef\csname#1index\endcsname{%    \expandafter\xdef\csname#1index\endcsname{%
     \noexpand\docodeindex{#1}}      \noexpand\docodeindex{#1}}%
 }  }
   
 \def\defcodeindex{\parsearg\newcodeindex}  
   
 % @synindex foo bar    makes index foo feed into index bar.  % @synindex foo bar    makes index foo feed into index bar.
 % Do this instead of @defindex foo if you don't want it as a separate index.  % Do this instead of @defindex foo if you don't want it as a separate index.
 % The \closeout helps reduce unnecessary open files; the limit on the  % 
 % Acorn RISC OS is a mere 16 files.  
 \def\synindex#1 #2 {%  
   \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname  
   \expandafter\closeout\csname#1indfile\endcsname  
   \expandafter\let\csname#1indfile\endcsname=\synindexfoo  
   \expandafter\xdef\csname#1index\endcsname{% define \xxxindex  
     \noexpand\doindex{#2}}%  
 }  
   
 % @syncodeindex foo bar   similar, but put all entries made for index foo  % @syncodeindex foo bar   similar, but put all entries made for index foo
 % inside @code.  % inside @code.
 \def\syncodeindex#1 #2 {%  % 
   \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname  \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
   \expandafter\closeout\csname#1indfile\endcsname  \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
   \expandafter\let\csname#1indfile\endcsname=\synindexfoo  
   \expandafter\xdef\csname#1index\endcsname{% define \xxxindex  % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
     \noexpand\docodeindex{#2}}%  % #3 the target index (bar).
   \def\dosynindex#1#2#3{%
     % Only do \closeout if we haven't already done it, else we'll end up
     % closing the target index.
     \expandafter \ifx\csname donesynindex#2\endcsname \undefined
       % The \closeout helps reduce unnecessary open files; the limit on the
       % Acorn RISC OS is a mere 16 files.
       \expandafter\closeout\csname#2indfile\endcsname
       \expandafter\let\csname\donesynindex#2\endcsname = 1
     \fi
     % redefine \fooindfile:
     \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
     \expandafter\let\csname#2indfile\endcsname=\temp
     % redefine \fooindex:
     \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
 }  }
   
 % Define \doindex, the driver for all \fooindex macros.  % Define \doindex, the driver for all \fooindex macros.
Line 2642  width0pt\relax} \fi Line 2784  width0pt\relax} \fi
 \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}  \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
 \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}  \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
   
   % 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\indexdummies{%  \def\indexdummies{%
 \def\ { }%  \def\ { }%
   \def\@{@}% change to @@ when we switch to @ as escape char in aux files.
   % Need these in case \tex is in effect and \{ is a \delimiter again.
   % But can't use \lbracecmd and \rbracecmd because texindex assumes
   % braces and backslashes are used only as delimiters.  
   \let\{ = \mylbrace
   \let\} = \myrbrace
   \def\_{{\realbackslash _}}%
   \normalturnoffactive
   %
 % Take care of the plain tex accent commands.  % Take care of the plain tex accent commands.
   \def\,##1{\realbackslash ,{##1}}%
 \def\"{\realbackslash "}%  \def\"{\realbackslash "}%
 \def\`{\realbackslash `}%  \def\`{\realbackslash `}%
 \def\'{\realbackslash '}%  \def\'{\realbackslash '}%
Line 2657  width0pt\relax} \fi Line 2813  width0pt\relax} \fi
 \def\u{\realbackslash u}%  \def\u{\realbackslash u}%
 \def\v{\realbackslash v}%  \def\v{\realbackslash v}%
 \def\H{\realbackslash H}%  \def\H{\realbackslash H}%
   \def\dotless##1{\realbackslash dotless {##1}}%
 % Take care of the plain tex special European modified letters.  % Take care of the plain tex special European modified letters.
 \def\oe{\realbackslash oe}%  
 \def\ae{\realbackslash ae}%  
 \def\aa{\realbackslash aa}%  
 \def\OE{\realbackslash OE}%  
 \def\AE{\realbackslash AE}%  
 \def\AA{\realbackslash AA}%  \def\AA{\realbackslash AA}%
 \def\o{\realbackslash o}%  \def\AE{\realbackslash AE}%
   \def\L{\realbackslash L}%
   \def\OE{\realbackslash OE}%
 \def\O{\realbackslash O}%  \def\O{\realbackslash O}%
   \def\aa{\realbackslash aa}%
   \def\ae{\realbackslash ae}%
 \def\l{\realbackslash l}%  \def\l{\realbackslash l}%
 \def\L{\realbackslash L}%  \def\oe{\realbackslash oe}%
   \def\o{\realbackslash o}%
 \def\ss{\realbackslash ss}%  \def\ss{\realbackslash ss}%
 % 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  % Although these internals commands shouldn't show up, sometimes they do.
 % laboriously list every single command here.)  
 \def\@{@}% will be @@ when we switch to @ as escape char.  
 % Need these in case \tex is in effect and \{ is a \delimiter again.  
 % But can't use \lbracecmd and \rbracecmd because texindex assumes  
 % braces and backslashes are used only as delimiters.    
 \let\{ = \mylbrace  
 \let\} = \myrbrace  
 \def\_{{\realbackslash _}}%  
 \def\w{\realbackslash w }%  
 \def\bf{\realbackslash bf }%  \def\bf{\realbackslash bf }%
   \def\gtr{\realbackslash gtr}%
   \def\hat{\realbackslash hat}%
   \def\less{\realbackslash less}%
 %\def\rm{\realbackslash rm }%  %\def\rm{\realbackslash rm }%
 \def\sl{\realbackslash sl }%  
 \def\sf{\realbackslash sf}%  \def\sf{\realbackslash sf}%
   \def\sl{\realbackslash sl }%
   \def\tclose##1{\realbackslash tclose {##1}}%
 \def\tt{\realbackslash tt}%  \def\tt{\realbackslash tt}%
 \def\gtr{\realbackslash gtr}%  %
 \def\less{\realbackslash less}%  \def\b##1{\realbackslash b {##1}}%
 \def\hat{\realbackslash hat}%  \def\i##1{\realbackslash i {##1}}%
   \def\sc##1{\realbackslash sc {##1}}%
   \def\t##1{\realbackslash t {##1}}%
   \def\r##1{\realbackslash r {##1}}%
   %
 \def\TeX{\realbackslash TeX}%  \def\TeX{\realbackslash TeX}%
 \def\dots{\realbackslash dots }%  \def\acronym##1{\realbackslash acronym {##1}}%
 \def\result{\realbackslash result}%  \def\cite##1{\realbackslash cite {##1}}%
 \def\equiv{\realbackslash equiv}%  
 \def\expansion{\realbackslash expansion}%  
 \def\print{\realbackslash print}%  
 \def\error{\realbackslash error}%  
 \def\point{\realbackslash point}%  
 \def\copyright{\realbackslash copyright}%  
 \def\tclose##1{\realbackslash tclose {##1}}%  
 \def\code##1{\realbackslash code {##1}}%  \def\code##1{\realbackslash code {##1}}%
 \def\uref##1{\realbackslash uref {##1}}%  
 \def\url##1{\realbackslash url {##1}}%  
 \def\env##1{\realbackslash env {##1}}%  
 \def\command##1{\realbackslash command {##1}}%  \def\command##1{\realbackslash command {##1}}%
   \def\dfn##1{\realbackslash dfn {##1}}%
   \def\dots{\realbackslash dots }%
   \def\emph##1{\realbackslash emph {##1}}%
   \def\env##1{\realbackslash env {##1}}%
   \def\file##1{\realbackslash file {##1}}%
   \def\kbd##1{\realbackslash kbd {##1}}%
   \def\key##1{\realbackslash key {##1}}%
   \def\math##1{\realbackslash math {##1}}%
 \def\option##1{\realbackslash option {##1}}%  \def\option##1{\realbackslash option {##1}}%
 \def\dotless##1{\realbackslash dotless {##1}}%  
 \def\samp##1{\realbackslash samp {##1}}%  \def\samp##1{\realbackslash samp {##1}}%
 \def\,##1{\realbackslash ,{##1}}%  \def\strong##1{\realbackslash strong {##1}}%
 \def\t##1{\realbackslash t {##1}}%  \def\uref##1{\realbackslash uref {##1}}%
 \def\r##1{\realbackslash r {##1}}%  \def\url##1{\realbackslash url {##1}}%
 \def\i##1{\realbackslash i {##1}}%  
 \def\b##1{\realbackslash b {##1}}%  
 \def\sc##1{\realbackslash sc {##1}}%  
 \def\cite##1{\realbackslash cite {##1}}%  
 \def\key##1{\realbackslash key {##1}}%  
 \def\file##1{\realbackslash file {##1}}%  
 \def\var##1{\realbackslash var {##1}}%  \def\var##1{\realbackslash var {##1}}%
 \def\kbd##1{\realbackslash kbd {##1}}%  \def\w{\realbackslash w }%
 \def\dfn##1{\realbackslash dfn {##1}}%  %
 \def\emph##1{\realbackslash emph {##1}}%  % These math commands don't seem likely to be used in index entries.
 \def\acronym##1{\realbackslash acronym {##1}}%  \def\copyright{\realbackslash copyright}%
   \def\equiv{\realbackslash equiv}%
   \def\error{\realbackslash error}%
   \def\expansion{\realbackslash expansion}%
   \def\point{\realbackslash point}%
   \def\print{\realbackslash print}%
   \def\result{\realbackslash result}%
 %  %
 % Handle some cases of @value -- where the variable name does not  % Handle some cases of @value -- where the variable name does not
 % contain - or _, and the value does not contain any  % contain - or _, and the value does not contain any
Line 2733  width0pt\relax} \fi Line 2886  width0pt\relax} \fi
   
 % If an index command is used in an @example environment, any spaces  % If an index command is used in an @example environment, any spaces
 % therein should become regular spaces in the raw index file, not the  % therein should become regular spaces in the raw index file, not the
 % expansion of \tie (\\leavevmode \penalty \@M \ ).  % expansion of \tie (\leavevmode \penalty \@M \ ).
 {\obeyspaces  {\obeyspaces
  \gdef\unsepspaces{\obeyspaces\let =\space}}   \gdef\unsepspaces{\obeyspaces\let =\space}}
   
Line 2744  width0pt\relax} \fi Line 2897  width0pt\relax} \fi
 \def\indexdummydots{...}  \def\indexdummydots{...}
   
 \def\indexnofonts{%  \def\indexnofonts{%
 % Just ignore accents.  \def\@{@}%
   % how to handle braces?
   \def\_{\normalunderscore}%
   %
 \let\,=\indexdummyfont  \let\,=\indexdummyfont
 \let\"=\indexdummyfont  \let\"=\indexdummyfont
 \let\`=\indexdummyfont  \let\`=\indexdummyfont
Line 2760  width0pt\relax} \fi Line 2916  width0pt\relax} \fi
 \let\H=\indexdummyfont  \let\H=\indexdummyfont
 \let\dotless=\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\ae{ae}%  
 \def\aa{aa}%  
 \def\OE{OE}%  
 \def\AE{AE}%  
 \def\AA{AA}%  \def\AA{AA}%
 \def\o{o}%  \def\AE{AE}%
   \def\L{L}%
   \def\OE{OE}%
 \def\O{O}%  \def\O{O}%
   \def\aa{aa}%
   \def\ae{ae}%
 \def\l{l}%  \def\l{l}%
 \def\L{L}%  \def\oe{oe}%
   \def\o{o}%
 \def\ss{ss}%  \def\ss{ss}%
 \let\w=\indexdummyfont  %
 \let\t=\indexdummyfont  % Don't no-op \tt, since it isn't a user-level command
 \let\r=\indexdummyfont  % and is used in the definitions of the active chars like <, >, |, etc.
 \let\i=\indexdummyfont  % Likewise with the other plain tex font commands.
   %\let\tt=\indexdummyfont
   %
 \let\b=\indexdummyfont  \let\b=\indexdummyfont
 \let\emph=\indexdummyfont  \let\i=\indexdummyfont
 \let\strong=\indexdummyfont  \let\r=\indexdummyfont
 \let\cite=\indexdummyfont  
 \let\sc=\indexdummyfont  \let\sc=\indexdummyfont
 %Don't no-op \tt, since it isn't a user-level command  \let\t=\indexdummyfont
 % and is used in the definitions of the active chars like <, >, |...  %
 %\let\tt=\indexdummyfont  \let\TeX=\indexdummytex
 \let\tclose=\indexdummyfont  
 \let\code=\indexdummyfont  
 \let\url=\indexdummyfont  
 \let\uref=\indexdummyfont  
 \let\env=\indexdummyfont  
 \let\acronym=\indexdummyfont  \let\acronym=\indexdummyfont
   \let\cite=\indexdummyfont
   \let\code=\indexdummyfont
 \let\command=\indexdummyfont  \let\command=\indexdummyfont
 \let\option=\indexdummyfont  \let\dfn=\indexdummyfont
   \let\dots=\indexdummydots
   \let\emph=\indexdummyfont
   \let\env=\indexdummyfont
 \let\file=\indexdummyfont  \let\file=\indexdummyfont
 \let\samp=\indexdummyfont  
 \let\kbd=\indexdummyfont  \let\kbd=\indexdummyfont
 \let\key=\indexdummyfont  \let\key=\indexdummyfont
   \let\math=\indexdummyfont
   \let\option=\indexdummyfont
   \let\samp=\indexdummyfont
   \let\strong=\indexdummyfont
   \let\uref=\indexdummyfont
   \let\url=\indexdummyfont
 \let\var=\indexdummyfont  \let\var=\indexdummyfont
 \let\TeX=\indexdummytex  \let\w=\indexdummyfont
 \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 2854  width0pt\relax} \fi Line 3014  width0pt\relax} \fi
         % Now the real index entry with the fonts.          % Now the real index entry with the fonts.
         \toks0 = {#2}%          \toks0 = {#2}%
         %          %
         % If third (subentry) arg is present, add it to the index          % If the third (subentry) arg is present, add it to the index
         % string.  And include a space.          % line to write.
         \ifx\thirdarg\emptymacro \else          \ifx\thirdarg\emptymacro \else
           \toks0 = \expandafter{\the\toks0 \space #3}%            \toks0 = \expandafter{\the\toks0{#3}}%
         \fi          \fi
         %          %
         % Set up the complete index entry, with both the sort key          % Set up the complete index entry, with both the sort key and
         % and the original text, including any font commands.  We write          % the original text, including any font commands.  We write
         % three arguments to \entry to the .?? file, texindex reduces to          % three arguments to \entry to the .?? file (four in the
         % two when writing the .??s sorted result.          % subentry case), texindex reduces to two when writing the .??s
           % sorted result.
         \edef\temp{%          \edef\temp{%
           \write\csname#1indfile\endcsname{%            \write\csname#1indfile\endcsname{%
             \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%              \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
Line 3085  width0pt\relax} \fi Line 3246  width0pt\relax} \fi
 \def\primary #1{\line{#1\hfil}}  \def\primary #1{\line{#1\hfil}}
   
 \newskip\secondaryindent \secondaryindent=0.5cm  \newskip\secondaryindent \secondaryindent=0.5cm
   \def\secondary#1#2{{%
 \def\secondary #1#2{    \parfillskip=0in
 {\parfillskip=0in \parskip=0in    \parskip=0in
 \hangindent =1in \hangafter=1    \hangindent=1in
 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par    \hangafter=1
     \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
     \ifpdf
       \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
     \else
       #2
     \fi
     \par
 }}  }}
   
 % Define two-column mode, which we use to typeset indexes.  % Define two-column mode, which we use to typeset indexes.
Line 3149  width0pt\relax} \fi Line 3317  width0pt\relax} \fi
   %    %
   % 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.)
   \advance\vsize by -\ht\partialpage  
   \vsize = 2\vsize    \vsize = 2\vsize
 }  }
   
Line 3163  width0pt\relax} \fi Line 3330  width0pt\relax} \fi
   % previous page.    % previous page.
   \dimen@ = \vsize    \dimen@ = \vsize
   \divide\dimen@ by 2    \divide\dimen@ by 2
     \advance\dimen@ by -\ht\partialpage
   %    %
   % box0 will be the left-hand column, box2 the right.    % box0 will be the left-hand column, box2 the right.
   \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@    \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
Line 3170  width0pt\relax} \fi Line 3338  width0pt\relax} \fi
   \unvbox255    \unvbox255
   \penalty\outputpenalty    \penalty\outputpenalty
 }  }
   %
   % Re-output the contents of the output page -- any previous material,
   % followed by the two boxes we just split, in box0 and box2.
 \def\pagesofar{%  \def\pagesofar{%
   % Re-output the contents of the output page -- any previous material,  
   % followed by the two boxes we just split, in box0 and box2.  
   \unvbox\partialpage    \unvbox\partialpage
   %    %
   \hsize = \doublecolumnhsize    \hsize = \doublecolumnhsize
   \wd0=\hsize \wd2=\hsize    \wd0=\hsize \wd2=\hsize
   \hbox to\pagewidth{\box0\hfil\box2}%    \hbox to\pagewidth{\box0\hfil\box2}%
 }  }
   % 
   % All done with double columns.
 \def\enddoublecolumns{%  \def\enddoublecolumns{%
   \output = {%    \output = {%
     % Split the last of the double-column material.  Leave it on the      % Split the last of the double-column material.  Leave it on the
Line 3203  width0pt\relax} \fi Line 3374  width0pt\relax} \fi
   % \endgroup where \vsize got restored).    % \endgroup where \vsize got restored).
   \pagegoal = \vsize    \pagegoal = \vsize
 }  }
   %
   % Called at the end of the double column material.
 \def\balancecolumns{%  \def\balancecolumns{%
   % Called at the end of the double column material.  
   \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.    \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
   \dimen@ = \ht0    \dimen@ = \ht0
   \advance\dimen@ by \topskip    \advance\dimen@ by \topskip
Line 3388  width0pt\relax} \fi Line 3560  width0pt\relax} \fi
 \gdef\thischaptername{#1}%  \gdef\thischaptername{#1}%
 \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%  \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
 \toks0 = {#1}%  \toks0 = {#1}%
 \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%  \edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}%
                        {\putwordAppendix{} \appendixletter}}}%                         {\appendixletter}}}%
 \temp  \temp
 \appendixnoderef  \appendixnoderef
 \global\let\section = \appendixsec  \global\let\section = \appendixsec
Line 3466  width0pt\relax} \fi Line 3638  width0pt\relax} \fi
 \def\unnumberedseczzz #1{%  \def\unnumberedseczzz #1{%
 \plainsecheading {#1}\gdef\thissection{#1}%  \plainsecheading {#1}\gdef\thissection{#1}%
 \toks0 = {#1}%  \toks0 = {#1}%
 \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry%
     {\the\toks0}{\the\chapno}}}%
 \temp  \temp
 \unnumbnoderef  \unnumbnoderef
 \nobreak  \nobreak
Line 3505  width0pt\relax} \fi Line 3678  width0pt\relax} \fi
 \plainsubsecheading {#1}\gdef\thissection{#1}%  \plainsubsecheading {#1}\gdef\thissection{#1}%
 \toks0 = {#1}%  \toks0 = {#1}%
 \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
                                     {\the\toks0}}}%    {\the\toks0}{\the\chapno}{\the\secno}}}%
 \temp  \temp
 \unnumbnoderef  \unnumbnoderef
 \nobreak  \nobreak
Line 3546  width0pt\relax} \fi Line 3719  width0pt\relax} \fi
 \plainsubsubsecheading {#1}\gdef\thissection{#1}%  \plainsubsubsecheading {#1}\gdef\thissection{#1}%
 \toks0 = {#1}%  \toks0 = {#1}%
 \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
                                     {\the\toks0}}}%    {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}%
 \temp  \temp
 \unnumbnoderef  \unnumbnoderef
 \nobreak  \nobreak
Line 3758  width0pt\relax} \fi Line 3931  width0pt\relax} \fi
 % argument, which will end up as the last argument to the \...entry macro.  % argument, which will end up as the last argument to the \...entry macro.
 %  %
 % We open the .toc file here instead of at @setfilename or any other  % We open the .toc file here instead of at @setfilename or any other
 % given time so that @contents can be put in the document anywhere.  % fixed time so that @contents can be put in the document anywhere.
 %  %
 \newif\iftocfileopened  \newif\iftocfileopened
 \def\writetocentry#1{%  \def\writetocentry#1{%
Line 3767  width0pt\relax} \fi Line 3940  width0pt\relax} \fi
     \global\tocfileopenedtrue      \global\tocfileopenedtrue
   \fi    \fi
   \iflinks \write\tocfile{#1{\folio}}\fi    \iflinks \write\tocfile{#1{\folio}}\fi
     %
     % Tell \shipout to create a page destination if we're doing pdf, which
     % will be the target of the links in the table of contents.  We can't
     % just do it on every page because the title pages are numbered 1 and
     % 2 (the page numbers aren't printed), and so are the first two pages
     % of the document.  Thus, we'd have two destinations named `1', and
     % two named `2'.
     \ifpdf \pdfmakepagedesttrue \fi
 }  }
   
 \newskip\contentsrightmargin \contentsrightmargin=1in  \newskip\contentsrightmargin \contentsrightmargin=1in
Line 3822  width0pt\relax} \fi Line 4003  width0pt\relax} \fi
    \startcontents{\putwordShortTOC}%     \startcontents{\putwordShortTOC}%
       %        %
       \let\chapentry = \shortchapentry        \let\chapentry = \shortchapentry
         \let\appendixentry = \shortappendixentry
       \let\unnumbchapentry = \shortunnumberedentry        \let\unnumbchapentry = \shortunnumberedentry
       % We want a true roman here for the page numbers.        % We want a true roman here for the page numbers.
       \secfonts        \secfonts
Line 3830  width0pt\relax} \fi Line 4012  width0pt\relax} \fi
       \hyphenpenalty = 10000        \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##3{}
       \def\subsecentry ##1##2##3##4##5{}        \def\subsecentry ##1##2##3##4##5{}
       \def\unnumbsubsecentry ##1##2{}        \def\unnumbsubsecentry ##1##2##3##4{}
       \def\subsubsecentry ##1##2##3##4##5##6{}        \def\subsubsecentry ##1##2##3##4##5##6{}
       \def\unnumbsubsubsecentry ##1##2{}        \def\unnumbsubsubsecentry ##1##2##3##4##5{}
       \openin 1 \jobname.toc        \openin 1 \jobname.toc
       \ifeof 1 \else        \ifeof 1 \else
         \closein 1          \closein 1
Line 3857  width0pt\relax} \fi Line 4039  width0pt\relax} \fi
 % The last argument is the page number.  % The last argument is the page number.
 % The arguments in between are the chapter number, section number, ...  % The arguments in between are the chapter number, section number, ...
   
 % Chapter-level things, for both the long and short contents.  % Chapters, in the main contents.
 \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}  \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
   %
 % See comments in \dochapentry re vbox and related settings  % Chapters, in the short toc.
   % See comments in \dochapentry re vbox and related settings.
 \def\shortchapentry#1#2#3{%  \def\shortchapentry#1#2#3{%
   \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%    \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
 }  }
   
   % Appendices, in the main contents.
   \def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}}
   %
   % Appendices, in the short toc.
   \let\shortappendixentry = \shortchapentry
   
 % Typeset the label for a chapter or appendix for the short contents.  % Typeset the label for a chapter or appendix for the short contents.
 % The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.  % The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter.
 % We could simplify the code here by writing out an \appendixentry  % We could simplify the code here by writing out an \appendixentry
 % command in the toc file for appendices, instead of using \chapentry  % command in the toc file for appendices, instead of using \chapentry
 % for both, but it doesn't seem worth it.  % for both, but it doesn't seem worth it.
Line 3874  width0pt\relax} \fi Line 4063  width0pt\relax} \fi
 \newdimen\shortappendixwidth  \newdimen\shortappendixwidth
 %  %
 \def\shortchaplabel#1{%  \def\shortchaplabel#1{%
   % Compute width of word "Appendix", may change with language.    % This space should be enough, since a single number is .5em, and the
   \setbox0 = \hbox{\shortcontrm \putwordAppendix}%  
   \shortappendixwidth = \wd0  
   %  
   % We typeset #1 in a box of constant width, regardless of the text of  
   % #1, so the chapter titles will come out aligned.  
   \setbox0 = \hbox{#1}%  
   \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi  
   %  
   % 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.
     % But use \hss just in case.
   % (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 by \shortchapentry above.)    % the label; that gets put in by \shortchapentry above.)
   \advance\dimen0 by 1.1em    \dimen0 = 1em
   \hbox to \dimen0{#1\hfil}%    \hbox to \dimen0{#1\hss}%
 }  }
   
   % Unnumbered chapters.
 \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}  \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
 \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}  \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
   
 % Sections.  % Sections.
 \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}  \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
 \def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}  \def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}}
   
 % Subsections.  % Subsections.
 \def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}  \def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
 \def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}  \def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
   
 % And subsubsections.  % And subsubsections.
 \def\subsubsecentry#1#2#3#4#5#6{%  \def\subsubsecentry#1#2#3#4#5#6{%
   \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#3#4#5{\dosubsubsecentry{#1}{#5}}
   
 % 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
Line 3946  width0pt\relax} \fi Line 4128  width0pt\relax} \fi
 \def\tocentry#1#2{\begingroup  \def\tocentry#1#2{\begingroup
   \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks    \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
   % Do not use \turnoffactive in these arguments.  Since the toc is    % Do not use \turnoffactive in these arguments.  Since the toc is
   % typeset in cmr, so characters such as _ would come out wrong; we    % typeset in cmr, characters such as _ would come out wrong; we
   % have to do the usual translation tricks.    % have to do the usual translation tricks.
   \entry{#1}{#2}%    \entry{#1}{#2}%
 \endgroup}  \endgroup}
Line 3966  width0pt\relax} \fi Line 4148  width0pt\relax} \fi
 \message{environments,}  \message{environments,}
 % @foo ... @end foo.  % @foo ... @end foo.
   
   % @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
   % 
 % Since these characters are used in examples, it should be an even number of  % Since these characters are used in examples, it should be an even number of
 % \tt widths. Each \tt character is 1en, so two makes it 1em.  % \tt widths. Each \tt character is 1en, so two makes it 1em.
 % Furthermore, these definitions must come after we define our fonts.  %
 \newbox\dblarrowbox    \newbox\longdblarrowbox  
 \newbox\pushcharbox    \newbox\bullbox  
 \newbox\equivbox       \newbox\errorbox  
   
 %{\tentt  
 %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}  
 %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}  
 %\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}  
 %\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}  
 % Adapted from the manmac format (p.420 of TeXbook)  
 %\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex  
 %                                      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}}
   
   % The @error{} command.
 % Adapted from the TeXbook's \boxit.  % Adapted from the TeXbook's \boxit.
   % 
   \newbox\errorbox
   %
 {\tentt \global\dimen0 = 3em}% Width of the box.  {\tentt \global\dimen0 = 3em}% Width of the box.
 \dimen2 = .55pt % Thickness of rules  \dimen2 = .55pt % Thickness of rules
 % The text. (`r' is open on the right, `e' somewhat less so on the left.)  % The text. (`r' is open on the right, `e' somewhat less so on the left.)
 \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}  \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
   %
 \global\setbox\errorbox=\hbox to \dimen0{\hfil  \global\setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.     \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
    \advance\hsize by -2\dimen2 % Rules.     \advance\hsize by -2\dimen2 % Rules.
Line 4006  width0pt\relax} \fi Line 4179  width0pt\relax} \fi
          \kern3pt\vrule width\dimen2}% Space to right.           \kern3pt\vrule width\dimen2}% Space to right.
       \hrule height\dimen2}        \hrule height\dimen2}
     \hfil}      \hfil}
   %
 % The @error{} command.  
 \def\error{\leavevmode\lower.7ex\copy\errorbox}  \def\error{\leavevmode\lower.7ex\copy\errorbox}
   
 % @tex ... @end tex    escapes into raw Tex temporarily.  % @tex ... @end tex    escapes into raw Tex temporarily.
Line 4047  width0pt\relax} \fi Line 4219  width0pt\relax} \fi
   \def\@{@}%    \def\@{@}%
 \let\Etex=\endgroup}  \let\Etex=\endgroup}
   
 % Define @lisp ... @endlisp.  % Define @lisp ... @end lisp.
 % @lisp does a \begingroup so it can rebind things,  % @lisp does a \begingroup so it can rebind things,
 % including the definition of @endlisp (which normally is erroneous).  % including the definition of @end lisp (which normally is erroneous).
   
 % Amount to narrow the margins by for @lisp.  % Amount to narrow the margins by for @lisp.
 \newskip\lispnarrowing \lispnarrowing=0.4in  \newskip\lispnarrowing \lispnarrowing=0.4in
Line 4080  width0pt\relax} \fi Line 4252  width0pt\relax} \fi
 % is reset to zero; thus the \afterenvbreak inserts no space -- but the  % is reset to zero; thus the \afterenvbreak inserts no space -- but the
 % start of the next paragraph will insert \parskip  % start of the next paragraph will insert \parskip
 %  %
 \def\aboveenvbreak{{\advance\envskipamount by \parskip  \def\aboveenvbreak{{%
 \endgraf \ifdim\lastskip<\envskipamount    \ifnum\lastpenalty < 10000
 \removelastskip \penalty-50 \vskip\envskipamount \fi}}      \advance\envskipamount by \parskip
       \endgraf
       \ifdim\lastskip<\envskipamount
         \removelastskip
         \penalty-50
         \vskip\envskipamount
       \fi
     \fi
   }}
   
 \let\afterenvbreak = \aboveenvbreak  \let\afterenvbreak = \aboveenvbreak
   
Line 4214  width0pt\relax} \fi Line 4394  width0pt\relax} \fi
 \def\smalllispx{\begingroup  \def\smalllispx{\begingroup
   \def\Esmalllisp{\nonfillfinish\endgroup}%    \def\Esmalllisp{\nonfillfinish\endgroup}%
   \def\Esmallexample{\nonfillfinish\endgroup}%    \def\Esmallexample{\nonfillfinish\endgroup}%
   \smallfonts    \smallexamplefonts
   \lisp    \lisp
 }  }
   
Line 4225  width0pt\relax} \fi Line 4405  width0pt\relax} \fi
   \let\Edisplay = \nonfillfinish    \let\Edisplay = \nonfillfinish
   \gobble    \gobble
 }  }
   %
 % @smalldisplay (when @smallbook): @display plus smaller fonts.  % @smalldisplay (when @smallbook): @display plus smaller fonts.
 %  %
 \def\smalldisplayx{\begingroup  \def\smalldisplayx{\begingroup
   \def\Esmalldisplay{\nonfillfinish\endgroup}%    \def\Esmalldisplay{\nonfillfinish\endgroup}%
   \smallfonts \rm    \smallexamplefonts \rm
   \display    \display
 }  }
   
Line 4242  width0pt\relax} \fi Line 4422  width0pt\relax} \fi
   \let\Eformat = \nonfillfinish    \let\Eformat = \nonfillfinish
   \gobble    \gobble
 }  }
   %
 % @smallformat (when @smallbook): @format plus smaller fonts.  % @smallformat (when @smallbook): @format plus smaller fonts.
 %  %
 \def\smallformatx{\begingroup  \def\smallformatx{\begingroup
   \def\Esmallformat{\nonfillfinish\endgroup}%    \def\Esmallformat{\nonfillfinish\endgroup}%
   \smallfonts \rm    \smallexamplefonts \rm
   \format    \format
 }  }
   
Line 4265  width0pt\relax} \fi Line 4445  width0pt\relax} \fi
   \gobble    \gobble
 }  }
   
   
 % @quotation does normal linebreaking (hence we can't use \nonfillstart)  % @quotation does normal linebreaking (hence we can't use \nonfillstart)
 % and narrows the margins.  % and narrows the margins.
 %  %
Line 4287  width0pt\relax} \fi Line 4468  width0pt\relax} \fi
 }  }
   
   
   % LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
   % If we want to allow any <char> as delimiter, 
   % we need the curly braces so that makeinfo sees the @verb command, eg:
   % `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
   %
   % [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
   %
   % [Knuth] p. 344; only we need to do '@' too
   \def\dospecials{%
     \do\ \do\\\do\@\do\{\do\}\do\$\do\&%
     \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
   %
   % [Knuth] p. 380
   \def\uncatcodespecials{%
     \def\do##1{\catcode`##1=12}\dospecials}
   %
   % [Knuth] pp. 380,381,391
   % Disable Spanish ligatures ?` and !` of \tt font
   \begingroup
     \catcode`\`=\active\gdef`{\relax\lq}
   \endgroup
   %
   % Setup for the @verb command.
   %
   % Eight spaces for a tab
   \begingroup
     \catcode`\^^I=\active
     \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
   \endgroup
   %
   \def\setupverb{%
     \tt  % easiest (and conventionally used) font for verbatim
     \def\par{\leavevmode\endgraf}%
     \catcode`\`=\active
     \tabeightspaces
     % Respect line breaks,
     % print special symbols as themselves, and
     % make each space count
     % must do in this order:
     \obeylines \uncatcodespecials \sepspaces
   }
   
   % Setup for the @verbatim environment
   %
   % Real tab expansion
   \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
   %
   \def\starttabbox{\setbox0=\hbox\bgroup}
   \begingroup
     \catcode`\^^I=\active
     \gdef\tabexpand{%
       \catcode`\^^I=\active
       \def^^I{\leavevmode\egroup
         \dimen0=\wd0 % the width so far, or since the previous tab
         \divide\dimen0 by\tabw
         \multiply\dimen0 by\tabw % compute previous multiple of \tabw
         \advance\dimen0 by\tabw  % advance to next multiple of \tabw
         \wd0=\dimen0 \box0 \starttabbox
       }%
     }
   \endgroup
   \def\setupverbatim{%
     % Easiest (and conventionally used) font for verbatim
     \tt
     \def\par{\leavevmode\egroup\box0\endgraf}%
     \catcode`\`=\active
     \tabexpand
     % Respect line breaks,
     % print special symbols as themselves, and
     % make each space count
     % must do in this order:
     \obeylines \uncatcodespecials \sepspaces
     \everypar{\starttabbox}%
   }
   
   % Do the @verb magic: verbatim text is quoted by unique 
   % delimiter characters.  Before first delimiter expect a 
   % right brace, after last delimiter expect closing brace:
   %
   %    \def\doverb'{'<char>#1<char>'}'{#1}
   %
   % [Knuth] p. 382; only eat outer {}
   \begingroup
     \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12
     \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
   \endgroup
   %
   \def\verb{\begingroup\setupverb\doverb}
   %
   %
   % Do the @verbatim magic: define the macro \doverbatim so that
   % the (first) argument ends when '@end verbatim' is reached, ie:
   %
   %     \def\doverbatim#1@end verbatim{#1}
   %
   % For Texinfo it's a lot easier than for LaTeX, 
   % because texinfo's \verbatim doesn't stop at '\end{verbatim}':
   % we need not redefine '\', '{' and '}'
   %
   % Inspired by LaTeX's verbatim command set [latex.ltx]
   %% Include LaTeX hack for completeness -- never know
   %% \begingroup
   %% \catcode`|=0 \catcode`[=1
   %% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active
   %% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
   %% #1|endgroup|def|Everbatim[]|end[verbatim]]
   %% |endgroup
   \begingroup
     \catcode`\ =\active
     \gdef\doverbatim#1@end verbatim{#1\end{verbatim}}
   \endgroup
   %
   \def\verbatim{%
     \def\Everbatim{\nonfillfinish\endgroup}%
     \begingroup
       \nonfillstart
       \advance\leftskip by -\defbodyindent
       \begingroup\setupverbatim\doverbatim
   }
   
   % @verbatiminclude FILE - insert text of file in verbatim environment.
   %
   % Allow normal characters that we make active in the argument (a file name).
   \def\verbatiminclude{%
     \begingroup
       \catcode`\\=12
       \catcode`~=12
       \catcode`^=12
       \catcode`_=12
       \catcode`|=12
       \catcode`<=12
       \catcode`>=12
       \catcode`+=12
       \parsearg\doverbatiminclude
   }
   \def\setupverbatiminclude{%
     \begingroup
       \nonfillstart
       \advance\leftskip by -\defbodyindent
       \begingroup\setupverbatim
   }
   %
   \def\doverbatiminclude#1{%
        % Restore active chars for included file.
     \endgroup
     \begingroup
     \def\thisfile{#1}%
     \expandafter\expandafter\setupverbatiminclude\input\thisfile
     \endgroup\nonfillfinish\endgroup
   }
   
   % @copying ... @end copying.
   % Save the text away for @insertcopying later.
   % 
   \newbox\copyingbox
   %
   \def\copying{\begingroup
     \parindent = 0pt  % looks wrong on title page
     \def\Ecopying{\egroup\endgroup}%
     \global\setbox\copyingbox = \vbox\bgroup
   }
   
   % @insertcopying.
   % 
   \def\insertcopying{\unvcopy\copyingbox}
   
   
 \message{defuns,}  \message{defuns,}
 % @defun etc.  % @defun etc.
   
Line 4614  width0pt\relax} \fi Line 4962  width0pt\relax} \fi
 % #1 is the data type, #2 the name, #3 the args.  % #1 is the data type, #2 the name, #3 the args.
 \def\deftypefunheaderx #1#2 #3\relax{%  \def\deftypefunheaderx #1#2 #3\relax{%
 \doind {fn}{\code{#2}}% Make entry in function index  \doind {fn}{\code{#2}}% Make entry in function index
 \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%  \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
 \deftypefunargs {#3}\endgroup %  \deftypefunargs {#3}\endgroup %
 \catcode 61=\other % Turn off change made in \defparsebody  \catcode 61=\other % Turn off change made in \defparsebody
 }  }
Line 4623  width0pt\relax} \fi Line 4971  width0pt\relax} \fi
   
 \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}  \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
   
 % \defheaderxcond#1\relax$$$  % \defheaderxcond#1\relax$.$
 % puts #1 in @code, followed by a space, but does nothing if #1 is null.  % puts #1 in @code, followed by a space, but does nothing if #1 is null.
 \def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}  \def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
   
 % #1 is the classification.  #2 is the data type.  #3 is the name and args.  % #1 is the classification.  #2 is the data type.  #3 is the name and args.
 \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}  \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
Line 4635  width0pt\relax} \fi Line 4983  width0pt\relax} \fi
 \begingroup  \begingroup
 \normalparens % notably, turn off `&' magic, which prevents  \normalparens % notably, turn off `&' magic, which prevents
 %               at least some C++ text from working  %               at least some C++ text from working
 \defname {\defheaderxcond#2\relax$$$#3}{#1}%  \defname {\defheaderxcond#2\relax$.$#3}{#1}%
 \deftypefunargs {#4}\endgroup %  \deftypefunargs {#4}\endgroup %
 \catcode 61=\other % Turn off change made in \defparsebody  \catcode 61=\other % Turn off change made in \defparsebody
 }  }
Line 4681  width0pt\relax} \fi Line 5029  width0pt\relax} \fi
 \def\deftypeopheader#1#2#3#4{%  \def\deftypeopheader#1#2#3#4{%
   \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
   \begingroup    \begingroup
     \defname{\defheaderxcond#2\relax$$$#3}      \defname{\defheaderxcond#2\relax$.$#3}
             {\deftypeopcategory\ \putwordon\ \code{#1}}%              {\deftypeopcategory\ \putwordon\ \code{#1}}%
     \deftypefunargs{#4}%      \deftypefunargs{#4}%
   \endgroup    \endgroup
Line 4696  width0pt\relax} \fi Line 5044  width0pt\relax} \fi
 \def\deftypemethodheader#1#2#3#4{%  \def\deftypemethodheader#1#2#3#4{%
   \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
   \begingroup    \begingroup
     \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%      \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
     \deftypefunargs{#4}%      \deftypefunargs{#4}%
   \endgroup    \endgroup
 }  }
Line 4710  width0pt\relax} \fi Line 5058  width0pt\relax} \fi
 \def\deftypeivarheader#1#2#3{%  \def\deftypeivarheader#1#2#3{%
   \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index    \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
   \begingroup    \begingroup
     \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%      \defname{\defheaderxcond#2\relax$.$#3}
               {\putwordInstanceVariableof\ \code{#1}}%
     \defvarargs{#3}%      \defvarargs{#3}%
   \endgroup    \endgroup
 }  }
Line 4792  width0pt\relax} \fi Line 5141  width0pt\relax} \fi
 % is actually part of the data type, which should not be put into the index.  % is actually part of the data type, which should not be put into the index.
 \def\deftypevarheader #1#2{%  \def\deftypevarheader #1#2{%
 \dovarind#2 \relax% Make entry in variables index  \dovarind#2 \relax% Make entry in variables index
 \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%  \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
 \interlinepenalty=10000  \interlinepenalty=10000
 \endgraf\nobreak\vskip -\parskip\nobreak  \endgraf\nobreak\vskip -\parskip\nobreak
 \endgroup}  \endgroup}
Line 4803  width0pt\relax} \fi Line 5152  width0pt\relax} \fi
 \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}  \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
   
 \def\deftypevrheader #1#2#3{\dovarind#3 \relax%  \def\deftypevrheader #1#2#3{\dovarind#3 \relax%
 \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}  \begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
 \interlinepenalty=10000  \interlinepenalty=10000
 \endgraf\nobreak\vskip -\parskip\nobreak  \endgraf\nobreak\vskip -\parskip\nobreak
 \endgroup}  \endgroup}
Line 4963  width0pt\relax} \fi Line 5312  width0pt\relax} \fi
      \message{Warning: redefining \the\macname}%       \message{Warning: redefining \the\macname}%
   \else    \else
      \expandafter\ifx\csname \the\macname\endcsname \relax       \expandafter\ifx\csname \the\macname\endcsname \relax
      \else \errmessage{The name \the\macname\space is reserved}\fi       \else \errmessage{Macro name \the\macname\space already defined}\fi
      \global\cslet{macsave.\the\macname}{\the\macname}%       \global\cslet{macsave.\the\macname}{\the\macname}%
      \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%       \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
      % Add the macroname to \macrolist       % Add the macroname to \macrolist
Line 5244  width0pt\relax} \fi Line 5593  width0pt\relax} \fi
   \ifpdf    \ifpdf
     \leavevmode      \leavevmode
     \getfilename{#4}%      \getfilename{#4}%
     \ifnum\filenamelength>0      {\normalturnoffactive
       \startlink attr{/Border [0 0 0]}%       \ifnum\filenamelength>0
         goto file{\the\filename.pdf} name{#1@}%         \startlink attr{/Border [0 0 0]}%
     \else           goto file{\the\filename.pdf} name{#1}%
       \startlink attr{/Border [0 0 0]}%       \else
         goto name{#1@}%         \startlink attr{/Border [0 0 0]}%
     \fi           goto name{#1}%
        \fi
       }%
     \linkcolor      \linkcolor
   \fi    \fi
   %    %
Line 5512  width0pt\relax} \fi Line 5863  width0pt\relax} \fi
   %    %
   \smallfonts \rm    \smallfonts \rm
   %    %
   % Hang the footnote text off the number.    % Because we use hanging indentation in footnotes, a @noindent appears
   \hang    % to exdent this text, so make it be a no-op.  makeinfo does not use
     % hanging indentation so @noindent can still be needed within footnote
     % text after an @example or the like (not that this is good style).
     \let\noindent = \relax
     %
     % Hang the footnote text off the number.  Use \everypar in case the
     % footnote extends for more than one paragraph.
     \everypar = {\hang}%
   \textindent{\thisfootno}%    \textindent{\thisfootno}%
   %    %
   % Don't crash into the line above the footnote text.  Since this    % Don't crash into the line above the footnote text.  Since this
Line 5530  width0pt\relax} \fi Line 5888  width0pt\relax} \fi
   
 }%end \catcode `\@=11  }%end \catcode `\@=11
   
 % Set the baselineskip to #1, and the lineskip and strut size  
 % correspondingly.  There is no deep meaning behind these magic numbers  
 % used as factors; they just match (closely enough) what Knuth defined.  
 %  
 \def\lineskipfactor{.08333}  
 \def\strutheightpercent{.70833}  
 \def\strutdepthpercent {.29167}  
 %  
 \def\setleading#1{%  
   \normalbaselineskip = #1\relax  
   \normallineskip = \lineskipfactor\normalbaselineskip  
   \normalbaselines  
   \setbox\strutbox =\hbox{%  
     \vrule width0pt height\strutheightpercent\baselineskip  
                     depth \strutdepthpercent \baselineskip  
   }%  
 }  
   
 % @| inserts a changebar to the left of the current line.  It should  % @| inserts a changebar to the left of the current line.  It should
 % surround any changed text.  This approach does *not* work if the  % surround any changed text.  This approach does *not* work if the
 % change spans more than two lines of output.  To handle that, we would  % change spans more than two lines of output.  To handle that, we would
Line 5612  width0pt\relax} \fi Line 5952  width0pt\relax} \fi
       \global\warnednoepsftrue        \global\warnednoepsftrue
     \fi      \fi
   \else    \else
     \imagexxx #1,,,\finish      \imagexxx #1,,,,,\finish
   \fi    \fi
 }  }
 %  %
 % Arguments to @image:  % Arguments to @image:
 % #1 is (mandatory) image filename; we tack on .eps extension.  % #1 is (mandatory) image filename; we tack on .eps extension.
 % #2 is (optional) width, #3 is (optional) height.  % #2 is (optional) width, #3 is (optional) height.
 % #4 is just the usual extra ignored arg for parsing this stuff.  % #4 is (ignored optional) html alt text.
 \def\imagexxx#1,#2,#3,#4\finish{%  % #5 is (ignored optional) extension.
   % #6 is just the usual extra ignored arg for parsing this stuff.
   \newif\ifimagevmode
   \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
     \catcode`\^^M = 5     % in case we're inside an example
     \normalturnoffactive  % allow _ et al. in names
     % If the image is by itself, center it.
     \ifvmode
       \imagevmodetrue
       \nobreak\bigskip
       % Usually we'll have text after the image which will insert
       % \parskip glue, so insert it here too to equalize the space
       % above and below. 
       \nobreak\vskip\parskip
       \nobreak
       \line\bgroup\hss
     \fi
     %
     % Output the image.
   \ifpdf    \ifpdf
     \centerline{\dopdfimage{#1}{#2}{#3}}%      \dopdfimage{#1}{#2}{#3}%
   \else    \else
     % \epsfbox itself resets \epsf?size at each figure.      % \epsfbox itself resets \epsf?size at each figure.
     \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi      \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
     \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi      \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
     \begingroup      \epsfbox{#1.eps}%
       \catcode`\^^M = 5 % in case we're inside an example  
       % If the image is by itself, center it.  
       \ifvmode  
         \nobreak\bigskip  
         % Usually we'll have text after the image which will insert  
         % \parskip glue, so insert it here too to equalize the space  
         % above and below.   
         \nobreak\vskip\parskip  
         \nobreak  
         \centerline{\epsfbox{#1.eps}}%  
         \bigbreak  
       \else  
         % In the middle of a paragraph, no extra space.  
         \epsfbox{#1.eps}%  
       \fi  
     \endgroup  
   \fi    \fi
 }    %
     \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image
   \endgroup}
   
   
 \message{localization,}  \message{localization,}
Line 5714  should work if nowhere else does.} Line 6058  should work if nowhere else does.}
 }  }
   
 % Parameters in order: 1) textheight; 2) textwidth; 3) voffset;  % Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
 % 4) hoffset; 5) binding offset; 6) topskip.  Then whoever calls us can  % 4) hoffset; 5) binding offset; 6) topskip.  We also call
 % set \parskip and call \setleading for \baselineskip.  % \setleading{\textleading}, so the caller should define \textleading.
   % The caller should also set \parskip.
 %  %
 \def\internalpagesizes#1#2#3#4#5#6{%  \def\internalpagesizes#1#2#3#4#5#6{%
   \voffset = #3\relax    \voffset = #3\relax
Line 5736  should work if nowhere else does.} Line 6081  should work if nowhere else does.}
   \normaloffset = #4\relax    \normaloffset = #4\relax
   \bindingoffset = #5\relax    \bindingoffset = #5\relax
   %    %
     \setleading{\textleading}
     %
   \parindent = \defaultparindent    \parindent = \defaultparindent
   \setemergencystretch    \setemergencystretch
 }  }
   
   % Use `small' versions.
   % 
   \def\smallenvironments{%
     \let\smalldisplay = \smalldisplayx
     \let\smallexample = \smalllispx
     \let\smallformat = \smallformatx
     \let\smalllisp = \smalllispx
   }
   
 % @letterpaper (the default).  % @letterpaper (the default).
 \def\letterpaper{{\globaldefs = 1  \def\letterpaper{{\globaldefs = 1
   \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
   \setleading{13.2pt}%    \textleading = 13.2pt
   %    %
   % If page is nothing but text, make it come out even.    % If page is nothing but text, make it come out even.
   \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%    \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
Line 5752  should work if nowhere else does.} Line 6108  should work if nowhere else does.}
 % Use @smallbook to reset parameters for 7x9.5 (or so) format.  % Use @smallbook to reset parameters for 7x9.5 (or so) format.
 \def\smallbook{{\globaldefs = 1  \def\smallbook{{\globaldefs = 1
   \parskip = 2pt plus 1pt    \parskip = 2pt plus 1pt
   \setleading{12pt}%    \textleading = 12pt
   %    %
   \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%    \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
   %    %
Line 5762  should work if nowhere else does.} Line 6118  should work if nowhere else does.}
   \contentsrightmargin = 0pt    \contentsrightmargin = 0pt
   \deftypemargin = 0pt    \deftypemargin = 0pt
   \defbodyindent = .5cm    \defbodyindent = .5cm
   %    \smallenvironments
   \let\smalldisplay = \smalldisplayx  
   \let\smallexample = \smalllispx  
   \let\smallformat = \smallformatx  
   \let\smalllisp = \smalllispx  
 }}  }}
   
 % Use @afourpaper to print on European A4 paper.  % Use @afourpaper to print on European A4 paper.
 \def\afourpaper{{\globaldefs = 1  \def\afourpaper{{\globaldefs = 1
   \setleading{12pt}%  
   \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
     \textleading = 12pt
   %    %
   \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%    \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
   %    %
Line 5780  should work if nowhere else does.} Line 6132  should work if nowhere else does.}
   \hfuzz = 1pt    \hfuzz = 1pt
 }}  }}
   
   % Use @afivepaper to print on European A5 paper.
   % From romildo@urano.iceb.ufop.br, 2 July 2000.
   % He also recommends making @example and @lisp be small.
   \def\afivepaper{{\globaldefs = 1
     \parskip = 2pt plus 1pt minus 0.1pt
     \textleading = 12.5pt
     %
     \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}%
     %
     \lispnarrowing = 0.2in
     \tolerance = 800
     \hfuzz = 1.2pt
     \contentsrightmargin = 0mm
     \deftypemargin = 0pt
     \defbodyindent = 2mm
     \tableindent = 12mm
     %
     \smallenvironments
   }}
   
 % A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin  % A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin
 % 29mm, hence bottom margin 28mm, nominal side margin 3cm.  % 29mm, hence bottom margin 28mm, nominal side margin 3cm.
 \def\afourlatex{{\globaldefs = 1  \def\afourlatex{{\globaldefs = 1
   \setleading{13.6pt}%    \textleading = 13.6pt
   %    %
   \afourpaper    \afourpaper
   \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%    \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
   %    %
     % Must explicitly reset to 0 because we call \afourpaper, apparently,
     % although this does not entirely make sense.
   \globaldefs = 0    \globaldefs = 0
 }}  }}
   
 % Use @afourwide to print on European A4 paper in wide format.  % Use @afourwide to print on European A4 paper in wide format.
 \def\afourwide{%  \def\afourwide{%
   \afourpaper    \afourpaper
   \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%    \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
   %  
   \globaldefs = 0  
 }  }
   
 % @pagesizes TEXTHEIGHT[,TEXTWIDTH]  % @pagesizes TEXTHEIGHT[,TEXTWIDTH]
Line 5810  should work if nowhere else does.} Line 6182  should work if nowhere else does.}
   \globaldefs = 1    \globaldefs = 1
   %    %
   \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
   \setleading{13.2pt}%    \setleading{\textleading}%
   %    %
   \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%    \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
 }}  }}
Line 5840  should work if nowhere else does.} Line 6212  should work if nowhere else does.}
 \def\normalless{<}  \def\normalless{<}
 \def\normalgreater{>}  \def\normalgreater{>}
 \def\normalplus{+}  \def\normalplus{+}
 \def\normaldollar{$}  \def\normaldollar{$}%$ font-lock fix
   
 % This macro is used to make a character print one way in ttfont  % This macro is used to make a character print one way in ttfont
 % where it can probably just be output, and another way in other fonts,  % where it can probably just be output, and another way in other fonts,
Line 5889  should work if nowhere else does.} Line 6261  should work if nowhere else does.}
 \catcode`\+=\active  \catcode`\+=\active
 \def+{{\tt \char 43}}  \def+{{\tt \char 43}}
 \catcode`\$=\active  \catcode`\$=\active
 \def${\ifusingit{{\sl\$}}\normaldollar}  \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
 %\catcode 27=\active  %\catcode 27=\active
 %\def^^[{$\diamondsuit$}  %\def^^[{$\diamondsuit$}
   
Line 5934  should work if nowhere else does.} Line 6306  should work if nowhere else does.}
 @let<=@normalless  @let<=@normalless
 @let>=@normalgreater  @let>=@normalgreater
 @let+=@normalplus  @let+=@normalplus
 @let$=@normaldollar}  @let$=@normaldollar}%$ font-lock fix
   
 @def@normalturnoffactive{@let"=@normaldoublequote  @def@normalturnoffactive{@let"=@normaldoublequote
 @let\=@normalbackslash  @let\=@normalbackslash
Line 5945  should work if nowhere else does.} Line 6317  should work if nowhere else does.}
 @let<=@normalless  @let<=@normalless
 @let>=@normalgreater  @let>=@normalgreater
 @let+=@normalplus  @let+=@normalplus
 @let$=@normaldollar}  @let$=@normaldollar}%$ font-lock fix
   
 % Make _ and + \other characters, temporarily.  % Make _ and + \other characters, temporarily.
 % This is canceled by @fixbackslash.  % This is canceled by @fixbackslash.

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


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