/[classpath]/classpath/doc/texinfo.tex
ViewVC logotype

Diff of /classpath/doc/texinfo.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by cbj, Sun Jan 7 04:22:27 2001 UTC revision 1.3 by cbj, Fri Jan 10 16:49:15 2003 UTC
# Line 3  Line 3 
3  % Load plain if necessary, i.e., if running under initex.  % Load plain if necessary, i.e., if running under initex.
4  \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi  \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5  %  %
6  \def\texinfoversion{1999-09-25.10}  \def\texinfoversion{2002-06-04.06}
7  %  %
8  % 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,
9  % Free Software Foundation, Inc.  %               2000, 01, 02 Free Software Foundation, Inc.
10  %  %
11  % 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
12  % 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 
30  % Please try the latest version of texinfo.tex before submitting bug  % Please try the latest version of texinfo.tex before submitting bug
31  % reports; you can get the latest version from:  % reports; you can get the latest version from:
32  %   ftp://ftp.gnu.org/gnu/texinfo.tex  %   ftp://ftp.gnu.org/gnu/texinfo.tex
33  %   (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)  %     (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
34  %   ftp://texinfo.org/tex/texinfo.tex  %   ftp://texinfo.org/texinfo/texinfo.tex
35  %   ftp://us.ctan.org/macros/texinfo/texinfo.tex  %   ftp://tug.org/tex/texinfo.tex
36  %   (and all CTAN mirrors, finger ctan@us.ctan.org for a list).  %     (and all CTAN mirrors, see http://www.ctan.org),
37  %   /home/gd/gnu/doc/texinfo.tex on the GNU machines.  %   and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
38    %
39  % The texinfo.tex in any given Texinfo distribution could well be out  % The texinfo.tex in any given Texinfo distribution could well be out
40  % of date, so if that's what you're using, please check.  % of date, so if that's what you're using, please check.
41  % Texinfo has a small home page at http://texinfo.org/.  %
42    % Texinfo has a small home page at http://texinfo.org/ and also
43    % http://www.gnu.org/software/texinfo.
44  %  %
45  % Send bug reports to bug-texinfo@gnu.org.  Please include including a  % Send bug reports to bug-texinfo@gnu.org.  Please include including a
46  % 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 
53  %   texindex foo.??  %   texindex foo.??
54  %   tex foo.texi  %   tex foo.texi
55  %   tex foo.texi  %   tex foo.texi
56  %   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.
57  % The extra runs of TeX get the cross-reference information correct.  % The extra TeX runs get the cross-reference information correct.
58  % Sometimes one run after texindex suffices, and sometimes you need more  % Sometimes one run after texindex suffices, and sometimes you need more
59  % than two; texi2dvi does it as many times as necessary.  % than two; texi2dvi does it as many times as necessary.
60  %  %
61  % 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
62  % the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.  % the existing language-specific files from the full Texinfo distribution.
63    
64  \message{Loading texinfo [version \texinfoversion]:}  \message{Loading texinfo [version \texinfoversion]:}
65    
# Line 170  Line 173 
173  }%  }%
174  \fi  \fi
175    
176    % add check for \lastpenalty to plain's definitions.  If the last thing
177    % we did was a \nobreak, we don't want to insert more space.
178    %
179    \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
180      \removelastskip\penalty-50\smallskip\fi\fi}
181    \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
182      \removelastskip\penalty-100\medskip\fi\fi}
183    \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
184      \removelastskip\penalty-200\bigskip\fi\fi}
185    
186  % For @cropmarks command.  % For @cropmarks command.
187  % Do @cropmarks to get crop marks.  % Do @cropmarks to get crop marks.
188  %  %
# Line 214  Line 227 
227      \normalturnoffactive  % \ in index entries must not stay \, e.g., if      \normalturnoffactive  % \ in index entries must not stay \, e.g., if
228                     % the page break happens to be in the middle of an example.                     % the page break happens to be in the middle of an example.
229      \shipout\vbox{%      \shipout\vbox{%
230          % Do this early so pdf references go to the beginning of the page.
231          \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
232          %
233        \ifcropmarks \vbox to \outervsize\bgroup        \ifcropmarks \vbox to \outervsize\bgroup
234          \hsize = \outerhsize          \hsize = \outerhsize
235          \vskip-\topandbottommargin          \vskip-\topandbottommargin
# Line 243  Line 259 
259          \unvbox\footlinebox          \unvbox\footlinebox
260        \fi        \fi
261        %        %
       \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi  
       %  
262        \ifcropmarks        \ifcropmarks
263            \egroup % end of \vbox\bgroup            \egroup % end of \vbox\bgroup
264          \hfil\egroup % end of (centering) \line\bgroup          \hfil\egroup % end of (centering) \line\bgroup
# Line 430  Line 444 
444    % environments.  --karl, 6may93    % environments.  --karl, 6may93
445    %{\advance \baselineskip by -\singlespaceskip    %{\advance \baselineskip by -\singlespaceskip
446    %\kern \baselineskip}%    %\kern \baselineskip}%
447    \setleading \singlespaceskip    \setleading\singlespaceskip
448  }  }
449    
450  %% 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
701  \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount  \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
702  \leftline{\hskip\leftskip{\rm#1}}}}  \leftline{\hskip\leftskip{\rm#1}}}}
703    
704  % @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
705    % paragraph.  For more general purposes, use the \margin insertion
706  \def\inmargin#1{%  % class.  WHICH is `l' or `r'.
707  \strut\vadjust{\nobreak\kern-\strutdepth  %
   \vtop to \strutdepth{\baselineskip\strutdepth\vss  
   \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}  
708  \newskip\inmarginspacing \inmarginspacing=1cm  \newskip\inmarginspacing \inmarginspacing=1cm
709  \def\strutdepth{\dp\strutbox}  \def\strutdepth{\dp\strutbox}
710    %
711  %\hbox{{\rm#1}}\hfil\break}}  \def\doinmargin#1#2{\strut\vadjust{%
712      \nobreak
713      \kern-\strutdepth
714      \vtop to \strutdepth{%
715        \baselineskip=\strutdepth
716        \vss
717        % if you have multiple lines of stuff to put here, you'll need to
718        % make the vbox yourself of the appropriate size.
719        \ifx#1l%
720          \llap{\ignorespaces #2\hskip\inmarginspacing}%
721        \else
722          \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
723        \fi
724        \null
725      }%
726    }}
727    \def\inleftmargin{\doinmargin l}
728    \def\inrightmargin{\doinmargin r}
729    %
730    % @inmargin{TEXT [, RIGHT-TEXT]}
731    % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
732    % else use TEXT for both).
733    %
734    \def\inmargin#1{\parseinmargin #1,,\finish}
735    \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
736      \setbox0 = \hbox{\ignorespaces #2}%
737      \ifdim\wd0 > 0pt
738        \def\lefttext{#1}%  have both texts
739        \def\righttext{#2}%
740      \else
741        \def\lefttext{#1}%  have only one text
742        \def\righttext{#1}%
743      \fi
744      %
745      \ifodd\pageno
746        \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
747      \else
748        \def\temp{\inleftmargin\lefttext}%
749      \fi
750      \temp
751    }
752    
753  % @include file    insert text of that file as input.  % @include file    insert text of that file as input.
754  % 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
836  %  %
837  \def\asis#1{#1}  \def\asis#1{#1}
838    
839  % @math means output in math mode.  % @math outputs its argument in math mode.
840  % 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
841  % sequences like \math are expanded when the toc file is written.  Then,  % to set catcodes according to plain TeX first, to allow for subscripts,
842  % we read the toc file back, the $'s will be normal characters (as they  % superscripts, special math chars, etc.
843  % should be, according to the definition of Texinfo).  So we must use a  %
844  % control sequence to switch into and out of math mode.  % @math does not do math typesetting in section titles, index
845    % entries, and other such contexts where the catcodes are set before
846    % @math gets a chance to work.  This could perhaps be fixed, but for now
847    % at least we can have real math in the main text, where it's needed most.
848    %
849    \let\implicitmath = $%$ font-lock fix
850    %
851    % One complication: _ usually means subscripts, but it could also mean
852    % an actual _ character, as in @math{@var{some_variable} + 1}.  So make
853    % _ within @math be active (mathcode "8000), and distinguish by seeing
854    % if the current family is \slfam, which is what @var uses.
855    %
856    {\catcode95 = \active  % 95 = _
857    \gdef\mathunderscore{%
858      \catcode95=\active
859      \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
860    }}
861  %  %
862  % This isn't quite enough for @math to work properly in indices, but it  % Another complication: we want \\ (and @\) to output a \ character.
863  % seems unlikely it will ever be needed there.  % FYI, plain.tex uses \\ as a temporary control sequence (why?), but
864    % this is not advertised and we don't care.  Texinfo does not
865    % otherwise define @\.
866    %
867    % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
868    \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
869  %  %
870  \let\implicitmath = $  \def\math{%
871  \def\math#1{\implicitmath #1\implicitmath}    \tex
872      \mathcode`\_="8000 \mathunderscore
873      \let\\ = \mathbackslash
874      \implicitmath\finishmath}
875    \def\finishmath#1{#1\implicitmath\Etex}
876    
877  % @bullet and @minus need the same treatment as @math, just above.  % @bullet and @minus need the same treatment as @math, just above.
878  \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
955    \def\dopdfimage#1#2#3{%    \def\dopdfimage#1#2#3{%
956      \def\imagewidth{#2}%      \def\imagewidth{#2}%
957      \def\imageheight{#3}%      \def\imageheight{#3}%
958        % without \immediate, pdftex seg faults when the same image is
959        % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
960      \ifnum\pdftexversion < 14      \ifnum\pdftexversion < 14
961        \pdfimage        \immediate\pdfimage
962      \else      \else
963        \pdfximage        \immediate\pdfximage
964      \fi      \fi
965        \ifx\empty\imagewidth\else width \imagewidth \fi        \ifx\empty\imagewidth\else width \imagewidth \fi
966        \ifx\empty\imageheight\else height \imageheight \fi        \ifx\empty\imageheight\else height \imageheight \fi
967        {#1.pdf}%        \ifnum\pdftexversion<13
968             #1.pdf%
969           \else
970             {#1.pdf}%
971           \fi
972      \ifnum\pdftexversion < 14 \else      \ifnum\pdftexversion < 14 \else
973        \pdfrefximage \pdflastximage        \pdfrefximage \pdflastximage
974      \fi}      \fi}
975    \def\pdfmkdest#1{\pdfdest name{#1@} xyz}    \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
976    \def\pdfmkpgn#1{#1@}    \def\pdfmkpgn#1{#1}
977    \let\linkcolor = \Cyan    \let\linkcolor = \Blue  % was Cyan, but that seems light?
978    \def\endlink{\Black\pdfendlink}    \def\endlink{\Black\pdfendlink}
979    % Adding outlines to PDF; macros for calculating structure of outlines    % Adding outlines to PDF; macros for calculating structure of outlines
980    % 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
985      \expandafter\xdef\csname#1\endcsname{\the\tempnum}}      \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
986    \def\pdfmakeoutlines{{%    \def\pdfmakeoutlines{{%
987      \openin 1 \jobname.toc      \openin 1 \jobname.toc
988      \ifeof 1\else\bgroup      \ifeof 1\else\begingroup
989        \closein 1        \closein 1
990        \indexnofonts        \indexnofonts
991        \def\tt{}        \def\tt{}
992        % thanh's hack / proper braces in bookmarks          \let\_ = \normalunderscore
993          % Thanh's hack / proper braces in bookmarks  
994        \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace        \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
995        \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace        \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
996        %        %
997        \def\chapentry ##1##2##3{}        \def\chapentry ##1##2##3{}
998          \let\appendixentry = \chapentry
999        \def\unnumbchapentry ##1##2{}        \def\unnumbchapentry ##1##2{}
1000        \def\secentry ##1##2##3##4{\advancenumber{chap##2}}        \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
1001        \def\unnumbsecentry ##1##2{}        \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}}
1002        \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}        \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
1003        \def\unnumbsubsecentry ##1##2{}        \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}}
1004        \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}}
1005        \def\unnumbsubsubsecentry ##1##2{}        \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}}
1006        \input \jobname.toc        \input \jobname.toc
1007        \def\chapentry ##1##2##3{%        \def\chapentry ##1##2##3{%
1008          \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}          \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
1009          \let\appendixentry = \chapentry
1010        \def\unnumbchapentry ##1##2{%        \def\unnumbchapentry ##1##2{%
1011          \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
1012        \def\secentry ##1##2##3##4{%        \def\secentry ##1##2##3##4{%
1013          \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}          \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
1014        \def\unnumbsecentry ##1##2{%        \def\unnumbsecentry ##1##2##3{%
1015          \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##3}}{##1}}
1016        \def\subsecentry ##1##2##3##4##5{%        \def\subsecentry ##1##2##3##4##5{%
1017          \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}          \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
1018        \def\unnumbsubsecentry ##1##2{%        \def\unnumbsubsecentry ##1##2##3##4{%
1019          \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##4}}{##1}}
1020        \def\subsubsecentry ##1##2##3##4##5##6{%        \def\subsubsecentry ##1##2##3##4##5##6{%
1021          \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
1022        \def\unnumbsubsubsecentry ##1##2{%        \def\unnumbsubsubsecentry ##1##2##3##4##5{%
1023          \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}          \pdfoutline goto name{\pdfmkpgn{##5}}{##1}}
1024        \input \jobname.toc        \input \jobname.toc
1025      \egroup\fi      \endgroup\fi
1026    }}    }}
1027    \def\makelinks #1,{%    \def\makelinks #1,{%
1028      \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
1072    \def\pdfurl#1{%    \def\pdfurl#1{%
1073      \begingroup      \begingroup
1074        \normalturnoffactive\def\@{@}%        \normalturnoffactive\def\@{@}%
1075          \let\value=\expandablevalue
1076        \leavevmode\Red        \leavevmode\Red
1077        \startlink attr{/Border [0 0 0]}%        \startlink attr{/Border [0 0 0]}%
1078          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
1100    \def\makelink{\addtokens{\toksB}%    \def\makelink{\addtokens{\toksB}%
1101      {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}      {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
1102    \def\pdflink#1{%    \def\pdflink#1{%
1103      \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}      \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
1104      \linkcolor #1\endlink}      \linkcolor #1\endlink}
   \def\mkpgn#1{#1@}  
1105    \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}    \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
1106  \fi % \ifx\pdfoutput  \fi % \ifx\pdfoutput
1107    
# Line 1032  where each line of input produces a line Line 1118  where each line of input produces a line
1118  % We don't need math for this one.  % We don't need math for this one.
1119  \def\ttsl{\tenttsl}  \def\ttsl{\tenttsl}
1120    
1121  % Use Computer Modern fonts at \magstephalf (11pt).  % Default leading.
1122  \newcount\mainmagstep  \newdimen\textleading  \textleading = 13.2pt
1123  \mainmagstep=\magstephalf  
1124    % Set the baselineskip to #1, and the lineskip and strut size
1125    % correspondingly.  There is no deep meaning behind these magic numbers
1126    % used as factors; they just match (closely enough) what Knuth defined.
1127    %
1128    \def\lineskipfactor{.08333}
1129    \def\strutheightpercent{.70833}
1130    \def\strutdepthpercent {.29167}
1131    %
1132    \def\setleading#1{%
1133      \normalbaselineskip = #1\relax
1134      \normallineskip = \lineskipfactor\normalbaselineskip
1135      \normalbaselines
1136      \setbox\strutbox =\hbox{%
1137        \vrule width0pt height\strutheightpercent\baselineskip
1138                        depth \strutdepthpercent \baselineskip
1139      }%
1140    }
1141    
1142  % 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
1143  % 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
1167  \def\scshape{csc}  \def\scshape{csc}
1168  \def\scbshape{csc}  \def\scbshape{csc}
1169    
1170    \newcount\mainmagstep
1171  \ifx\bigger\relax  \ifx\bigger\relax
1172  \let\mainmagstep=\magstep1    % not really supported.
1173  \setfont\textrm\rmshape{12}{1000}    \let\mainmagstep=\magstep1
1174  \setfont\texttt\ttshape{12}{1000}    \setfont\textrm\rmshape{12}{1000}
1175      \setfont\texttt\ttshape{12}{1000}
1176  \else  \else
1177  \setfont\textrm\rmshape{10}{\mainmagstep}    \mainmagstep=\magstephalf
1178  \setfont\texttt\ttshape{10}{\mainmagstep}    \setfont\textrm\rmshape{10}{\mainmagstep}
1179      \setfont\texttt\ttshape{10}{\mainmagstep}
1180  \fi  \fi
1181  % Instead of cmb10, you many want to use cmbx10.  % Instead of cmb10, you many want to use cmbx10.
1182  % 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
1207  \font\smalli=cmmi9  \font\smalli=cmmi9
1208  \font\smallsy=cmsy9  \font\smallsy=cmsy9
1209    
1210    % Fonts for small examples (8pt).
1211    \setfont\smallerrm\rmshape{8}{1000}
1212    \setfont\smallertt\ttshape{8}{1000}
1213    \setfont\smallerbf\bfshape{10}{800}
1214    \setfont\smallerit\itshape{8}{1000}
1215    \setfont\smallersl\slshape{8}{1000}
1216    \setfont\smallersf\sfshape{8}{1000}
1217    \setfont\smallersc\scshape{10}{800}
1218    \setfont\smallerttsl\ttslshape{10}{800}
1219    \font\smalleri=cmmi8
1220    \font\smallersy=cmsy8
1221    
1222  % Fonts for title page:  % Fonts for title page:
1223  \setfont\titlerm\rmbshape{12}{\magstep3}  \setfont\titlerm\rmbshape{12}{\magstep3}
1224  \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
1256  \font\seci=cmmi12 scaled \magstep1  \font\seci=cmmi12 scaled \magstep1
1257  \font\secsy=cmsy10 scaled \magstep2  \font\secsy=cmsy10 scaled \magstep2
1258    
 % \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  
   
1259  % Subsection fonts (13.15pt).  % Subsection fonts (13.15pt).
1260  \setfont\ssecrm\rmbshape{12}{\magstephalf}  \setfont\ssecrm\rmbshape{12}{\magstephalf}
1261  \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
1272    
1273  % 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,
1274  % we have to define the \textfont of the standard families.  Since  % we have to define the \textfont of the standard families.  Since
1275  % texinfo doesn't allow for producing subscripts and superscripts, we  % texinfo doesn't allow for producing subscripts and superscripts except
1276  % don't bother to reset \scriptfont and \scriptscriptfont (which would  % in the main text, we don't bother to reset \scriptfont and
1277  % also require loading a lot more fonts).  % \scriptscriptfont (which would also require loading a lot more fonts).
1278  %  %
1279  \def\resetmathfonts{%  \def\resetmathfonts{%
1280    \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy    \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
1281    \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf    \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
1282    \textfont\ttfam = \tentt \textfont\sffam = \tensf    \textfont\ttfam=\tentt \textfont\sffam=\tensf
1283  }  }
1284    
   
1285  % The font-changing commands redefine the meanings of \tenSTYLE, instead  % The font-changing commands redefine the meanings of \tenSTYLE, instead
1286  % 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
1287  % 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
1292    \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl    \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
1293    \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc    \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
1294    \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl    \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
1295    \resetmathfonts}    \resetmathfonts \setleading{\textleading}}
1296  \def\titlefonts{%  \def\titlefonts{%
1297    \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl    \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
1298    \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
1321    \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc    \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
1322    \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy    \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
1323    \let\tenttsl=\smallttsl    \let\tenttsl=\smallttsl
1324    \resetmathfonts \setleading{11pt}}    \resetmathfonts \setleading{10.5pt}}
1325    \def\smallerfonts{%
1326      \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
1327      \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
1328      \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
1329      \let\tenttsl=\smallerttsl
1330      \resetmathfonts \setleading{9.5pt}}
1331    \let\smallexamplefonts = \smallerfonts
1332    
1333  % 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.
1334  %  %
# Line 1332  where each line of input produces a line Line 1442  where each line of input produces a line
1442    
1443  \def\realdash{-}  \def\realdash{-}
1444  \def\codedash{-\discretionary{}{}{}}  \def\codedash{-\discretionary{}{}{}}
1445  \def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}  \def\codeunder{%
1446      % this is all so @math{@code{var_name}+1} can work.  In math mode, _
1447      % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
1448      % will therefore expand the active definition of _, which is us
1449      % (inside @code that is), therefore an endless loop.
1450      \ifusingtt{\ifmmode
1451                   \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
1452                 \else\normalunderscore \fi
1453                 \discretionary{}{}{}}%
1454                {\_}%
1455    }
1456  \def\codex #1{\tclose{#1}\endgroup}  \def\codex #1{\tclose{#1}\endgroup}
1457    
 %\let\exp=\tclose  %Was temporary  
   
1458  % @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,
1459  % then @kbd has no effect.  % then @kbd has no effect.
1460    
# Line 1521  where each line of input produces a line Line 1639  where each line of input produces a line
1639     \oldpage     \oldpage
1640     \endgroup     \endgroup
1641     %     %
1642       % Need this before the \...aftertitlepage checks so that if they are
1643       % in effect the toc pages will come out with page numbers.
1644       \HEADINGSon
1645       %
1646     % If they want short, they certainly want long too.     % If they want short, they certainly want long too.
1647     \ifsetshortcontentsaftertitlepage     \ifsetshortcontentsaftertitlepage
1648       \shortcontents       \shortcontents
# Line 1534  where each line of input produces a line Line 1656  where each line of input produces a line
1656       \global\let\contents = \relax       \global\let\contents = \relax
1657       \global\let\shortcontents = \relax       \global\let\shortcontents = \relax
1658     \fi     \fi
    %  
    \ifpdf \pdfmakepagedesttrue \fi  
    %  
    \HEADINGSon  
1659  }  }
1660    
1661  \def\finishtitlepage{%  \def\finishtitlepage{%
# Line 1670  where each line of input produces a line Line 1788  where each line of input produces a line
1788  }  }
1789    
1790  % Subroutines used in generating headings  % Subroutines used in generating headings
1791  % Produces Day Month Year style of output.  % This produces Day Month Year style of output.
1792    % Only define if not already defined, in case a txi-??.tex file has set
1793    % up a different format (e.g., txi-cs.tex does this).
1794    \ifx\today\undefined
1795  \def\today{%  \def\today{%
1796    \number\day\space    \number\day\space
1797    \ifcase\month    \ifcase\month
# Line 1679  where each line of input produces a line Line 1800  where each line of input produces a line
1800    \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec    \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
1801    \fi    \fi
1802    \space\number\year}    \space\number\year}
1803    \fi
1804    
1805  % @settitle line...  specifies the title of the document, for headings.  % @settitle line...  specifies the title of the document, for headings.
1806  % It generates no output of its own.  % It generates no output of its own.
# Line 2291  width0pt\relax} \fi Line 2413  width0pt\relax} \fi
2413    \let\item = \relax    \let\item = \relax
2414  }  }
2415    
2416  % Ignore @ignore ... @end ignore.  % Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu,
2417    % @direntry, and @documentdescription.
2418  %  %
2419  \def\ignore{\doignore{ignore}}  \def\ignore{\doignore{ignore}}
   
 % Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.  
 %  
 \def\ifinfo{\doignore{ifinfo}}  
2420  \def\ifhtml{\doignore{ifhtml}}  \def\ifhtml{\doignore{ifhtml}}
2421    \def\ifinfo{\doignore{ifinfo}}
2422    \def\ifplaintext{\doignore{ifplaintext}}
2423  \def\ifnottex{\doignore{ifnottex}}  \def\ifnottex{\doignore{ifnottex}}
2424  \def\html{\doignore{html}}  \def\html{\doignore{html}}
2425  \def\menu{\doignore{menu}}  \def\menu{\doignore{menu}}
2426  \def\direntry{\doignore{direntry}}  \def\direntry{\doignore{direntry}}
2427    \def\documentdescription{\doignore{documentdescription}}
2428    \def\documentdescriptionword{documentdescription}
2429    
2430  % @dircategory CATEGORY  -- specify a category of the dir file  % @dircategory CATEGORY  -- specify a category of the dir file
2431  % 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
2452    % We must not have @c interpreted as a control sequence.    % We must not have @c interpreted as a control sequence.
2453    \catcode`\@ = 12    \catcode`\@ = 12
2454    %    %
2455    % Make the letter c a comment character so that the rest of the line    \def\ignoreword{#1}%
2456    % will be ignored. This way, the document can have (for example)    \ifx\ignoreword\documentdescriptionword
2457    %   @c @end ifinfo      % The c kludge breaks documentdescription, since
2458    % and the @end ifinfo will be properly ignored.      % `documentdescription' contains a `c'.  Means not everything will
2459    % (We've just changed @ to catcode 12.)      % be ignored inside @documentdescription, but oh well...
2460    \catcode`\c = 14    \else
2461        % Make the letter c a comment character so that the rest of the line
2462        % will be ignored. This way, the document can have (for example)
2463        %   @c @end ifinfo
2464        % and the @end ifinfo will be properly ignored.
2465        % (We've just changed @ to catcode 12.)
2466        \catcode`\c = 14
2467      \fi
2468    %    %
2469    % And now expand that command.    % And now expand the command defined above.
2470    \doignoretext    \doignoretext
2471  }  }
2472    
# Line 2408  width0pt\relax} \fi Line 2538  width0pt\relax} \fi
2538      \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont      \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
2539      \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont      \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
2540      \let\tensf=\nullfont      \let\tensf=\nullfont
2541      % Similarly for index fonts (mostly for their use in smallexample).      % Similarly for index fonts.
2542      \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont      \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
2543      \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont      \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
2544      \let\smallsf=\nullfont      \let\smallsf=\nullfont
2545        % Similarly for smallexample fonts.
2546        \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
2547        \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
2548        \let\smallersf=\nullfont
2549      %      %
2550      % Don't complain when characters are missing from the fonts.      % Don't complain when characters are missing from the fonts.
2551      \tracinglostchars = 0      \tracinglostchars = 0
# Line 2523  width0pt\relax} \fi Line 2657  width0pt\relax} \fi
2657  \def\ifclearfail{\nestedignore{ifclear}}  \def\ifclearfail{\nestedignore{ifclear}}
2658  \defineunmatchedend{ifclear}  \defineunmatchedend{ifclear}
2659    
2660  % @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text  % @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
2661  % following, through the first @end iftex (etc.).  Make `@end iftex'  % read the text following, through the first @end iftex (etc.).  Make
2662  % (etc.) valid only after an @iftex.  % `@end iftex' (etc.) valid only after an @iftex.
2663  %  %
2664  \def\iftex{\conditionalsucceed{iftex}}  \def\iftex{\conditionalsucceed{iftex}}
2665  \def\ifnothtml{\conditionalsucceed{ifnothtml}}  \def\ifnothtml{\conditionalsucceed{ifnothtml}}
2666  \def\ifnotinfo{\conditionalsucceed{ifnotinfo}}  \def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
2667    \def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
2668  \defineunmatchedend{iftex}  \defineunmatchedend{iftex}
2669  \defineunmatchedend{ifnothtml}  \defineunmatchedend{ifnothtml}
2670  \defineunmatchedend{ifnotinfo}  \defineunmatchedend{ifnotinfo}
2671    \defineunmatchedend{ifnotplaintext}
2672    
2673  % 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
2674  % at @end iftex, since then @set commands inside the conditional have no  % @end iftex, since then @set commands inside the conditional have no
2675  % 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
2676  % 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
2677  % 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
2723  }  }
2724    
2725  % @defindex foo  ==  \newindex{foo}  % @defindex foo  ==  \newindex{foo}
2726    %
2727  \def\defindex{\parsearg\newindex}  \def\defindex{\parsearg\newindex}
2728    
2729  % Define @defcodeindex, like @defindex except put all entries in @code.  % Define @defcodeindex, like @defindex except put all entries in @code.
2730    %
2731    \def\defcodeindex{\parsearg\newcodeindex}
2732    %
2733  \def\newcodeindex#1{%  \def\newcodeindex#1{%
2734    \iflinks    \iflinks
2735      \expandafter\newwrite \csname#1indfile\endcsname      \expandafter\newwrite \csname#1indfile\endcsname
2736      \openout \csname#1indfile\endcsname \jobname.#1      \openout \csname#1indfile\endcsname \jobname.#1
2737    \fi    \fi
2738    \expandafter\xdef\csname#1index\endcsname{%    \expandafter\xdef\csname#1index\endcsname{%
2739      \noexpand\docodeindex{#1}}      \noexpand\docodeindex{#1}}%
2740  }  }
2741    
 \def\defcodeindex{\parsearg\newcodeindex}  
2742    
2743  % @synindex foo bar    makes index foo feed into index bar.  % @synindex foo bar    makes index foo feed into index bar.
2744  % 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.
2745  % 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}}%  
 }  
   
2746  % @syncodeindex foo bar   similar, but put all entries made for index foo  % @syncodeindex foo bar   similar, but put all entries made for index foo
2747  % inside @code.  % inside @code.
2748  \def\syncodeindex#1 #2 {%  %
2749    \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname  \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
2750    \expandafter\closeout\csname#1indfile\endcsname  \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
2751    \expandafter\let\csname#1indfile\endcsname=\synindexfoo  
2752    \expandafter\xdef\csname#1index\endcsname{% define \xxxindex  % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
2753      \noexpand\docodeindex{#2}}%  % #3 the target index (bar).
2754    \def\dosynindex#1#2#3{%
2755      % Only do \closeout if we haven't already done it, else we'll end up
2756      % closing the target index.
2757      \expandafter \ifx\csname donesynindex#2\endcsname \undefined
2758        % The \closeout helps reduce unnecessary open files; the limit on the
2759        % Acorn RISC OS is a mere 16 files.
2760        \expandafter\closeout\csname#2indfile\endcsname
2761        \expandafter\let\csname\donesynindex#2\endcsname = 1
2762      \fi
2763      % redefine \fooindfile:
2764      \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
2765      \expandafter\let\csname#2indfile\endcsname=\temp
2766      % redefine \fooindex:
2767      \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
2768  }  }
2769    
2770  % 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
2784  \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}  \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
2785  \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}  \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
2786    
2787    % Take care of texinfo commands likely to appear in an index entry.
2788    % (Must be a way to avoid doing expansion at all, and thus not have to
2789    % laboriously list every single command here.)
2790    %
2791  \def\indexdummies{%  \def\indexdummies{%
2792  \def\ { }%  \def\ { }%
2793    \def\@{@}% change to @@ when we switch to @ as escape char in aux files.
2794    % Need these in case \tex is in effect and \{ is a \delimiter again.
2795    % But can't use \lbracecmd and \rbracecmd because texindex assumes
2796    % braces and backslashes are used only as delimiters.  
2797    \let\{ = \mylbrace
2798    \let\} = \myrbrace
2799    \def\_{{\realbackslash _}}%
2800    \normalturnoffactive
2801    %
2802  % Take care of the plain tex accent commands.  % Take care of the plain tex accent commands.
2803    \def\,##1{\realbackslash ,{##1}}%
2804  \def\"{\realbackslash "}%  \def\"{\realbackslash "}%
2805  \def\`{\realbackslash `}%  \def\`{\realbackslash `}%
2806  \def\'{\realbackslash '}%  \def\'{\realbackslash '}%
# Line 2657  width0pt\relax} \fi Line 2813  width0pt\relax} \fi
2813  \def\u{\realbackslash u}%  \def\u{\realbackslash u}%
2814  \def\v{\realbackslash v}%  \def\v{\realbackslash v}%
2815  \def\H{\realbackslash H}%  \def\H{\realbackslash H}%
2816    \def\dotless##1{\realbackslash dotless {##1}}%
2817  % 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}%  
2818  \def\AA{\realbackslash AA}%  \def\AA{\realbackslash AA}%
2819  \def\o{\realbackslash o}%  \def\AE{\realbackslash AE}%
2820    \def\L{\realbackslash L}%
2821    \def\OE{\realbackslash OE}%
2822  \def\O{\realbackslash O}%  \def\O{\realbackslash O}%
2823    \def\aa{\realbackslash aa}%
2824    \def\ae{\realbackslash ae}%
2825  \def\l{\realbackslash l}%  \def\l{\realbackslash l}%
2826  \def\L{\realbackslash L}%  \def\oe{\realbackslash oe}%
2827    \def\o{\realbackslash o}%
2828  \def\ss{\realbackslash ss}%  \def\ss{\realbackslash ss}%
2829  % Take care of texinfo commands likely to appear in an index entry.  %
2830  % (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 }%  
2831  \def\bf{\realbackslash bf }%  \def\bf{\realbackslash bf }%
2832    \def\gtr{\realbackslash gtr}%
2833    \def\hat{\realbackslash hat}%
2834    \def\less{\realbackslash less}%
2835  %\def\rm{\realbackslash rm }%  %\def\rm{\realbackslash rm }%
 \def\sl{\realbackslash sl }%  
