/[emacs]/emacs/lispintro/texinfo.tex
ViewVC logotype

Diff of /emacs/lispintro/texinfo.tex

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

revision 1.1 by eliz, Sat Nov 24 08:45:51 2001 UTC revision 1.1.4.1 by miles, Fri Apr 4 06:20:41 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{2001-05-24.08}  \def\texinfoversion{2002-06-07.15}
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  %               2000, 01 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 172  Line 175 
175    
176  % add check for \lastpenalty to plain's definitions.  If the last thing  % 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.  % we did was a \nobreak, we don't want to insert more space.
178  %  %
179  \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount  \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
180    \removelastskip\penalty-50\smallskip\fi\fi}    \removelastskip\penalty-50\smallskip\fi\fi}
181  \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount  \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
# Line 441  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 727  where each line of input produces a line Line 730  where each line of input produces a line
730  % @inmargin{TEXT [, RIGHT-TEXT]}  % @inmargin{TEXT [, RIGHT-TEXT]}
731  % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;  % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
732  % else use TEXT for both).  % else use TEXT for both).
733  %  %
734  \def\inmargin#1{\parseinmargin #1,,\finish}  \def\inmargin#1{\parseinmargin #1,,\finish}
735  \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.  \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
736    \setbox0 = \hbox{\ignorespaces #2}%    \setbox0 = \hbox{\ignorespaces #2}%
737    \ifdim\wd0 > 0pt    \ifdim\wd0 > 0pt
738      \def\lefttext{#1}%  have both texts      \def\lefttext{#1}%  have both texts
739      \def\righttext{#2}%      \def\righttext{#2}%
# Line 794  where each line of input produces a line Line 797  where each line of input produces a line
797  % @paragraphindent NCHARS  % @paragraphindent NCHARS
798  % We'll use ems for NCHARS, close enough.  % We'll use ems for NCHARS, close enough.
799  % We cannot implement @paragraphindent asis, though.  % We cannot implement @paragraphindent asis, though.
800  %  %
801  \def\asisword{asis} % no translation, these are keywords  \def\asisword{asis} % no translation, these are keywords
802  \def\noneword{none}  \def\noneword{none}
803  %  %
# Line 833  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  % This isn't quite enough for @math to work properly in indices, but it  % @math gets a chance to work.  This could perhaps be fixed, but for now
847  % seems unlikely it will ever be needed there.  % 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  \let\implicitmath = $  % Another complication: we want \\ (and @\) to output a \ character.
863  \def\math#1{\implicitmath #1\implicitmath}  % 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    \def\math{%
871      \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 927  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
# Line 942  where each line of input produces a line Line 972  where each line of input produces a line
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 = \Blue  % was Cyan, but that seems light?    \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
# Line 955  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        \let\_ = \normalunderscore        \let\_ = \normalunderscore
993        % Thanh's hack / proper braces in bookmarks          % 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 1000  where each line of input produces a line Line 1032  where each line of input produces a line
1032        \let\nextmakelinks=\makelinks        \let\nextmakelinks=\makelinks
1033        \ifnum\lnkcount>0,\fi        \ifnum\lnkcount>0,\fi
1034        \picknum{#1}%        \picknum{#1}%
1035        \startlink attr{/Border [0 0 0]}        \startlink attr{/Border [0 0 0]}
1036          goto name{\pdfmkpgn{\the\pgn}}%          goto name{\pdfmkpgn{\the\pgn}}%
1037        \linkcolor #1%        \linkcolor #1%
1038        \advance\lnkcount by 1%        \advance\lnkcount by 1%
# Line 1055  where each line of input produces a line Line 1087  where each line of input produces a line
1087      \ifx\first0\adn0      \ifx\first0\adn0
1088      \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3      \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
1089      \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6      \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
1090      \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9      \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
1091      \else      \else
1092        \ifnum0=\countA\else\makelink\fi        \ifnum0=\countA\else\makelink\fi
1093        \ifx\first.\let\next=\done\else        \ifx\first.\let\next=\done\else
# Line 1068  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 1087  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 1119  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}    \mainmagstep=\magstep1
1179      \setfont\textrm\rmshape{10}{\mainmagstep}
1180      \setfont\texttt\ttshape{10}{\mainmagstep}
1181  \fi  \fi
1182  % Instead of cmb10, you many want to use cmbx10.  % Instead of cmb10, you many want to use cmbx10.
1183  % cmbx10 is a prettier font on its own, but cmb10  % cmbx10 is a prettier font on its own, but cmb10
# Line 1156  where each line of input produces a line Line 1208  where each line of input produces a line
1208  \font\smalli=cmmi9  \font\smalli=cmmi9
1209  \font\smallsy=cmsy9  \font\smallsy=cmsy9
1210    
1211    % Fonts for small examples (8pt).
1212    \setfont\smallerrm\rmshape{8}{1000}
1213    \setfont\smallertt\ttshape{8}{1000}
1214    \setfont\smallerbf\bfshape{10}{800}
1215    \setfont\smallerit\itshape{8}{1000}
1216    \setfont\smallersl\slshape{8}{1000}
1217    \setfont\smallersf\sfshape{8}{1000}
1218    \setfont\smallersc\scshape{10}{800}
1219    \setfont\smallerttsl\ttslshape{10}{800}
1220    \font\smalleri=cmmi8
1221    \font\smallersy=cmsy8
1222    
1223  % Fonts for title page:  % Fonts for title page:
1224  \setfont\titlerm\rmbshape{12}{\magstep3}  \setfont\titlerm\rmbshape{12}{\magstep3}
1225  \setfont\titleit\itbshape{10}{\magstep4}  \setfont\titleit\itbshape{10}{\magstep4}
# Line 1193  where each line of input produces a line Line 1257  where each line of input produces a line
1257  \font\seci=cmmi12 scaled \magstep1  \font\seci=cmmi12 scaled \magstep1
1258  \font\secsy=cmsy10 scaled \magstep2  \font\secsy=cmsy10 scaled \magstep2
1259    
 % \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  
   
1260  % Subsection fonts (13.15pt).  % Subsection fonts (13.15pt).
1261  \setfont\ssecrm\rmbshape{12}{\magstephalf}  \setfont\ssecrm\rmbshape{12}{\magstephalf}
1262  \setfont\ssecit\itbshape{10}{1315}  \setfont\ssecit\itbshape{10}{1315}
# Line 1223  where each line of input produces a line Line 1273  where each line of input produces a line
1273    
1274  % 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,
1275  % we have to define the \textfont of the standard families.  Since  % we have to define the \textfont of the standard families.  Since
1276  % texinfo doesn't allow for producing subscripts and superscripts, we  % texinfo doesn't allow for producing subscripts and superscripts except
1277  % don't bother to reset \scriptfont and \scriptscriptfont (which would  % in the main text, we don't bother to reset \scriptfont and
1278  % also require loading a lot more fonts).  % \scriptscriptfont (which would also require loading a lot more fonts).
1279  %  %
1280  \def\resetmathfonts{%  \def\resetmathfonts{%
1281    \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy    \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
1282    \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf    \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
1283    \textfont\ttfam = \tentt \textfont\sffam = \tensf    \textfont\ttfam=\tentt \textfont\sffam=\tensf
1284  }  }
1285    
   
1286  % The font-changing commands redefine the meanings of \tenSTYLE, instead  % The font-changing commands redefine the meanings of \tenSTYLE, instead
1287  % 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
1288  % 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 1244  where each line of input produces a line Line 1293  where each line of input produces a line
1293    \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl    \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
1294    \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc    \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
1295    \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl    \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
1296    \resetmathfonts}    \resetmathfonts \setleading{\textleading}}
1297  \def\titlefonts{%  \def\titlefonts{%
1298    \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl    \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
1299    \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc    \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
# Line 1273  where each line of input produces a line Line 1322  where each line of input produces a line
1322    \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc    \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
1323    \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy    \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
1324    \let\tenttsl=\smallttsl    \let\tenttsl=\smallttsl
1325    \resetmathfonts \setleading{11pt}}    \resetmathfonts \setleading{10.5pt}}
1326    \def\smallerfonts{%
1327      \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
1328      \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
1329      \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
1330      \let\tenttsl=\smallerttsl
1331      \resetmathfonts \setleading{9.5pt}}
1332    \let\smallexamplefonts = \smallerfonts
1333    
1334  % 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.
1335  %  %
# Line 1387  where each line of input produces a line Line 1443  where each line of input produces a line
1443    
1444  \def\realdash{-}  \def\realdash{-}
1445  \def\codedash{-\discretionary{}{}{}}  \def\codedash{-\discretionary{}{}{}}
1446  \def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}  \def\codeunder{%
1447      % this is all so @math{@code{var_name}+1} can work.  In math mode, _
1448      % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
1449      % will therefore expand the active definition of _, which is us
1450      % (inside @code that is), therefore an endless loop.
1451      \ifusingtt{\ifmmode
1452                   \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
1453                 \else\normalunderscore \fi
1454                 \discretionary{}{}{}}%
1455                {\_}%
1456    }
1457  \def\codex #1{\tclose{#1}\endgroup}  \def\codex #1{\tclose{#1}\endgroup}
1458    
 %\let\exp=\tclose  %Was temporary  
   
