Deleted Added
full compact
texinfo.tex (82794) texinfo.tex (119679)
1% texinfo.tex -- TeX macros to handle Texinfo files.
2%
3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5%
1% texinfo.tex -- TeX macros to handle Texinfo files.
2%
3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5%
6\def\texinfoversion{2001-06-21.10}
6\def\texinfoversion{2002-06-04.06}
7%
8% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
7%
8% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
9% 2000, 01 Free Software Foundation, Inc.
9% 2000, 01, 02 Free Software Foundation, Inc.
10%
11% 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
13% published by the Free Software Foundation; either version 2, or (at
14% your option) any later version.
15%
16% This texinfo.tex file is distributed in the hope that it will be
17% useful, but WITHOUT ANY WARRANTY; without even the implied warranty

--- 7 unchanged lines hidden (view full) ---

25%
26% In other words, you are welcome to use, share and improve this program.
27% You are forbidden to forbid anyone else to use, share and improve
28% what you give them. Help stamp out software-hoarding!
29%
30% Please try the latest version of texinfo.tex before submitting bug
31% reports; you can get the latest version from:
32% ftp://ftp.gnu.org/gnu/texinfo.tex
10%
11% 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
13% published by the Free Software Foundation; either version 2, or (at
14% your option) any later version.
15%
16% This texinfo.tex file is distributed in the hope that it will be
17% useful, but WITHOUT ANY WARRANTY; without even the implied warranty

--- 7 unchanged lines hidden (view full) ---

25%
26% In other words, you are welcome to use, share and improve this program.
27% You are forbidden to forbid anyone else to use, share and improve
28% what you give them. Help stamp out software-hoarding!
29%
30% Please try the latest version of texinfo.tex before submitting bug
31% reports; you can get the latest version from:
32% ftp://ftp.gnu.org/gnu/texinfo.tex
33% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
34% ftp://texinfo.org/tex/texinfo.tex
35% ftp://us.ctan.org/macros/texinfo/texinfo.tex
36% (and all CTAN mirrors, finger ctan@us.ctan.org for a list).
37% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
33% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
34% ftp://texinfo.org/texinfo/texinfo.tex
35% ftp://tug.org/tex/texinfo.tex
36% (and all CTAN mirrors, see http://www.ctan.org),
37% and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
38%
38% The texinfo.tex in any given Texinfo distribution could well be out
39% of date, so if that's what you're using, please check.
39% 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.
40% Texinfo has a small home page at http://texinfo.org/.
41%
42% Texinfo has a small home page at http://texinfo.org/ and also
43% http://www.gnu.org/software/texinfo.
41%
42% Send bug reports to bug-texinfo@gnu.org. Please include including a
43% complete document in each bug report with which we can reproduce the
44% problem. Patches are, of course, greatly appreciated.
45%
46% To process a Texinfo manual with TeX, it's most reliable to use the
47% texi2dvi shell script that comes with the distribution. For a simple
48% manual foo.texi, however, you can get away with this:
49% tex foo.texi
50% texindex foo.??
51% tex foo.texi
52% tex foo.texi
44%
45% 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
47% problem. Patches are, of course, greatly appreciated.
48%
49% To process a Texinfo manual with TeX, it's most reliable to use the
50% texi2dvi shell script that comes with the distribution. For a simple
51% manual foo.texi, however, you can get away with this:
52% tex foo.texi
53% texindex foo.??
54% tex foo.texi
55% tex foo.texi
53% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
54% The extra runs of TeX get the cross-reference information correct.
56% dvips foo.dvi -o # or whatever; this makes foo.ps.
57% The extra TeX runs get the cross-reference information correct.
55% Sometimes one run after texindex suffices, and sometimes you need more
56% than two; texi2dvi does it as many times as necessary.
57%
58% It is possible to adapt texinfo.tex for other languages. You can get
58% Sometimes one run after texindex suffices, and sometimes you need more
59% 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
59% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
62% the existing language-specific files from the full Texinfo distribution.
60
61\message{Loading texinfo [version \texinfoversion]:}
62
63% If in a .fmt file, print the version number
64% and turn on active characters that we couldn't do earlier because
65% they might have appeared in the input file name.
66\everyjob{\message{[Texinfo version \texinfoversion]}%
67 \catcode`+=\active \catcode`\_=\active}

--- 760 unchanged lines hidden (view full) ---

828 \fi
829 \fi
830}
831
832% @asis just yields its argument. Used with @table, for example.
833%
834\def\asis#1{#1}
835
63
64\message{Loading texinfo [version \texinfoversion]:}
65
66% If in a .fmt file, print the version number
67% and turn on active characters that we couldn't do earlier because
68% they might have appeared in the input file name.
69\everyjob{\message{[Texinfo version \texinfoversion]}%
70 \catcode`+=\active \catcode`\_=\active}

--- 760 unchanged lines hidden (view full) ---

831 \fi
832 \fi
833}
834
835% @asis just yields its argument. Used with @table, for example.
836%
837\def\asis#1{#1}
838
836% @math means output in math mode.
837% We don't use $'s directly in the definition of \math because control
838% sequences like \math are expanded when the toc file is written. Then,
839% we read the toc file back, the $'s will be normal characters (as they
840% should be, according to the definition of Texinfo). So we must use a
841% control sequence to switch into and out of math mode.
839% @math outputs its argument in math mode.
840% We don't use $'s directly in the definition of \math because we need
841% to set catcodes according to plain TeX first, to allow for subscripts,
842% superscripts, special math chars, etc.
843%
844% @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.
842%
848%
843% This isn't quite enough for @math to work properly in indices, but it
844% seems unlikely it will ever be needed there.
849\let\implicitmath = $%$ font-lock fix
845%
850%
846\let\implicitmath = $
847\def\math#1{\implicitmath #1\implicitmath}
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% Another complication: we want \\ (and @\) to output a \ character.
863% 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}
848
849% @bullet and @minus need the same treatment as @math, just above.
850\def\bullet{\implicitmath\ptexbullet\implicitmath}
851\def\minus{\implicitmath-\implicitmath}
852
853% @refill is a no-op.
854\let\refill=\relax
855

--- 66 unchanged lines hidden (view full) ---