2836  \def\sf{\realbackslash sf}%  \def\sf{\realbackslash sf}%
2837    \def\sl{\realbackslash sl }%
2838    \def\tclose##1{\realbackslash tclose {##1}}%
2839  \def\tt{\realbackslash tt}%  \def\tt{\realbackslash tt}%
2840  \def\gtr{\realbackslash gtr}%  %
2841  \def\less{\realbackslash less}%  \def\b##1{\realbackslash b {##1}}%
2842  \def\hat{\realbackslash hat}%  \def\i##1{\realbackslash i {##1}}%
2843    \def\sc##1{\realbackslash sc {##1}}%
2844    \def\t##1{\realbackslash t {##1}}%
2845    \def\r##1{\realbackslash r {##1}}%
2846    %
2847  \def\TeX{\realbackslash TeX}%  \def\TeX{\realbackslash TeX}%
2848  \def\dots{\realbackslash dots }%  \def\acronym##1{\realbackslash acronym {##1}}%
2849  \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}}%  
2850  \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}}%  
2851  \def\command##1{\realbackslash command {##1}}%  \def\command##1{\realbackslash command {##1}}%
2852    \def\dfn##1{\realbackslash dfn {##1}}%
2853    \def\dots{\realbackslash dots }%
2854    \def\emph##1{\realbackslash emph {##1}}%
2855    \def\env##1{\realbackslash env {##1}}%
2856    \def\file##1{\realbackslash file {##1}}%
2857    \def\kbd##1{\realbackslash kbd {##1}}%
2858    \def\key##1{\realbackslash key {##1}}%
2859    \def\math##1{\realbackslash math {##1}}%
2860  \def\option##1{\realbackslash option {##1}}%  \def\option##1{\realbackslash option {##1}}%
 \def\dotless##1{\realbackslash dotless {##1}}%  