1459  % @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,
1460  % then @kbd has no effect.  % then @kbd has no effect.
1461    
# Line 1458  where each line of input produces a line Line 1522  where each line of input produces a line
1522    
1523  % rms does not like angle brackets --karl, 17may97.  % rms does not like angle brackets --karl, 17may97.
1524  % So now @email is just like @uref, unless we are pdf.  % So now @email is just like @uref, unless we are pdf.
1525  %  %
1526  %\def\email#1{\angleleft{\tt #1}\angleright}  %\def\email#1{\angleleft{\tt #1}\angleright}
1527  \ifpdf  \ifpdf
1528    \def\email#1{\doemail#1,,\finish}    \def\email#1{\doemail#1,,\finish}
# Line 1576  where each line of input produces a line Line 1640  where each line of input produces a line
1640     \oldpage     \oldpage
1641     \endgroup     \endgroup
1642     %     %
1643       % Need this before the \...aftertitlepage checks so that if they are
1644       % in effect the toc pages will come out with page numbers.
1645       \HEADINGSon
1646       %
1647     % If they want short, they certainly want long too.     % If they want short, they certainly want long too.
1648     \ifsetshortcontentsaftertitlepage     \ifsetshortcontentsaftertitlepage
1649       \shortcontents       \shortcontents
# Line 1589  where each line of input produces a line Line 1657  where each line of input produces a line
1657       \global\let\contents = \relax       \global\let\contents = \relax
1658       \global\let\shortcontents = \relax       \global\let\shortcontents = \relax
1659     \fi     \fi
    %  
    \ifpdf \pdfmakepagedesttrue \fi  
    %  
    \HEADINGSon  
1660  }  }
1661    
1662  \def\finishtitlepage{%  \def\finishtitlepage{%
# Line 2350  width0pt\relax} \fi Line 2414  width0pt\relax} \fi
2414    \let\item = \relax    \let\item = \relax
2415  }  }
2416    
2417  % Ignore @ignore ... @end ignore.  % Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu,
2418    % @direntry, and @documentdescription.
2419  %  %
2420  \def\ignore{\doignore{ignore}}  \def\ignore{\doignore{ignore}}
   
 % Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.  
 %  
 \def\ifinfo{\doignore{ifinfo}}  
2421  \def\ifhtml{\doignore{ifhtml}}  \def\ifhtml{\doignore{ifhtml}}
2422    \def\ifinfo{\doignore{ifinfo}}
2423    \def\ifplaintext{\doignore{ifplaintext}}
2424  \def\ifnottex{\doignore{ifnottex}}  \def\ifnottex{\doignore{ifnottex}}
2425  \def\html{\doignore{html}}  \def\html{\doignore{html}}
2426  \def\menu{\doignore{menu}}  \def\menu{\doignore{menu}}
2427  \def\direntry{\doignore{direntry}}  \def\direntry{\doignore{direntry}}
2428    \def\documentdescription{\doignore{documentdescription}}
2429    \def\documentdescriptionword{documentdescription}
2430    
2431  % @dircategory CATEGORY  -- specify a category of the dir file  % @dircategory CATEGORY  -- specify a category of the dir file
2432  % which this file should belong to.  Ignore this in TeX.  % which this file should belong to.  Ignore this in TeX.
# Line 2388  width0pt\relax} \fi Line 2453  width0pt\relax} \fi
2453    % We must not have @c interpreted as a control sequence.    % We must not have @c interpreted as a control sequence.
2454    \catcode`\@ = 12    \catcode`\@ = 12
2455    %    %
2456    % Make the letter c a comment character so that the rest of the line    \def\ignoreword{#1}%
2457    % will be ignored. This way, the document can have (for example)    \ifx\ignoreword\documentdescriptionword
2458    %   @c @end ifinfo      % The c kludge breaks documentdescription, since
2459    % and the @end ifinfo will be properly ignored.      % `documentdescription' contains a `c'.  Means not everything will
2460    % (We've just changed @ to catcode 12.)      % be ignored inside @documentdescription, but oh well...
2461    \catcode`\c = 14    \else
2462        % Make the letter c a comment character so that the rest of the line
2463        % will be ignored. This way, the document can have (for example)
2464        %   @c @end ifinfo
2465        % and the @end ifinfo will be properly ignored.
2466        % (We've just changed @ to catcode 12.)
2467        \catcode`\c = 14
2468      \fi
2469    %    %
2470    % And now expand that command.    % And now expand the command defined above.
2471    \doignoretext    \doignoretext
2472  }  }
2473    
# Line 2467  width0pt\relax} \fi Line 2539  width0pt\relax} \fi
2539      \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont      \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
2540      \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont      \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
2541      \let\tensf=\nullfont      \let\tensf=\nullfont
2542      % Similarly for index fonts (mostly for their use in smallexample).      % Similarly for index fonts.
2543      \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont      \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
2544      \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont      \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
2545      \let\smallsf=\nullfont      \let\smallsf=\nullfont
2546        % Similarly for smallexample fonts.
2547        \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
2548        \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
2549        \let\smallersf=\nullfont
2550      %      %
2551      % Don't complain when characters are missing from the fonts.      % Don't complain when characters are missing from the fonts.
2552      \tracinglostchars = 0      \tracinglostchars = 0
# Line 2582  width0pt\relax} \fi Line 2658  width0pt\relax} \fi
2658  \def\ifclearfail{\nestedignore{ifclear}}  \def\ifclearfail{\nestedignore{ifclear}}
2659  \defineunmatchedend{ifclear}  \defineunmatchedend{ifclear}
2660    
2661  % @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text  % @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
2662  % following, through the first @end iftex (etc.).  Make `@end iftex'  % read the text following, through the first @end iftex (etc.).  Make
2663  % (etc.) valid only after an @iftex.  % `@end iftex' (etc.) valid only after an @iftex.
2664  %  %
2665  \def\iftex{\conditionalsucceed{iftex}}  \def\iftex{\conditionalsucceed{iftex}}
2666  \def\ifnothtml{\conditionalsucceed{ifnothtml}}  \def\ifnothtml{\conditionalsucceed{ifnothtml}}
2667  \def\ifnotinfo{\conditionalsucceed{ifnotinfo}}  \def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
2668    \def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
2669  \defineunmatchedend{iftex}  \defineunmatchedend{iftex}
2670  \defineunmatchedend{ifnothtml}  \defineunmatchedend{ifnothtml}
2671  \defineunmatchedend{ifnotinfo}  \defineunmatchedend{ifnotinfo}
2672    \defineunmatchedend{ifnotplaintext}
2673    
2674  % 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
2675  % at @end iftex, since then @set commands inside the conditional have no  % @end iftex, since then @set commands inside the conditional have no
2676  % 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
2677  % 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
2678  % 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 2665  width0pt\relax} \fi Line 2743  width0pt\relax} \fi
2743    
2744  % @synindex foo bar    makes index foo feed into index bar.  % @synindex foo bar    makes index foo feed into index bar.
2745  % 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.
2746  %  %
2747  % @syncodeindex foo bar   similar, but put all entries made for index foo  % @syncodeindex foo bar   similar, but put all entries made for index foo
2748  % inside @code.  % inside @code.
2749  %  %
2750  \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}  \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
2751  \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}  \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
2752    
# Line 2707  width0pt\relax} \fi Line 2785  width0pt\relax} \fi
2785  \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}  \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
2786  \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}  \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
2787    
2788    % Take care of texinfo commands likely to appear in an index entry.
2789    % (Must be a way to avoid doing expansion at all, and thus not have to
2790    % laboriously list every single command here.)
2791    %
2792  \def\indexdummies{%  \def\indexdummies{%
2793  \def\ { }%  \def\ { }%
2794    \def\@{@}% change to @@ when we switch to @ as escape char in aux files.
2795    % Need these in case \tex is in effect and \{ is a \delimiter again.
2796    % But can't use \lbracecmd and \rbracecmd because texindex assumes
2797    % braces and backslashes are used only as delimiters.
2798    \let\{ = \mylbrace
2799    \let\} = \myrbrace
2800    \def\_{{\realbackslash _}}%
2801    \normalturnoffactive
2802    %
2803  % Take care of the plain tex accent commands.  % Take care of the plain tex accent commands.
2804    \def\,##1{\realbackslash ,{##1}}%
2805  \def\"{\realbackslash "}%  \def\"{\realbackslash "}%
2806  \def\`{\realbackslash `}%  \def\`{\realbackslash `}%
2807  \def\'{\realbackslash '}%  \def\'{\realbackslash '}%
# Line 2722  width0pt\relax} \fi Line 2814  width0pt\relax} \fi
2814  \def\u{\realbackslash u}%  \def\u{\realbackslash u}%
2815  \def\v{\realbackslash v}%  \def\v{\realbackslash v}%
2816  \def\H{\realbackslash H}%  \def\H{\realbackslash H}%
2817    \def\dotless##1{\realbackslash dotless {##1}}%
2818  % 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}%  
2819  \def\AA{\realbackslash AA}%  \def\AA{\realbackslash AA}%
2820  \def\o{\realbackslash o}%  \def\AE{\realbackslash AE}%
2821    \def\L{\realbackslash L}%
2822    \def\OE{\realbackslash OE}%
2823  \def\O{\realbackslash O}%  \def\O{\realbackslash O}%
2824    \def\aa{\realbackslash aa}%
2825    \def\ae{\realbackslash ae}%
2826  \def\l{\realbackslash l}%  \def\l{\realbackslash l}%
2827  \def\L{\realbackslash L}%  \def\oe{\realbackslash oe}%
2828    \def\o{\realbackslash o}%
2829  \def\ss{\realbackslash ss}%  \def\ss{\realbackslash ss}%
2830  % Take care of texinfo commands likely to appear in an index entry.  %
2831  % (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 }%  
2832  \def\bf{\realbackslash bf }%  \def\bf{\realbackslash bf }%
2833    \def\gtr{\realbackslash gtr}%
2834    \def\hat{\realbackslash hat}%
2835    \def\less{\realbackslash less}%
2836  %\def\rm{\realbackslash rm }%  %\def\rm{\realbackslash rm }%
 \def\sl{\realbackslash sl }%  