922 \let\pdfmakeoutlines = \relax
923\else
924 \pdftrue
925 \pdfoutput = 1
926 \input pdfcolor
927 \def\dopdfimage#1#2#3{%
928 \def\imagewidth{#2}%
929 \def\imageheight{#3}%
876
877% @bullet and @minus need the same treatment as @math, just above.
878\def\bullet{\implicitmath\ptexbullet\implicitmath}
879\def\minus{\implicitmath-\implicitmath}
880
881% @refill is a no-op.
882\let\refill=\relax
883

--- 66 unchanged lines hidden (view full) ---

950 \let\pdfmakeoutlines = \relax
951\else
952 \pdftrue
953 \pdfoutput = 1
954 \input pdfcolor
955 \def\dopdfimage#1#2#3{%
956 \def\imagewidth{#2}%
957 \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.)
930 \ifnum\pdftexversion < 14
960 \ifnum\pdftexversion < 14
931 \pdfimage
961 \immediate\pdfimage
932 \else
962 \else
933 \pdfximage
963 \immediate\pdfximage
934 \fi
935 \ifx\empty\imagewidth\else width \imagewidth \fi
936 \ifx\empty\imageheight\else height \imageheight \fi
937 \ifnum\pdftexversion<13
938 #1.pdf%
939 \else
940 {#1.pdf}%
941 \fi
942 \ifnum\pdftexversion < 14 \else
943 \pdfrefximage \pdflastximage
944 \fi}
945 \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
964 \fi
965 \ifx\empty\imagewidth\else width \imagewidth \fi
966 \ifx\empty\imageheight\else height \imageheight \fi
967 \ifnum\pdftexversion<13
968 #1.pdf%
969 \else
970 {#1.pdf}%
971 \fi
972 \ifnum\pdftexversion < 14 \else
973 \pdfrefximage \pdflastximage
974 \fi}
975 \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
946 \def\pdfmkpgn#1{#1@}
976 \def\pdfmkpgn#1{#1}
947 \let\linkcolor = \Blue % was Cyan, but that seems light?
948 \def\endlink{\Black\pdfendlink}
949 % Adding outlines to PDF; macros for calculating structure of outlines
950 % come from Petr Olsak
951 \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
952 \else \csname#1\endcsname \fi}
953 \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
954 \advance\tempnum by1
955 \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
956 \def\pdfmakeoutlines{{%
957 \openin 1 \jobname.toc
977 \let\linkcolor = \Blue % was Cyan, but that seems light?
978 \def\endlink{\Black\pdfendlink}
979 % Adding outlines to PDF; macros for calculating structure of outlines
980 % come from Petr Olsak
981 \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
982 \else \csname#1\endcsname \fi}
983 \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
984 \advance\tempnum by1
985 \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
986 \def\pdfmakeoutlines{{%
987 \openin 1 \jobname.toc
958 \ifeof 1\else\bgroup
988 \ifeof 1\else\begingroup
959 \closein 1
960 \indexnofonts
961 \def\tt{}
962 \let\_ = \normalunderscore
963 % Thanh's hack / proper braces in bookmarks
964 \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
965 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
966 %
967 \def\chapentry ##1##2##3{}
989 \closein 1
990 \indexnofonts
991 \def\tt{}
992 \let\_ = \normalunderscore
993 % Thanh's hack / proper braces in bookmarks
994 \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
995 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
996 %
997 \def\chapentry ##1##2##3{}
998 \let\appendixentry = \chapentry
968 \def\unnumbchapentry ##1##2{}
969 \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
999 \def\unnumbchapentry ##1##2{}
1000 \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
970 \def\unnumbsecentry ##1##2{}
1001 \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}}
971 \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
1002 \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
972 \def\unnumbsubsecentry ##1##2{}
1003 \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}}
973 \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
1004 \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
974 \def\unnumbsubsubsecentry ##1##2{}
1005 \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}}
975 \input \jobname.toc
976 \def\chapentry ##1##2##3{%
977 \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
1006 \input \jobname.toc
1007 \def\chapentry ##1##2##3{%
1008 \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
1009 \let\appendixentry = \chapentry
978 \def\unnumbchapentry ##1##2{%
979 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
980 \def\secentry ##1##2##3##4{%
981 \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
1010 \def\unnumbchapentry ##1##2{%
1011 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
1012 \def\secentry ##1##2##3##4{%
1013 \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
982 \def\unnumbsecentry ##1##2{%
983 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
1014 \def\unnumbsecentry ##1##2##3{%
1015 \pdfoutline goto name{\pdfmkpgn{##3}}{##1}}
984 \def\subsecentry ##1##2##3##4##5{%
985 \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
1016 \def\subsecentry ##1##2##3##4##5{%
1017 \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
986 \def\unnumbsubsecentry ##1##2{%
987 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
1018 \def\unnumbsubsecentry ##1##2##3##4{%
1019 \pdfoutline goto name{\pdfmkpgn{##4}}{##1}}
988 \def\subsubsecentry ##1##2##3##4##5##6{%
989 \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
1020 \def\subsubsecentry ##1##2##3##4##5##6{%
1021 \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
990 \def\unnumbsubsubsecentry ##1##2{%
991 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
1022 \def\unnumbsubsubsecentry ##1##2##3##4##5{%
1023 \pdfoutline goto name{\pdfmkpgn{##5}}{##1}}
992 \input \jobname.toc
1024 \input \jobname.toc
993 \egroup\fi
1025 \endgroup\fi
994 }}
995 \def\makelinks #1,{%
996 \def\params{#1}\def\E{END}%
997 \ifx\params\E
998 \let\nextmakelinks=\relax
999 \else
1000 \let\nextmakelinks=\makelinks
1001 \ifnum\lnkcount>0,\fi

--- 100 unchanged lines hidden (view full) ---

1102 \normallineskip = \lineskipfactor\normalbaselineskip
1103 \normalbaselines
1104 \setbox\strutbox =\hbox{%
1105 \vrule width0pt height\strutheightpercent\baselineskip
1106 depth \strutdepthpercent \baselineskip
1107 }%
1108}
1109
1026 }}
1027 \def\makelinks #1,{%
1028 \def\params{#1}\def\E{END}%
1029 \ifx\params\E
1030 \let\nextmakelinks=\relax
1031 \else
1032 \let\nextmakelinks=\makelinks
1033 \ifnum\lnkcount>0,\fi

--- 100 unchanged lines hidden (view full) ---

1134 \normallineskip = \lineskipfactor\normalbaselineskip
1135 \normalbaselines
1136 \setbox\strutbox =\hbox{%
1137 \vrule width0pt height\strutheightpercent\baselineskip
1138 depth \strutdepthpercent \baselineskip
1139 }%
1140}
1141
1110% Use Computer Modern fonts at \magstephalf (11pt).
1111\newcount\mainmagstep \mainmagstep=\magstephalf
1112
1113% Set the font macro #1 to the font named #2, adding on the
1114% specified font prefix (normally `cm').
1115% #3 is the font's design size, #4 is a scale factor
1116\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
1117
1118% Use cm as the default font prefix.
1119% To specify the font prefix, you must define \fontprefix
1120% before you read in texinfo.tex.

--- 12 unchanged lines hidden (view full) ---

1133\def\itbshape{bxti}
1134\def\slshape{sl}
1135\def\slbshape{bxsl}
1136\def\sfshape{ss}
1137\def\sfbshape{ss}
1138\def\scshape{csc}
1139\def\scbshape{csc}
1140
1142% Set the font macro #1 to the font named #2, adding on the
1143% specified font prefix (normally `cm').
1144% #3 is the font's design size, #4 is a scale factor
1145\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
1146
1147% Use cm as the default font prefix.
1148% To specify the font prefix, you must define \fontprefix
1149% before you read in texinfo.tex.

--- 12 unchanged lines hidden (view full) ---

1162\def\itbshape{bxti}
1163\def\slshape{sl}
1164\def\slbshape{bxsl}
1165\def\sfshape{ss}
1166\def\sfbshape{ss}
1167\def\scshape{csc}
1168\def\scbshape{csc}
1169
1170\newcount\mainmagstep
1141\ifx\bigger\relax
1171\ifx\bigger\relax
1142\let\mainmagstep=\magstep1
1143\setfont\textrm\rmshape{12}{1000}
1144\setfont\texttt\ttshape{12}{1000}
1172 % not really supported.
1173 \let\mainmagstep=\magstep1
1174 \setfont\textrm\rmshape{12}{1000}
1175 \setfont\texttt\ttshape{12}{1000}
1145\else
1176\else
1146\setfont\textrm\rmshape{10}{\mainmagstep}
1147\setfont\texttt\ttshape{10}{\mainmagstep}
1177 \mainmagstep=\magstephalf
1178 \setfont\textrm\rmshape{10}{\mainmagstep}
1179 \setfont\texttt\ttshape{10}{\mainmagstep}
1148\fi
1149% Instead of cmb10, you many want to use cmbx10.
1150% cmbx10 is a prettier font on its own, but cmb10
1151% looks better when embedded in a line with cmr10.
1152\setfont\textbf\bfshape{10}{\mainmagstep}
1153\setfont\textit\itshape{10}{\mainmagstep}
1154\setfont\textsl\slshape{10}{\mainmagstep}
1155\setfont\textsf\sfshape{10}{\mainmagstep}

--- 63 unchanged lines hidden (view full) ---

1219\setfont\sectt\ttbshape{12}{\magstep1}
1220\setfont\secttsl\ttslshape{10}{\magstep2}
1221\setfont\secsf\sfbshape{12}{\magstep1}
1222\let\secbf\secrm
1223\setfont\secsc\scbshape{10}{\magstep2}
1224\font\seci=cmmi12 scaled \magstep1
1225\font\secsy=cmsy10 scaled \magstep2
1226
1180\fi
1181% Instead of cmb10, you many want to use cmbx10.
1182% cmbx10 is a prettier font on its own, but cmb10
1183% looks better when embedded in a line with cmr10.
1184\setfont\textbf\bfshape{10}{\mainmagstep}
1185\setfont\textit\itshape{10}{\mainmagstep}
1186\setfont\textsl\slshape{10}{\mainmagstep}
1187\setfont\textsf\sfshape{10}{\mainmagstep}

--- 63 unchanged lines hidden (view full) ---

1251\setfont\sectt\ttbshape{12}{\magstep1}
1252\setfont\secttsl\ttslshape{10}{\magstep2}
1253\setfont\secsf\sfbshape{12}{\magstep1}
1254\let\secbf\secrm
1255\setfont\secsc\scbshape{10}{\magstep2}
1256\font\seci=cmmi12 scaled \magstep1
1257\font\secsy=cmsy10 scaled \magstep2
1258
1227% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad.
1228% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded.
1229% \setfont\ssecsl\slshape{10}{\magstep1}
1230% \setfont\ssectt\ttshape{10}{\magstep1}
1231% \setfont\ssecsf\sfshape{10}{\magstep1}
1232
1233%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx.
1234%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than
1235%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1.
1236%\setfont\ssectt\ttshape{10}{1315}
1237%\setfont\ssecsf\sfshape{10}{1315}
1238
1239%\let\ssecbf=\ssecrm
1240
1241% Subsection fonts (13.15pt).
1242\setfont\ssecrm\rmbshape{12}{\magstephalf}
1243\setfont\ssecit\itbshape{10}{1315}
1244\setfont\ssecsl\slbshape{10}{1315}
1245\setfont\ssectt\ttbshape{12}{\magstephalf}
1246\setfont\ssecttsl\ttslshape{10}{1315}
1247\setfont\ssecsf\sfbshape{12}{\magstephalf}
1248\let\ssecbf\ssecrm
1249\setfont\ssecsc\scbshape{10}{\magstep1}
1250\font\sseci=cmmi12 scaled \magstephalf
1251\font\ssecsy=cmsy10 scaled 1315
1252% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
1253% but that is not a standard magnification.
1254
1255% In order for the font changes to affect most math symbols and letters,
1256% we have to define the \textfont of the standard families. Since
1259% Subsection fonts (13.15pt).
1260\setfont\ssecrm\rmbshape{12}{\magstephalf}
1261\setfont\ssecit\itbshape{10}{1315}
1262\setfont\ssecsl\slbshape{10}{1315}
1263\setfont\ssectt\ttbshape{12}{\magstephalf}
1264\setfont\ssecttsl\ttslshape{10}{1315}
1265\setfont\ssecsf\sfbshape{12}{\magstephalf}
1266\let\ssecbf\ssecrm
1267\setfont\ssecsc\scbshape{10}{\magstep1}
1268\font\sseci=cmmi12 scaled \magstephalf
1269\font\ssecsy=cmsy10 scaled 1315
1270% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
1271% but that is not a standard magnification.
1272
1273% 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
1257% texinfo doesn't allow for producing subscripts and superscripts, we
1258% don't bother to reset \scriptfont and \scriptscriptfont (which would
1259% also require loading a lot more fonts).
1275% texinfo doesn't allow for producing subscripts and superscripts except
1276% in the main text, we don't bother to reset \scriptfont and
1277% \scriptscriptfont (which would also require loading a lot more fonts).
1260%
1261\def\resetmathfonts{%
1278%
1279\def\resetmathfonts{%
1262 \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
1263 \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
1264 \textfont\ttfam = \tentt \textfont\sffam = \tensf
1280 \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
1281 \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
1282 \textfont\ttfam=\tentt \textfont\sffam=\tensf
1265}
1266
1283}
1284
1267
1268% The font-changing commands redefine the meanings of \tenSTYLE, instead
1269% of just \STYLE. We do this so that font changes will continue to work
1270% in math mode, where it is the current \fam that is relevant in most
1271% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam
1272% \tenbf}, for example. By redefining \tenbf, we obviate the need to
1273% redefine \bf itself.
1274\def\textfonts{%
1275 \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl

--- 144 unchanged lines hidden (view full) ---

1420 %
1421 % If we end up with any active - characters when handling the index,
1422 % just treat them as a normal -.
1423 \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
1424}
1425
1426\def\realdash{-}
1427\def\codedash{-\discretionary{}{}{}}
1285% 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
1287% in math mode, where it is the current \fam that is relevant in most
1288% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam
1289% \tenbf}, for example. By redefining \tenbf, we obviate the need to
1290% redefine \bf itself.
1291\def\textfonts{%
1292 \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl

--- 144 unchanged lines hidden (view full) ---

1437 %
1438 % If we end up with any active - characters when handling the index,
1439 % just treat them as a normal -.
1440 \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
1441}
1442
1443\def\realdash{-}
1444\def\codedash{-\discretionary{}{}{}}
1428\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}
1445\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}
1429\def\codex #1{\tclose{#1}\endgroup}
1430
1456\def\codex #1{\tclose{#1}\endgroup}
1457
1431%\let\exp=\tclose %Was temporary
1432
1433% @kbd is like @code, except that if the argument is just one @key command,
1434% then @kbd has no effect.
1435
1436% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
1437% `example' (@kbd uses ttsl only inside of @example and friends),
1438% or `code' (@kbd uses normal tty font always).
1439\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
1440\def\kbdinputstylexxx#1{%

--- 168 unchanged lines hidden (view full) ---

1609 \fi
1610 % It is important to do the page break before ending the group,
1611 % because the headline and footline are only empty inside the group.
1612 % If we use the new definition of \page, we always get a blank page
1613 % after the title page, which we certainly don't want.
1614 \oldpage
1615 \endgroup
1616 %
1458% @kbd is like @code, except that if the argument is just one @key command,
1459% then @kbd has no effect.
1460
1461% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
1462% `example' (@kbd uses ttsl only inside of @example and friends),
1463% or `code' (@kbd uses normal tty font always).
1464\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
1465\def\kbdinputstylexxx#1{%

--- 168 unchanged lines hidden (view full) ---

1634 \fi
1635 % It is important to do the page break before ending the group,
1636 % because the headline and footline are only empty inside the group.
1637 % If we use the new definition of \page, we always get a blank page
1638 % after the title page, which we certainly don't want.
1639 \oldpage
1640 \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 %
1617 % If they want short, they certainly want long too.
1618 \ifsetshortcontentsaftertitlepage
1619 \shortcontents
1620 \contents
1621 \global\let\shortcontents = \relax
1622 \global\let\contents = \relax
1623 \fi
1624 %
1625 \ifsetcontentsaftertitlepage
1626 \contents
1627 \global\let\contents = \relax
1628 \global\let\shortcontents = \relax
1629 \fi
1646 % If they want short, they certainly want long too.
1647 \ifsetshortcontentsaftertitlepage
1648 \shortcontents
1649 \contents
1650 \global\let\shortcontents = \relax
1651 \global\let\contents = \relax
1652 \fi
1653 %
1654 \ifsetcontentsaftertitlepage
1655 \contents
1656 \global\let\contents = \relax
1657 \global\let\shortcontents = \relax
1658 \fi
1630 %
1631 \ifpdf \pdfmakepagedesttrue \fi
1632 %
1633 \HEADINGSon
1634}
1635
1636\def\finishtitlepage{%
1637 \vskip4pt \hrule height 2pt width \hsize
1638 \vskip\titlepagebottomglue
1639 \finishedtitlepagetrue
1640}
1641

--- 741 unchanged lines hidden (view full) ---