2861  \def\samp##1{\realbackslash samp {##1}}%  \def\samp##1{\realbackslash samp {##1}}%
2862  \def\,##1{\realbackslash ,{##1}}%  \def\strong##1{\realbackslash strong {##1}}%
2863  \def\t##1{\realbackslash t {##1}}%  \def\uref##1{\realbackslash uref {##1}}%
2864  \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}}%  
2865  \def\var##1{\realbackslash var {##1}}%  \def\var##1{\realbackslash var {##1}}%
2866  \def\kbd##1{\realbackslash kbd {##1}}%  \def\w{\realbackslash w }%
2867  \def\dfn##1{\realbackslash dfn {##1}}%  %
2868  \def\emph##1{\realbackslash emph {##1}}%  % These math commands don't seem likely to be used in index entries.
2869  \def\acronym##1{\realbackslash acronym {##1}}%  \def\copyright{\realbackslash copyright}%
2870    \def\equiv{\realbackslash equiv}%
2871    \def\error{\realbackslash error}%
2872    \def\expansion{\realbackslash expansion}%
2873    \def\point{\realbackslash point}%
2874    \def\print{\realbackslash print}%
2875    \def\result{\realbackslash result}%
2876  %  %
2877  % Handle some cases of @value -- where the variable name does not  % Handle some cases of @value -- where the variable name does not
2878  % 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
2886    
2887  % If an index command is used in an @example environment, any spaces  % If an index command is used in an @example environment, any spaces
2888  % therein should become regular spaces in the raw index file, not the  % therein should become regular spaces in the raw index file, not the
2889  % expansion of \tie (\\leavevmode \penalty \@M \ ).  % expansion of \tie (\leavevmode \penalty \@M \ ).
2890  {\obeyspaces  {\obeyspaces
2891   \gdef\unsepspaces{\obeyspaces\let =\space}}   \gdef\unsepspaces{\obeyspaces\let =\space}}
2892    
# Line 2744  width0pt\relax} \fi Line 2897  width0pt\relax} \fi
2897  \def\indexdummydots{...}  \def\indexdummydots{...}
2898    
2899  \def\indexnofonts{%  \def\indexnofonts{%
2900  % Just ignore accents.  \def\@{@}%
2901    % how to handle braces?
2902    \def\_{\normalunderscore}%
2903    %
2904  \let\,=\indexdummyfont  \let\,=\indexdummyfont
2905  \let\"=\indexdummyfont  \let\"=\indexdummyfont
2906  \let\`=\indexdummyfont  \let\`=\indexdummyfont
# Line 2760  width0pt\relax} \fi Line 2916  width0pt\relax} \fi
2916  \let\H=\indexdummyfont  \let\H=\indexdummyfont
2917  \let\dotless=\indexdummyfont  \let\dotless=\indexdummyfont
2918  % 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}%  
2919  \def\AA{AA}%  \def\AA{AA}%
2920  \def\o{o}%  \def\AE{AE}%
2921    \def\L{L}%
2922    \def\OE{OE}%
2923  \def\O{O}%  \def\O{O}%
2924    \def\aa{aa}%
2925    \def\ae{ae}%
2926  \def\l{l}%  \def\l{l}%
2927  \def\L{L}%  \def\oe{oe}%
2928    \def\o{o}%
2929  \def\ss{ss}%  \def\ss{ss}%
2930  \let\w=\indexdummyfont  %
2931  \let\t=\indexdummyfont  % Don't no-op \tt, since it isn't a user-level command
2932  \let\r=\indexdummyfont  % and is used in the definitions of the active chars like <, >, |, etc.
2933  \let\i=\indexdummyfont  % Likewise with the other plain tex font commands.
2934    %\let\tt=\indexdummyfont
2935    %
2936  \let\b=\indexdummyfont  \let\b=\indexdummyfont
2937  \let\emph=\indexdummyfont  \let\i=\indexdummyfont
2938  \let\strong=\indexdummyfont  \let\r=\indexdummyfont
 \let\cite=\indexdummyfont  
2939  \let\sc=\indexdummyfont  \let\sc=\indexdummyfont
2940  %Don't no-op \tt, since it isn't a user-level command  \let\t=\indexdummyfont
2941  % and is used in the definitions of the active chars like <, >, |...  %
2942  %\let\tt=\indexdummyfont  \let\TeX=\indexdummytex
 \let\tclose=\indexdummyfont  
 \let\code=\indexdummyfont  
 \let\url=\indexdummyfont  
 \let\uref=\indexdummyfont  
 \let\env=\indexdummyfont  
2943  \let\acronym=\indexdummyfont  \let\acronym=\indexdummyfont
2944    \let\cite=\indexdummyfont
2945    \let\code=\indexdummyfont
2946  \let\command=\indexdummyfont  \let\command=\indexdummyfont
2947  \let\option=\indexdummyfont  \let\dfn=\indexdummyfont
2948    \let\dots=\indexdummydots
2949    \let\emph=\indexdummyfont
2950    \let\env=\indexdummyfont
2951  \let\file=\indexdummyfont  \let\file=\indexdummyfont
 \let\samp=\indexdummyfont  
2952  \let\kbd=\indexdummyfont  \let\kbd=\indexdummyfont
2953  \let\key=\indexdummyfont  \let\key=\indexdummyfont
2954    \let\math=\indexdummyfont
2955    \let\option=\indexdummyfont
2956    \let\samp=\indexdummyfont
2957    \let\strong=\indexdummyfont
2958    \let\uref=\indexdummyfont
2959    \let\url=\indexdummyfont
2960  \let\var=\indexdummyfont  \let\var=\indexdummyfont
2961  \let\TeX=\indexdummytex  \let\w=\indexdummyfont
 \let\dots=\indexdummydots  
 \def\@{@}%  
2962  }  }
2963    
2964  % 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
3014          % Now the real index entry with the fonts.          % Now the real index entry with the fonts.
3015          \toks0 = {#2}%          \toks0 = {#2}%
3016          %          %
3017          % If third (subentry) arg is present, add it to the index          % If the third (subentry) arg is present, add it to the index
3018          % string.  And include a space.          % line to write.
3019          \ifx\thirdarg\emptymacro \else          \ifx\thirdarg\emptymacro \else
3020            \toks0 = \expandafter{\the\toks0 \space #3}%            \toks0 = \expandafter{\the\toks0{#3}}%
3021          \fi          \fi
3022          %          %
3023          % Set up the complete index entry, with both the sort key          % Set up the complete index entry, with both the sort key and
3024          % and the original text, including any font commands.  We write          % the original text, including any font commands.  We write
3025          % three arguments to \entry to the .?? file, texindex reduces to          % three arguments to \entry to the .?? file (four in the
3026          % two when writing the .??s sorted result.          % subentry case), texindex reduces to two when writing the .??s
3027            % sorted result.
3028          \edef\temp{%          \edef\temp{%
3029            \write\csname#1indfile\endcsname{%            \write\csname#1indfile\endcsname{%
3030              \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%              \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
# Line 3085  width0pt\relax} \fi Line 3246  width0pt\relax} \fi
3246  \def\primary #1{\line{#1\hfil}}  \def\primary #1{\line{#1\hfil}}
3247    
3248  \newskip\secondaryindent \secondaryindent=0.5cm  \newskip\secondaryindent \secondaryindent=0.5cm
3249    \def\secondary#1#2{{%
3250  \def\secondary #1#2{    \parfillskip=0in
3251  {\parfillskip=0in \parskip=0in    \parskip=0in
3252  \hangindent =1in \hangafter=1    \hangindent=1in
3253  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par    \hangafter=1
3254      \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
3255      \ifpdf
3256        \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
3257      \else
3258        #2
3259      \fi
3260      \par
3261  }}  }}
3262    
3263  % 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
3317    %    %
3318    % 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,
3319    % since nobody clobbers \vsize.)    % since nobody clobbers \vsize.)
   \advance\vsize by -\ht\partialpage  
3320    \vsize = 2\vsize    \vsize = 2\vsize
3321  }  }
3322    
# Line 3163  width0pt\relax} \fi Line 3330  width0pt\relax} \fi
3330    % previous page.    % previous page.
3331    \dimen@ = \vsize    \dimen@ = \vsize
3332    \divide\dimen@ by 2    \divide\dimen@ by 2
3333      \advance\dimen@ by -\ht\partialpage
3334    %    %
3335    % box0 will be the left-hand column, box2 the right.    % box0 will be the left-hand column, box2 the right.
3336    \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
3338    \unvbox255    \unvbox255
3339    \penalty\outputpenalty    \penalty\outputpenalty
3340  }  }
3341    %
3342    % Re-output the contents of the output page -- any previous material,
3343    % followed by the two boxes we just split, in box0 and box2.
3344  \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.  
3345    \unvbox\partialpage    \unvbox\partialpage
3346    %    %
3347    \hsize = \doublecolumnhsize    \hsize = \doublecolumnhsize
3348    \wd0=\hsize \wd2=\hsize    \wd0=\hsize \wd2=\hsize
3349    \hbox to\pagewidth{\box0\hfil\box2}%    \hbox to\pagewidth{\box0\hfil\box2}%
3350  }  }
3351    %
3352    % All done with double columns.
3353  \def\enddoublecolumns{%  \def\enddoublecolumns{%
3354    \output = {%    \output = {%
3355      % 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
3374    % \endgroup where \vsize got restored).    % \endgroup where \vsize got restored).
3375    \pagegoal = \vsize    \pagegoal = \vsize
3376  }  }
3377    %
3378    % Called at the end of the double column material.
3379  \def\balancecolumns{%  \def\balancecolumns{%
   % Called at the end of the double column material.  
3380    \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.    \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
3381    \dimen@ = \ht0    \dimen@ = \ht0
3382    \advance\dimen@ by \topskip    \advance\dimen@ by \topskip
# Line 3388  width0pt\relax} \fi Line 3560  width0pt\relax} \fi
3560  \gdef\thischaptername{#1}%  \gdef\thischaptername{#1}%
3561  \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%  \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
3562  \toks0 = {#1}%  \toks0 = {#1}%
3563  \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%  \edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}%
3564                         {\putwordAppendix{} \appendixletter}}}%                         {\appendixletter}}}%
3565  \temp  \temp
3566  \appendixnoderef  \appendixnoderef
3567  \global\let\section = \appendixsec  \global\let\section = \appendixsec
# Line 3466  width0pt\relax} \fi Line 3638  width0pt\relax} \fi
3638  \def\unnumberedseczzz #1{%  \def\unnumberedseczzz #1{%
3639  \plainsecheading {#1}\gdef\thissection{#1}%  \plainsecheading {#1}\gdef\thissection{#1}%
3640  \toks0 = {#1}%  \toks0 = {#1}%
3641  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry%
3642      {\the\toks0}{\the\chapno}}}%
3643  \temp  \temp
3644  \unnumbnoderef  \unnumbnoderef
3645  \nobreak  \nobreak
# Line 3505  width0pt\relax} \fi Line 3678  width0pt\relax} \fi
3678  \plainsubsecheading {#1}\gdef\thissection{#1}%  \plainsubsecheading {#1}\gdef\thissection{#1}%
3679  \toks0 = {#1}%  \toks0 = {#1}%
3680  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
3681                                      {\the\toks0}}}%    {\the\toks0}{\the\chapno}{\the\secno}}}%
3682  \temp  \temp
3683  \unnumbnoderef  \unnumbnoderef
3684  \nobreak  \nobreak
# Line 3546  width0pt\relax} \fi Line 3719  width0pt\relax} \fi
3719  \plainsubsubsecheading {#1}\gdef\thissection{#1}%  \plainsubsubsecheading {#1}\gdef\thissection{#1}%
3720  \toks0 = {#1}%  \toks0 = {#1}%
3721  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
3722                                      {\the\toks0}}}%    {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}%
3723  \temp  \temp
3724  \unnumbnoderef  \unnumbnoderef
3725  \nobreak  \nobreak
# Line 3758  width0pt\relax} \fi Line 3931  width0pt\relax} \fi
3931  % 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.
3932  %  %
3933  % 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
3934  % given time so that @contents can be put in the document anywhere.  % fixed time so that @contents can be put in the document anywhere.
3935  %  %
3936  \newif\iftocfileopened  \newif\iftocfileopened
3937  \def\writetocentry#1{%  \def\writetocentry#1{%
# Line 3767  width0pt\relax} \fi Line 3940  width0pt\relax} \fi
3940      \global\tocfileopenedtrue      \global\tocfileopenedtrue
3941    \fi    \fi
3942    \iflinks \write\tocfile{#1{\folio}}\fi    \iflinks \write\tocfile{#1{\folio}}\fi
3943      %
3944      % Tell \shipout to create a page destination if we're doing pdf, which
3945      % will be the target of the links in the table of contents.  We can't
3946      % just do it on every page because the title pages are numbered 1 and
3947      % 2 (the page numbers aren't printed), and so are the first two pages
3948      % of the document.  Thus, we'd have two destinations named `1', and
3949      % two named `2'.
3950      \ifpdf \pdfmakepagedesttrue \fi
3951  }  }
3952    
3953  \newskip\contentsrightmargin \contentsrightmargin=1in  \newskip\contentsrightmargin \contentsrightmargin=1in
# Line 3822  width0pt\relax} \fi Line 4003  width0pt\relax} \fi
4003     \startcontents{\putwordShortTOC}%     \startcontents{\putwordShortTOC}%
4004        %        %
4005        \let\chapentry = \shortchapentry        \let\chapentry = \shortchapentry
4006          \let\appendixentry = \shortappendixentry
4007        \let\unnumbchapentry = \shortunnumberedentry        \let\unnumbchapentry = \shortunnumberedentry
4008        % We want a true roman here for the page numbers.        % We want a true roman here for the page numbers.
4009        \secfonts        \secfonts
# Line 3830  width0pt\relax} \fi Line 4012  width0pt\relax} \fi
4012        \hyphenpenalty = 10000        \hyphenpenalty = 10000
4013        \advance\baselineskip by 1pt % Open it up a little.        \advance\baselineskip by 1pt % Open it up a little.
4014        \def\secentry ##1##2##3##4{}        \def\secentry ##1##2##3##4{}
4015        \def\unnumbsecentry ##1##2{}        \def\unnumbsecentry ##1##2##3{}
4016        \def\subsecentry ##1##2##3##4##5{}        \def\subsecentry ##1##2##3##4##5{}
4017        \def\unnumbsubsecentry ##1##2{}        \def\unnumbsubsecentry ##1##2##3##4{}
4018        \def\subsubsecentry ##1##2##3##4##5##6{}        \def\subsubsecentry ##1##2##3##4##5##6{}
4019        \def\unnumbsubsubsecentry ##1##2{}        \def\unnumbsubsubsecentry ##1##2##3##4##5{}
4020        \openin 1 \jobname.toc        \openin 1 \jobname.toc
4021        \ifeof 1 \else        \ifeof 1 \else
4022          \closein 1          \closein 1
# Line 3857  width0pt\relax} \fi Line 4039  width0pt\relax} \fi
4039  % The last argument is the page number.  % The last argument is the page number.
4040  % The arguments in between are the chapter number, section number, ...  % The arguments in between are the chapter number, section number, ...
4041    
4042  % Chapter-level things, for both the long and short contents.  % Chapters, in the main contents.
4043  \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}  \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
4044    %
4045  % See comments in \dochapentry re vbox and related settings  % Chapters, in the short toc.
4046    % See comments in \dochapentry re vbox and related settings.
4047  \def\shortchapentry#1#2#3{%  \def\shortchapentry#1#2#3{%
4048    \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%    \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
4049  }  }
4050    
4051    % Appendices, in the main contents.
4052    \def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}}
4053    %
4054    % Appendices, in the short toc.
4055    \let\shortappendixentry = \shortchapentry
4056    
4057  % Typeset the label for a chapter or appendix for the short contents.  % Typeset the label for a chapter or appendix for the short contents.
4058  % 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.
4059  % We could simplify the code here by writing out an \appendixentry  % We could simplify the code here by writing out an \appendixentry
4060  % command in the toc file for appendices, instead of using \chapentry  % command in the toc file for appendices, instead of using \chapentry
4061  % 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
4063  \newdimen\shortappendixwidth  \newdimen\shortappendixwidth
4064  %  %
4065  \def\shortchaplabel#1{%  \def\shortchaplabel#1{%
4066    % 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  
4067    % widest letter (M) is 1em, at least in the Computer Modern fonts.    % widest letter (M) is 1em, at least in the Computer Modern fonts.
4068      % But use \hss just in case.
4069    % (This space doesn't include the extra space that gets added after    % (This space doesn't include the extra space that gets added after
4070    % the label; that gets put in by \shortchapentry above.)    % the label; that gets put in by \shortchapentry above.)
4071    \advance\dimen0 by 1.1em    \dimen0 = 1em
4072    \hbox to \dimen0{#1\hfil}%    \hbox to \dimen0{#1\hss}%
4073  }  }
4074    
4075    % Unnumbered chapters.
4076  \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}  \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
4077  \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}  \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
4078    
4079  % Sections.  % Sections.
4080  \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}  \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
4081  \def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}  \def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}}
4082    
4083  % Subsections.  % Subsections.
4084  \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}}
4085  \def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}  \def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
4086    
4087  % And subsubsections.  % And subsubsections.
4088  \def\subsubsecentry#1#2#3#4#5#6{%  \def\subsubsecentry#1#2#3#4#5#6{%
4089    \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}    \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
4090  \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}  \def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}}
4091    
4092  % This parameter controls the indentation of the various levels.  % This parameter controls the indentation of the various levels.
4093  \newdimen\tocindent \tocindent = 3pc  \newdimen\tocindent \tocindent = 3pc
# Line 3946  width0pt\relax} \fi Line 4128  width0pt\relax} \fi
4128  \def\tocentry#1#2{\begingroup  \def\tocentry#1#2{\begingroup
4129    \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
4130    % Do not use \turnoffactive in these arguments.  Since the toc is    % Do not use \turnoffactive in these arguments.  Since the toc is
4131    % typeset in cmr, so characters such as _ would come out wrong; we    % typeset in cmr, characters such as _ would come out wrong; we
4132    % have to do the usual translation tricks.    % have to do the usual translation tricks.
4133    \entry{#1}{#2}%    \entry{#1}{#2}%
4134  \endgroup}  \endgroup}
# Line 3966  width0pt\relax} \fi Line 4148  width0pt\relax} \fi
4148  \message{environments,}  \message{environments,}
4149  % @foo ... @end foo.  % @foo ... @end foo.
4150    
4151    % @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
4152    %
4153  % 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
4154  % \tt widths. Each \tt character is 1en, so two makes it 1em.  % \tt widths. Each \tt character is 1en, so two makes it 1em.
4155  % 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{}.  
4156  \def\point{$\star$}  \def\point{$\star$}
4157  \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}  \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
4158  \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}  \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
4159  \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}  \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
4160  \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}  \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
4161    
4162    % The @error{} command.
4163  % Adapted from the TeXbook's \boxit.  % Adapted from the TeXbook's \boxit.
4164    %
4165    \newbox\errorbox
4166    %
4167  {\tentt \global\dimen0 = 3em}% Width of the box.  {\tentt \global\dimen0 = 3em}% Width of the box.
4168  \dimen2 = .55pt % Thickness of rules  \dimen2 = .55pt % Thickness of rules
4169  % 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.)
4170  \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}  \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
4171    %
4172  \global\setbox\errorbox=\hbox to \dimen0{\hfil  \global\setbox\errorbox=\hbox to \dimen0{\hfil
4173     \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.     \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
4174     \advance\hsize by -2\dimen2 % Rules.     \advance\hsize by -2\dimen2 % Rules.
# Line 4006  width0pt\relax} \fi Line 4179  width0pt\relax} \fi
4179           \kern3pt\vrule width\dimen2}% Space to right.           \kern3pt\vrule width\dimen2}% Space to right.
4180        \hrule height\dimen2}        \hrule height\dimen2}
4181      \hfil}      \hfil}
4182    %
 % The @error{} command.  
4183  \def\error{\leavevmode\lower.7ex\copy\errorbox}  \def\error{\leavevmode\lower.7ex\copy\errorbox}
4184    
4185  % @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
4219    \def\@{@}%    \def\@{@}%
4220  \let\Etex=\endgroup}  \let\Etex=\endgroup}
4221    
4222  % Define @lisp ... @endlisp.  % Define @lisp ... @end lisp.
4223  % @lisp does a \begingroup so it can rebind things,  % @lisp does a \begingroup so it can rebind things,
4224  % including the definition of @endlisp (which normally is erroneous).  % including the definition of @end lisp (which normally is erroneous).
4225    
4226  % Amount to narrow the margins by for @lisp.  % Amount to narrow the margins by for @lisp.
4227  \newskip\lispnarrowing \lispnarrowing=0.4in  \newskip\lispnarrowing \lispnarrowing=0.4in
# Line 4080  width0pt\relax} \fi Line 4252  width0pt\relax} \fi
4252  % is reset to zero; thus the \afterenvbreak inserts no space -- but the  % is reset to zero; thus the \afterenvbreak inserts no space -- but the
4253  % start of the next paragraph will insert \parskip  % start of the next paragraph will insert \parskip
4254  %  %
4255  \def\aboveenvbreak{{\advance\envskipamount by \parskip  \def\aboveenvbreak{{%
4256  \endgraf \ifdim\lastskip<\envskipamount    \ifnum\lastpenalty < 10000
4257  \removelastskip \penalty-50 \vskip\envskipamount \fi}}      \advance\envskipamount by \parskip
4258        \endgraf
4259        \ifdim\lastskip<\envskipamount
4260          \removelastskip
4261          \penalty-50
4262          \vskip\envskipamount
4263        \fi
4264      \fi
4265    }}
4266    
4267  \let\afterenvbreak = \aboveenvbreak  \let\afterenvbreak = \aboveenvbreak
4268    
# Line 4214  width0pt\relax} \fi Line 4394  width0pt\relax} \fi
4394  \def\smalllispx{\begingroup  \def\smalllispx{\begingroup
4395    \def\Esmalllisp{\nonfillfinish\endgroup}%    \def\Esmalllisp{\nonfillfinish\endgroup}%
4396    \def\Esmallexample{\nonfillfinish\endgroup}%    \def\Esmallexample{\nonfillfinish\endgroup}%
4397    \smallfonts    \smallexamplefonts
4398    \lisp    \lisp
4399  }  }
4400    
# Line 4225  width0pt\relax} \fi Line 4405  width0pt\relax} \fi
4405    \let\Edisplay = \nonfillfinish    \let\Edisplay = \nonfillfinish
4406    \gobble    \gobble
4407  }  }
4408    %
4409  % @smalldisplay (when @smallbook): @display plus smaller fonts.  % @smalldisplay (when @smallbook): @display plus smaller fonts.
4410  %  %
4411  \def\smalldisplayx{\begingroup  \def\smalldisplayx{\begingroup
4412    \def\Esmalldisplay{\nonfillfinish\endgroup}%    \def\Esmalldisplay{\nonfillfinish\endgroup}%
4413    \smallfonts \rm    \smallexamplefonts \rm
4414    \display    \display
4415  }  }
4416    
# Line 4242  width0pt\relax} \fi Line 4422  width0pt\relax} \fi
4422    \let\Eformat = \nonfillfinish    \let\Eformat = \nonfillfinish
4423    \gobble    \gobble
4424  }  }
4425    %
4426  % @smallformat (when @smallbook): @format plus smaller fonts.  % @smallformat (when @smallbook): @format plus smaller fonts.
4427  %  %
4428  \def\smallformatx{\begingroup  \def\smallformatx{\begingroup
4429    \def\Esmallformat{\nonfillfinish\endgroup}%    \def\Esmallformat{\nonfillfinish\endgroup}%
4430    \smallfonts \rm    \smallexamplefonts \rm
4431    \format    \format
4432  }  }
4433    
# Line 4265  width0pt\relax} \fi Line 4445  width0pt\relax} \fi
4445    \gobble    \gobble
4446  }  }
4447    
4448    
4449  % @quotation does normal linebreaking (hence we can't use \nonfillstart)  % @quotation does normal linebreaking (hence we can't use \nonfillstart)
4450  % and narrows the margins.  % and narrows the margins.
4451  %  %
# Line 4287  width0pt\relax} \fi Line 4468  width0pt\relax} \fi
4468  }  }
4469    
4470    
4471    % LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
4472    % If we want to allow any <char> as delimiter,
4473    % we need the curly braces so that makeinfo sees the @verb command, eg:
4474    % `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
4475    %
4476    % [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
4477    %
4478    % [Knuth] p. 344; only we need to do '@' too
4479    \def\dospecials{%
4480      \do\ \do\\\do\@\do\{\do\}\do\$\do\&%
4481      \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
4482    %
4483    % [Knuth] p. 380
4484    \def\uncatcodespecials{%
4485      \def\do##1{\catcode`##1=12}\dospecials}
4486    %
4487    % [Knuth] pp. 380,381,391
4488    % Disable Spanish ligatures ?` and !` of \tt font
4489    \begingroup
4490      \catcode`\`=\active\gdef`{\relax\lq}
4491    \endgroup
4492    %
4493    % Setup for the @verb command.
4494    %
4495    % Eight spaces for a tab
4496    \begingroup
4497      \catcode`\^^I=\active
4498      \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
4499    \endgroup
4500    %
4501    \def\setupverb{%
4502      \tt  % easiest (and conventionally used) font for verbatim
4503      \def\par{\leavevmode\endgraf}%
4504      \catcode`\`=\active
4505      \tabeightspaces
4506      % Respect line breaks,
4507      % print special symbols as themselves, and
4508      % make each space count
4509      % must do in this order:
4510      \obeylines \uncatcodespecials \sepspaces
4511    }
4512    
4513    % Setup for the @verbatim environment
4514    %
4515    % Real tab expansion
4516    \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
4517    %
4518    \def\starttabbox{\setbox0=\hbox\bgroup}
4519    \begingroup
4520      \catcode`\^^I=\active
4521      \gdef\tabexpand{%
4522        \catcode`\^^I=\active
4523        \def^^I{\leavevmode\egroup
4524          \dimen0=\wd0 % the width so far, or since the previous tab
4525          \divide\dimen0 by\tabw
4526          \multiply\dimen0 by\tabw % compute previous multiple of \tabw
4527          \advance\dimen0 by\tabw  % advance to next multiple of \tabw
4528          \wd0=\dimen0 \box0 \starttabbox
4529        }%
4530      }
4531    \endgroup
4532    \def\setupverbatim{%
4533      % Easiest (and conventionally used) font for verbatim
4534      \tt
4535      \def\par{\leavevmode\egroup\box0\endgraf}%
4536      \catcode`\`=\active
4537      \tabexpand
4538      % Respect line breaks,
4539      % print special symbols as themselves, and
4540      % make each space count
4541      % must do in this order:
4542      \obeylines \uncatcodespecials \sepspaces
4543      \everypar{\starttabbox}%
4544    }
4545    
4546    % Do the @verb magic: verbatim text is quoted by unique
4547    % delimiter characters.  Before first delimiter expect a
4548    % right brace, after last delimiter expect closing brace:
4549    %
4550    %    \def\doverb'{'<char>#1<char>'}'{#1}
4551    %
4552    % [Knuth] p. 382; only eat outer {}
4553    \begingroup
4554      \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12
4555      \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
4556    \endgroup
4557    %
4558    \def\verb{\begingroup\setupverb\doverb}
4559    %
4560    %
4561    % Do the @verbatim magic: define the macro \doverbatim so that
4562    % the (first) argument ends when '@end verbatim' is reached, ie:
4563    %
4564    %     \def\doverbatim#1@end verbatim{#1}
4565    %
4566    % For Texinfo it's a lot easier than for LaTeX,
4567    % because texinfo's \verbatim doesn't stop at '\end{verbatim}':
4568    % we need not redefine '\', '{' and '}'
4569    %
4570    % Inspired by LaTeX's verbatim command set [latex.ltx]
4571    %% Include LaTeX hack for completeness -- never know
4572    %% \begingroup
4573    %% \catcode`|=0 \catcode`[=1
4574    %% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active
4575    %% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
4576    %% #1|endgroup|def|Everbatim[]|end[verbatim]]
4577    %% |endgroup
4578    \begingroup
4579      \catcode`\ =\active
4580      \gdef\doverbatim#1@end verbatim{#1\end{verbatim}}
4581    \endgroup
4582    %
4583    \def\verbatim{%
4584      \def\Everbatim{\nonfillfinish\endgroup}%
4585      \begingroup
4586        \nonfillstart
4587        \advance\leftskip by -\defbodyindent
4588        \begingroup\setupverbatim\doverbatim
4589    }
4590    
4591    % @verbatiminclude FILE - insert text of file in verbatim environment.
4592    %
4593    % Allow normal characters that we make active in the argument (a file name).
4594    \def\verbatiminclude{%
4595      \begingroup
4596        \catcode`\\=12
4597        \catcode`~=12
4598        \catcode`^=12
4599        \catcode`_=12
4600        \catcode`|=12
4601        \catcode`<=12
4602        \catcode`>=12
4603        \catcode`+=12
4604        \parsearg\doverbatiminclude
4605    }
4606    \def\setupverbatiminclude{%
4607      \begingroup
4608        \nonfillstart
4609        \advance\leftskip by -\defbodyindent
4610        \begingroup\setupverbatim
4611    }
4612    %
4613    \def\doverbatiminclude#1{%
4614         % Restore active chars for included file.
4615      \endgroup
4616      \begingroup
4617      \def\thisfile{#1}%
4618      \expandafter\expandafter\setupverbatiminclude\input\thisfile
4619      \endgroup\nonfillfinish\endgroup
4620    }
4621    
4622    % @copying ... @end copying.
4623    % Save the text away for @insertcopying later.
4624    %
4625    \newbox\copyingbox
4626    %
4627    \def\copying{\begingroup
4628      \parindent = 0pt  % looks wrong on title page
4629      \def\Ecopying{\egroup\endgroup}%
4630      \global\setbox\copyingbox = \vbox\bgroup
4631    }
4632    
4633    % @insertcopying.
4634    %
4635    \def\insertcopying{\unvcopy\copyingbox}
4636    
4637    
4638  \message{defuns,}  \message{defuns,}
4639  % @defun etc.  % @defun etc.
4640    
# Line 4382  width0pt\relax} \fi Line 4730  width0pt\relax} \fi
4730  {\df #1}\enskip        % Generate function name  {\df #1}\enskip        % Generate function name
4731  }  }
4732    
4733  % Actually process the body of a definition  % Common pieces to start any @def...
 % #1 should be the terminating control sequence, such as \Edefun.  
 % #2 should be the "another name" control sequence, such as \defunx.  
 % #3 should be the control sequence that actually processes the header,  
 %    such as \defunheader.  
   
 \def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody  
 \medbreak %  
 % Define the end token that this defining construct specifies  
 % so that it will exit this group.  
 \def#1{\endgraf\endgroup\medbreak}%  
 \def#2{\begingroup\obeylines\activeparens\spacesplit#3}%  
 \parindent=0in  
 \advance\leftskip by \defbodyindent  
 \exdentamount=\defbodyindent  
 \begingroup %  
 \catcode 61=\active % 61 is `='  
 \obeylines\activeparens\spacesplit#3}  
   
4734  % #1 is the \E... control sequence to end the definition (which we define).  % #1 is the \E... control sequence to end the definition (which we define).
4735  % #2 is the \...x control sequence for consecutive fns (which we define).  % #2 is the \...x control sequence (which our caller defines).
4736  % #3 is the control sequence to call to resume processing.  % #3 is the control sequence to process the header, such as \defunheader.
4737    %
4738    \def\parsebodycommon#1#2#3{%
4739      \begingroup\inENV
4740      % If there are two @def commands in a row, we'll have a \nobreak,
4741      % which is there to keep the function description together with its
4742      % header.  But if there's nothing but headers, we want to allow a
4743      % break after all.
4744      \ifnum\lastpenalty = 10000 \penalty0 \fi
4745      \medbreak
4746      %
4747      % Define the \E... end token that this defining construct specifies
4748      % so that it will exit this group.
4749      \def#1{\endgraf\endgroup\medbreak}%
4750      %
4751      \parindent=0in
4752      \advance\leftskip by \defbodyindent
4753      \exdentamount=\defbodyindent
4754    }
4755    
4756    % Process body of @defun, @deffn, @defmac, etc.
4757    %
4758    \def\defparsebody#1#2#3{%
4759      \parsebodycommon{#1}{#2}{#3}%
4760      \def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
4761      \catcode61=\active % 61 is `='
4762      \begingroup\obeylines\activeparens
4763      \spacesplit#3%
4764    }
4765    
4766    % #1, #2, #3 are the common arguments (see \defparsebody).
4767  % #4, delimited by the space, is the class name.  % #4, delimited by the space, is the class name.
4768  %  %
4769  \def\defmethparsebody#1#2#3#4 {\begingroup\inENV %  \def\defmethparsebody#1#2#3#4 {%
4770  \medbreak %    \parsebodycommon{#1}{#2}{#3}%
4771  % Define the end token that this defining construct specifies    \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
4772  % so that it will exit this group.    \begingroup\obeylines\activeparens
4773  \def#1{\endgraf\endgroup\medbreak}%    \spacesplit{#3{#4}}%
4774  \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%  }
 \parindent=0in  
 \advance\leftskip by \defbodyindent  
 \exdentamount=\defbodyindent  
 \begingroup\obeylines\activeparens\spacesplit{#3{#4}}}  
4775    
4776  % Used for @deftypemethod and @deftypeivar.  % Used for @deftypemethod and @deftypeivar.
4777  % #1 is the \E... control sequence to end the definition (which we define).  % #1, #2, #3 are the common arguments (see \defparsebody).
 % #2 is the \...x control sequence for consecutive fns (which we define).  
 % #3 is the control sequence to call to resume processing.  
4778  % #4, delimited by a space, is the class name.  % #4, delimited by a space, is the class name.
4779  % #5 is the method's return type.  % #5 is the method's return type.
4780  %  %
4781  \def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV  \def\deftypemethparsebody#1#2#3#4 #5 {%
4782    \medbreak    \parsebodycommon{#1}{#2}{#3}%
   \def#1{\endgraf\endgroup\medbreak}%  
4783    \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%    \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
4784    \parindent=0in    \begingroup\obeylines\activeparens
4785    \advance\leftskip by \defbodyindent    \spacesplit{#3{#4}{#5}}%
4786    \exdentamount=\defbodyindent  }
   \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}  
4787    
4788  % Used for @deftypeop.  The change from \deftypemethparsebody is an  % Used for @deftypeop.  The change from \deftypemethparsebody is an
4789  % extra argument at the beginning which is the `category', instead of it  % extra argument at the beginning which is the `category', instead of it
# Line 4440  width0pt\relax} \fi Line 4792  width0pt\relax} \fi
4792  % input at hand.  Thus also need a control sequence (passed as #5) for  % input at hand.  Thus also need a control sequence (passed as #5) for
4793  % the \E... definition to assign the category name to.  % the \E... definition to assign the category name to.
4794  %  %
4795  \def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV  \def\deftypeopparsebody#1#2#3#4#5 #6 {%
4796    \medbreak    \parsebodycommon{#1}{#2}{#3}%
   \def#1{\endgraf\endgroup\medbreak}%  
4797    \def#2##1 ##2 ##3 {%    \def#2##1 ##2 ##3 {%
4798      \def#4{##1}%      \def#4{##1}%
4799      \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%      \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
4800    \parindent=0in    \begingroup\obeylines\activeparens
4801    \advance\leftskip by \defbodyindent    \spacesplit{#3{#5}{#6}}%
4802    \exdentamount=\defbodyindent  }
   \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}  
4803    
4804  \def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %  % For @defop.
4805  \medbreak %  \def\defopparsebody #1#2#3#4#5 {%
4806  % Define the end token that this defining construct specifies    \parsebodycommon{#1}{#2}{#3}%
4807  % so that it will exit this group.    \def#2##1 ##2 {\def#4{##1}%
4808  \def#1{\endgraf\endgroup\medbreak}%      \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
4809  \def#2##1 ##2 {\def#4{##1}%    \begingroup\obeylines\activeparens
4810  \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%    \spacesplit{#3{#5}}%
4811  \parindent=0in  }
 \advance\leftskip by \defbodyindent  
 \exdentamount=\defbodyindent  
 \begingroup\obeylines\activeparens\spacesplit{#3{#5}}}  
4812    
4813  % These parsing functions are similar to the preceding ones  % These parsing functions are similar to the preceding ones
4814  % except that they do not make parens into active characters.  % except that they do not make parens into active characters.
4815  % These are used for "variables" since they have no arguments.  % These are used for "variables" since they have no arguments.
   
 \def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody  
 \medbreak %  
 % Define the end token that this defining construct specifies  
 % so that it will exit this group.  
 \def#1{\endgraf\endgroup\medbreak}%  
 \def#2{\begingroup\obeylines\spacesplit#3}%  
 \parindent=0in  
 \advance\leftskip by \defbodyindent  
 \exdentamount=\defbodyindent  
 \begingroup %  
 \catcode 61=\active %  
 \obeylines\spacesplit#3}  
   
 % This is used for \def{tp,vr}parsebody.  It could probably be used for  
 % some of the others, too, with some judicious conditionals.  
4816  %  %
4817  \def\parsebodycommon#1#2#3{%  \def\defvarparsebody #1#2#3{%
4818    \begingroup\inENV %    \parsebodycommon{#1}{#2}{#3}%
4819    \medbreak %    \def#2{\begingroup\obeylines\spacesplit#3}%
4820    % Define the end token that this defining construct specifies    \catcode61=\active %
   % so that it will exit this group.  
   \def#1{\endgraf\endgroup\medbreak}%  
   \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%  
   \parindent=0in  
   \advance\leftskip by \defbodyindent  
   \exdentamount=\defbodyindent  
4821    \begingroup\obeylines    \begingroup\obeylines
4822      \spacesplit#3%
4823    }
4824    
4825    % @defopvar.
4826    \def\defopvarparsebody #1#2#3#4#5 {%
4827      \parsebodycommon{#1}{#2}{#3}%
4828      \def#2##1 ##2 {\def#4{##1}%
4829        \begingroup\obeylines\spacesplit{#3{##2}}}%
4830      \begingroup\obeylines
4831      \spacesplit{#3{#5}}%
4832  }  }
4833    
4834  \def\defvrparsebody#1#2#3#4 {%  \def\defvrparsebody#1#2#3#4 {%
4835    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4836      \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
4837      \begingroup\obeylines
4838    \spacesplit{#3{#4}}%    \spacesplit{#3{#4}}%
4839  }  }
4840    
# Line 4512  width0pt\relax} \fi Line 4849  width0pt\relax} \fi
4849  %  %
4850  \def\deftpparsebody #1#2#3#4 {%  \def\deftpparsebody #1#2#3#4 {%
4851    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4852      \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
4853      \begingroup\obeylines
4854    \spacesplit{\parsetpheaderline{#3{#4}}}\empty    \spacesplit{\parsetpheaderline{#3{#4}}}\empty
4855  }  }
4856    
# Line 4528  width0pt\relax} \fi Line 4867  width0pt\relax} \fi
4867    #1{\removeemptybraces#2\relax}{#3}%    #1{\removeemptybraces#2\relax}{#3}%
4868  }%  }%
4869    
 \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %  
 \medbreak %  
 % Define the end token that this defining construct specifies  
 % so that it will exit this group.  
 \def#1{\endgraf\endgroup\medbreak}%  
 \def#2##1 ##2 {\def#4{##1}%  
 \begingroup\obeylines\spacesplit{#3{##2}}}%  
 \parindent=0in  
 \advance\leftskip by \defbodyindent  
 \exdentamount=\defbodyindent  
 \begingroup\obeylines\spacesplit{#3{#5}}}  
   
4870  % Split up #2 at the first space token.  % Split up #2 at the first space token.
4871  % call #1 with two arguments:  % call #1 with two arguments:
4872  %  the first is all of #2 before the space token,  %  the first is all of #2 before the space token,
4873  %  the second is all of #2 after that space token.  %  the second is all of #2 after that space token.
4874  % If #2 contains no space token, all of it is passed as the first arg  % If #2 contains no space token, all of it is passed as the first arg
4875  % and the second is passed as empty.  % and the second is passed as empty.
4876    %
4877  {\obeylines  {\obeylines
4878  \gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%  \gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
4879  \long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%  \long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
4880  \ifx\relax #3%  \ifx\relax #3%
4881  #1{#2}{}\else #1{#2}{#3#4}\fi}}  #1{#2}{}\else #1{#2}{#3#4}\fi}}
4882    
 % So much for the things common to all kinds of definitions.  
   
4883  % Define @defun.  % Define @defun.
4884    
4885  % First, define the processing that is wanted for arguments of \defun  % First, define the processing that is wanted for arguments of \defun
# Line 4614  width0pt\relax} \fi Line 4939  width0pt\relax} \fi
4939  % #1 is the data type, #2 the name, #3 the args.  % #1 is the data type, #2 the name, #3 the args.
4940  \def\deftypefunheaderx #1#2 #3\relax{%  \def\deftypefunheaderx #1#2 #3\relax{%
4941  \doind {fn}{\code{#2}}% Make entry in function index  \doind {fn}{\code{#2}}% Make entry in function index
4942  \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%  \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
4943  \deftypefunargs {#3}\endgroup %  \deftypefunargs {#3}\endgroup %
4944  \catcode 61=\other % Turn off change made in \defparsebody  \catcode 61=\other % Turn off change made in \defparsebody
4945  }  }
# Line 4623  width0pt\relax} \fi Line 4948  width0pt\relax} \fi
4948    
4949  \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}  \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
4950    
4951  % \defheaderxcond#1\relax$$$  % \defheaderxcond#1\relax$.$
4952  % 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.
4953  \def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}  \def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
4954    
4955  % #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.
4956  \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 4960  width0pt\relax} \fi
4960  \begingroup  \begingroup
4961  \normalparens % notably, turn off `&' magic, which prevents  \normalparens % notably, turn off `&' magic, which prevents
4962  %               at least some C++ text from working  %               at least some C++ text from working
4963  \defname {\defheaderxcond#2\relax$$$#3}{#1}%  \defname {\defheaderxcond#2\relax$.$#3}{#1}%
4964  \deftypefunargs {#4}\endgroup %  \deftypefunargs {#4}\endgroup %
4965  \catcode 61=\other % Turn off change made in \defparsebody  \catcode 61=\other % Turn off change made in \defparsebody
4966  }  }
# Line 4681  width0pt\relax} \fi Line 5006  width0pt\relax} \fi
5006  \def\deftypeopheader#1#2#3#4{%  \def\deftypeopheader#1#2#3#4{%
5007    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
5008    \begingroup    \begingroup
5009      \defname{\defheaderxcond#2\relax$$$#3}      \defname{\defheaderxcond#2\relax$.$#3}
5010              {\deftypeopcategory\ \putwordon\ \code{#1}}%              {\deftypeopcategory\ \putwordon\ \code{#1}}%
5011      \deftypefunargs{#4}%      \deftypefunargs{#4}%
5012    \endgroup    \endgroup
# Line 4696  width0pt\relax} \fi Line 5021  width0pt\relax} \fi
5021  \def\deftypemethodheader#1#2#3#4{%  \def\deftypemethodheader#1#2#3#4{%
5022    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
5023    \begingroup    \begingroup
5024      \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%      \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
5025      \deftypefunargs{#4}%      \deftypefunargs{#4}%
5026    \endgroup    \endgroup
5027  }  }
# Line 4710  width0pt\relax} \fi Line 5035  width0pt\relax} \fi
5035  \def\deftypeivarheader#1#2#3{%  \def\deftypeivarheader#1#2#3{%
5036    \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index    \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
5037    \begingroup    \begingroup
5038      \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%      \defname{\defheaderxcond#2\relax$.$#3}
5039                {\putwordInstanceVariableof\ \code{#1}}%
5040      \defvarargs{#3}%      \defvarargs{#3}%
5041    \endgroup    \endgroup
5042  }  }
# Line 4792  width0pt\relax} \fi Line 5118  width0pt\relax} \fi
5118  % 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.
5119  \def\deftypevarheader #1#2{%  \def\deftypevarheader #1#2{%
5120  \dovarind#2 \relax% Make entry in variables index  \dovarind#2 \relax% Make entry in variables index
5121  \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%  \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
5122  \interlinepenalty=10000  \interlinepenalty=10000
5123  \endgraf\nobreak\vskip -\parskip\nobreak  \endgraf\nobreak\vskip -\parskip\nobreak
5124  \endgroup}  \endgroup}
# Line 4803  width0pt\relax} \fi Line 5129  width0pt\relax} \fi
5129  \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}  \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
5130    
5131  \def\deftypevrheader #1#2#3{\dovarind#3 \relax%  \def\deftypevrheader #1#2#3{\dovarind#3 \relax%
5132  \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}  \begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
5133  \interlinepenalty=10000  \interlinepenalty=10000
5134  \endgraf\nobreak\vskip -\parskip\nobreak  \endgraf\nobreak\vskip -\parskip\nobreak
5135  \endgroup}  \endgroup}
# Line 4963  width0pt\relax} \fi Line 5289  width0pt\relax} \fi
5289       \message{Warning: redefining \the\macname}%       \message{Warning: redefining \the\macname}%
5290    \else    \else
5291       \expandafter\ifx\csname \the\macname\endcsname \relax       \expandafter\ifx\csname \the\macname\endcsname \relax
5292       \else \errmessage{The name \the\macname\space is reserved}\fi       \else \errmessage{Macro name \the\macname\space already defined}\fi
5293       \global\cslet{macsave.\the\macname}{\the\macname}%       \global\cslet{macsave.\the\macname}{\the\macname}%
5294       \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%       \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
5295       % Add the macroname to \macrolist       % Add the macroname to \macrolist
# Line 5244  width0pt\relax} \fi Line 5570  width0pt\relax} \fi
5570    \ifpdf    \ifpdf
5571      \leavevmode      \leavevmode
5572      \getfilename{#4}%      \getfilename{#4}%
5573      \ifnum\filenamelength>0      {\normalturnoffactive
5574        \startlink attr{/Border [0 0 0]}%       \ifnum\filenamelength>0
5575          goto file{\the\filename.pdf} name{#1@}%         \startlink attr{/Border [0 0 0]}%
5576      \else           goto file{\the\filename.pdf} name{#1}%
5577        \startlink attr{/Border [0 0 0]}%       \else
5578          goto name{#1@}%         \startlink attr{/Border [0 0 0]}%
5579      \fi           goto name{#1}%
5580         \fi
5581        }%
5582      \linkcolor      \linkcolor
5583    \fi    \fi
5584    %    %
# Line 5512  width0pt\relax} \fi Line 5840  width0pt\relax} \fi
5840    %    %
5841    \smallfonts \rm    \smallfonts \rm
5842    %    %
5843    % Hang the footnote text off the number.    % Because we use hanging indentation in footnotes, a @noindent appears
5844    \hang    % to exdent this text, so make it be a no-op.  makeinfo does not use
5845      % hanging indentation so @noindent can still be needed within footnote
5846      % text after an @example or the like (not that this is good style).
5847      \let\noindent = \relax
5848      %
5849      % Hang the footnote text off the number.  Use \everypar in case the
5850      % footnote extends for more than one paragraph.
5851      \everypar = {\hang}%
5852    \textindent{\thisfootno}%    \textindent{\thisfootno}%
5853    %    %
5854    % 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 5865  width0pt\relax} \fi
5865    
5866  }%end \catcode `\@=11  }%end \catcode `\@=11
5867    
 % 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  
   }%  
 }  
   
5868  % @| inserts a changebar to the left of the current line.  It should  % @| inserts a changebar to the left of the current line.  It should
5869  % surround any changed text.  This approach does *not* work if the  % surround any changed text.  This approach does *not* work if the
5870  % 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 5929  width0pt\relax} \fi
5929        \global\warnednoepsftrue        \global\warnednoepsftrue
5930      \fi      \fi
5931    \else    \else
5932      \imagexxx #1,,,\finish      \imagexxx #1,,,,,\finish
5933    \fi    \fi
5934  }  }
5935  %  %
5936  % Arguments to @image:  % Arguments to @image:
5937  % #1 is (mandatory) image filename; we tack on .eps extension.  % #1 is (mandatory) image filename; we tack on .eps extension.
5938  % #2 is (optional) width, #3 is (optional) height.  % #2 is (optional) width, #3 is (optional) height.
5939  % #4 is just the usual extra ignored arg for parsing this stuff.  % #4 is (ignored optional) html alt text.
5940  \def\imagexxx#1,#2,#3,#4\finish{%  % #5 is (ignored optional) extension.
5941    % #6 is just the usual extra ignored arg for parsing this stuff.
5942    \newif\ifimagevmode
5943    \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
5944      \catcode`\^^M = 5     % in case we're inside an example
5945      \normalturnoffactive  % allow _ et al. in names
5946      % If the image is by itself, center it.
5947      \ifvmode
5948        \imagevmodetrue
5949        \nobreak\bigskip
5950        % Usually we'll have text after the image which will insert
5951        % \parskip glue, so insert it here too to equalize the space
5952        % above and below.
5953        \nobreak\vskip\parskip
5954        \nobreak
5955        \line\bgroup\hss
5956      \fi
5957      %
5958      % Output the image.
5959    \ifpdf    \ifpdf
5960      \centerline{\dopdfimage{#1}{#2}{#3}}%      \dopdfimage{#1}{#2}{#3}%
5961    \else    \else
5962      % \epsfbox itself resets \epsf?size at each figure.      % \epsfbox itself resets \epsf?size at each figure.
5963      \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi      \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
5964      \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi      \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
5965      \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  
5966    \fi    \fi
5967  }    %
5968      \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image
5969    \endgroup}
5970    
5971    
5972  \message{localization,}  \message{localization,}
# Line 5714  should work if nowhere else does.} Line 6035  should work if nowhere else does.}
6035  }  }
6036    
6037  % Parameters in order: 1) textheight; 2) textwidth; 3) voffset;  % Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
6038  % 4) hoffset; 5) binding offset; 6) topskip.  Then whoever calls us can  % 4) hoffset; 5) binding offset; 6) topskip.  We also call
6039  % set \parskip and call \setleading for \baselineskip.  % \setleading{\textleading}, so the caller should define \textleading.
6040    % The caller should also set \parskip.
6041  %  %
6042  \def\internalpagesizes#1#2#3#4#5#6{%  \def\internalpagesizes#1#2#3#4#5#6{%
6043    \voffset = #3\relax    \voffset = #3\relax
# Line 5736  should work if nowhere else does.} Line 6058  should work if nowhere else does.}
6058    \normaloffset = #4\relax    \normaloffset = #4\relax
6059    \bindingoffset = #5\relax    \bindingoffset = #5\relax
6060    %    %
6061      \setleading{\textleading}
6062      %
6063    \parindent = \defaultparindent    \parindent = \defaultparindent
6064    \setemergencystretch    \setemergencystretch
6065  }  }
6066    
6067    % Use `small' versions.
6068    %
6069    \def\smallenvironments{%
6070      \let\smalldisplay = \smalldisplayx
6071      \let\smallexample = \smalllispx
6072      \let\smallformat = \smallformatx
6073      \let\smalllisp = \smalllispx
6074    }
6075    
6076  % @letterpaper (the default).  % @letterpaper (the default).
6077  \def\letterpaper{{\globaldefs = 1  \def\letterpaper{{\globaldefs = 1
6078    \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
6079    \setleading{13.2pt}%    \textleading = 13.2pt
6080    %    %
6081    % If page is nothing but text, make it come out even.    % If page is nothing but text, make it come out even.
6082    \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 6085  should work if nowhere else does.}
6085  % Use @smallbook to reset parameters for 7x9.5 (or so) format.  % Use @smallbook to reset parameters for 7x9.5 (or so) format.
6086  \def\smallbook{{\globaldefs = 1  \def\smallbook{{\globaldefs = 1
6087    \parskip = 2pt plus 1pt    \parskip = 2pt plus 1pt
6088    \setleading{12pt}%    \textleading = 12pt
6089    %    %
6090    \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%    \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
6091    %    %
# Line 5762  should work if nowhere else does.} Line 6095  should work if nowhere else does.}
6095    \contentsrightmargin = 0pt    \contentsrightmargin = 0pt
6096    \deftypemargin = 0pt    \deftypemargin = 0pt
6097    \defbodyindent = .5cm    \defbodyindent = .5cm
6098    %    \smallenvironments
   \let\smalldisplay = \smalldisplayx  
   \let\smallexample = \smalllispx  
   \let\smallformat = \smallformatx  
   \let\smalllisp = \smalllispx  
6099  }}  }}
6100    
6101  % Use @afourpaper to print on European A4 paper.  % Use @afourpaper to print on European A4 paper.
6102  \def\afourpaper{{\globaldefs = 1  \def\afourpaper{{\globaldefs = 1
   \setleading{12pt}%  
6103    \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
6104      \textleading = 12pt
6105    %    %
6106    \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%    \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
6107    %    %
# Line 5780  should work if nowhere else does.} Line 6109  should work if nowhere else does.}
6109    \hfuzz = 1pt    \hfuzz = 1pt
6110  }}  }}
6111    
6112    % Use @afivepaper to print on European A5 paper.
6113    % From romildo@urano.iceb.ufop.br, 2 July 2000.
6114    % He also recommends making @example and @lisp be small.
6115    \def\afivepaper{{\globaldefs = 1
6116      \parskip = 2pt plus 1pt minus 0.1pt
6117      \textleading = 12.5pt
6118      %
6119      \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}%
6120      %
6121      \lispnarrowing = 0.2in
6122      \tolerance = 800
6123      \hfuzz = 1.2pt
6124      \contentsrightmargin = 0mm
6125      \deftypemargin = 0pt
6126      \defbodyindent = 2mm
6127      \tableindent = 12mm
6128      %
6129      \smallenvironments
6130    }}
6131    
6132  % A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin  % A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin
6133  % 29mm, hence bottom margin 28mm, nominal side margin 3cm.  % 29mm, hence bottom margin 28mm, nominal side margin 3cm.
6134  \def\afourlatex{{\globaldefs = 1  \def\afourlatex{{\globaldefs = 1
6135    \setleading{13.6pt}%    \textleading = 13.6pt
6136    %    %
6137    \afourpaper    \afourpaper
6138    \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%    \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
6139    %    %
6140      % Must explicitly reset to 0 because we call \afourpaper, apparently,
6141      % although this does not entirely make sense.
6142    \globaldefs = 0    \globaldefs = 0
6143  }}  }}
6144    
6145  % Use @afourwide to print on European A4 paper in wide format.  % Use @afourwide to print on European A4 paper in wide format.
6146  \def\afourwide{%  \def\afourwide{%
6147    \afourpaper    \afourpaper
6148    \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%    \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
   %  
   \globaldefs = 0  
6149  }  }
6150    
6151  % @pagesizes TEXTHEIGHT[,TEXTWIDTH]  % @pagesizes TEXTHEIGHT[,TEXTWIDTH]
# Line 5810  should work if nowhere else does.} Line 6159  should work if nowhere else does.}
6159    \globaldefs = 1    \globaldefs = 1
6160    %    %
6161    \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
6162    \setleading{13.2pt}%    \setleading{\textleading}%
6163    %    %
6164    \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%    \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
6165  }}  }}
# Line 5840  should work if nowhere else does.} Line 6189  should work if nowhere else does.}
6189  \def\normalless{<}  \def\normalless{<}
6190  \def\normalgreater{>}  \def\normalgreater{>}
6191  \def\normalplus{+}  \def\normalplus{+}
6192  \def\normaldollar{$}  \def\normaldollar{$}%$ font-lock fix
6193    
6194  % 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
6195  % 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 6238  should work if nowhere else does.}
6238  \catcode`\+=\active  \catcode`\+=\active
6239  \def+{{\tt \char 43}}  \def+{{\tt \char 43}}
6240  \catcode`\$=\active  \catcode`\$=\active
6241  \def${\ifusingit{{\sl\$}}\normaldollar}  \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
6242  %\catcode 27=\active  %\catcode 27=\active
6243  %\def^^[{$\diamondsuit$}  %\def^^[{$\diamondsuit$}
6244    
# Line 5934  should work if nowhere else does.} Line 6283  should work if nowhere else does.}
6283  @let<=@normalless  @let<=@normalless
6284  @let>=@normalgreater  @let>=@normalgreater
6285  @let+=@normalplus  @let+=@normalplus
6286  @let$=@normaldollar}  @let$=@normaldollar}%$ font-lock fix
6287    
6288  @def@normalturnoffactive{@let"=@normaldoublequote  @def@normalturnoffactive{@let"=@normaldoublequote
6289  @let\=@normalbackslash  @let\=@normalbackslash
# Line 5945  should work if nowhere else does.} Line 6294  should work if nowhere else does.}
6294  @let<=@normalless  @let<=@normalless
6295  @let>=@normalgreater  @let>=@normalgreater
6296  @let+=@normalplus  @let+=@normalplus
6297  @let$=@normaldollar}  @let$=@normaldollar}%$ font-lock fix
6298    
6299  % Make _ and + \other characters, temporarily.  % Make _ and + \other characters, temporarily.
6300  % This is canceled by @fixbackslash.  % This is canceled by @fixbackslash.

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26