2837  \def\sf{\realbackslash sf}%  \def\sf{\realbackslash sf}%
2838    \def\sl{\realbackslash sl }%
2839    \def\tclose##1{\realbackslash tclose {##1}}%
2840  \def\tt{\realbackslash tt}%  \def\tt{\realbackslash tt}%
2841  \def\gtr{\realbackslash gtr}%  %
2842  \def\less{\realbackslash less}%  \def\b##1{\realbackslash b {##1}}%
2843  \def\hat{\realbackslash hat}%  \def\i##1{\realbackslash i {##1}}%
2844    \def\sc##1{\realbackslash sc {##1}}%
2845    \def\t##1{\realbackslash t {##1}}%
2846    \def\r##1{\realbackslash r {##1}}%
2847    %
2848  \def\TeX{\realbackslash TeX}%  \def\TeX{\realbackslash TeX}%
2849  \def\dots{\realbackslash dots }%  \def\acronym##1{\realbackslash acronym {##1}}%
2850  \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}}%  
2851  \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}}%  
2852  \def\command##1{\realbackslash command {##1}}%  \def\command##1{\realbackslash command {##1}}%
2853    \def\dfn##1{\realbackslash dfn {##1}}%
2854    \def\dots{\realbackslash dots }%
2855    \def\emph##1{\realbackslash emph {##1}}%
2856    \def\env##1{\realbackslash env {##1}}%
2857    \def\file##1{\realbackslash file {##1}}%
2858    \def\kbd##1{\realbackslash kbd {##1}}%
2859    \def\key##1{\realbackslash key {##1}}%
2860    \def\math##1{\realbackslash math {##1}}%
2861  \def\option##1{\realbackslash option {##1}}%  \def\option##1{\realbackslash option {##1}}%
 \def\dotless##1{\realbackslash dotless {##1}}%  