2383 \let\down = \relax
2384 \let\raisesections = \relax
2385 \let\up = \relax
2386 \let\set = \relax
2387 \let\clear = \relax
2388 \let\item = \relax
2389}
2390
1659}
1660
1661\def\finishtitlepage{%
1662 \vskip4pt \hrule height 2pt width \hsize
1663 \vskip\titlepagebottomglue
1664 \finishedtitlepagetrue
1665}
1666

--- 741 unchanged lines hidden (view full) ---

2408 \let\down = \relax
2409 \let\raisesections = \relax
2410 \let\up = \relax
2411 \let\set = \relax
2412 \let\clear = \relax
2413 \let\item = \relax
2414}
2415
2391% Ignore @ignore ... @end ignore.
2416% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu,
2417% @direntry, and @documentdescription.
2392%
2393\def\ignore{\doignore{ignore}}
2418%
2419\def\ignore{\doignore{ignore}}
2394
2395% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
2396%
2397\def\ifinfo{\doignore{ifinfo}}
2398\def\ifhtml{\doignore{ifhtml}}
2420\def\ifhtml{\doignore{ifhtml}}
2421\def\ifinfo{\doignore{ifinfo}}
2422\def\ifplaintext{\doignore{ifplaintext}}
2399\def\ifnottex{\doignore{ifnottex}}
2400\def\html{\doignore{html}}
2401\def\menu{\doignore{menu}}
2402\def\direntry{\doignore{direntry}}
2423\def\ifnottex{\doignore{ifnottex}}
2424\def\html{\doignore{html}}
2425\def\menu{\doignore{menu}}
2426\def\direntry{\doignore{direntry}}
2427\def\documentdescription{\doignore{documentdescription}}
2428\def\documentdescriptionword{documentdescription}
2403
2404% @dircategory CATEGORY -- specify a category of the dir file
2405% which this file should belong to. Ignore this in TeX.
2406\let\dircategory = \comment
2407
2408% Ignore text until a line `@end #1'.
2409%
2410\def\doignore#1{\begingroup

--- 10 unchanged lines hidden (view full) ---

2421 %
2422 % Ignore braces, too, so mismatched braces don't cause trouble.
2423 \catcode`\{ = 9
2424 \catcode`\} = 9
2425 %
2426 % We must not have @c interpreted as a control sequence.
2427 \catcode`\@ = 12
2428 %
2429
2430% @dircategory CATEGORY -- specify a category of the dir file
2431% which this file should belong to. Ignore this in TeX.
2432\let\dircategory = \comment
2433
2434% Ignore text until a line `@end #1'.
2435%
2436\def\doignore#1{\begingroup

--- 10 unchanged lines hidden (view full) ---

2447 %
2448 % Ignore braces, too, so mismatched braces don't cause trouble.
2449 \catcode`\{ = 9
2450 \catcode`\} = 9
2451 %
2452 % We must not have @c interpreted as a control sequence.
2453 \catcode`\@ = 12
2454 %
2429 % Make the letter c a comment character so that the rest of the line
2430 % will be ignored. This way, the document can have (for example)
2431 % @c @end ifinfo
2432 % and the @end ifinfo will be properly ignored.
2433 % (We've just changed @ to catcode 12.)
2434 \catcode`\c = 14
2455 \def\ignoreword{#1}%
2456 \ifx\ignoreword\documentdescriptionword
2457 % The c kludge breaks documentdescription, since
2458 % `documentdescription' contains a `c'. Means not everything will
2459 % be ignored inside @documentdescription, but oh well...
2460 \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
2435 %
2468 %
2436 % And now expand that command.
2469 % And now expand the command defined above.
2437 \doignoretext
2438}
2439
2440% What we do to finish off ignored text.
2441%
2442\def\enddoignore{\endgroup\ignorespaces}%
2443
2444\newif\ifwarnedobs\warnedobsfalse

--- 174 unchanged lines hidden (view full) ---

2619 \else
2620 \expandafter\ifclearfail
2621 \fi
2622}
2623\def\ifclearsucceed{\conditionalsucceed{ifclear}}
2624\def\ifclearfail{\nestedignore{ifclear}}
2625\defineunmatchedend{ifclear}
2626
2470 \doignoretext
2471}
2472
2473% What we do to finish off ignored text.
2474%
2475\def\enddoignore{\endgroup\ignorespaces}%
2476
2477\newif\ifwarnedobs\warnedobsfalse

--- 174 unchanged lines hidden (view full) ---

2652 \else
2653 \expandafter\ifclearfail
2654 \fi
2655}
2656\def\ifclearsucceed{\conditionalsucceed{ifclear}}
2657\def\ifclearfail{\nestedignore{ifclear}}
2658\defineunmatchedend{ifclear}
2659
2627% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
2628% following, through the first @end iftex (etc.). Make `@end iftex'
2629% (etc.) valid only after an @iftex.
2660% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
2661% read the text following, through the first @end iftex (etc.). Make
2662% `@end iftex' (etc.) valid only after an @iftex.
2630%
2631\def\iftex{\conditionalsucceed{iftex}}
2632\def\ifnothtml{\conditionalsucceed{ifnothtml}}
2633\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
2663%
2664\def\iftex{\conditionalsucceed{iftex}}
2665\def\ifnothtml{\conditionalsucceed{ifnothtml}}
2666\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
2667\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
2634\defineunmatchedend{iftex}
2635\defineunmatchedend{ifnothtml}
2636\defineunmatchedend{ifnotinfo}
2668\defineunmatchedend{iftex}
2669\defineunmatchedend{ifnothtml}
2670\defineunmatchedend{ifnotinfo}
2671\defineunmatchedend{ifnotplaintext}
2637
2672
2638% We can't just want to start a group at @iftex (for example) and end it
2639% at @end iftex, since then @set commands inside the conditional have no
2673% We can't just want to start a group at @iftex (etc.) and end it at
2674% @end iftex, since then @set commands inside the conditional have no
2640% effect (they'd get reverted at the end of the group). So we must
2641% define \Eiftex to redefine itself to be its previous value. (We can't
2642% just define it to fail again with an ``unmatched end'' error, since
2643% the @ifset might be nested.)
2644%
2645\def\conditionalsucceed#1{%
2646 \edef\temp{%
2647 % Remember the current value of \E#1.

--- 96 unchanged lines hidden (view full) ---

2744
2745\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
2746\def\singleindexer #1{\doind{\indexname}{#1}}
2747
2748% like the previous two, but they put @code around the argument.
2749\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
2750\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
2751
2675% 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
2677% just define it to fail again with an ``unmatched end'' error, since
2678% the @ifset might be nested.)
2679%
2680\def\conditionalsucceed#1{%
2681 \edef\temp{%
2682 % Remember the current value of \E#1.

--- 96 unchanged lines hidden (view full) ---

2779
2780\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
2781\def\singleindexer #1{\doind{\indexname}{#1}}
2782
2783% like the previous two, but they put @code around the argument.
2784\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
2785\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%
2752\def\indexdummies{%
2753\def\ { }%
2791\def\indexdummies{%
2792\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%
2754% Take care of the plain tex accent commands.
2802% Take care of the plain tex accent commands.
2803\def\,##1{\realbackslash ,{##1}}%
2755\def\"{\realbackslash "}%
2756\def\`{\realbackslash `}%
2757\def\'{\realbackslash '}%
2758\def\^{\realbackslash ^}%
2759\def\~{\realbackslash ~}%
2760\def\={\realbackslash =}%
2761\def\b{\realbackslash b}%
2762\def\c{\realbackslash c}%
2763\def\d{\realbackslash d}%
2764\def\u{\realbackslash u}%
2765\def\v{\realbackslash v}%
2766\def\H{\realbackslash H}%
2804\def\"{\realbackslash "}%
2805\def\`{\realbackslash `}%
2806\def\'{\realbackslash '}%
2807\def\^{\realbackslash ^}%
2808\def\~{\realbackslash ~}%
2809\def\={\realbackslash =}%
2810\def\b{\realbackslash b}%
2811\def\c{\realbackslash c}%
2812\def\d{\realbackslash d}%
2813\def\u{\realbackslash u}%
2814\def\v{\realbackslash v}%
2815\def\H{\realbackslash H}%
2816\def\dotless##1{\realbackslash dotless {##1}}%
2767% Take care of the plain tex special European modified letters.
2817% Take care of the plain tex special European modified letters.
2768\def\oe{\realbackslash oe}%
2769\def\ae{\realbackslash ae}%
2770\def\aa{\realbackslash aa}%
2771\def\OE{\realbackslash OE}%
2772\def\AE{\realbackslash AE}%
2773\def\AA{\realbackslash AA}%
2818\def\AA{\realbackslash AA}%
2774\def\o{\realbackslash o}%
2819\def\AE{\realbackslash AE}%
2820\def\L{\realbackslash L}%
2821\def\OE{\realbackslash OE}%
2775\def\O{\realbackslash O}%
2822\def\O{\realbackslash O}%
2823\def\aa{\realbackslash aa}%
2824\def\ae{\realbackslash ae}%
2776\def\l{\realbackslash l}%
2825\def\l{\realbackslash l}%
2777\def\L{\realbackslash L}%
2826\def\oe{\realbackslash oe}%
2827\def\o{\realbackslash o}%
2778\def\ss{\realbackslash ss}%
2828\def\ss{\realbackslash ss}%
2779% Take care of texinfo commands likely to appear in an index entry.
2780% (Must be a way to avoid doing expansion at all, and thus not have to
2781% laboriously list every single command here.)
2782\def\@{@}% will be @@ when we switch to @ as escape char.
2783% Need these in case \tex is in effect and \{ is a \delimiter again.
2784% But can't use \lbracecmd and \rbracecmd because texindex assumes
2785% braces and backslashes are used only as delimiters.
2786\let\{ = \mylbrace
2787\let\} = \myrbrace
2788\def\_{{\realbackslash _}}%
2789\def\w{\realbackslash w }%
2829%
2830% Although these internals commands shouldn't show up, sometimes they do.
2790\def\bf{\realbackslash bf }%
2831\def\bf{\realbackslash bf }%
2832\def\gtr{\realbackslash gtr}%
2833\def\hat{\realbackslash hat}%
2834\def\less{\realbackslash less}%
2791%\def\rm{\realbackslash rm }%
2835%\def\rm{\realbackslash rm }%
2792\def\sl{\realbackslash sl }%
2793\def\sf{\realbackslash sf}%
2836\def\sf{\realbackslash sf}%
2837\def\sl{\realbackslash sl }%
2838\def\tclose##1{\realbackslash tclose {##1}}%
2794\def\tt{\realbackslash tt}%
2839\def\tt{\realbackslash tt}%
2795\def\gtr{\realbackslash gtr}%
2796\def\less{\realbackslash less}%
2797\def\hat{\realbackslash hat}%
2840%
2841\def\b##1{\realbackslash b {##1}}%
2842\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%
2798\def\TeX{\realbackslash TeX}%
2847\def\TeX{\realbackslash TeX}%
2799\def\dots{\realbackslash dots }%
2800\def\result{\realbackslash result}%
2801\def\equiv{\realbackslash equiv}%
2802\def\expansion{\realbackslash expansion}%
2803\def\print{\realbackslash print}%
2804\def\error{\realbackslash error}%
2805\def\point{\realbackslash point}%
2806\def\copyright{\realbackslash copyright}%
2807\def\tclose##1{\realbackslash tclose {##1}}%
2848\def\acronym##1{\realbackslash acronym {##1}}%
2849\def\cite##1{\realbackslash cite {##1}}%
2808\def\code##1{\realbackslash code {##1}}%
2850\def\code##1{\realbackslash code {##1}}%
2809\def\uref##1{\realbackslash uref {##1}}%
2810\def\url##1{\realbackslash url {##1}}%
2811\def\env##1{\realbackslash env {##1}}%
2812\def\command##1{\realbackslash command {##1}}%
2851\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}}%
2813\def\option##1{\realbackslash option {##1}}%
2860\def\option##1{\realbackslash option {##1}}%
2814\def\dotless##1{\realbackslash dotless {##1}}%
2815\def\samp##1{\realbackslash samp {##1}}%
2861\def\samp##1{\realbackslash samp {##1}}%
2816\def\,##1{\realbackslash ,{##1}}%
2817\def\t##1{\realbackslash t {##1}}%
2818\def\r##1{\realbackslash r {##1}}%
2819\def\i##1{\realbackslash i {##1}}%
2820\def\b##1{\realbackslash b {##1}}%
2821\def\sc##1{\realbackslash sc {##1}}%
2822\def\cite##1{\realbackslash cite {##1}}%
2823\def\key##1{\realbackslash key {##1}}%
2824\def\file##1{\realbackslash file {##1}}%
2862\def\strong##1{\realbackslash strong {##1}}%
2863\def\uref##1{\realbackslash uref {##1}}%
2864\def\url##1{\realbackslash url {##1}}%
2825\def\var##1{\realbackslash var {##1}}%
2865\def\var##1{\realbackslash var {##1}}%
2826\def\kbd##1{\realbackslash kbd {##1}}%
2827\def\dfn##1{\realbackslash dfn {##1}}%
2828\def\emph##1{\realbackslash emph {##1}}%
2829\def\acronym##1{\realbackslash acronym {##1}}%
2866\def\w{\realbackslash w }%
2830%
2867%
2868% These math commands don't seem likely to be used in index entries.
2869\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%
2831% Handle some cases of @value -- where the variable name does not
2832% contain - or _, and the value does not contain any
2833% (non-fully-expandable) commands.
2834\let\value = \expandablevalue
2835%
2836\unsepspaces
2837% Turn off macro expansion
2838\turnoffmacros
2839}
2840
2841% If an index command is used in an @example environment, any spaces
2842% therein should become regular spaces in the raw index file, not the
2877% Handle some cases of @value -- where the variable name does not
2878% contain - or _, and the value does not contain any
2879% (non-fully-expandable) commands.
2880\let\value = \expandablevalue
2881%
2882\unsepspaces
2883% Turn off macro expansion
2884\turnoffmacros
2885}
2886
2887% 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
2843% expansion of \tie (\\leavevmode \penalty \@M \ ).
2889% expansion of \tie (\leavevmode \penalty \@M \ ).
2844{\obeyspaces
2845 \gdef\unsepspaces{\obeyspaces\let =\space}}
2846
2847% \indexnofonts no-ops all font-change commands.
2848% This is used when outputting the strings to sort the index by.
2849\def\indexdummyfont#1{#1}
2850\def\indexdummytex{TeX}
2851\def\indexdummydots{...}
2852
2853\def\indexnofonts{%
2890{\obeyspaces
2891 \gdef\unsepspaces{\obeyspaces\let =\space}}
2892
2893% \indexnofonts no-ops all font-change commands.
2894% This is used when outputting the strings to sort the index by.
2895\def\indexdummyfont#1{#1}
2896\def\indexdummytex{TeX}
2897\def\indexdummydots{...}
2898
2899\def\indexnofonts{%
2854% Just ignore accents.
2900\def\@{@}%
2901% how to handle braces?
2902\def\_{\normalunderscore}%
2903%
2855\let\,=\indexdummyfont
2856\let\"=\indexdummyfont
2857\let\`=\indexdummyfont
2858\let\'=\indexdummyfont
2859\let\^=\indexdummyfont
2860\let\~=\indexdummyfont
2861\let\==\indexdummyfont
2862\let\b=\indexdummyfont
2863\let\c=\indexdummyfont
2864\let\d=\indexdummyfont
2865\let\u=\indexdummyfont
2866\let\v=\indexdummyfont
2867\let\H=\indexdummyfont
2868\let\dotless=\indexdummyfont
2869% Take care of the plain tex special European modified letters.
2904\let\,=\indexdummyfont
2905\let\"=\indexdummyfont
2906\let\`=\indexdummyfont
2907\let\'=\indexdummyfont
2908\let\^=\indexdummyfont
2909\let\~=\indexdummyfont
2910\let\==\indexdummyfont
2911\let\b=\indexdummyfont
2912\let\c=\indexdummyfont
2913\let\d=\indexdummyfont
2914\let\u=\indexdummyfont
2915\let\v=\indexdummyfont
2916\let\H=\indexdummyfont
2917\let\dotless=\indexdummyfont
2918% Take care of the plain tex special European modified letters.
2870\def\oe{oe}%
2871\def\ae{ae}%
2872\def\aa{aa}%
2873\def\OE{OE}%
2874\def\AE{AE}%
2875\def\AA{AA}%
2919\def\AA{AA}%
2876\def\o{o}%
2920\def\AE{AE}%
2921\def\L{L}%
2922\def\OE{OE}%
2877\def\O{O}%
2923\def\O{O}%
2924\def\aa{aa}%
2925\def\ae{ae}%
2878\def\l{l}%
2926\def\l{l}%
2879\def\L{L}%
2927\def\oe{oe}%
2928\def\o{o}%
2880\def\ss{ss}%
2929\def\ss{ss}%
2881\let\w=\indexdummyfont
2882\let\t=\indexdummyfont
2883\let\r=\indexdummyfont
2884\let\i=\indexdummyfont
2930%
2931% Don't no-op \tt, since it isn't a user-level command
2932% and is used in the definitions of the active chars like <, >, |, etc.
2933% Likewise with the other plain tex font commands.
2934%\let\tt=\indexdummyfont
2935%
2885\let\b=\indexdummyfont
2936\let\b=\indexdummyfont
2886\let\emph=\indexdummyfont
2887\let\strong=\indexdummyfont
2888\let\cite=\indexdummyfont
2937\let\i=\indexdummyfont
2938\let\r=\indexdummyfont
2889\let\sc=\indexdummyfont
2939\let\sc=\indexdummyfont
2890%Don't no-op \tt, since it isn't a user-level command
2891% and is used in the definitions of the active chars like <, >, |...
2892%\let\tt=\indexdummyfont
2893\let\tclose=\indexdummyfont
2894\let\code=\indexdummyfont
2895\let\url=\indexdummyfont
2896\let\uref=\indexdummyfont
2897\let\env=\indexdummyfont
2940\let\t=\indexdummyfont
2941%
2942\let\TeX=\indexdummytex
2898\let\acronym=\indexdummyfont
2943\let\acronym=\indexdummyfont
2944\let\cite=\indexdummyfont
2945\let\code=\indexdummyfont
2899\let\command=\indexdummyfont
2946\let\command=\indexdummyfont
2900\let\option=\indexdummyfont
2947\let\dfn=\indexdummyfont
2948\let\dots=\indexdummydots
2949\let\emph=\indexdummyfont
2950\let\env=\indexdummyfont
2901\let\file=\indexdummyfont
2951\let\file=\indexdummyfont
2902\let\samp=\indexdummyfont
2903\let\kbd=\indexdummyfont
2904\let\key=\indexdummyfont
2952\let\kbd=\indexdummyfont
2953\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
2905\let\var=\indexdummyfont
2960\let\var=\indexdummyfont
2906\let\TeX=\indexdummytex
2907\let\dots=\indexdummydots
2908\def\@{@}%
2961\let\w=\indexdummyfont
2909}
2910
2911% To define \realbackslash, we must make \ not be an escape.
2912% We must first make another character (@) an escape
2913% so we do not become unable to do a definition.
2914
2915{\catcode`\@=0 \catcode`\\=\other
2916 @gdef@realbackslash{\}}

--- 585 unchanged lines hidden (view full) ---

3502\secno=0 \subsecno=0 \subsubsecno=0
3503\global\advance \appendixno by 1
3504\message{\putwordAppendix\space \appendixletter}%
3505\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
3506\gdef\thissection{#1}%
3507\gdef\thischaptername{#1}%
3508\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
3509\toks0 = {#1}%
2962}
2963
2964% To define \realbackslash, we must make \ not be an escape.
2965% We must first make another character (@) an escape
2966% so we do not become unable to do a definition.
2967
2968{\catcode`\@=0 \catcode`\\=\other
2969 @gdef@realbackslash{\}}

--- 585 unchanged lines hidden (view full) ---

3555\secno=0 \subsecno=0 \subsubsecno=0
3556\global\advance \appendixno by 1
3557\message{\putwordAppendix\space \appendixletter}%
3558\chapmacro {#1}{\putwordAppendix{} \appendixletter}%
3559\gdef\thissection{#1}%
3560\gdef\thischaptername{#1}%
3561\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
3562\toks0 = {#1}%
3510\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}%
3511 {\putwordAppendix{} \appendixletter}}}%
3563\edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}%
3564 {\appendixletter}}}%
3512\temp
3513\appendixnoderef
3514\global\let\section = \appendixsec
3515\global\let\subsection = \appendixsubsec
3516\global\let\subsubsection = \appendixsubsubsec
3517}
3518
3519% @centerchap is like @unnumbered, but the heading is centered.

--- 60 unchanged lines hidden (view full) ---

3580\nobreak
3581}
3582
3583\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
3584\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
3585\def\unnumberedseczzz #1{%
3586\plainsecheading {#1}\gdef\thissection{#1}%
3587\toks0 = {#1}%
3565\temp
3566\appendixnoderef
3567\global\let\section = \appendixsec
3568\global\let\subsection = \appendixsubsec
3569\global\let\subsubsection = \appendixsubsubsec
3570}
3571
3572% @centerchap is like @unnumbered, but the heading is centered.

--- 60 unchanged lines hidden (view full) ---

3633\nobreak
3634}
3635
3636\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
3637\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
3638\def\unnumberedseczzz #1{%
3639\plainsecheading {#1}\gdef\thissection{#1}%
3640\toks0 = {#1}%
3588\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%
3641\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry%
3642 {\the\toks0}{\the\chapno}}}%
3589\temp
3590\unnumbnoderef
3591\nobreak
3592}
3593
3594% Subsections.
3595\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
3596\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz

--- 22 unchanged lines hidden (view full) ---

3619}
3620
3621\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
3622\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
3623\def\unnumberedsubseczzz #1{%
3624\plainsubsecheading {#1}\gdef\thissection{#1}%
3625\toks0 = {#1}%
3626\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
3643\temp
3644\unnumbnoderef
3645\nobreak
3646}
3647
3648% Subsections.
3649\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
3650\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz

--- 22 unchanged lines hidden (view full) ---

3673}
3674
3675\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
3676\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
3677\def\unnumberedsubseczzz #1{%
3678\plainsubsecheading {#1}\gdef\thissection{#1}%
3679\toks0 = {#1}%
3680\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
3627 {\the\toks0}}}%
3681 {\the\toks0}{\the\chapno}{\the\secno}}}%
3628\temp
3629\unnumbnoderef
3630\nobreak
3631}
3632
3633% Subsubsections.
3634\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
3635\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz

--- 24 unchanged lines hidden (view full) ---

3660}
3661
3662\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
3663\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
3664\def\unnumberedsubsubseczzz #1{%
3665\plainsubsubsecheading {#1}\gdef\thissection{#1}%
3666\toks0 = {#1}%
3667\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
3682\temp
3683\unnumbnoderef
3684\nobreak
3685}
3686
3687% Subsubsections.
3688\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
3689\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz

--- 24 unchanged lines hidden (view full) ---

3714}
3715
3716\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
3717\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
3718\def\unnumberedsubsubseczzz #1{%
3719\plainsubsubsecheading {#1}\gdef\thissection{#1}%
3720\toks0 = {#1}%
3721\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
3668 {\the\toks0}}}%
3722 {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}%
3669\temp
3670\unnumbnoderef
3671\nobreak
3672}
3673
3674% These are variants which are not "outer", so they can appear in @ifinfo.
3675% Actually, they should now be obsolete; ordinary section commands should work.
3676\def\infotop{\parsearg\unnumberedzzz}

--- 195 unchanged lines hidden (view full) ---

3872% Table of contents.
3873\newwrite\tocfile
3874
3875% Write an entry to the toc file, opening it if necessary.
3876% Called from @chapter, etc. We supply {\folio} at the end of the
3877% argument, which will end up as the last argument to the \...entry macro.
3878%
3879% We open the .toc file here instead of at @setfilename or any other
3723\temp
3724\unnumbnoderef
3725\nobreak
3726}
3727
3728% These are variants which are not "outer", so they can appear in @ifinfo.
3729% Actually, they should now be obsolete; ordinary section commands should work.
3730\def\infotop{\parsearg\unnumberedzzz}

--- 195 unchanged lines hidden (view full) ---

3926% Table of contents.
3927\newwrite\tocfile
3928
3929% Write an entry to the toc file, opening it if necessary.
3930% Called from @chapter, etc. We supply {\folio} at the end of the
3931% 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
3880% given time so that @contents can be put in the document anywhere.
3934% fixed time so that @contents can be put in the document anywhere.
3881%
3882\newif\iftocfileopened
3883\def\writetocentry#1{%
3884 \iftocfileopened\else
3885 \immediate\openout\tocfile = \jobname.toc
3886 \global\tocfileopenedtrue
3887 \fi
3888 \iflinks \write\tocfile{#1{\folio}}\fi
3935%
3936\newif\iftocfileopened
3937\def\writetocentry#1{%
3938 \iftocfileopened\else
3939 \immediate\openout\tocfile = \jobname.toc
3940 \global\tocfileopenedtrue
3941 \fi
3942 \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
3889}
3890
3891\newskip\contentsrightmargin \contentsrightmargin=1in
3892\newcount\savepageno
3893\newcount\lastnegativepageno \lastnegativepageno = -1
3894
3895% Finish up the main text and prepare to read what we've written
3896% to \tocfile.

--- 39 unchanged lines hidden (view full) ---

3936 \pageno = \savepageno
3937}
3938
3939% And just the chapters.
3940\def\summarycontents{%
3941 \startcontents{\putwordShortTOC}%
3942 %
3943 \let\chapentry = \shortchapentry
3951}
3952
3953\newskip\contentsrightmargin \contentsrightmargin=1in
3954\newcount\savepageno
3955\newcount\lastnegativepageno \lastnegativepageno = -1
3956
3957% Finish up the main text and prepare to read what we've written
3958% to \tocfile.

--- 39 unchanged lines hidden (view full) ---

3998 \pageno = \savepageno
3999}
4000
4001% And just the chapters.
4002\def\summarycontents{%
4003 \startcontents{\putwordShortTOC}%
4004 %
4005 \let\chapentry = \shortchapentry
4006 \let\appendixentry = \shortappendixentry
3944 \let\unnumbchapentry = \shortunnumberedentry
3945 % We want a true roman here for the page numbers.
3946 \secfonts
3947 \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
3948 \rm
3949 \hyphenpenalty = 10000
3950 \advance\baselineskip by 1pt % Open it up a little.
3951 \def\secentry ##1##2##3##4{}
4007 \let\unnumbchapentry = \shortunnumberedentry
4008 % We want a true roman here for the page numbers.
4009 \secfonts
4010 \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
4011 \rm
4012 \hyphenpenalty = 10000
4013 \advance\baselineskip by 1pt % Open it up a little.
4014 \def\secentry ##1##2##3##4{}
3952 \def\unnumbsecentry ##1##2{}
4015 \def\unnumbsecentry ##1##2##3{}
3953 \def\subsecentry ##1##2##3##4##5{}
4016 \def\subsecentry ##1##2##3##4##5{}
3954 \def\unnumbsubsecentry ##1##2{}
4017 \def\unnumbsubsecentry ##1##2##3##4{}
3955 \def\subsubsecentry ##1##2##3##4##5##6{}
4018 \def\subsubsecentry ##1##2##3##4##5##6{}
3956 \def\unnumbsubsubsecentry ##1##2{}
4019 \def\unnumbsubsubsecentry ##1##2##3##4##5{}
3957 \openin 1 \jobname.toc
3958 \ifeof 1 \else
3959 \closein 1
3960 \input \jobname.toc
3961 \fi
3962 \vfill \eject
3963 \contentsalignmacro % in case @setchapternewpage odd is in effect
3964 \endgroup

--- 6 unchanged lines hidden (view full) ---

3971 \pdfcatalog{/PageMode /UseOutlines}%
3972\fi
3973
3974% These macros generate individual entries in the table of contents.
3975% The first argument is the chapter or section name.
3976% The last argument is the page number.
3977% The arguments in between are the chapter number, section number, ...
3978
4020 \openin 1 \jobname.toc
4021 \ifeof 1 \else
4022 \closein 1
4023 \input \jobname.toc
4024 \fi
4025 \vfill \eject
4026 \contentsalignmacro % in case @setchapternewpage odd is in effect
4027 \endgroup

--- 6 unchanged lines hidden (view full) ---

4034 \pdfcatalog{/PageMode /UseOutlines}%
4035\fi
4036
4037% These macros generate individual entries in the table of contents.
4038% The first argument is the chapter or section name.
4039% The last argument is the page number.
4040% The arguments in between are the chapter number, section number, ...
4041
3979% Chapter-level things, for both the long and short contents.
4042% Chapters, in the main contents.
3980\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
4043\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
3981
3982% See comments in \dochapentry re vbox and related settings
4044%
4045% Chapters, in the short toc.
4046% See comments in \dochapentry re vbox and related settings.
3983\def\shortchapentry#1#2#3{%
3984 \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
3985}
3986
4047\def\shortchapentry#1#2#3{%
4048 \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
3987% Typeset the label for a chapter or appendix for the short contents.
4057% Typeset the label for a chapter or appendix for the short contents.
3988% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter.
4058% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter.
3989% We could simplify the code here by writing out an \appendixentry
3990% command in the toc file for appendices, instead of using \chapentry
3991% for both, but it doesn't seem worth it.
3992%
3993\newdimen\shortappendixwidth
3994%
3995\def\shortchaplabel#1{%
4059% We could simplify the code here by writing out an \appendixentry
4060% command in the toc file for appendices, instead of using \chapentry
4061% for both, but it doesn't seem worth it.
4062%
4063\newdimen\shortappendixwidth
4064%
4065\def\shortchaplabel#1{%
3996 % Compute width of word "Appendix", may change with language.
3997 \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
3998 \shortappendixwidth = \wd0
3999 %
4000 % We typeset #1 in a box of constant width, regardless of the text of
4001 % #1, so the chapter titles will come out aligned.
4002 \setbox0 = \hbox{#1}%
4003 \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
4004 %
4005 % This space should be plenty, since a single number is .5em, and the
4066 % This space should be enough, since a single number is .5em, and the
4006 % widest letter (M) is 1em, at least in the Computer Modern fonts.
4067 % widest letter (M) is 1em, at least in the Computer Modern fonts.
4068 % But use \hss just in case.
4007 % (This space doesn't include the extra space that gets added after
4008 % the label; that gets put in by \shortchapentry above.)
4069 % (This space doesn't include the extra space that gets added after
4070 % the label; that gets put in by \shortchapentry above.)
4009 \advance\dimen0 by 1.1em
4010 \hbox to \dimen0{#1\hfil}%
4071 \dimen0 = 1em
4072 \hbox to \dimen0{#1\hss}%
4011}
4012
4073}
4074
4075% Unnumbered chapters.
4013\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
4014\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
4015
4016% Sections.
4017\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
4076\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
4077\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
4078
4079% Sections.
4080\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
4018\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
4081\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}}
4019
4020% Subsections.
4021\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
4082
4083% Subsections.
4084\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
4022\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
4085\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
4023
4024% And subsubsections.
4025\def\subsubsecentry#1#2#3#4#5#6{%
4026 \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
4086
4087% And subsubsections.
4088\def\subsubsecentry#1#2#3#4#5#6{%
4089 \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
4027\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
4090\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}}
4028
4029% This parameter controls the indentation of the various levels.
4030\newdimen\tocindent \tocindent = 3pc
4031
4032% Now for the actual typesetting. In all these, #1 is the text and #2 is the
4033% page number.
4034%
4035% If the toc has to be broken over pages, we want it to be at chapters

--- 24 unchanged lines hidden (view full) ---

4060
4061% Final typesetting of a toc entry; we use the same \entry macro as for
4062% the index entries, but we want to suppress hyphenation here. (We
4063% can't do that in the \entry macro, since index entries might consist
4064% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
4065\def\tocentry#1#2{\begingroup
4066 \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
4067 % Do not use \turnoffactive in these arguments. Since the toc is
4091
4092% This parameter controls the indentation of the various levels.
4093\newdimen\tocindent \tocindent = 3pc
4094
4095% Now for the actual typesetting. In all these, #1 is the text and #2 is the
4096% page number.
4097%
4098% If the toc has to be broken over pages, we want it to be at chapters

--- 24 unchanged lines hidden (view full) ---

4123
4124% Final typesetting of a toc entry; we use the same \entry macro as for
4125% the index entries, but we want to suppress hyphenation here. (We
4126% can't do that in the \entry macro, since index entries might consist
4127% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
4128\def\tocentry#1#2{\begingroup
4129 \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
4068 % typeset in cmr, so characters such as _ would come out wrong; we
4131 % typeset in cmr, characters such as _ would come out wrong; we
4069 % have to do the usual translation tricks.
4070 \entry{#1}{#2}%
4071\endgroup}
4072
4073% Space between chapter (or whatever) number and the title.
4074\def\labelspace{\hskip1em \relax}
4075
4076\def\dopageno#1{{\rm #1}}
4077\def\doshortpageno#1{{\rm #1}}
4078
4079\def\chapentryfonts{\secfonts \rm}
4080\def\secentryfonts{\textfonts}
4081\let\subsecentryfonts = \textfonts
4082\let\subsubsecentryfonts = \textfonts
4083
4084
4085\message{environments,}
4086% @foo ... @end foo.
4087
4132 % have to do the usual translation tricks.
4133 \entry{#1}{#2}%
4134\endgroup}
4135
4136% Space between chapter (or whatever) number and the title.
4137\def\labelspace{\hskip1em \relax}
4138
4139\def\dopageno#1{{\rm #1}}
4140\def\doshortpageno#1{{\rm #1}}
4141
4142\def\chapentryfonts{\secfonts \rm}
4143\def\secentryfonts{\textfonts}
4144\let\subsecentryfonts = \textfonts
4145\let\subsubsecentryfonts = \textfonts
4146
4147
4148\message{environments,}
4149% @foo ... @end foo.
4150
4151% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
4152%
4088% Since these characters are used in examples, it should be an even number of
4089% \tt widths. Each \tt character is 1en, so two makes it 1em.
4153% 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.
4090% Furthermore, these definitions must come after we define our fonts.
4091\newbox\dblarrowbox \newbox\longdblarrowbox
4092\newbox\pushcharbox \newbox\bullbox
4093\newbox\equivbox \newbox\errorbox
4094
4095%{\tentt
4096%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
4097%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
4098%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
4099%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
4100% Adapted from the manmac format (p.420 of TeXbook)
4101%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
4102% depth .1ex\hfil}
4103%}
4104
4105% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
4155%
4106\def\point{$\star$}
4107\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
4108\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
4109\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
4110\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
4111
4156\def\point{$\star$}
4157\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
4158\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
4159\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
4160\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
4161
4162% The @error{} command.
4112% Adapted from the TeXbook's \boxit.
4163% Adapted from the TeXbook's \boxit.
4164%
4165\newbox\errorbox
4166%
4113{\tentt \global\dimen0 = 3em}% Width of the box.
4114\dimen2 = .55pt % Thickness of rules
4115% The text. (`r' is open on the right, `e' somewhat less so on the left.)
4116\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
4167{\tentt \global\dimen0 = 3em}% Width of the box.
4168\dimen2 = .55pt % Thickness of rules
4169% 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}
4117
4171%
4118\global\setbox\errorbox=\hbox to \dimen0{\hfil
4119 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
4120 \advance\hsize by -2\dimen2 % Rules.
4121 \vbox{
4122 \hrule height\dimen2
4123 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
4124 \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
4125 \kern3pt\vrule width\dimen2}% Space to right.
4126 \hrule height\dimen2}
4127 \hfil}
4172\global\setbox\errorbox=\hbox to \dimen0{\hfil
4173 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
4174 \advance\hsize by -2\dimen2 % Rules.
4175 \vbox{
4176 \hrule height\dimen2
4177 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
4178 \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
4179 \kern3pt\vrule width\dimen2}% Space to right.
4180 \hrule height\dimen2}
4181 \hfil}
4128
4129% The @error{} command.
4182%
4130\def\error{\leavevmode\lower.7ex\copy\errorbox}
4131
4132% @tex ... @end tex escapes into raw Tex temporarily.
4133% One exception: @ is still an escape character, so that @end tex works.
4134% But \@ or @@ will get a plain tex @ character.
4135
4136\def\tex{\begingroup
4137 \catcode `\\=0 \catcode `\{=1 \catcode `\}=2

--- 23 unchanged lines hidden (view full) ---

4161 \let\*=\ptexstar
4162 \let\t=\ptext
4163 %
4164 \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
4165 \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
4166 \def\@{@}%
4167\let\Etex=\endgroup}
4168
4183\def\error{\leavevmode\lower.7ex\copy\errorbox}
4184
4185% @tex ... @end tex escapes into raw Tex temporarily.
4186% One exception: @ is still an escape character, so that @end tex works.
4187% But \@ or @@ will get a plain tex @ character.
4188
4189\def\tex{\begingroup
4190 \catcode `\\=0 \catcode `\{=1 \catcode `\}=2

--- 23 unchanged lines hidden (view full) ---

4214 \let\*=\ptexstar
4215 \let\t=\ptext
4216 %
4217 \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
4218 \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
4219 \def\@{@}%
4220\let\Etex=\endgroup}
4221
4169% Define @lisp ... @endlisp.
4222% Define @lisp ... @end lisp.
4170% @lisp does a \begingroup so it can rebind things,
4223% @lisp does a \begingroup so it can rebind things,
4171% including the definition of @endlisp (which normally is erroneous).
4224% including the definition of @end lisp (which normally is erroneous).
4172
4173% Amount to narrow the margins by for @lisp.
4174\newskip\lispnarrowing \lispnarrowing=0.4in
4175
4176% This is the definition that ^^M gets inside @lisp, @example, and other
4177% such environments. \null is better than a space, since it doesn't
4178% have any width.
4179\def\lisppar{\null\endgraf}