2862  \def\samp##1{\realbackslash samp {##1}}%  \def\samp##1{\realbackslash samp {##1}}%
2863  \def\,##1{\realbackslash ,{##1}}%  \def\strong##1{\realbackslash strong {##1}}%
2864  \def\t##1{\realbackslash t {##1}}%  \def\uref##1{\realbackslash uref {##1}}%
2865  \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}}%  
2866  \def\var##1{\realbackslash var {##1}}%  \def\var##1{\realbackslash var {##1}}%
2867  \def\kbd##1{\realbackslash kbd {##1}}%  \def\w{\realbackslash w }%
2868  \def\dfn##1{\realbackslash dfn {##1}}%  %
2869  \def\emph##1{\realbackslash emph {##1}}%  % These math commands don't seem likely to be used in index entries.
2870  \def\acronym##1{\realbackslash acronym {##1}}%  \def\copyright{\realbackslash copyright}%
2871    \def\equiv{\realbackslash equiv}%
2872    \def\error{\realbackslash error}%
2873    \def\expansion{\realbackslash expansion}%
2874    \def\point{\realbackslash point}%
2875    \def\print{\realbackslash print}%
2876    \def\result{\realbackslash result}%
2877  %  %
2878  % Handle some cases of @value -- where the variable name does not  % Handle some cases of @value -- where the variable name does not
2879  % contain - or _, and the value does not contain any  % contain - or _, and the value does not contain any
# Line 2798  width0pt\relax} \fi Line 2887  width0pt\relax} \fi
2887    
2888  % If an index command is used in an @example environment, any spaces  % If an index command is used in an @example environment, any spaces
2889  % therein should become regular spaces in the raw index file, not the  % therein should become regular spaces in the raw index file, not the
2890  % expansion of \tie (\\leavevmode \penalty \@M \ ).  % expansion of \tie (\leavevmode \penalty \@M \ ).
2891  {\obeyspaces  {\obeyspaces
2892   \gdef\unsepspaces{\obeyspaces\let =\space}}   \gdef\unsepspaces{\obeyspaces\let =\space}}
2893    
# Line 2809  width0pt\relax} \fi Line 2898  width0pt\relax} \fi
2898  \def\indexdummydots{...}  \def\indexdummydots{...}
2899    
2900  \def\indexnofonts{%  \def\indexnofonts{%
2901  % Just ignore accents.  \def\@{@}%
2902    % how to handle braces?
2903    \def\_{\normalunderscore}%
2904    %
2905  \let\,=\indexdummyfont  \let\,=\indexdummyfont
2906  \let\"=\indexdummyfont  \let\"=\indexdummyfont
2907  \let\`=\indexdummyfont  \let\`=\indexdummyfont
# Line 2825  width0pt\relax} \fi Line 2917  width0pt\relax} \fi
2917  \let\H=\indexdummyfont  \let\H=\indexdummyfont
2918  \let\dotless=\indexdummyfont  \let\dotless=\indexdummyfont
2919  % 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}%  
2920  \def\AA{AA}%  \def\AA{AA}%
2921  \def\o{o}%  \def\AE{AE}%
2922    \def\L{L}%
2923    \def\OE{OE}%
2924  \def\O{O}%  \def\O{O}%
2925    \def\aa{aa}%
2926    \def\ae{ae}%
2927  \def\l{l}%  \def\l{l}%
2928  \def\L{L}%  \def\oe{oe}%
2929    \def\o{o}%
2930  \def\ss{ss}%  \def\ss{ss}%
2931  \let\w=\indexdummyfont  %
2932  \let\t=\indexdummyfont  % Don't no-op \tt, since it isn't a user-level command
2933  \let\r=\indexdummyfont  % and is used in the definitions of the active chars like <, >, |, etc.
2934  \let\i=\indexdummyfont  % Likewise with the other plain tex font commands.
2935    %\let\tt=\indexdummyfont
2936    %
2937  \let\b=\indexdummyfont  \let\b=\indexdummyfont
2938  \let\emph=\indexdummyfont  \let\i=\indexdummyfont
2939  \let\strong=\indexdummyfont  \let\r=\indexdummyfont
 \let\cite=\indexdummyfont  
2940  \let\sc=\indexdummyfont  \let\sc=\indexdummyfont
2941  %Don't no-op \tt, since it isn't a user-level command  \let\t=\indexdummyfont
2942  % and is used in the definitions of the active chars like <, >, |...  %
2943  %\let\tt=\indexdummyfont  \let\TeX=\indexdummytex
 \let\tclose=\indexdummyfont  
 \let\code=\indexdummyfont  
 \let\url=\indexdummyfont  
 \let\uref=\indexdummyfont  
 \let\env=\indexdummyfont  
2944  \let\acronym=\indexdummyfont  \let\acronym=\indexdummyfont
2945    \let\cite=\indexdummyfont
2946    \let\code=\indexdummyfont
2947  \let\command=\indexdummyfont  \let\command=\indexdummyfont
2948  \let\option=\indexdummyfont  \let\dfn=\indexdummyfont
2949    \let\dots=\indexdummydots
2950    \let\emph=\indexdummyfont
2951    \let\env=\indexdummyfont
2952  \let\file=\indexdummyfont  \let\file=\indexdummyfont
 \let\samp=\indexdummyfont  
2953  \let\kbd=\indexdummyfont  \let\kbd=\indexdummyfont
2954  \let\key=\indexdummyfont  \let\key=\indexdummyfont
2955    \let\math=\indexdummyfont
2956    \let\option=\indexdummyfont
2957    \let\samp=\indexdummyfont
2958    \let\strong=\indexdummyfont
2959    \let\uref=\indexdummyfont
2960    \let\url=\indexdummyfont
2961  \let\var=\indexdummyfont  \let\var=\indexdummyfont
2962  \let\TeX=\indexdummytex  \let\w=\indexdummyfont
 \let\dots=\indexdummydots  
 \def\@{@}%  
2963  }  }
2964    
2965  % To define \realbackslash, we must make \ not be an escape.  % To define \realbackslash, we must make \ not be an escape.
# Line 3253  width0pt\relax} \fi Line 3349  width0pt\relax} \fi
3349    \wd0=\hsize \wd2=\hsize    \wd0=\hsize \wd2=\hsize
3350    \hbox to\pagewidth{\box0\hfil\box2}%    \hbox to\pagewidth{\box0\hfil\box2}%
3351  }  }
3352  %  %
3353  % All done with double columns.  % All done with double columns.
3354  \def\enddoublecolumns{%  \def\enddoublecolumns{%
3355    \output = {%    \output = {%
# Line 3465  width0pt\relax} \fi Line 3561  width0pt\relax} \fi
3561  \gdef\thischaptername{#1}%  \gdef\thischaptername{#1}%
3562  \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%  \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
3563  \toks0 = {#1}%  \toks0 = {#1}%
3564  \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%  \edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}%
3565                         {\putwordAppendix{} \appendixletter}}}%                         {\appendixletter}}}%
3566  \temp  \temp
3567  \appendixnoderef  \appendixnoderef
3568  \global\let\section = \appendixsec  \global\let\section = \appendixsec
# Line 3543  width0pt\relax} \fi Line 3639  width0pt\relax} \fi
3639  \def\unnumberedseczzz #1{%  \def\unnumberedseczzz #1{%
3640  \plainsecheading {#1}\gdef\thissection{#1}%  \plainsecheading {#1}\gdef\thissection{#1}%
3641  \toks0 = {#1}%  \toks0 = {#1}%
3642  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry%
3643      {\the\toks0}{\the\chapno}}}%
3644  \temp  \temp
3645  \unnumbnoderef  \unnumbnoderef
3646  \nobreak  \nobreak
# Line 3582  width0pt\relax} \fi Line 3679  width0pt\relax} \fi
3679  \plainsubsecheading {#1}\gdef\thissection{#1}%  \plainsubsecheading {#1}\gdef\thissection{#1}%
3680  \toks0 = {#1}%  \toks0 = {#1}%
3681  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
3682                                      {\the\toks0}}}%    {\the\toks0}{\the\chapno}{\the\secno}}}%
3683  \temp  \temp
3684  \unnumbnoderef  \unnumbnoderef
3685  \nobreak  \nobreak
# Line 3623  width0pt\relax} \fi Line 3720  width0pt\relax} \fi
3720  \plainsubsubsecheading {#1}\gdef\thissection{#1}%  \plainsubsubsecheading {#1}\gdef\thissection{#1}%
3721  \toks0 = {#1}%  \toks0 = {#1}%
3722  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%  \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
3723                                      {\the\toks0}}}%    {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}%
3724  \temp  \temp
3725  \unnumbnoderef  \unnumbnoderef
3726  \nobreak  \nobreak
# Line 3835  width0pt\relax} \fi Line 3932  width0pt\relax} \fi
3932  % 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.
3933  %  %
3934  % 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
3935  % given time so that @contents can be put in the document anywhere.  % fixed time so that @contents can be put in the document anywhere.
3936  %  %
3937  \newif\iftocfileopened  \newif\iftocfileopened
3938  \def\writetocentry#1{%  \def\writetocentry#1{%
# Line 3844  width0pt\relax} \fi Line 3941  width0pt\relax} \fi
3941      \global\tocfileopenedtrue      \global\tocfileopenedtrue
3942    \fi    \fi
3943    \iflinks \write\tocfile{#1{\folio}}\fi    \iflinks \write\tocfile{#1{\folio}}\fi
3944      %
3945      % Tell \shipout to create a page destination if we're doing pdf, which
3946      % will be the target of the links in the table of contents.  We can't
3947      % just do it on every page because the title pages are numbered 1 and
3948      % 2 (the page numbers aren't printed), and so are the first two pages
3949      % of the document.  Thus, we'd have two destinations named `1', and
3950      % two named `2'.
3951      \ifpdf \pdfmakepagedesttrue \fi
3952  }  }
3953    
3954  \newskip\contentsrightmargin \contentsrightmargin=1in  \newskip\contentsrightmargin \contentsrightmargin=1in
# Line 3899  width0pt\relax} \fi Line 4004  width0pt\relax} \fi
4004     \startcontents{\putwordShortTOC}%     \startcontents{\putwordShortTOC}%
4005        %        %
4006        \let\chapentry = \shortchapentry        \let\chapentry = \shortchapentry
4007          \let\appendixentry = \shortappendixentry
4008        \let\unnumbchapentry = \shortunnumberedentry        \let\unnumbchapentry = \shortunnumberedentry
4009        % We want a true roman here for the page numbers.        % We want a true roman here for the page numbers.
4010        \secfonts        \secfonts
# Line 3907  width0pt\relax} \fi Line 4013  width0pt\relax} \fi
4013        \hyphenpenalty = 10000        \hyphenpenalty = 10000
4014        \advance\baselineskip by 1pt % Open it up a little.        \advance\baselineskip by 1pt % Open it up a little.
4015        \def\secentry ##1##2##3##4{}        \def\secentry ##1##2##3##4{}
4016        \def\unnumbsecentry ##1##2{}        \def\unnumbsecentry ##1##2##3{}
4017        \def\subsecentry ##1##2##3##4##5{}        \def\subsecentry ##1##2##3##4##5{}
4018        \def\unnumbsubsecentry ##1##2{}        \def\unnumbsubsecentry ##1##2##3##4{}
4019        \def\subsubsecentry ##1##2##3##4##5##6{}        \def\subsubsecentry ##1##2##3##4##5##6{}
4020        \def\unnumbsubsubsecentry ##1##2{}        \def\unnumbsubsubsecentry ##1##2##3##4##5{}
4021        \openin 1 \jobname.toc        \openin 1 \jobname.toc
4022        \ifeof 1 \else        \ifeof 1 \else
4023          \closein 1          \closein 1
# Line 3934  width0pt\relax} \fi Line 4040  width0pt\relax} \fi
4040  % The last argument is the page number.  % The last argument is the page number.
4041  % The arguments in between are the chapter number, section number, ...  % The arguments in between are the chapter number, section number, ...
4042    
4043  % Chapter-level things, for both the long and short contents.  % Chapters, in the main contents.
4044  \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}  \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
4045    %
4046  % See comments in \dochapentry re vbox and related settings  % Chapters, in the short toc.
4047    % See comments in \dochapentry re vbox and related settings.
4048  \def\shortchapentry#1#2#3{%  \def\shortchapentry#1#2#3{%
4049    \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%    \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
4050  }  }
4051    
4052    % Appendices, in the main contents.
4053    \def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}}
4054    %
4055    % Appendices, in the short toc.
4056    \let\shortappendixentry = \shortchapentry
4057    
4058  % Typeset the label for a chapter or appendix for the short contents.  % Typeset the label for a chapter or appendix for the short contents.
4059  % 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.
4060  % We could simplify the code here by writing out an \appendixentry  % We could simplify the code here by writing out an \appendixentry
4061  % command in the toc file for appendices, instead of using \chapentry  % command in the toc file for appendices, instead of using \chapentry
4062  % for both, but it doesn't seem worth it.  % for both, but it doesn't seem worth it.
# Line 3951  width0pt\relax} \fi Line 4064  width0pt\relax} \fi
4064  \newdimen\shortappendixwidth  \newdimen\shortappendixwidth
4065  %  %
4066  \def\shortchaplabel#1{%  \def\shortchaplabel#1{%
4067    % 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  
4068    % widest letter (M) is 1em, at least in the Computer Modern fonts.    % widest letter (M) is 1em, at least in the Computer Modern fonts.
4069      % But use \hss just in case.
4070    % (This space doesn't include the extra space that gets added after    % (This space doesn't include the extra space that gets added after
4071    % the label; that gets put in by \shortchapentry above.)    % the label; that gets put in by \shortchapentry above.)
4072    \advance\dimen0 by 1.1em    \dimen0 = 1em
4073    \hbox to \dimen0{#1\hfil}%    \hbox to \dimen0{#1\hss}%
4074  }  }
4075    
4076    % Unnumbered chapters.
4077  \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}  \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
4078  \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}  \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
4079    
4080  % Sections.  % Sections.
4081  \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}  \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
4082  \def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}  \def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}}
4083    
4084  % Subsections.  % Subsections.
4085  \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}}
4086  \def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}  \def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
4087    
4088  % And subsubsections.  % And subsubsections.
4089  \def\subsubsecentry#1#2#3#4#5#6{%  \def\subsubsecentry#1#2#3#4#5#6{%
4090    \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}    \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
4091  \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}  \def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}}
4092    
4093  % This parameter controls the indentation of the various levels.  % This parameter controls the indentation of the various levels.
4094  \newdimen\tocindent \tocindent = 3pc  \newdimen\tocindent \tocindent = 3pc
# Line 4023  width0pt\relax} \fi Line 4129  width0pt\relax} \fi
4129  \def\tocentry#1#2{\begingroup  \def\tocentry#1#2{\begingroup
4130    \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
4131    % Do not use \turnoffactive in these arguments.  Since the toc is    % Do not use \turnoffactive in these arguments.  Since the toc is
4132    % typeset in cmr, so characters such as _ would come out wrong; we    % typeset in cmr, characters such as _ would come out wrong; we
4133    % have to do the usual translation tricks.    % have to do the usual translation tricks.
4134    \entry{#1}{#2}%    \entry{#1}{#2}%
4135  \endgroup}  \endgroup}
# Line 4043  width0pt\relax} \fi Line 4149  width0pt\relax} \fi
4149  \message{environments,}  \message{environments,}
4150  % @foo ... @end foo.  % @foo ... @end foo.
4151    
4152    % @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
4153    %
4154  % 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
4155  % \tt widths. Each \tt character is 1en, so two makes it 1em.  % \tt widths. Each \tt character is 1en, so two makes it 1em.
4156  % 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{}.  
4157  \def\point{$\star$}  \def\point{$\star$}
4158  \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}  \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
4159  \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}  \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
4160  \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}  \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
4161  \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}  \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
4162    
4163    % The @error{} command.
4164  % Adapted from the TeXbook's \boxit.  % Adapted from the TeXbook's \boxit.
4165    %
4166    \newbox\errorbox
4167    %
4168  {\tentt \global\dimen0 = 3em}% Width of the box.  {\tentt \global\dimen0 = 3em}% Width of the box.
4169  \dimen2 = .55pt % Thickness of rules  \dimen2 = .55pt % Thickness of rules
4170  % 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.)
4171  \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}  \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
4172    %
4173  \global\setbox\errorbox=\hbox to \dimen0{\hfil  \global\setbox\errorbox=\hbox to \dimen0{\hfil
4174     \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.     \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
4175     \advance\hsize by -2\dimen2 % Rules.     \advance\hsize by -2\dimen2 % Rules.
# Line 4083  width0pt\relax} \fi Line 4180  width0pt\relax} \fi
4180           \kern3pt\vrule width\dimen2}% Space to right.           \kern3pt\vrule width\dimen2}% Space to right.
4181        \hrule height\dimen2}        \hrule height\dimen2}
4182      \hfil}      \hfil}
4183    %
 % The @error{} command.  
4184  \def\error{\leavevmode\lower.7ex\copy\errorbox}  \def\error{\leavevmode\lower.7ex\copy\errorbox}
4185    
4186  % @tex ... @end tex    escapes into raw Tex temporarily.  % @tex ... @end tex    escapes into raw Tex temporarily.
# Line 4124  width0pt\relax} \fi Line 4220  width0pt\relax} \fi
4220    \def\@{@}%    \def\@{@}%
4221  \let\Etex=\endgroup}  \let\Etex=\endgroup}
4222    
4223  % Define @lisp ... @endlisp.  % Define @lisp ... @end lisp.
4224  % @lisp does a \begingroup so it can rebind things,  % @lisp does a \begingroup so it can rebind things,
4225  % including the definition of @endlisp (which normally is erroneous).  % including the definition of @end lisp (which normally is erroneous).
4226    
4227  % Amount to narrow the margins by for @lisp.  % Amount to narrow the margins by for @lisp.
4228  \newskip\lispnarrowing \lispnarrowing=0.4in  \newskip\lispnarrowing \lispnarrowing=0.4in
# Line 4299  width0pt\relax} \fi Line 4395  width0pt\relax} \fi
4395  \def\smalllispx{\begingroup  \def\smalllispx{\begingroup
4396    \def\Esmalllisp{\nonfillfinish\endgroup}%    \def\Esmalllisp{\nonfillfinish\endgroup}%
4397    \def\Esmallexample{\nonfillfinish\endgroup}%    \def\Esmallexample{\nonfillfinish\endgroup}%
4398    \smallfonts    \smallexamplefonts
4399    \lisp    \lisp
4400  }  }
4401    
# Line 4310  width0pt\relax} \fi Line 4406  width0pt\relax} \fi
4406    \let\Edisplay = \nonfillfinish    \let\Edisplay = \nonfillfinish
4407    \gobble    \gobble
4408  }  }
4409    %
4410  % @smalldisplay (when @smallbook): @display plus smaller fonts.  % @smalldisplay (when @smallbook): @display plus smaller fonts.
4411  %  %
4412  \def\smalldisplayx{\begingroup  \def\smalldisplayx{\begingroup
4413    \def\Esmalldisplay{\nonfillfinish\endgroup}%    \def\Esmalldisplay{\nonfillfinish\endgroup}%
4414    \smallfonts \rm    \smallexamplefonts \rm
4415    \display    \display
4416  }  }
4417    
# Line 4327  width0pt\relax} \fi Line 4423  width0pt\relax} \fi
4423    \let\Eformat = \nonfillfinish    \let\Eformat = \nonfillfinish
4424    \gobble    \gobble
4425  }  }
4426    %
4427  % @smallformat (when @smallbook): @format plus smaller fonts.  % @smallformat (when @smallbook): @format plus smaller fonts.
4428  %  %
4429  \def\smallformatx{\begingroup  \def\smallformatx{\begingroup
4430    \def\Esmallformat{\nonfillfinish\endgroup}%    \def\Esmallformat{\nonfillfinish\endgroup}%
4431    \smallfonts \rm    \smallexamplefonts \rm
4432    \format    \format
4433  }  }
4434    
# Line 4374  width0pt\relax} \fi Line 4470  width0pt\relax} \fi
4470    
4471    
4472  % LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}  % LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
4473  % If we want to allow any <char> as delimiter,  % If we want to allow any <char> as delimiter,
4474  % we need the curly braces so that makeinfo sees the @verb command, eg:  % we need the curly braces so that makeinfo sees the @verb command, eg:
4475  % `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org  % `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
4476  %  %
# Line 4448  width0pt\relax} \fi Line 4544  width0pt\relax} \fi
4544    \everypar{\starttabbox}%    \everypar{\starttabbox}%
4545  }  }
4546    
4547  % Do the @verb magic: verbatim text is quoted by unique  % Do the @verb magic: verbatim text is quoted by unique
4548  % delimiter characters.  Before first delimiter expect a  % delimiter characters.  Before first delimiter expect a
4549  % right brace, after last delimiter expect closing brace:  % right brace, after last delimiter expect closing brace:
4550  %  %
4551  %    \def\doverb'{'<char>#1<char>'}'{#1}  %    \def\doverb'{'<char>#1<char>'}'{#1}
# Line 4468  width0pt\relax} \fi Line 4564  width0pt\relax} \fi
4564  %  %
4565  %     \def\doverbatim#1@end verbatim{#1}  %     \def\doverbatim#1@end verbatim{#1}
4566  %  %
4567  % For Texinfo it's a lot easier than for LaTeX,  % For Texinfo it's a lot easier than for LaTeX,
4568  % because texinfo's \verbatim doesn't stop at '\end{verbatim}':  % because texinfo's \verbatim doesn't stop at '\end{verbatim}':
4569  % we need not redefine '\', '{' and '}'  % we need not redefine '\', '{' and '}'
4570  %  %
# Line 4524  width0pt\relax} \fi Line 4620  width0pt\relax} \fi
4620    \endgroup\nonfillfinish\endgroup    \endgroup\nonfillfinish\endgroup
4621  }  }
4622    
4623    % @copying ... @end copying.
4624    % Save the text away for @insertcopying later.
4625    %
4626    \newbox\copyingbox
4627    %
4628    \def\copying{\begingroup
4629      \parindent = 0pt  % looks wrong on title page
4630      \def\Ecopying{\egroup\endgroup}%
4631      \global\setbox\copyingbox = \vbox\bgroup
4632    }
4633    
4634    % @insertcopying.
4635    %
4636    \def\insertcopying{\unvcopy\copyingbox}
4637    
4638    
4639  \message{defuns,}  \message{defuns,}
4640  % @defun etc.  % @defun etc.
# Line 4677  width0pt\relax} \fi Line 4788  width0pt\relax} \fi
4788  % to account for this both in the \...x definition and in parsing the  % to account for this both in the \...x definition and in parsing the
4789  % 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
4790  % the \E... definition to assign the category name to.  % the \E... definition to assign the category name to.
4791  %  %
4792  \def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV  \def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
4793    \medbreak    \medbreak
4794    \def#1{\endgraf\endgroup\medbreak}%    \def#1{\endgraf\endgroup\medbreak}%
# Line 4852  width0pt\relax} \fi Line 4963  width0pt\relax} \fi
4963  % #1 is the data type, #2 the name, #3 the args.  % #1 is the data type, #2 the name, #3 the args.
4964  \def\deftypefunheaderx #1#2 #3\relax{%  \def\deftypefunheaderx #1#2 #3\relax{%
4965  \doind {fn}{\code{#2}}% Make entry in function index  \doind {fn}{\code{#2}}% Make entry in function index
4966  \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%  \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
4967  \deftypefunargs {#3}\endgroup %  \deftypefunargs {#3}\endgroup %
4968  \catcode 61=\other % Turn off change made in \defparsebody  \catcode 61=\other % Turn off change made in \defparsebody
4969  }  }
# Line 4861  width0pt\relax} \fi Line 4972  width0pt\relax} \fi
4972    
4973  \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}  \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
4974    
4975  % \defheaderxcond#1\relax$$$  % \defheaderxcond#1\relax$.$
4976  % 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.
4977  \def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}  \def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
4978    
4979  % #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.
4980  \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}  \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
# Line 4873  width0pt\relax} \fi Line 4984  width0pt\relax} \fi
4984  \begingroup  \begingroup
4985  \normalparens % notably, turn off `&' magic, which prevents  \normalparens % notably, turn off `&' magic, which prevents
4986  %               at least some C++ text from working  %               at least some C++ text from working
4987  \defname {\defheaderxcond#2\relax$$$#3}{#1}%  \defname {\defheaderxcond#2\relax$.$#3}{#1}%
4988  \deftypefunargs {#4}\endgroup %  \deftypefunargs {#4}\endgroup %
4989  \catcode 61=\other % Turn off change made in \defparsebody  \catcode 61=\other % Turn off change made in \defparsebody
4990  }  }
# Line 4919  width0pt\relax} \fi Line 5030  width0pt\relax} \fi
5030  \def\deftypeopheader#1#2#3#4{%  \def\deftypeopheader#1#2#3#4{%
5031    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
5032    \begingroup    \begingroup
5033      \defname{\defheaderxcond#2\relax$$$#3}      \defname{\defheaderxcond#2\relax$.$#3}
5034              {\deftypeopcategory\ \putwordon\ \code{#1}}%              {\deftypeopcategory\ \putwordon\ \code{#1}}%
5035      \deftypefunargs{#4}%      \deftypefunargs{#4}%
5036    \endgroup    \endgroup
# Line 4934  width0pt\relax} \fi Line 5045  width0pt\relax} \fi
5045  \def\deftypemethodheader#1#2#3#4{%  \def\deftypemethodheader#1#2#3#4{%
5046    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index    \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
5047    \begingroup    \begingroup
5048      \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%      \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
5049      \deftypefunargs{#4}%      \deftypefunargs{#4}%
5050    \endgroup    \endgroup
5051  }  }
# Line 4948  width0pt\relax} \fi Line 5059  width0pt\relax} \fi
5059  \def\deftypeivarheader#1#2#3{%  \def\deftypeivarheader#1#2#3{%
5060    \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index    \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
5061    \begingroup    \begingroup
5062      \defname{\defheaderxcond#2\relax$$$#3}      \defname{\defheaderxcond#2\relax$.$#3}
5063              {\putwordInstanceVariableof\ \code{#1}}%              {\putwordInstanceVariableof\ \code{#1}}%
5064      \defvarargs{#3}%      \defvarargs{#3}%
5065    \endgroup    \endgroup
# Line 5031  width0pt\relax} \fi Line 5142  width0pt\relax} \fi
5142  % 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.
5143  \def\deftypevarheader #1#2{%  \def\deftypevarheader #1#2{%
5144  \dovarind#2 \relax% Make entry in variables index  \dovarind#2 \relax% Make entry in variables index
5145  \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%  \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
5146  \interlinepenalty=10000  \interlinepenalty=10000
5147  \endgraf\nobreak\vskip -\parskip\nobreak  \endgraf\nobreak\vskip -\parskip\nobreak
5148  \endgroup}  \endgroup}
# Line 5042  width0pt\relax} \fi Line 5153  width0pt\relax} \fi
5153  \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}  \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
5154    
5155  \def\deftypevrheader #1#2#3{\dovarind#3 \relax%  \def\deftypevrheader #1#2#3{\dovarind#3 \relax%
5156  \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}  \begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
5157  \interlinepenalty=10000  \interlinepenalty=10000
5158  \endgraf\nobreak\vskip -\parskip\nobreak  \endgraf\nobreak\vskip -\parskip\nobreak
5159  \endgroup}  \endgroup}
# Line 5061  width0pt\relax} \fi Line 5172  width0pt\relax} \fi
5172    
5173  % These definitions are used if you use @defunx (etc.)  % These definitions are used if you use @defunx (etc.)
5174  % anywhere other than immediately after a @defun or @defunx.  % anywhere other than immediately after a @defun or @defunx.
5175  %  %
5176  \def\defcvx#1 {\errmessage{@defcvx in invalid context}}  \def\defcvx#1 {\errmessage{@defcvx in invalid context}}
5177  \def\deffnx#1 {\errmessage{@deffnx in invalid context}}  \def\deffnx#1 {\errmessage{@deffnx in invalid context}}
5178  \def\defivarx#1 {\errmessage{@defivarx in invalid context}}  \def\defivarx#1 {\errmessage{@defivarx in invalid context}}
# Line 5202  width0pt\relax} \fi Line 5313  width0pt\relax} \fi
5313       \message{Warning: redefining \the\macname}%       \message{Warning: redefining \the\macname}%
5314    \else    \else
5315       \expandafter\ifx\csname \the\macname\endcsname \relax       \expandafter\ifx\csname \the\macname\endcsname \relax
5316       \else \errmessage{The name \the\macname\space is reserved}\fi       \else \errmessage{Macro name \the\macname\space already defined}\fi
5317       \global\cslet{macsave.\the\macname}{\the\macname}%       \global\cslet{macsave.\the\macname}{\the\macname}%
5318       \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%       \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
5319       % Add the macroname to \macrolist       % Add the macroname to \macrolist
# Line 5483  width0pt\relax} \fi Line 5594  width0pt\relax} \fi
5594    \ifpdf    \ifpdf
5595      \leavevmode      \leavevmode
5596      \getfilename{#4}%      \getfilename{#4}%
5597      \ifnum\filenamelength>0      {\normalturnoffactive
5598        \startlink attr{/Border [0 0 0]}%       \ifnum\filenamelength>0
5599          goto file{\the\filename.pdf} name{#1@}%         \startlink attr{/Border [0 0 0]}%
5600      \else           goto file{\the\filename.pdf} name{#1}%
5601        \startlink attr{/Border [0 0 0]}%       \else
5602          goto name{#1@}%         \startlink attr{/Border [0 0 0]}%
5603      \fi           goto name{#1}%
5604         \fi
5605        }%
5606      \linkcolor      \linkcolor
5607    \fi    \fi
5608    %    %
# Line 5751  width0pt\relax} \fi Line 5864  width0pt\relax} \fi
5864    %    %
5865    \smallfonts \rm    \smallfonts \rm
5866    %    %
5867    % Hang the footnote text off the number.    % Because we use hanging indentation in footnotes, a @noindent appears
5868    \hang    % to exdent this text, so make it be a no-op.  makeinfo does not use
5869      % hanging indentation so @noindent can still be needed within footnote
5870      % text after an @example or the like (not that this is good style).
5871      \let\noindent = \relax
5872      %
5873      % Hang the footnote text off the number.  Use \everypar in case the
5874      % footnote extends for more than one paragraph.
5875      \everypar = {\hang}%
5876    \textindent{\thisfootno}%    \textindent{\thisfootno}%
5877    %    %
5878    % 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 5769  width0pt\relax} \fi Line 5889  width0pt\relax} \fi
5889    
5890  }%end \catcode `\@=11  }%end \catcode `\@=11
5891    
 % 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  
   }%  
 }  
   
5892  % @| inserts a changebar to the left of the current line.  It should  % @| inserts a changebar to the left of the current line.  It should
5893  % surround any changed text.  This approach does *not* work if the  % surround any changed text.  This approach does *not* work if the
5894  % 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 5851  width0pt\relax} \fi Line 5953  width0pt\relax} \fi
5953        \global\warnednoepsftrue        \global\warnednoepsftrue
5954      \fi      \fi
5955    \else    \else
5956      \imagexxx #1,,,\finish      \imagexxx #1,,,,,\finish
5957    \fi    \fi
5958  }  }
5959  %  %
5960  % Arguments to @image:  % Arguments to @image:
5961  % #1 is (mandatory) image filename; we tack on .eps extension.  % #1 is (mandatory) image filename; we tack on .eps extension.
5962  % #2 is (optional) width, #3 is (optional) height.  % #2 is (optional) width, #3 is (optional) height.
5963  % #4 is just the usual extra ignored arg for parsing this stuff.  % #4 is (ignored optional) html alt text.
5964  \def\imagexxx#1,#2,#3,#4\finish{%  % #5 is (ignored optional) extension.
5965    % #6 is just the usual extra ignored arg for parsing this stuff.
5966    \newif\ifimagevmode
5967    \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
5968      \catcode`\^^M = 5     % in case we're inside an example
5969      \normalturnoffactive  % allow _ et al. in names
5970      % If the image is by itself, center it.
5971      \ifvmode
5972        \imagevmodetrue
5973        \nobreak\bigskip
5974        % Usually we'll have text after the image which will insert
5975        % \parskip glue, so insert it here too to equalize the space
5976        % above and below.
5977        \nobreak\vskip\parskip
5978        \nobreak
5979        \line\bgroup\hss
5980      \fi
5981      %
5982      % Output the image.
5983    \ifpdf    \ifpdf
5984      \centerline{\dopdfimage{#1}{#2}{#3}}%      \dopdfimage{#1}{#2}{#3}%
5985    \else    \else
5986      % \epsfbox itself resets \epsf?size at each figure.      % \epsfbox itself resets \epsf?size at each figure.
5987      \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi      \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
5988      \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi      \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
5989      \begingroup      \epsfbox{#1.eps}%
       \catcode`\^^M = 5     % in case we're inside an example  
       \normalturnoffactive  % allow _ et al. in names  
       % If the image is by itself, center it.  
       \ifvmode  
         \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  
5990    \fi    \fi
5991  }    %
5992      \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image
5993    \endgroup}
5994    
5995    
5996  \message{localization,}  \message{localization,}
# Line 5954  should work if nowhere else does.} Line 6059  should work if nowhere else does.}
6059  }  }
6060    
6061  % Parameters in order: 1) textheight; 2) textwidth; 3) voffset;  % Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
6062  % 4) hoffset; 5) binding offset; 6) topskip.  Then whoever calls us can  % 4) hoffset; 5) binding offset; 6) topskip.  We also call
6063  % set \parskip and call \setleading for \baselineskip.  % \setleading{\textleading}, so the caller should define \textleading.
6064    % The caller should also set \parskip.
6065  %  %
6066  \def\internalpagesizes#1#2#3#4#5#6{%  \def\internalpagesizes#1#2#3#4#5#6{%
6067    \voffset = #3\relax    \voffset = #3\relax
# Line 5976  should work if nowhere else does.} Line 6082  should work if nowhere else does.}
6082    \normaloffset = #4\relax    \normaloffset = #4\relax
6083    \bindingoffset = #5\relax    \bindingoffset = #5\relax
6084    %    %
6085      \setleading{\textleading}
6086      %
6087    \parindent = \defaultparindent    \parindent = \defaultparindent
6088    \setemergencystretch    \setemergencystretch
6089  }  }
6090    
6091  % Use `small' versions.  % Use `small' versions.
6092  %  %
6093  \def\smallenvironments{%  \def\smallenvironments{%
6094    \let\smalldisplay = \smalldisplayx    \let\smalldisplay = \smalldisplayx
6095    \let\smallexample = \smalllispx    \let\smallexample = \smalllispx
# Line 5992  should work if nowhere else does.} Line 6100  should work if nowhere else does.}
6100  % @letterpaper (the default).  % @letterpaper (the default).
6101  \def\letterpaper{{\globaldefs = 1  \def\letterpaper{{\globaldefs = 1
6102    \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
6103    \setleading{13.2pt}%    \textleading = 13.2pt
6104    %    %
6105    % If page is nothing but text, make it come out even.    % If page is nothing but text, make it come out even.
6106    \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%    \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
# Line 6001  should work if nowhere else does.} Line 6109  should work if nowhere else does.}
6109  % Use @smallbook to reset parameters for 7x9.5 (or so) format.  % Use @smallbook to reset parameters for 7x9.5 (or so) format.
6110  \def\smallbook{{\globaldefs = 1  \def\smallbook{{\globaldefs = 1
6111    \parskip = 2pt plus 1pt    \parskip = 2pt plus 1pt
6112    \setleading{12pt}%    \textleading = 12pt
6113    %    %
6114    \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%    \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
6115    %    %
# Line 6016  should work if nowhere else does.} Line 6124  should work if nowhere else does.}
6124    
6125  % Use @afourpaper to print on European A4 paper.  % Use @afourpaper to print on European A4 paper.
6126  \def\afourpaper{{\globaldefs = 1  \def\afourpaper{{\globaldefs = 1
   \setleading{12pt}%  
6127    \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
6128      \textleading = 12pt
6129    %    %
6130    \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%    \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
6131    %    %
# Line 6029  should work if nowhere else does.} Line 6137  should work if nowhere else does.}
6137  % From romildo@urano.iceb.ufop.br, 2 July 2000.  % From romildo@urano.iceb.ufop.br, 2 July 2000.
6138  % He also recommends making @example and @lisp be small.  % He also recommends making @example and @lisp be small.
6139  \def\afivepaper{{\globaldefs = 1  \def\afivepaper{{\globaldefs = 1
   \setleading{12.5pt}%  
6140    \parskip = 2pt plus 1pt minus 0.1pt    \parskip = 2pt plus 1pt minus 0.1pt
6141      \textleading = 12.5pt
6142    %    %
6143    \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}%    \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}%
6144    %    %
# Line 6048  should work if nowhere else does.} Line 6156  should work if nowhere else does.}
6156  % A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin  % A specific text layout, 24x15cm overall, intended for A4 paper.  Top margin
6157  % 29mm, hence bottom margin 28mm, nominal side margin 3cm.  % 29mm, hence bottom margin 28mm, nominal side margin 3cm.
6158  \def\afourlatex{{\globaldefs = 1  \def\afourlatex{{\globaldefs = 1
6159    \setleading{13.6pt}%    \textleading = 13.6pt
6160    %    %
6161    \afourpaper    \afourpaper
6162    \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%    \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
6163    %    %
6164      % Must explicitly reset to 0 because we call \afourpaper, apparently,
6165      % although this does not entirely make sense.
6166    \globaldefs = 0    \globaldefs = 0
6167  }}  }}
6168    
# Line 6060  should work if nowhere else does.} Line 6170  should work if nowhere else does.}
6170  \def\afourwide{%  \def\afourwide{%
6171    \afourpaper    \afourpaper
6172    \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%    \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
   %  
   \globaldefs = 0  
6173  }  }
6174    
6175  % @pagesizes TEXTHEIGHT[,TEXTWIDTH]  % @pagesizes TEXTHEIGHT[,TEXTWIDTH]
# Line 6075  should work if nowhere else does.} Line 6183  should work if nowhere else does.}
6183    \globaldefs = 1    \globaldefs = 1
6184    %    %
6185    \parskip = 3pt plus 2pt minus 1pt    \parskip = 3pt plus 2pt minus 1pt
6186    \setleading{13.2pt}%    \setleading{\textleading}%
6187    %    %
6188    \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%    \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
6189  }}  }}
# Line 6105  should work if nowhere else does.} Line 6213  should work if nowhere else does.}
6213  \def\normalless{<}  \def\normalless{<}
6214  \def\normalgreater{>}  \def\normalgreater{>}
6215  \def\normalplus{+}  \def\normalplus{+}
6216  \def\normaldollar{$}  \def\normaldollar{$}%$ font-lock fix
6217    
6218  % 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
6219  % 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 6154  should work if nowhere else does.} Line 6262  should work if nowhere else does.}
6262  \catcode`\+=\active  \catcode`\+=\active
6263  \def+{{\tt \char 43}}  \def+{{\tt \char 43}}
6264  \catcode`\$=\active  \catcode`\$=\active
6265  \def${\ifusingit{{\sl\$}}\normaldollar}  \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
6266  %\catcode 27=\active  %\catcode 27=\active
6267  %\def^^[{$\diamondsuit$}  %\def^^[{$\diamondsuit$}
6268    
# Line 6199  should work if nowhere else does.} Line 6307  should work if nowhere else does.}
6307  @let<=@normalless  @let<=@normalless
6308  @let>=@normalgreater  @let>=@normalgreater
6309  @let+=@normalplus  @let+=@normalplus
6310  @let$=@normaldollar}  @let$=@normaldollar}%$ font-lock fix
6311    
6312  @def@normalturnoffactive{@let"=@normaldoublequote  @def@normalturnoffactive{@let"=@normaldoublequote
6313  @let\=@normalbackslash  @let\=@normalbackslash
# Line 6210  should work if nowhere else does.} Line 6318  should work if nowhere else does.}
6318  @let<=@normalless  @let<=@normalless
6319  @let>=@normalgreater  @let>=@normalgreater
6320  @let+=@normalplus  @let+=@normalplus
6321  @let$=@normaldollar}  @let$=@normaldollar}%$ font-lock fix
6322    
6323  % Make _ and + \other characters, temporarily.  % Make _ and + \other characters, temporarily.
6324  % This is canceled by @fixbackslash.  % This is canceled by @fixbackslash.
# Line 6238  should work if nowhere else does.} Line 6346  should work if nowhere else does.}
6346  % Say @foo, not \foo, in error messages.  % Say @foo, not \foo, in error messages.
6347  @escapechar = `@@  @escapechar = `@@
6348    
6349  % These look ok in all fonts, so just make them not special.    % These look ok in all fonts, so just make them not special.
6350  @catcode`@& = @other  @catcode`@& = @other
6351  @catcode`@# = @other  @catcode`@# = @other
6352  @catcode`@% = @other  @catcode`@% = @other

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.4.1

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