--- 381 unchanged lines hidden (view full) ---

4561 % Restore active chars for included file.
4562 \endgroup
4563 \begingroup
4564 \def\thisfile{#1}%
4565 \expandafter\expandafter\setupverbatiminclude\input\thisfile
4566 \endgroup\nonfillfinish\endgroup
4567}
4568
4225
4226% Amount to narrow the margins by for @lisp.
4227\newskip\lispnarrowing \lispnarrowing=0.4in
4228
4229% This is the definition that ^^M gets inside @lisp, @example, and other
4230% such environments. \null is better than a space, since it doesn't
4231% have any width.
4232\def\lisppar{\null\endgraf}

--- 381 unchanged lines hidden (view full) ---

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}
4569
4632
4633% @insertcopying.
4634%
4635\def\insertcopying{\unvcopy\copyingbox}
4636
4637
4570\message{defuns,}
4571% @defun etc.
4572
4573% Allow user to change definition object font (\df) internally
4574\def\setdeffont #1 {\csname DEF#1\endcsname}
4575
4576\newskip\defbodyindent \defbodyindent=.4in
4577\newskip\defargsindent \defargsindent=50pt

--- 79 unchanged lines hidden (view full) ---

4657\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}%
4658% Make all lines underfull and no complaints:
4659\tolerance=10000 \hbadness=10000
4660\advance\leftskip by -\defbodyindent
4661\exdentamount=\defbodyindent
4662{\df #1}\enskip % Generate function name
4663}
4664
4638\message{defuns,}
4639% @defun etc.
4640
4641% Allow user to change definition object font (\df) internally
4642\def\setdeffont #1 {\csname DEF#1\endcsname}
4643
4644\newskip\defbodyindent \defbodyindent=.4in
4645\newskip\defargsindent \defargsindent=50pt

--- 79 unchanged lines hidden (view full) ---

4725\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}%
4726% Make all lines underfull and no complaints:
4727\tolerance=10000 \hbadness=10000
4728\advance\leftskip by -\defbodyindent
4729\exdentamount=\defbodyindent
4730{\df #1}\enskip % Generate function name
4731}
4732
4665% Actually process the body of a definition
4666% #1 should be the terminating control sequence, such as \Edefun.
4667% #2 should be the "another name" control sequence, such as \defunx.
4668% #3 should be the control sequence that actually processes the header,
4669% such as \defunheader.
4733% Common pieces to start any @def...
4734% #1 is the \E... control sequence to end the definition (which we define).
4735% #2 is the \...x control sequence (which our caller defines).
4736% #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}
4670
4755
4671\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
4672\medbreak %
4673% Define the end token that this defining construct specifies
4674% so that it will exit this group.
4675\def#1{\endgraf\endgroup\medbreak}%
4676\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
4677\parindent=0in
4678\advance\leftskip by \defbodyindent
4679\exdentamount=\defbodyindent
4680\begingroup %
4681\catcode 61=\active % 61 is `='
4682\obeylines\activeparens\spacesplit#3}
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}
4683
4765
4684% #1 is the \E... control sequence to end the definition (which we define).
4685% #2 is the \...x control sequence for consecutive fns (which we define).
4686% #3 is the control sequence to call to resume processing.
4766% #1, #2, #3 are the common arguments (see \defparsebody).
4687% #4, delimited by the space, is the class name.
4688%
4767% #4, delimited by the space, is the class name.
4768%
4689\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
4690\medbreak %
4691% Define the end token that this defining construct specifies
4692% so that it will exit this group.
4693\def#1{\endgraf\endgroup\medbreak}%
4694\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
4695\parindent=0in
4696\advance\leftskip by \defbodyindent
4697\exdentamount=\defbodyindent
4698\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
4769\def\defmethparsebody#1#2#3#4 {%
4770 \parsebodycommon{#1}{#2}{#3}%
4771 \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
4772 \begingroup\obeylines\activeparens
4773 \spacesplit{#3{#4}}%
4774}
4699
4700% Used for @deftypemethod and @deftypeivar.
4775
4776% Used for @deftypemethod and @deftypeivar.
4701% #1 is the \E... control sequence to end the definition (which we define).
4702% #2 is the \...x control sequence for consecutive fns (which we define).
4703% #3 is the control sequence to call to resume processing.
4777% #1, #2, #3 are the common arguments (see \defparsebody).
4704% #4, delimited by a space, is the class name.
4705% #5 is the method's return type.
4706%
4778% #4, delimited by a space, is the class name.
4779% #5 is the method's return type.
4780%
4707\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
4708 \medbreak
4709 \def#1{\endgraf\endgroup\medbreak}%
4781\def\deftypemethparsebody#1#2#3#4 #5 {%
4782 \parsebodycommon{#1}{#2}{#3}%
4710 \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
4783 \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
4711 \parindent=0in
4712 \advance\leftskip by \defbodyindent
4713 \exdentamount=\defbodyindent
4714 \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
4784 \begingroup\obeylines\activeparens
4785 \spacesplit{#3{#4}{#5}}%
4786}
4715
4716% Used for @deftypeop. The change from \deftypemethparsebody is an
4717% extra argument at the beginning which is the `category', instead of it
4718% being the hardwired string `Method' or `Instance Variable'. We have
4719% to account for this both in the \...x definition and in parsing the
4720% input at hand. Thus also need a control sequence (passed as #5) for
4721% the \E... definition to assign the category name to.
4722%
4787
4788% Used for @deftypeop. The change from \deftypemethparsebody is an
4789% extra argument at the beginning which is the `category', instead of it
4790% being the hardwired string `Method' or `Instance Variable'. We have
4791% to account for this both in the \...x definition and in parsing the
4792% input at hand. Thus also need a control sequence (passed as #5) for
4793% the \E... definition to assign the category name to.
4794%
4723\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
4724 \medbreak
4725 \def#1{\endgraf\endgroup\medbreak}%
4795\def\deftypeopparsebody#1#2#3#4#5 #6 {%
4796 \parsebodycommon{#1}{#2}{#3}%
4726 \def#2##1 ##2 ##3 {%
4727 \def#4{##1}%
4728 \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
4797 \def#2##1 ##2 ##3 {%
4798 \def#4{##1}%
4799 \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
4729 \parindent=0in
4730 \advance\leftskip by \defbodyindent
4731 \exdentamount=\defbodyindent
4732 \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
4800 \begingroup\obeylines\activeparens
4801 \spacesplit{#3{#5}{#6}}%
4802}
4733
4803
4734\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
4735\medbreak %
4736% Define the end token that this defining construct specifies
4737% so that it will exit this group.
4738\def#1{\endgraf\endgroup\medbreak}%
4739\def#2##1 ##2 {\def#4{##1}%
4740\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
4741\parindent=0in
4742\advance\leftskip by \defbodyindent
4743\exdentamount=\defbodyindent
4744\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
4804% For @defop.
4805\def\defopparsebody #1#2#3#4#5 {%
4806 \parsebodycommon{#1}{#2}{#3}%
4807 \def#2##1 ##2 {\def#4{##1}%
4808 \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
4809 \begingroup\obeylines\activeparens
4810 \spacesplit{#3{#5}}%
4811}
4745
4746% These parsing functions are similar to the preceding ones
4747% except that they do not make parens into active characters.
4748% These are used for "variables" since they have no arguments.
4812
4813% These parsing functions are similar to the preceding ones
4814% except that they do not make parens into active characters.
4815% These are used for "variables" since they have no arguments.
4749
4750\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
4751\medbreak %
4752% Define the end token that this defining construct specifies
4753% so that it will exit this group.
4754\def#1{\endgraf\endgroup\medbreak}%
4755\def#2{\begingroup\obeylines\spacesplit#3}%
4756\parindent=0in
4757\advance\leftskip by \defbodyindent
4758\exdentamount=\defbodyindent
4759\begingroup %
4760\catcode 61=\active %
4761\obeylines\spacesplit#3}
4762
4763% This is used for \def{tp,vr}parsebody. It could probably be used for
4764% some of the others, too, with some judicious conditionals.
4765%
4816%
4766\def\parsebodycommon#1#2#3{%
4767 \begingroup\inENV %
4768 \medbreak %
4769 % Define the end token that this defining construct specifies
4770 % so that it will exit this group.
4771 \def#1{\endgraf\endgroup\medbreak}%
4772 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
4773 \parindent=0in
4774 \advance\leftskip by \defbodyindent
4775 \exdentamount=\defbodyindent
4817\def\defvarparsebody #1#2#3{%
4818 \parsebodycommon{#1}{#2}{#3}%
4819 \def#2{\begingroup\obeylines\spacesplit#3}%
4820 \catcode61=\active %
4776 \begingroup\obeylines
4821 \begingroup\obeylines
4822 \spacesplit#3%
4777}
4778
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
4779\def\defvrparsebody#1#2#3#4 {%
4780 \parsebodycommon{#1}{#2}{#3}%
4834\def\defvrparsebody#1#2#3#4 {%
4835 \parsebodycommon{#1}{#2}{#3}%
4836 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
4837 \begingroup\obeylines
4781 \spacesplit{#3{#4}}%
4782}
4783
4784% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
4785% type is just `struct', because we lose the braces in `{struct
4786% termios}' when \spacesplit reads its undelimited argument. Sigh.
4787% \let\deftpparsebody=\defvrparsebody
4788%
4789% So, to get around this, we put \empty in with the type name. That
4790% way, TeX won't find exactly `{...}' as an undelimited argument, and
4791% won't strip off the braces.
4792%
4793\def\deftpparsebody #1#2#3#4 {%
4794 \parsebodycommon{#1}{#2}{#3}%
4838 \spacesplit{#3{#4}}%
4839}
4840
4841% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
4842% type is just `struct', because we lose the braces in `{struct
4843% termios}' when \spacesplit reads its undelimited argument. Sigh.
4844% \let\deftpparsebody=\defvrparsebody
4845%
4846% So, to get around this, we put \empty in with the type name. That
4847% way, TeX won't find exactly `{...}' as an undelimited argument, and
4848% won't strip off the braces.
4849%
4850\def\deftpparsebody #1#2#3#4 {%
4851 \parsebodycommon{#1}{#2}{#3}%
4852 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
4853 \begingroup\obeylines
4795 \spacesplit{\parsetpheaderline{#3{#4}}}\empty
4796}
4797
4798% Fine, but then we have to eventually remove the \empty *and* the
4799% braces (if any). That's what this does.
4800%
4801\def\removeemptybraces\empty#1\relax{#1}
4802
4803% After \spacesplit has done its work, this is called -- #1 is the final
4804% thing to call, #2 the type name (which starts with \empty), and #3
4805% (which might be empty) the arguments.
4806%
4807\def\parsetpheaderline#1#2#3{%
4808 #1{\removeemptybraces#2\relax}{#3}%
4809}%
4810
4854 \spacesplit{\parsetpheaderline{#3{#4}}}\empty
4855}
4856
4857% Fine, but then we have to eventually remove the \empty *and* the
4858% braces (if any). That's what this does.
4859%
4860\def\removeemptybraces\empty#1\relax{#1}
4861
4862% After \spacesplit has done its work, this is called -- #1 is the final
4863% thing to call, #2 the type name (which starts with \empty), and #3
4864% (which might be empty) the arguments.
4865%
4866\def\parsetpheaderline#1#2#3{%
4867 #1{\removeemptybraces#2\relax}{#3}%
4868}%
4869
4811\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
4812\medbreak %
4813% Define the end token that this defining construct specifies
4814% so that it will exit this group.
4815\def#1{\endgraf\endgroup\medbreak}%
4816\def#2##1 ##2 {\def#4{##1}%
4817\begingroup\obeylines\spacesplit{#3{##2}}}%
4818\parindent=0in
4819\advance\leftskip by \defbodyindent
4820\exdentamount=\defbodyindent
4821\begingroup\obeylines\spacesplit{#3{#5}}}
4822
4823% Split up #2 at the first space token.
4824% call #1 with two arguments:
4825% the first is all of #2 before the space token,
4826% the second is all of #2 after that space token.
4827% If #2 contains no space token, all of it is passed as the first arg
4828% and the second is passed as empty.
4870% Split up #2 at the first space token.
4871% call #1 with two arguments:
4872% the first is all of #2 before the space token,
4873% 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
4875% and the second is passed as empty.
4829
4876%
4830{\obeylines
4831\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
4832\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
4833\ifx\relax #3%
4834#1{#2}{}\else #1{#2}{#3#4}\fi}}
4835
4877{\obeylines
4878\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
4879\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
4880\ifx\relax #3%
4881#1{#2}{}\else #1{#2}{#3#4}\fi}}
4882
4836% So much for the things common to all kinds of definitions.
4837
4838% Define @defun.
4839
4840% First, define the processing that is wanted for arguments of \defun
4841% Use this to expand the args and terminate the paragraph they make up
4842
4843\def\defunargs#1{\functionparens \sl
4844% Expand, preventing hyphenation at `-' chars.
4845% Note that groups don't affect changes in \hyphenchar.

--- 43 unchanged lines hidden (view full) ---

4889
4890\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
4891
4892% #1 is the data type. #2 is the name and args.
4893\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
4894% #1 is the data type, #2 the name, #3 the args.
4895\def\deftypefunheaderx #1#2 #3\relax{%
4896\doind {fn}{\code{#2}}% Make entry in function index
4883% Define @defun.
4884
4885% First, define the processing that is wanted for arguments of \defun
4886% Use this to expand the args and terminate the paragraph they make up
4887
4888\def\defunargs#1{\functionparens \sl
4889% Expand, preventing hyphenation at `-' chars.
4890% Note that groups don't affect changes in \hyphenchar.

--- 43 unchanged lines hidden (view full) ---

4934
4935\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
4936
4937% #1 is the data type. #2 is the name and args.
4938\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
4939% #1 is the data type, #2 the name, #3 the args.
4940\def\deftypefunheaderx #1#2 #3\relax{%
4941\doind {fn}{\code{#2}}% Make entry in function index
4897\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
4942\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
4898\deftypefunargs {#3}\endgroup %
4899\catcode 61=\other % Turn off change made in \defparsebody
4900}
4901
4902% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
4903
4904\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
4905
4943\deftypefunargs {#3}\endgroup %
4944\catcode 61=\other % Turn off change made in \defparsebody
4945}
4946
4947% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
4948
4949\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
4950
4906% \defheaderxcond#1\relax$$$
4951% \defheaderxcond#1\relax$.$
4907% puts #1 in @code, followed by a space, but does nothing if #1 is null.
4952% puts #1 in @code, followed by a space, but does nothing if #1 is null.
4908\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi}
4953\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
4909
4910% #1 is the classification. #2 is the data type. #3 is the name and args.
4911\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
4912% #1 is the classification, #2 the data type, #3 the name, #4 the args.
4913\def\deftypefnheaderx #1#2#3 #4\relax{%
4914\doind {fn}{\code{#3}}% Make entry in function index
4915\begingroup
4916\normalparens % notably, turn off `&' magic, which prevents
4917% at least some C++ text from working
4954
4955% #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}
4957% #1 is the classification, #2 the data type, #3 the name, #4 the args.
4958\def\deftypefnheaderx #1#2#3 #4\relax{%
4959\doind {fn}{\code{#3}}% Make entry in function index
4960\begingroup
4961\normalparens % notably, turn off `&' magic, which prevents
4962% at least some C++ text from working
4918\defname {\defheaderxcond#2\relax$$$#3}{#1}%
4963\defname {\defheaderxcond#2\relax$.$#3}{#1}%
4919\deftypefunargs {#4}\endgroup %
4920\catcode 61=\other % Turn off change made in \defparsebody
4921}
4922
4923% @defmac == @deffn Macro
4924
4925\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
4926

--- 29 unchanged lines hidden (view full) ---

4956\def\deftypeop #1 {\def\deftypeopcategory{#1}%
4957 \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
4958 \deftypeopcategory}
4959%
4960% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
4961\def\deftypeopheader#1#2#3#4{%
4962 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
4963 \begingroup
4964\deftypefunargs {#4}\endgroup %
4965\catcode 61=\other % Turn off change made in \defparsebody
4966}
4967
4968% @defmac == @deffn Macro
4969
4970\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
4971

--- 29 unchanged lines hidden (view full) ---

5001\def\deftypeop #1 {\def\deftypeopcategory{#1}%
5002 \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
5003 \deftypeopcategory}
5004%
5005% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
5006\def\deftypeopheader#1#2#3#4{%
5007 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
5008 \begingroup
4964 \defname{\defheaderxcond#2\relax$$$#3}
5009 \defname{\defheaderxcond#2\relax$.$#3}
4965 {\deftypeopcategory\ \putwordon\ \code{#1}}%
4966 \deftypefunargs{#4}%
4967 \endgroup
4968}
4969
4970% @deftypemethod CLASS TYPE METHOD ARG...
4971%
4972\def\deftypemethod{%
4973 \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
4974%
4975% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
4976\def\deftypemethodheader#1#2#3#4{%
4977 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
4978 \begingroup
5010 {\deftypeopcategory\ \putwordon\ \code{#1}}%
5011 \deftypefunargs{#4}%
5012 \endgroup
5013}
5014
5015% @deftypemethod CLASS TYPE METHOD ARG...
5016%
5017\def\deftypemethod{%
5018 \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
5019%
5020% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
5021\def\deftypemethodheader#1#2#3#4{%
5022 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
5023 \begingroup
4979 \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%
5024 \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
4980 \deftypefunargs{#4}%
4981 \endgroup
4982}
4983
4984% @deftypeivar CLASS TYPE VARNAME
4985%
4986\def\deftypeivar{%
4987 \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
4988%
4989% #1 is the class name, #2 the data type, #3 the variable name.
4990\def\deftypeivarheader#1#2#3{%
4991 \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
4992 \begingroup
5025 \deftypefunargs{#4}%
5026 \endgroup
5027}
5028
5029% @deftypeivar CLASS TYPE VARNAME
5030%
5031\def\deftypeivar{%
5032 \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
5033%
5034% #1 is the class name, #2 the data type, #3 the variable name.
5035\def\deftypeivarheader#1#2#3{%
5036 \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
5037 \begingroup
4993 \defname{\defheaderxcond#2\relax$$$#3}
5038 \defname{\defheaderxcond#2\relax$.$#3}
4994 {\putwordInstanceVariableof\ \code{#1}}%
4995 \defvarargs{#3}%
4996 \endgroup
4997}
4998
4999% @defmethod == @defop Method
5000%
5001\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}

--- 66 unchanged lines hidden (view full) ---

5068% @deftypevar int foobar
5069
5070\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
5071
5072% #1 is the data type. #2 is the name, perhaps followed by text that
5073% is actually part of the data type, which should not be put into the index.
5074\def\deftypevarheader #1#2{%
5075\dovarind#2 \relax% Make entry in variables index
5039 {\putwordInstanceVariableof\ \code{#1}}%
5040 \defvarargs{#3}%
5041 \endgroup
5042}
5043
5044% @defmethod == @defop Method
5045%
5046\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}

--- 66 unchanged lines hidden (view full) ---

5113% @deftypevar int foobar
5114
5115\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
5116
5117% #1 is the data type. #2 is the name, perhaps followed by text that
5118% is actually part of the data type, which should not be put into the index.
5119\def\deftypevarheader #1#2{%
5120\dovarind#2 \relax% Make entry in variables index
5076\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
5121\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
5077\interlinepenalty=10000
5078\endgraf\nobreak\vskip -\parskip\nobreak
5079\endgroup}
5080\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
5081
5082% @deftypevr {Global Flag} int enable
5083
5084\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
5085
5086\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
5122\interlinepenalty=10000
5123\endgraf\nobreak\vskip -\parskip\nobreak
5124\endgroup}
5125\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
5126
5127% @deftypevr {Global Flag} int enable
5128
5129\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
5130
5131\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
5087\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1}
5132\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
5088\interlinepenalty=10000
5089\endgraf\nobreak\vskip -\parskip\nobreak
5090\endgroup}
5091
5092% Now define @deftp
5093% Args are printed in bold, a slight difference from @defvar.
5094
5095\def\deftpargs #1{\bf \defvarargs{#1}}

--- 143 unchanged lines hidden (view full) ---

5239 \paramno=0%
5240 \else
5241 \expandafter\parsemargdef \argl;%
5242 \fi
5243 \if1\csname ismacro.\the\macname\endcsname
5244 \message{Warning: redefining \the\macname}%
5245 \else
5246 \expandafter\ifx\csname \the\macname\endcsname \relax
5133\interlinepenalty=10000
5134\endgraf\nobreak\vskip -\parskip\nobreak
5135\endgroup}
5136
5137% Now define @deftp
5138% Args are printed in bold, a slight difference from @defvar.
5139
5140\def\deftpargs #1{\bf \defvarargs{#1}}

--- 143 unchanged lines hidden (view full) ---

5284 \paramno=0%
5285 \else
5286 \expandafter\parsemargdef \argl;%
5287 \fi
5288 \if1\csname ismacro.\the\macname\endcsname
5289 \message{Warning: redefining \the\macname}%
5290 \else
5291 \expandafter\ifx\csname \the\macname\endcsname \relax
5247 \else \errmessage{The name \the\macname\space is reserved}\fi
5292 \else \errmessage{Macro name \the\macname\space already defined}\fi
5248 \global\cslet{macsave.\the\macname}{\the\macname}%
5249 \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
5250 % Add the macroname to \macrolist
5251 \toks0 = \expandafter{\macrolist\do}%
5252 \xdef\macrolist{\the\toks0
5253 \expandafter\noexpand\csname\the\macname\endcsname}%
5254 \fi
5255 \begingroup \macrobodyctxt

--- 534 unchanged lines hidden (view full) ---

5790 \leftskip\z@skip
5791 \rightskip\z@skip
5792 \spaceskip\z@skip
5793 \xspaceskip\z@skip
5794 \parindent\defaultparindent
5795 %
5796 \smallfonts \rm
5797 %
5293 \global\cslet{macsave.\the\macname}{\the\macname}%
5294 \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
5295 % Add the macroname to \macrolist
5296 \toks0 = \expandafter{\macrolist\do}%
5297 \xdef\macrolist{\the\toks0
5298 \expandafter\noexpand\csname\the\macname\endcsname}%
5299 \fi
5300 \begingroup \macrobodyctxt

--- 534 unchanged lines hidden (view full) ---

5835 \leftskip\z@skip
5836 \rightskip\z@skip
5837 \spaceskip\z@skip
5838 \xspaceskip\z@skip
5839 \parindent\defaultparindent
5840 %
5841 \smallfonts \rm
5842 %
5798 % Hang the footnote text off the number.
5799 \hang
5843 % Because we use hanging indentation in footnotes, a @noindent appears
5844 % 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}%
5800 \textindent{\thisfootno}%
5801 %
5802 % Don't crash into the line above the footnote text. Since this
5803 % expands into a box, it must come within the paragraph, lest it
5804 % provide a place where TeX can split the footnote.
5805 \footstrut
5806 \futurelet\next\fo@t
5807}

--- 64 unchanged lines hidden (view full) ---

5872\def\image#1{%
5873 \ifx\epsfbox\undefined
5874 \ifwarnednoepsf \else
5875 \errhelp = \noepsfhelp
5876 \errmessage{epsf.tex not found, images will be ignored}%
5877 \global\warnednoepsftrue
5878 \fi
5879 \else
5852 \textindent{\thisfootno}%
5853 %
5854 % Don't crash into the line above the footnote text. Since this
5855 % expands into a box, it must come within the paragraph, lest it
5856 % provide a place where TeX can split the footnote.
5857 \footstrut
5858 \futurelet\next\fo@t
5859}

--- 64 unchanged lines hidden (view full) ---

5924\def\image#1{%
5925 \ifx\epsfbox\undefined
5926 \ifwarnednoepsf \else
5927 \errhelp = \noepsfhelp
5928 \errmessage{epsf.tex not found, images will be ignored}%
5929 \global\warnednoepsftrue
5930 \fi
5931 \else
5880 \imagexxx #1,,,\finish
5932 \imagexxx #1,,,,,\finish
5881 \fi
5882}
5883%
5884% Arguments to @image:
5885% #1 is (mandatory) image filename; we tack on .eps extension.
5886% #2 is (optional) width, #3 is (optional) height.
5887% #4 is (ignored optional) html alt text.
5888% #5 is (ignored optional) extension.
5889% #6 is just the usual extra ignored arg for parsing this stuff.
5933 \fi
5934}
5935%
5936% Arguments to @image:
5937% #1 is (mandatory) image filename; we tack on .eps extension.
5938% #2 is (optional) width, #3 is (optional) height.
5939% #4 is (ignored optional) html alt text.
5940% #5 is (ignored optional) extension.
5941% #6 is just the usual extra ignored arg for parsing this stuff.
5890\def\imagexxx#1,#2,#3,#4,#5,#6\finish{%
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.
5891 \ifpdf
5959 \ifpdf
5892 \centerline{\dopdfimage{#1}{#2}{#3}}%
5960 \dopdfimage{#1}{#2}{#3}%
5893 \else
5894 % \epsfbox itself resets \epsf?size at each figure.
5895 \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
5896 \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
5961 \else
5962 % \epsfbox itself resets \epsf?size at each figure.
5963 \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
5964 \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
5897 \begingroup
5898 \catcode`\^^M = 5 % in case we're inside an example
5899 \normalturnoffactive % allow _ et al. in names
5900 % If the image is by itself, center it.
5901 \ifvmode
5902 \nobreak\bigskip
5903 % Usually we'll have text after the image which will insert
5904 % \parskip glue, so insert it here too to equalize the space
5905 % above and below.
5906 \nobreak\vskip\parskip
5907 \nobreak
5908 \centerline{\epsfbox{#1.eps}}%
5909 \bigbreak
5910 \else
5911 % In the middle of a paragraph, no extra space.
5912 \epsfbox{#1.eps}%
5913 \fi
5914 \endgroup
5965 \epsfbox{#1.eps}%
5915 \fi
5966 \fi
5916}
5967 %
5968 \ifimagevmode \hss \egroup \bigbreak \fi % space after the image
5969\endgroup}
5917
5918
5919\message{localization,}
5920% and i18n.
5921
5922% @documentlanguage is usually given very early, just after
5923% @setfilename. If done too late, it may not override everything
5924% properly. Single argument is the language abbreviation.

--- 153 unchanged lines hidden (view full) ---

6078
6079% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
6080% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
6081\def\afourlatex{{\globaldefs = 1
6082 \textleading = 13.6pt
6083 %
6084 \afourpaper
6085 \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
5970
5971
5972\message{localization,}
5973% and i18n.
5974
5975% @documentlanguage is usually given very early, just after
5976% @setfilename. If done too late, it may not override everything
5977% properly. Single argument is the language abbreviation.

--- 153 unchanged lines hidden (view full) ---

6131
6132% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
6133% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
6134\def\afourlatex{{\globaldefs = 1
6135 \textleading = 13.6pt
6136 %
6137 \afourpaper
6138 \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
6086}}
6087
6088% Use @afourwide to print on European A4 paper in wide format.
6089\def\afourwide{%
6090 \afourpaper
6091 \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
6092}
6093

--- 33 unchanged lines hidden (view full) ---

6127\def\normaldoublequote{"}
6128\def\normaltilde{~}
6129\def\normalcaret{^}
6130\def\normalunderscore{_}
6131\def\normalverticalbar{|}
6132\def\normalless{<}
6133\def\normalgreater{>}
6134\def\normalplus{+}
6143}}
6144
6145% Use @afourwide to print on European A4 paper in wide format.
6146\def\afourwide{%
6147 \afourpaper
6148 \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
6149}
6150

--- 33 unchanged lines hidden (view full) ---

6184\def\normaldoublequote{"}
6185\def\normaltilde{~}
6186\def\normalcaret{^}
6187\def\normalunderscore{_}
6188\def\normalverticalbar{|}
6189\def\normalless{<}
6190\def\normalgreater{>}
6191\def\normalplus{+}
6135\def\normaldollar{$}
6192\def\normaldollar{$}%$ font-lock fix
6136
6137% This macro is used to make a character print one way in ttfont
6138% where it can probably just be output, and another way in other fonts,
6139% where something hairier probably needs to be done.
6140%
6141% #1 is what to print if we are indeed using \tt; #2 is what to print
6142% otherwise. Since all the Computer Modern typewriter fonts have zero
6143% interword stretch (and shrink), and it is reasonable to expect all

--- 32 unchanged lines hidden (view full) ---

6176\catcode`\<=\active
6177\def<{{\tt \less}}
6178\chardef \gtr=`\>
6179\catcode`\>=\active
6180\def>{{\tt \gtr}}
6181\catcode`\+=\active
6182\def+{{\tt \char 43}}
6183\catcode`\$=\active
6193
6194% 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,
6196% where something hairier probably needs to be done.
6197%
6198% #1 is what to print if we are indeed using \tt; #2 is what to print
6199% otherwise. Since all the Computer Modern typewriter fonts have zero
6200% interword stretch (and shrink), and it is reasonable to expect all

--- 32 unchanged lines hidden (view full) ---

6233\catcode`\<=\active
6234\def<{{\tt \less}}
6235\chardef \gtr=`\>
6236\catcode`\>=\active
6237\def>{{\tt \gtr}}
6238\catcode`\+=\active
6239\def+{{\tt \char 43}}
6240\catcode`\$=\active
6184\def${\ifusingit{{\sl\$}}\normaldollar}
6241\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
6185%\catcode 27=\active
6186%\def^^[{$\diamondsuit$}
6187
6188% Set up an active definition for =, but don't enable it most of the time.
6189{\catcode`\==\active
6190\global\def={{\tt \char 61}}}
6191
6192\catcode`+=\active

--- 28 unchanged lines hidden (view full) ---

6221@let\=@realbackslash
6222@let~=@normaltilde
6223@let^=@normalcaret
6224@let_=@normalunderscore
6225@let|=@normalverticalbar
6226@let<=@normalless
6227@let>=@normalgreater
6228@let+=@normalplus
6242%\catcode 27=\active
6243%\def^^[{$\diamondsuit$}
6244
6245% Set up an active definition for =, but don't enable it most of the time.
6246{\catcode`\==\active
6247\global\def={{\tt \char 61}}}
6248
6249\catcode`+=\active

--- 28 unchanged lines hidden (view full) ---

6278@let\=@realbackslash
6279@let~=@normaltilde
6280@let^=@normalcaret
6281@let_=@normalunderscore
6282@let|=@normalverticalbar
6283@let<=@normalless
6284@let>=@normalgreater
6285@let+=@normalplus
6229@let$=@normaldollar}
6286@let$=@normaldollar}%$ font-lock fix
6230
6231@def@normalturnoffactive{@let"=@normaldoublequote
6232@let\=@normalbackslash
6233@let~=@normaltilde
6234@let^=@normalcaret
6235@let_=@normalunderscore
6236@let|=@normalverticalbar
6237@let<=@normalless
6238@let>=@normalgreater
6239@let+=@normalplus
6287
6288@def@normalturnoffactive{@let"=@normaldoublequote
6289@let\=@normalbackslash
6290@let~=@normaltilde
6291@let^=@normalcaret
6292@let_=@normalunderscore
6293@let|=@normalverticalbar
6294@let<=@normalless
6295@let>=@normalgreater
6296@let+=@normalplus
6240@let$=@normaldollar}
6297@let$=@normaldollar}%$ font-lock fix
6241
6242% Make _ and + \other characters, temporarily.
6243% This is canceled by @fixbackslash.
6244@otherifyactive
6245
6246% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
6247% That is what \eatinput is for; after that, the `\' should revert to printing
6248% a backslash.

--- 36 unchanged lines hidden ---
6298
6299% Make _ and + \other characters, temporarily.
6300% This is canceled by @fixbackslash.
6301@otherifyactive
6302
6303% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
6304% That is what \eatinput is for; after that, the `\' should revert to printing
6305% a backslash.

--- 36 unchanged lines hidden ---