aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Janík2002-09-06 10:04:28 +0000
committerPavel Janík2002-09-06 10:04:28 +0000
commit08b16a022f38ae1087bac357a8389b48e6f4dd9e (patch)
tree27beb5f54b6693eb0b73693c157c0b87f1674557
parentc3518b639e014a123f4666407c2e41c201e71f0d (diff)
downloademacs-08b16a022f38ae1087bac357a8389b48e6f4dd9e.tar.gz
emacs-08b16a022f38ae1087bac357a8389b48e6f4dd9e.zip
Updated to texinfo 4.2.
-rw-r--r--man/ChangeLog8
-rw-r--r--man/texinfo.tex913
2 files changed, 514 insertions, 407 deletions
diff --git a/man/ChangeLog b/man/ChangeLog
index b7257447857..1e0c8ef9b34 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,7 @@
12002-09-06 Pavel Jan,Bm(Bk <Pavel@Janik.cz>
2
3 * texinfo.tex: Updated to texinfo 4.2.
4
12002-08-27 Carsten Dominik <dominik@sand.science.uva.nl> 52002-08-27 Carsten Dominik <dominik@sand.science.uva.nl>
2 6
3 * reftex.texi: Update to RefTeX 4.19 7 * reftex.texi: Update to RefTeX 4.19
@@ -369,7 +373,7 @@
369 * info.texi, info-stn.texi: New files implement texinfo version of 373 * info.texi, info-stn.texi: New files implement texinfo version of
370 `info' file. 374 `info' file.
371 375
372 * frames.texi (Creating Frames): Mention `C-x 5' instead of `C-x 376 * frames.texi (Creating Frames): Mention `C-x 5' instead of `C-x
373 4' where appropriate. 377 4' where appropriate.
374 378
3751993-10-20 Brian Fox (bfox@ai.mit.edu) 3791993-10-20 Brian Fox (bfox@ai.mit.edu)
@@ -477,7 +481,7 @@
477 481
4781993-04-18 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) 4821993-04-18 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu)
479 483
480 * text.texi: Updated unix TeX ordering information. 484 * text.texi: Updated unix TeX ordering information.
481 485
4821993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) 4861993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
483 487
diff --git a/man/texinfo.tex b/man/texinfo.tex
index 0b5b9033f2e..b0a1cfc3e72 100644
--- a/man/texinfo.tex
+++ b/man/texinfo.tex
@@ -3,10 +3,10 @@
3% Load plain if necessary, i.e., if running under initex. 3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5% 5%
6\def\texinfoversion{2001-03-28.08} 6\def\texinfoversion{2002-06-04.06}
7% 7%
8% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 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% 10%
11% This texinfo.tex file is free software; you can redistribute it and/or 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 12% modify it under the terms of the GNU General Public License as
@@ -30,14 +30,17 @@
30% Please try the latest version of texinfo.tex before submitting bug 30% Please try the latest version of texinfo.tex before submitting bug
31% reports; you can get the latest version from: 31% reports; you can get the latest version from:
32% ftp://ftp.gnu.org/gnu/texinfo.tex 32% ftp://ftp.gnu.org/gnu/texinfo.tex
33% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) 33% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
34% ftp://texinfo.org/tex/texinfo.tex 34% ftp://texinfo.org/texinfo/texinfo.tex
35% ftp://us.ctan.org/macros/texinfo/texinfo.tex 35% ftp://tug.org/tex/texinfo.tex
36% (and all CTAN mirrors, finger ctan@us.ctan.org for a list). 36% (and all CTAN mirrors, see http://www.ctan.org),
37% /home/gd/gnu/doc/texinfo.tex on the GNU machines. 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% 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. 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% 44%
42% Send bug reports to bug-texinfo@gnu.org. Please include including a 45% 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 46% complete document in each bug report with which we can reproduce the
@@ -50,13 +53,13 @@
50% texindex foo.?? 53% texindex foo.??
51% tex foo.texi 54% tex foo.texi
52% tex foo.texi 55% tex foo.texi
53% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. 56% dvips foo.dvi -o # or whatever; this makes foo.ps.
54% The extra runs of TeX get the cross-reference information correct. 57% The extra TeX runs get the cross-reference information correct.
55% Sometimes one run after texindex suffices, and sometimes you need more 58% Sometimes one run after texindex suffices, and sometimes you need more
56% than two; texi2dvi does it as many times as necessary. 59% than two; texi2dvi does it as many times as necessary.
57% 60%
58% It is possible to adapt texinfo.tex for other languages. You can get 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 63
61\message{Loading texinfo [version \texinfoversion]:} 64\message{Loading texinfo [version \texinfoversion]:}
62 65
@@ -170,6 +173,16 @@
170}% 173}%
171\fi 174\fi
172 175
176% add check for \lastpenalty to plain's definitions. If the last thing
177% we did was a \nobreak, we don't want to insert more space.
178%
179\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
180 \removelastskip\penalty-50\smallskip\fi\fi}
181\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
182 \removelastskip\penalty-100\medskip\fi\fi}
183\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
184 \removelastskip\penalty-200\bigskip\fi\fi}
185
173% For @cropmarks command. 186% For @cropmarks command.
174% Do @cropmarks to get crop marks. 187% Do @cropmarks to get crop marks.
175% 188%
@@ -431,7 +444,7 @@
431 % environments. --karl, 6may93 444 % environments. --karl, 6may93
432 %{\advance \baselineskip by -\singlespaceskip 445 %{\advance \baselineskip by -\singlespaceskip
433 %\kern \baselineskip}% 446 %\kern \baselineskip}%
434 \setleading \singlespaceskip 447 \setleading\singlespaceskip
435} 448}
436 449
437%% Simple single-character @ commands 450%% Simple single-character @ commands
@@ -823,18 +836,43 @@ where each line of input produces a line of output.}
823% 836%
824\def\asis#1{#1} 837\def\asis#1{#1}
825 838
826% @math means output in math mode. 839% @math outputs its argument in math mode.
827% We don't use $'s directly in the definition of \math because control 840% We don't use $'s directly in the definition of \math because we need
828% sequences like \math are expanded when the toc file is written. Then, 841% to set catcodes according to plain TeX first, to allow for subscripts,
829% we read the toc file back, the $'s will be normal characters (as they 842% superscripts, special math chars, etc.
830% should be, according to the definition of Texinfo). So we must use a 843%
831% control sequence to switch into and out of math mode. 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.
832% 848%
833% This isn't quite enough for @math to work properly in indices, but it 849\let\implicitmath = $%$ font-lock fix
834% seems unlikely it will ever be needed there.
835% 850%
836\let\implicitmath = $ 851% One complication: _ usually means subscripts, but it could also mean
837\def\math#1{\implicitmath #1\implicitmath} 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}
838 876
839% @bullet and @minus need the same treatment as @math, just above. 877% @bullet and @minus need the same treatment as @math, just above.
840\def\bullet{\implicitmath\ptexbullet\implicitmath} 878\def\bullet{\implicitmath\ptexbullet\implicitmath}
@@ -917,10 +955,12 @@ where each line of input produces a line of output.}
917 \def\dopdfimage#1#2#3{% 955 \def\dopdfimage#1#2#3{%
918 \def\imagewidth{#2}% 956 \def\imagewidth{#2}%
919 \def\imageheight{#3}% 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.)
920 \ifnum\pdftexversion < 14 960 \ifnum\pdftexversion < 14
921 \pdfimage 961 \immediate\pdfimage
922 \else 962 \else
923 \pdfximage 963 \immediate\pdfximage
924 \fi 964 \fi
925 \ifx\empty\imagewidth\else width \imagewidth \fi 965 \ifx\empty\imagewidth\else width \imagewidth \fi
926 \ifx\empty\imageheight\else height \imageheight \fi 966 \ifx\empty\imageheight\else height \imageheight \fi
@@ -932,8 +972,8 @@ where each line of input produces a line of output.}
932 \ifnum\pdftexversion < 14 \else 972 \ifnum\pdftexversion < 14 \else
933 \pdfrefximage \pdflastximage 973 \pdfrefximage \pdflastximage
934 \fi} 974 \fi}
935 \def\pdfmkdest#1{\pdfdest name{#1} xyz} 975 \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
936 \def\pdfmkpgn#1{#1@} 976 \def\pdfmkpgn#1{#1}
937 \let\linkcolor = \Blue % was Cyan, but that seems light? 977 \let\linkcolor = \Blue % was Cyan, but that seems light?
938 \def\endlink{\Black\pdfendlink} 978 \def\endlink{\Black\pdfendlink}
939 % Adding outlines to PDF; macros for calculating structure of outlines 979 % Adding outlines to PDF; macros for calculating structure of outlines
@@ -945,7 +985,7 @@ where each line of input produces a line of output.}
945 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} 985 \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
946 \def\pdfmakeoutlines{{% 986 \def\pdfmakeoutlines{{%
947 \openin 1 \jobname.toc 987 \openin 1 \jobname.toc
948 \ifeof 1\else\bgroup 988 \ifeof 1\else\begingroup
949 \closein 1 989 \closein 1
950 \indexnofonts 990 \indexnofonts
951 \def\tt{} 991 \def\tt{}
@@ -955,32 +995,34 @@ where each line of input produces a line of output.}
955 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace 995 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
956 % 996 %
957 \def\chapentry ##1##2##3{} 997 \def\chapentry ##1##2##3{}
998 \let\appendixentry = \chapentry
958 \def\unnumbchapentry ##1##2{} 999 \def\unnumbchapentry ##1##2{}
959 \def\secentry ##1##2##3##4{\advancenumber{chap##2}} 1000 \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
960 \def\unnumbsecentry ##1##2{} 1001 \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}}
961 \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} 1002 \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
962 \def\unnumbsubsecentry ##1##2{} 1003 \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}}
963 \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}}
964 \def\unnumbsubsubsecentry ##1##2{} 1005 \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}}
965 \input \jobname.toc 1006 \input \jobname.toc
966 \def\chapentry ##1##2##3{% 1007 \def\chapentry ##1##2##3{%
967 \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} 1008 \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
1009 \let\appendixentry = \chapentry
968 \def\unnumbchapentry ##1##2{% 1010 \def\unnumbchapentry ##1##2{%
969 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} 1011 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
970 \def\secentry ##1##2##3##4{% 1012 \def\secentry ##1##2##3##4{%
971 \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} 1013 \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
972 \def\unnumbsecentry ##1##2{% 1014 \def\unnumbsecentry ##1##2##3{%
973 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} 1015 \pdfoutline goto name{\pdfmkpgn{##3}}{##1}}
974 \def\subsecentry ##1##2##3##4##5{% 1016 \def\subsecentry ##1##2##3##4##5{%
975 \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} 1017 \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
976 \def\unnumbsubsecentry ##1##2{% 1018 \def\unnumbsubsecentry ##1##2##3##4{%
977 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} 1019 \pdfoutline goto name{\pdfmkpgn{##4}}{##1}}
978 \def\subsubsecentry ##1##2##3##4##5##6{% 1020 \def\subsubsecentry ##1##2##3##4##5##6{%
979 \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} 1021 \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
980 \def\unnumbsubsubsecentry ##1##2{% 1022 \def\unnumbsubsubsecentry ##1##2##3##4##5{%
981 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} 1023 \pdfoutline goto name{\pdfmkpgn{##5}}{##1}}
982 \input \jobname.toc 1024 \input \jobname.toc
983 \egroup\fi 1025 \endgroup\fi
984 }} 1026 }}
985 \def\makelinks #1,{% 1027 \def\makelinks #1,{%
986 \def\params{#1}\def\E{END}% 1028 \def\params{#1}\def\E{END}%
@@ -1030,6 +1072,7 @@ where each line of input produces a line of output.}
1030 \def\pdfurl#1{% 1072 \def\pdfurl#1{%
1031 \begingroup 1073 \begingroup
1032 \normalturnoffactive\def\@{@}% 1074 \normalturnoffactive\def\@{@}%
1075 \let\value=\expandablevalue
1033 \leavevmode\Red 1076 \leavevmode\Red
1034 \startlink attr{/Border [0 0 0]}% 1077 \startlink attr{/Border [0 0 0]}%
1035 user{/Subtype /Link /A << /S /URI /URI (#1) >>}% 1078 user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
@@ -1057,9 +1100,8 @@ where each line of input produces a line of output.}
1057 \def\makelink{\addtokens{\toksB}% 1100 \def\makelink{\addtokens{\toksB}%
1058 {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} 1101 {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
1059 \def\pdflink#1{% 1102 \def\pdflink#1{%
1060 \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}} 1103 \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
1061 \linkcolor #1\endlink} 1104 \linkcolor #1\endlink}
1062 \def\mkpgn#1{#1@}
1063 \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} 1105 \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
1064\fi % \ifx\pdfoutput 1106\fi % \ifx\pdfoutput
1065 1107
@@ -1076,9 +1118,26 @@ where each line of input produces a line of output.}
1076% We don't need math for this one. 1118% We don't need math for this one.
1077\def\ttsl{\tenttsl} 1119\def\ttsl{\tenttsl}
1078 1120
1079% Use Computer Modern fonts at \magstephalf (11pt). 1121% Default leading.
1080\newcount\mainmagstep 1122\newdimen\textleading \textleading = 13.2pt
1081\mainmagstep=\magstephalf 1123
1124% Set the baselineskip to #1, and the lineskip and strut size
1125% correspondingly. There is no deep meaning behind these magic numbers
1126% used as factors; they just match (closely enough) what Knuth defined.
1127%
1128\def\lineskipfactor{.08333}
1129\def\strutheightpercent{.70833}
1130\def\strutdepthpercent {.29167}
1131%
1132\def\setleading#1{%
1133 \normalbaselineskip = #1\relax
1134 \normallineskip = \lineskipfactor\normalbaselineskip
1135 \normalbaselines
1136 \setbox\strutbox =\hbox{%
1137 \vrule width0pt height\strutheightpercent\baselineskip
1138 depth \strutdepthpercent \baselineskip
1139 }%
1140}
1082 1141
1083% Set the font macro #1 to the font named #2, adding on the 1142% Set the font macro #1 to the font named #2, adding on the
1084% specified font prefix (normally `cm'). 1143% specified font prefix (normally `cm').
@@ -1108,13 +1167,16 @@ where each line of input produces a line of output.}
1108\def\scshape{csc} 1167\def\scshape{csc}
1109\def\scbshape{csc} 1168\def\scbshape{csc}
1110 1169
1170\newcount\mainmagstep
1111\ifx\bigger\relax 1171\ifx\bigger\relax
1112\let\mainmagstep=\magstep1 1172 % not really supported.
1113\setfont\textrm\rmshape{12}{1000} 1173 \let\mainmagstep=\magstep1
1114\setfont\texttt\ttshape{12}{1000} 1174 \setfont\textrm\rmshape{12}{1000}
1175 \setfont\texttt\ttshape{12}{1000}
1115\else 1176\else
1116\setfont\textrm\rmshape{10}{\mainmagstep} 1177 \mainmagstep=\magstephalf
1117\setfont\texttt\ttshape{10}{\mainmagstep} 1178 \setfont\textrm\rmshape{10}{\mainmagstep}
1179 \setfont\texttt\ttshape{10}{\mainmagstep}
1118\fi 1180\fi
1119% Instead of cmb10, you many want to use cmbx10. 1181% Instead of cmb10, you many want to use cmbx10.
1120% cmbx10 is a prettier font on its own, but cmb10 1182% cmbx10 is a prettier font on its own, but cmb10
@@ -1145,6 +1207,18 @@ where each line of input produces a line of output.}
1145\font\smalli=cmmi9 1207\font\smalli=cmmi9
1146\font\smallsy=cmsy9 1208\font\smallsy=cmsy9
1147 1209
1210% Fonts for small examples (8pt).
1211\setfont\smallerrm\rmshape{8}{1000}
1212\setfont\smallertt\ttshape{8}{1000}
1213\setfont\smallerbf\bfshape{10}{800}
1214\setfont\smallerit\itshape{8}{1000}
1215\setfont\smallersl\slshape{8}{1000}
1216\setfont\smallersf\sfshape{8}{1000}
1217\setfont\smallersc\scshape{10}{800}
1218\setfont\smallerttsl\ttslshape{10}{800}
1219\font\smalleri=cmmi8
1220\font\smallersy=cmsy8
1221
1148% Fonts for title page: 1222% Fonts for title page:
1149\setfont\titlerm\rmbshape{12}{\magstep3} 1223\setfont\titlerm\rmbshape{12}{\magstep3}
1150\setfont\titleit\itbshape{10}{\magstep4} 1224\setfont\titleit\itbshape{10}{\magstep4}
@@ -1182,20 +1256,6 @@ where each line of input produces a line of output.}
1182\font\seci=cmmi12 scaled \magstep1 1256\font\seci=cmmi12 scaled \magstep1
1183\font\secsy=cmsy10 scaled \magstep2 1257\font\secsy=cmsy10 scaled \magstep2
1184 1258
1185% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad.
1186% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded.
1187% \setfont\ssecsl\slshape{10}{\magstep1}
1188% \setfont\ssectt\ttshape{10}{\magstep1}
1189% \setfont\ssecsf\sfshape{10}{\magstep1}
1190
1191%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx.
1192%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than
1193%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1.
1194%\setfont\ssectt\ttshape{10}{1315}
1195%\setfont\ssecsf\sfshape{10}{1315}
1196
1197%\let\ssecbf=\ssecrm
1198
1199% Subsection fonts (13.15pt). 1259% Subsection fonts (13.15pt).
1200\setfont\ssecrm\rmbshape{12}{\magstephalf} 1260\setfont\ssecrm\rmbshape{12}{\magstephalf}
1201\setfont\ssecit\itbshape{10}{1315} 1261\setfont\ssecit\itbshape{10}{1315}
@@ -1212,17 +1272,16 @@ where each line of input produces a line of output.}
1212 1272
1213% In order for the font changes to affect most math symbols and letters, 1273% In order for the font changes to affect most math symbols and letters,
1214% we have to define the \textfont of the standard families. Since 1274% we have to define the \textfont of the standard families. Since
1215% texinfo doesn't allow for producing subscripts and superscripts, we 1275% texinfo doesn't allow for producing subscripts and superscripts except
1216% don't bother to reset \scriptfont and \scriptscriptfont (which would 1276% in the main text, we don't bother to reset \scriptfont and
1217% also require loading a lot more fonts). 1277% \scriptscriptfont (which would also require loading a lot more fonts).
1218% 1278%
1219\def\resetmathfonts{% 1279\def\resetmathfonts{%
1220 \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy 1280 \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
1221 \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf 1281 \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
1222 \textfont\ttfam = \tentt \textfont\sffam = \tensf 1282 \textfont\ttfam=\tentt \textfont\sffam=\tensf
1223} 1283}
1224 1284
1225
1226% The font-changing commands redefine the meanings of \tenSTYLE, instead 1285% The font-changing commands redefine the meanings of \tenSTYLE, instead
1227% of just \STYLE. We do this so that font changes will continue to work 1286% of just \STYLE. We do this so that font changes will continue to work
1228% in math mode, where it is the current \fam that is relevant in most 1287% in math mode, where it is the current \fam that is relevant in most
@@ -1233,7 +1292,7 @@ where each line of input produces a line of output.}
1233 \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl 1292 \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
1234 \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc 1293 \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
1235 \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl 1294 \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
1236 \resetmathfonts} 1295 \resetmathfonts \setleading{\textleading}}
1237\def\titlefonts{% 1296\def\titlefonts{%
1238 \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl 1297 \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
1239 \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc 1298 \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
@@ -1262,7 +1321,14 @@ where each line of input produces a line of output.}
1262 \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc 1321 \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
1263 \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy 1322 \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
1264 \let\tenttsl=\smallttsl 1323 \let\tenttsl=\smallttsl
1265 \resetmathfonts \setleading{11pt}} 1324 \resetmathfonts \setleading{10.5pt}}
1325\def\smallerfonts{%
1326 \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
1327 \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
1328 \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
1329 \let\tenttsl=\smallerttsl
1330 \resetmathfonts \setleading{9.5pt}}
1331\let\smallexamplefonts = \smallerfonts
1266 1332
1267% Set up the default fonts, so we can use them for creating boxes. 1333% Set up the default fonts, so we can use them for creating boxes.
1268% 1334%
@@ -1376,11 +1442,19 @@ where each line of input produces a line of output.}
1376 1442
1377\def\realdash{-} 1443\def\realdash{-}
1378\def\codedash{-\discretionary{}{}{}} 1444\def\codedash{-\discretionary{}{}{}}
1379\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}
1380\def\codex #1{\tclose{#1}\endgroup} 1456\def\codex #1{\tclose{#1}\endgroup}
1381 1457
1382%\let\exp=\tclose %Was temporary
1383
1384% @kbd is like @code, except that if the argument is just one @key command, 1458% @kbd is like @code, except that if the argument is just one @key command,
1385% then @kbd has no effect. 1459% then @kbd has no effect.
1386 1460
@@ -1565,6 +1639,10 @@ where each line of input produces a line of output.}
1565 \oldpage 1639 \oldpage
1566 \endgroup 1640 \endgroup
1567 % 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 %
1568 % If they want short, they certainly want long too. 1646 % If they want short, they certainly want long too.
1569 \ifsetshortcontentsaftertitlepage 1647 \ifsetshortcontentsaftertitlepage
1570 \shortcontents 1648 \shortcontents
@@ -1578,10 +1656,6 @@ where each line of input produces a line of output.}
1578 \global\let\contents = \relax 1656 \global\let\contents = \relax
1579 \global\let\shortcontents = \relax 1657 \global\let\shortcontents = \relax
1580 \fi 1658 \fi
1581 %
1582 \ifpdf \pdfmakepagedesttrue \fi
1583 %
1584 \HEADINGSon
1585} 1659}
1586 1660
1587\def\finishtitlepage{% 1661\def\finishtitlepage{%
@@ -2339,18 +2413,19 @@ width0pt\relax} \fi
2339 \let\item = \relax 2413 \let\item = \relax
2340} 2414}
2341 2415
2342% Ignore @ignore ... @end ignore. 2416% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu,
2417% @direntry, and @documentdescription.
2343% 2418%
2344\def\ignore{\doignore{ignore}} 2419\def\ignore{\doignore{ignore}}
2345
2346% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
2347%
2348\def\ifinfo{\doignore{ifinfo}}
2349\def\ifhtml{\doignore{ifhtml}} 2420\def\ifhtml{\doignore{ifhtml}}
2421\def\ifinfo{\doignore{ifinfo}}
2422\def\ifplaintext{\doignore{ifplaintext}}
2350\def\ifnottex{\doignore{ifnottex}} 2423\def\ifnottex{\doignore{ifnottex}}
2351\def\html{\doignore{html}} 2424\def\html{\doignore{html}}
2352\def\menu{\doignore{menu}} 2425\def\menu{\doignore{menu}}
2353\def\direntry{\doignore{direntry}} 2426\def\direntry{\doignore{direntry}}
2427\def\documentdescription{\doignore{documentdescription}}
2428\def\documentdescriptionword{documentdescription}
2354 2429
2355% @dircategory CATEGORY -- specify a category of the dir file 2430% @dircategory CATEGORY -- specify a category of the dir file
2356% which this file should belong to. Ignore this in TeX. 2431% which this file should belong to. Ignore this in TeX.
@@ -2377,14 +2452,21 @@ width0pt\relax} \fi
2377 % We must not have @c interpreted as a control sequence. 2452 % We must not have @c interpreted as a control sequence.
2378 \catcode`\@ = 12 2453 \catcode`\@ = 12
2379 % 2454 %
2380 % Make the letter c a comment character so that the rest of the line 2455 \def\ignoreword{#1}%
2381 % will be ignored. This way, the document can have (for example) 2456 \ifx\ignoreword\documentdescriptionword
2382 % @c @end ifinfo 2457 % The c kludge breaks documentdescription, since
2383 % and the @end ifinfo will be properly ignored. 2458 % `documentdescription' contains a `c'. Means not everything will
2384 % (We've just changed @ to catcode 12.) 2459 % be ignored inside @documentdescription, but oh well...
2385 \catcode`\c = 14 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
2386 % 2468 %
2387 % And now expand that command. 2469 % And now expand the command defined above.
2388 \doignoretext 2470 \doignoretext
2389} 2471}
2390 2472
@@ -2456,10 +2538,14 @@ width0pt\relax} \fi
2456 \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont 2538 \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
2457 \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont 2539 \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
2458 \let\tensf=\nullfont 2540 \let\tensf=\nullfont
2459 % Similarly for index fonts (mostly for their use in smallexample). 2541 % Similarly for index fonts.
2460 \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont 2542 \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
2461 \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont 2543 \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
2462 \let\smallsf=\nullfont 2544 \let\smallsf=\nullfont
2545 % Similarly for smallexample fonts.
2546 \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
2547 \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
2548 \let\smallersf=\nullfont
2463 % 2549 %
2464 % Don't complain when characters are missing from the fonts. 2550 % Don't complain when characters are missing from the fonts.
2465 \tracinglostchars = 0 2551 \tracinglostchars = 0
@@ -2571,19 +2657,21 @@ width0pt\relax} \fi
2571\def\ifclearfail{\nestedignore{ifclear}} 2657\def\ifclearfail{\nestedignore{ifclear}}
2572\defineunmatchedend{ifclear} 2658\defineunmatchedend{ifclear}
2573 2659
2574% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text 2660% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
2575% following, through the first @end iftex (etc.). Make `@end iftex' 2661% read the text following, through the first @end iftex (etc.). Make
2576% (etc.) valid only after an @iftex. 2662% `@end iftex' (etc.) valid only after an @iftex.
2577% 2663%
2578\def\iftex{\conditionalsucceed{iftex}} 2664\def\iftex{\conditionalsucceed{iftex}}
2579\def\ifnothtml{\conditionalsucceed{ifnothtml}} 2665\def\ifnothtml{\conditionalsucceed{ifnothtml}}
2580\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} 2666\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
2667\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
2581\defineunmatchedend{iftex} 2668\defineunmatchedend{iftex}
2582\defineunmatchedend{ifnothtml} 2669\defineunmatchedend{ifnothtml}
2583\defineunmatchedend{ifnotinfo} 2670\defineunmatchedend{ifnotinfo}
2671\defineunmatchedend{ifnotplaintext}
2584 2672
2585% We can't just want to start a group at @iftex (for example) and end it 2673% We can't just want to start a group at @iftex (etc.) and end it at
2586% at @end iftex, since then @set commands inside the conditional have no 2674% @end iftex, since then @set commands inside the conditional have no
2587% effect (they'd get reverted at the end of the group). So we must 2675% effect (they'd get reverted at the end of the group). So we must
2588% define \Eiftex to redefine itself to be its previous value. (We can't 2676% define \Eiftex to redefine itself to be its previous value. (We can't
2589% just define it to fail again with an ``unmatched end'' error, since 2677% just define it to fail again with an ``unmatched end'' error, since
@@ -2696,9 +2784,23 @@ width0pt\relax} \fi
2696\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} 2784\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
2697\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} 2785\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
2698 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%
2699\def\indexdummies{% 2791\def\indexdummies{%
2700\def\ { }% 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%
2701% Take care of the plain tex accent commands. 2802% Take care of the plain tex accent commands.
2803\def\,##1{\realbackslash ,{##1}}%
2702\def\"{\realbackslash "}% 2804\def\"{\realbackslash "}%
2703\def\`{\realbackslash `}% 2805\def\`{\realbackslash `}%
2704\def\'{\realbackslash '}% 2806\def\'{\realbackslash '}%
@@ -2711,69 +2813,66 @@ width0pt\relax} \fi
2711\def\u{\realbackslash u}% 2813\def\u{\realbackslash u}%
2712\def\v{\realbackslash v}% 2814\def\v{\realbackslash v}%
2713\def\H{\realbackslash H}% 2815\def\H{\realbackslash H}%
2816\def\dotless##1{\realbackslash dotless {##1}}%
2714% Take care of the plain tex special European modified letters. 2817% Take care of the plain tex special European modified letters.
2715\def\oe{\realbackslash oe}%
2716\def\ae{\realbackslash ae}%
2717\def\aa{\realbackslash aa}%
2718\def\OE{\realbackslash OE}%
2719\def\AE{\realbackslash AE}%
2720\def\AA{\realbackslash AA}% 2818\def\AA{\realbackslash AA}%
2721\def\o{\realbackslash o}% 2819\def\AE{\realbackslash AE}%
2820\def\L{\realbackslash L}%
2821\def\OE{\realbackslash OE}%
2722\def\O{\realbackslash O}% 2822\def\O{\realbackslash O}%
2823\def\aa{\realbackslash aa}%
2824\def\ae{\realbackslash ae}%
2723\def\l{\realbackslash l}% 2825\def\l{\realbackslash l}%
2724\def\L{\realbackslash L}% 2826\def\oe{\realbackslash oe}%
2827\def\o{\realbackslash o}%
2725\def\ss{\realbackslash ss}% 2828\def\ss{\realbackslash ss}%
2726% Take care of texinfo commands likely to appear in an index entry. 2829%
2727% (Must be a way to avoid doing expansion at all, and thus not have to 2830% Although these internals commands shouldn't show up, sometimes they do.
2728% laboriously list every single command here.)
2729\def\@{@}% will be @@ when we switch to @ as escape char.
2730% Need these in case \tex is in effect and \{ is a \delimiter again.
2731% But can't use \lbracecmd and \rbracecmd because texindex assumes
2732% braces and backslashes are used only as delimiters.
2733\let\{ = \mylbrace
2734\let\} = \myrbrace
2735\def\_{{\realbackslash _}}%
2736\def\w{\realbackslash w }%
2737\def\bf{\realbackslash bf }% 2831\def\bf{\realbackslash bf }%
2832\def\gtr{\realbackslash gtr}%
2833\def\hat{\realbackslash hat}%
2834\def\less{\realbackslash less}%
2738%\def\rm{\realbackslash rm }% 2835%\def\rm{\realbackslash rm }%
2739\def\sl{\realbackslash sl }%
2740\def\sf{\realbackslash sf}% 2836\def\sf{\realbackslash sf}%
2837\def\sl{\realbackslash sl }%
2838\def\tclose##1{\realbackslash tclose {##1}}%
2741\def\tt{\realbackslash tt}% 2839\def\tt{\realbackslash tt}%
2742\def\gtr{\realbackslash gtr}% 2840%
2743\def\less{\realbackslash less}% 2841\def\b##1{\realbackslash b {##1}}%
2744\def\hat{\realbackslash hat}% 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%
2745\def\TeX{\realbackslash TeX}% 2847\def\TeX{\realbackslash TeX}%
2746\def\dots{\realbackslash dots }% 2848\def\acronym##1{\realbackslash acronym {##1}}%
2747\def\result{\realbackslash result}% 2849\def\cite##1{\realbackslash cite {##1}}%
2748\def\equiv{\realbackslash equiv}%
2749\def\expansion{\realbackslash expansion}%
2750\def\print{\realbackslash print}%
2751\def\error{\realbackslash error}%
2752\def\point{\realbackslash point}%
2753\def\copyright{\realbackslash copyright}%
2754\def\tclose##1{\realbackslash tclose {##1}}%
2755\def\code##1{\realbackslash code {##1}}% 2850\def\code##1{\realbackslash code {##1}}%
2756\def\uref##1{\realbackslash uref {##1}}%
2757\def\url##1{\realbackslash url {##1}}%
2758\def\env##1{\realbackslash env {##1}}%
2759\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}}%
2760\def\option##1{\realbackslash option {##1}}% 2860\def\option##1{\realbackslash option {##1}}%
2761\def\dotless##1{\realbackslash dotless {##1}}%
2762\def\samp##1{\realbackslash samp {##1}}% 2861\def\samp##1{\realbackslash samp {##1}}%
2763\def\,##1{\realbackslash ,{##1}}% 2862\def\strong##1{\realbackslash strong {##1}}%
2764\def\t##1{\realbackslash t {##1}}% 2863\def\uref##1{\realbackslash uref {##1}}%
2765\def\r##1{\realbackslash r {##1}}% 2864\def\url##1{\realbackslash url {##1}}%
2766\def\i##1{\realbackslash i {##1}}%
2767\def\b##1{\realbackslash b {##1}}%
2768\def\sc##1{\realbackslash sc {##1}}%
2769\def\cite##1{\realbackslash cite {##1}}%
2770\def\key##1{\realbackslash key {##1}}%
2771\def\file##1{\realbackslash file {##1}}%
2772\def\var##1{\realbackslash var {##1}}% 2865\def\var##1{\realbackslash var {##1}}%
2773\def\kbd##1{\realbackslash kbd {##1}}% 2866\def\w{\realbackslash w }%
2774\def\dfn##1{\realbackslash dfn {##1}}% 2867%
2775\def\emph##1{\realbackslash emph {##1}}% 2868% These math commands don't seem likely to be used in index entries.
2776\def\acronym##1{\realbackslash acronym {##1}}% 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}%
2777% 2876%
2778% Handle some cases of @value -- where the variable name does not 2877% Handle some cases of @value -- where the variable name does not
2779% contain - or _, and the value does not contain any 2878% contain - or _, and the value does not contain any
@@ -2787,7 +2886,7 @@ width0pt\relax} \fi
2787 2886
2788% If an index command is used in an @example environment, any spaces 2887% If an index command is used in an @example environment, any spaces
2789% therein should become regular spaces in the raw index file, not the 2888% therein should become regular spaces in the raw index file, not the
2790% expansion of \tie (\\leavevmode \penalty \@M \ ). 2889% expansion of \tie (\leavevmode \penalty \@M \ ).
2791{\obeyspaces 2890{\obeyspaces
2792 \gdef\unsepspaces{\obeyspaces\let =\space}} 2891 \gdef\unsepspaces{\obeyspaces\let =\space}}
2793 2892
@@ -2798,7 +2897,10 @@ width0pt\relax} \fi
2798\def\indexdummydots{...} 2897\def\indexdummydots{...}
2799 2898
2800\def\indexnofonts{% 2899\def\indexnofonts{%
2801% Just ignore accents. 2900\def\@{@}%
2901% how to handle braces?
2902\def\_{\normalunderscore}%
2903%
2802\let\,=\indexdummyfont 2904\let\,=\indexdummyfont
2803\let\"=\indexdummyfont 2905\let\"=\indexdummyfont
2804\let\`=\indexdummyfont 2906\let\`=\indexdummyfont
@@ -2814,45 +2916,49 @@ width0pt\relax} \fi
2814\let\H=\indexdummyfont 2916\let\H=\indexdummyfont
2815\let\dotless=\indexdummyfont 2917\let\dotless=\indexdummyfont
2816% Take care of the plain tex special European modified letters. 2918% Take care of the plain tex special European modified letters.
2817\def\oe{oe}%
2818\def\ae{ae}%
2819\def\aa{aa}%
2820\def\OE{OE}%
2821\def\AE{AE}%
2822\def\AA{AA}% 2919\def\AA{AA}%
2823\def\o{o}% 2920\def\AE{AE}%
2921\def\L{L}%
2922\def\OE{OE}%
2824\def\O{O}% 2923\def\O{O}%
2924\def\aa{aa}%
2925\def\ae{ae}%
2825\def\l{l}% 2926\def\l{l}%
2826\def\L{L}% 2927\def\oe{oe}%
2928\def\o{o}%
2827\def\ss{ss}% 2929\def\ss{ss}%
2828\let\w=\indexdummyfont 2930%
2829\let\t=\indexdummyfont 2931% Don't no-op \tt, since it isn't a user-level command
2830\let\r=\indexdummyfont 2932% and is used in the definitions of the active chars like <, >, |, etc.
2831\let\i=\indexdummyfont 2933% Likewise with the other plain tex font commands.
2934%\let\tt=\indexdummyfont
2935%
2832\let\b=\indexdummyfont 2936\let\b=\indexdummyfont
2833\let\emph=\indexdummyfont 2937\let\i=\indexdummyfont
2834\let\strong=\indexdummyfont 2938\let\r=\indexdummyfont
2835\let\cite=\indexdummyfont
2836\let\sc=\indexdummyfont 2939\let\sc=\indexdummyfont
2837%Don't no-op \tt, since it isn't a user-level command 2940\let\t=\indexdummyfont
2838% and is used in the definitions of the active chars like <, >, |... 2941%
2839%\let\tt=\indexdummyfont 2942\let\TeX=\indexdummytex
2840\let\tclose=\indexdummyfont
2841\let\code=\indexdummyfont
2842\let\url=\indexdummyfont
2843\let\uref=\indexdummyfont
2844\let\env=\indexdummyfont
2845\let\acronym=\indexdummyfont 2943\let\acronym=\indexdummyfont
2944\let\cite=\indexdummyfont
2945\let\code=\indexdummyfont
2846\let\command=\indexdummyfont 2946\let\command=\indexdummyfont
2847\let\option=\indexdummyfont 2947\let\dfn=\indexdummyfont
2948\let\dots=\indexdummydots
2949\let\emph=\indexdummyfont
2950\let\env=\indexdummyfont
2848\let\file=\indexdummyfont 2951\let\file=\indexdummyfont
2849\let\samp=\indexdummyfont
2850\let\kbd=\indexdummyfont 2952\let\kbd=\indexdummyfont
2851\let\key=\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
2852\let\var=\indexdummyfont 2960\let\var=\indexdummyfont
2853\let\TeX=\indexdummytex 2961\let\w=\indexdummyfont
2854\let\dots=\indexdummydots
2855\def\@{@}%
2856} 2962}
2857 2963
2858% To define \realbackslash, we must make \ not be an escape. 2964% To define \realbackslash, we must make \ not be an escape.
@@ -3454,8 +3560,8 @@ width0pt\relax} \fi
3454\gdef\thischaptername{#1}% 3560\gdef\thischaptername{#1}%
3455\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% 3561\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
3456\toks0 = {#1}% 3562\toks0 = {#1}%
3457\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% 3563\edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}%
3458 {\putwordAppendix{} \appendixletter}}}% 3564 {\appendixletter}}}%
3459\temp 3565\temp
3460\appendixnoderef 3566\appendixnoderef
3461\global\let\section = \appendixsec 3567\global\let\section = \appendixsec
@@ -3532,7 +3638,8 @@ width0pt\relax} \fi
3532\def\unnumberedseczzz #1{% 3638\def\unnumberedseczzz #1{%
3533\plainsecheading {#1}\gdef\thissection{#1}% 3639\plainsecheading {#1}\gdef\thissection{#1}%
3534\toks0 = {#1}% 3640\toks0 = {#1}%
3535\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% 3641\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry%
3642 {\the\toks0}{\the\chapno}}}%
3536\temp 3643\temp
3537\unnumbnoderef 3644\unnumbnoderef
3538\nobreak 3645\nobreak
@@ -3571,7 +3678,7 @@ width0pt\relax} \fi
3571\plainsubsecheading {#1}\gdef\thissection{#1}% 3678\plainsubsecheading {#1}\gdef\thissection{#1}%
3572\toks0 = {#1}% 3679\toks0 = {#1}%
3573\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% 3680\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
3574 {\the\toks0}}}% 3681 {\the\toks0}{\the\chapno}{\the\secno}}}%
3575\temp 3682\temp
3576\unnumbnoderef 3683\unnumbnoderef
3577\nobreak 3684\nobreak
@@ -3612,7 +3719,7 @@ width0pt\relax} \fi
3612\plainsubsubsecheading {#1}\gdef\thissection{#1}% 3719\plainsubsubsecheading {#1}\gdef\thissection{#1}%
3613\toks0 = {#1}% 3720\toks0 = {#1}%
3614\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% 3721\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
3615 {\the\toks0}}}% 3722 {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}%
3616\temp 3723\temp
3617\unnumbnoderef 3724\unnumbnoderef
3618\nobreak 3725\nobreak
@@ -3824,7 +3931,7 @@ width0pt\relax} \fi
3824% argument, which will end up as the last argument to the \...entry macro. 3931% argument, which will end up as the last argument to the \...entry macro.
3825% 3932%
3826% We open the .toc file here instead of at @setfilename or any other 3933% We open the .toc file here instead of at @setfilename or any other
3827% 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.
3828% 3935%
3829\newif\iftocfileopened 3936\newif\iftocfileopened
3830\def\writetocentry#1{% 3937\def\writetocentry#1{%
@@ -3833,6 +3940,14 @@ width0pt\relax} \fi
3833 \global\tocfileopenedtrue 3940 \global\tocfileopenedtrue
3834 \fi 3941 \fi
3835 \iflinks \write\tocfile{#1{\folio}}\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
3836} 3951}
3837 3952
3838\newskip\contentsrightmargin \contentsrightmargin=1in 3953\newskip\contentsrightmargin \contentsrightmargin=1in
@@ -3888,6 +4003,7 @@ width0pt\relax} \fi
3888 \startcontents{\putwordShortTOC}% 4003 \startcontents{\putwordShortTOC}%
3889 % 4004 %
3890 \let\chapentry = \shortchapentry 4005 \let\chapentry = \shortchapentry
4006 \let\appendixentry = \shortappendixentry
3891 \let\unnumbchapentry = \shortunnumberedentry 4007 \let\unnumbchapentry = \shortunnumberedentry
3892 % We want a true roman here for the page numbers. 4008 % We want a true roman here for the page numbers.
3893 \secfonts 4009 \secfonts
@@ -3896,11 +4012,11 @@ width0pt\relax} \fi
3896 \hyphenpenalty = 10000 4012 \hyphenpenalty = 10000
3897 \advance\baselineskip by 1pt % Open it up a little. 4013 \advance\baselineskip by 1pt % Open it up a little.
3898 \def\secentry ##1##2##3##4{} 4014 \def\secentry ##1##2##3##4{}
3899 \def\unnumbsecentry ##1##2{} 4015 \def\unnumbsecentry ##1##2##3{}
3900 \def\subsecentry ##1##2##3##4##5{} 4016 \def\subsecentry ##1##2##3##4##5{}
3901 \def\unnumbsubsecentry ##1##2{} 4017 \def\unnumbsubsecentry ##1##2##3##4{}
3902 \def\subsubsecentry ##1##2##3##4##5##6{} 4018 \def\subsubsecentry ##1##2##3##4##5##6{}
3903 \def\unnumbsubsubsecentry ##1##2{} 4019 \def\unnumbsubsubsecentry ##1##2##3##4##5{}
3904 \openin 1 \jobname.toc 4020 \openin 1 \jobname.toc
3905 \ifeof 1 \else 4021 \ifeof 1 \else
3906 \closein 1 4022 \closein 1
@@ -3923,16 +4039,23 @@ width0pt\relax} \fi
3923% The last argument is the page number. 4039% The last argument is the page number.
3924% The arguments in between are the chapter number, section number, ... 4040% The arguments in between are the chapter number, section number, ...
3925 4041
3926% Chapter-level things, for both the long and short contents. 4042% Chapters, in the main contents.
3927\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} 4043\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
3928 4044%
3929% See comments in \dochapentry re vbox and related settings 4045% Chapters, in the short toc.
4046% See comments in \dochapentry re vbox and related settings.
3930\def\shortchapentry#1#2#3{% 4047\def\shortchapentry#1#2#3{%
3931 \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% 4048 \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
3932} 4049}
3933 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
3934% 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.
3935% 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.
3936% We could simplify the code here by writing out an \appendixentry 4059% We could simplify the code here by writing out an \appendixentry
3937% command in the toc file for appendices, instead of using \chapentry 4060% command in the toc file for appendices, instead of using \chapentry
3938% for both, but it doesn't seem worth it. 4061% for both, but it doesn't seem worth it.
@@ -3940,38 +4063,31 @@ width0pt\relax} \fi
3940\newdimen\shortappendixwidth 4063\newdimen\shortappendixwidth
3941% 4064%
3942\def\shortchaplabel#1{% 4065\def\shortchaplabel#1{%
3943 % Compute width of word "Appendix", may change with language. 4066 % This space should be enough, since a single number is .5em, and the
3944 \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
3945 \shortappendixwidth = \wd0
3946 %
3947 % We typeset #1 in a box of constant width, regardless of the text of
3948 % #1, so the chapter titles will come out aligned.
3949 \setbox0 = \hbox{#1}%
3950 \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
3951 %
3952 % This space should be plenty, since a single number is .5em, and the
3953 % 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.
3954 % (This space doesn't include the extra space that gets added after 4069 % (This space doesn't include the extra space that gets added after
3955 % the label; that gets put in by \shortchapentry above.) 4070 % the label; that gets put in by \shortchapentry above.)
3956 \advance\dimen0 by 1.1em 4071 \dimen0 = 1em
3957 \hbox to \dimen0{#1\hfil}% 4072 \hbox to \dimen0{#1\hss}%
3958} 4073}
3959 4074
4075% Unnumbered chapters.
3960\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} 4076\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
3961\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} 4077\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
3962 4078
3963% Sections. 4079% Sections.
3964\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} 4080\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
3965\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} 4081\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}}
3966 4082
3967% Subsections. 4083% Subsections.
3968\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} 4084\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
3969\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} 4085\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
3970 4086
3971% And subsubsections. 4087% And subsubsections.
3972\def\subsubsecentry#1#2#3#4#5#6{% 4088\def\subsubsecentry#1#2#3#4#5#6{%
3973 \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} 4089 \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
3974\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} 4090\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}}
3975 4091
3976% This parameter controls the indentation of the various levels. 4092% This parameter controls the indentation of the various levels.
3977\newdimen\tocindent \tocindent = 3pc 4093\newdimen\tocindent \tocindent = 3pc
@@ -4012,7 +4128,7 @@ width0pt\relax} \fi
4012\def\tocentry#1#2{\begingroup 4128\def\tocentry#1#2{\begingroup
4013 \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks 4129 \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
4014 % Do not use \turnoffactive in these arguments. Since the toc is 4130 % Do not use \turnoffactive in these arguments. Since the toc is
4015 % typeset in cmr, so characters such as _ would come out wrong; we 4131 % typeset in cmr, characters such as _ would come out wrong; we
4016 % have to do the usual translation tricks. 4132 % have to do the usual translation tricks.
4017 \entry{#1}{#2}% 4133 \entry{#1}{#2}%
4018\endgroup} 4134\endgroup}
@@ -4032,36 +4148,27 @@ width0pt\relax} \fi
4032\message{environments,} 4148\message{environments,}
4033% @foo ... @end foo. 4149% @foo ... @end foo.
4034 4150
4151% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
4152%
4035% Since these characters are used in examples, it should be an even number of 4153% Since these characters are used in examples, it should be an even number of
4036% \tt widths. Each \tt character is 1en, so two makes it 1em. 4154% \tt widths. Each \tt character is 1en, so two makes it 1em.
4037% Furthermore, these definitions must come after we define our fonts. 4155%
4038\newbox\dblarrowbox \newbox\longdblarrowbox
4039\newbox\pushcharbox \newbox\bullbox
4040\newbox\equivbox \newbox\errorbox
4041
4042%{\tentt
4043%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
4044%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
4045%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
4046%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
4047% Adapted from the manmac format (p.420 of TeXbook)
4048%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
4049% depth .1ex\hfil}
4050%}
4051
4052% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
4053\def\point{$\star$} 4156\def\point{$\star$}
4054\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} 4157\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
4055\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} 4158\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
4056\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} 4159\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
4057\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} 4160\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
4058 4161
4162% The @error{} command.
4059% Adapted from the TeXbook's \boxit. 4163% Adapted from the TeXbook's \boxit.
4164%
4165\newbox\errorbox
4166%
4060{\tentt \global\dimen0 = 3em}% Width of the box. 4167{\tentt \global\dimen0 = 3em}% Width of the box.
4061\dimen2 = .55pt % Thickness of rules 4168\dimen2 = .55pt % Thickness of rules
4062% The text. (`r' is open on the right, `e' somewhat less so on the left.) 4169% The text. (`r' is open on the right, `e' somewhat less so on the left.)
4063\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} 4170\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
4064 4171%
4065\global\setbox\errorbox=\hbox to \dimen0{\hfil 4172\global\setbox\errorbox=\hbox to \dimen0{\hfil
4066 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. 4173 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
4067 \advance\hsize by -2\dimen2 % Rules. 4174 \advance\hsize by -2\dimen2 % Rules.
@@ -4072,8 +4179,7 @@ width0pt\relax} \fi
4072 \kern3pt\vrule width\dimen2}% Space to right. 4179 \kern3pt\vrule width\dimen2}% Space to right.
4073 \hrule height\dimen2} 4180 \hrule height\dimen2}
4074 \hfil} 4181 \hfil}
4075 4182%
4076% The @error{} command.
4077\def\error{\leavevmode\lower.7ex\copy\errorbox} 4183\def\error{\leavevmode\lower.7ex\copy\errorbox}
4078 4184
4079% @tex ... @end tex escapes into raw Tex temporarily. 4185% @tex ... @end tex escapes into raw Tex temporarily.
@@ -4113,9 +4219,9 @@ width0pt\relax} \fi
4113 \def\@{@}% 4219 \def\@{@}%
4114\let\Etex=\endgroup} 4220\let\Etex=\endgroup}
4115 4221
4116% Define @lisp ... @endlisp. 4222% Define @lisp ... @end lisp.
4117% @lisp does a \begingroup so it can rebind things, 4223% @lisp does a \begingroup so it can rebind things,
4118% including the definition of @endlisp (which normally is erroneous). 4224% including the definition of @end lisp (which normally is erroneous).
4119 4225
4120% Amount to narrow the margins by for @lisp. 4226% Amount to narrow the margins by for @lisp.
4121\newskip\lispnarrowing \lispnarrowing=0.4in 4227\newskip\lispnarrowing \lispnarrowing=0.4in
@@ -4146,9 +4252,17 @@ width0pt\relax} \fi
4146% is reset to zero; thus the \afterenvbreak inserts no space -- but the 4252% is reset to zero; thus the \afterenvbreak inserts no space -- but the
4147% start of the next paragraph will insert \parskip 4253% start of the next paragraph will insert \parskip
4148% 4254%
4149\def\aboveenvbreak{{\advance\envskipamount by \parskip 4255\def\aboveenvbreak{{%
4150\endgraf \ifdim\lastskip<\envskipamount 4256 \ifnum\lastpenalty < 10000
4151\removelastskip \penalty-50 \vskip\envskipamount \fi}} 4257 \advance\envskipamount by \parskip
4258 \endgraf
4259 \ifdim\lastskip<\envskipamount
4260 \removelastskip
4261 \penalty-50
4262 \vskip\envskipamount
4263 \fi
4264 \fi
4265}}
4152 4266
4153\let\afterenvbreak = \aboveenvbreak 4267\let\afterenvbreak = \aboveenvbreak
4154 4268
@@ -4280,7 +4394,7 @@ width0pt\relax} \fi
4280\def\smalllispx{\begingroup 4394\def\smalllispx{\begingroup
4281 \def\Esmalllisp{\nonfillfinish\endgroup}% 4395 \def\Esmalllisp{\nonfillfinish\endgroup}%
4282 \def\Esmallexample{\nonfillfinish\endgroup}% 4396 \def\Esmallexample{\nonfillfinish\endgroup}%
4283 \smallfonts 4397 \smallexamplefonts
4284 \lisp 4398 \lisp
4285} 4399}
4286 4400
@@ -4291,12 +4405,12 @@ width0pt\relax} \fi
4291 \let\Edisplay = \nonfillfinish 4405 \let\Edisplay = \nonfillfinish
4292 \gobble 4406 \gobble
4293} 4407}
4294 4408%
4295% @smalldisplay (when @smallbook): @display plus smaller fonts. 4409% @smalldisplay (when @smallbook): @display plus smaller fonts.
4296% 4410%
4297\def\smalldisplayx{\begingroup 4411\def\smalldisplayx{\begingroup
4298 \def\Esmalldisplay{\nonfillfinish\endgroup}% 4412 \def\Esmalldisplay{\nonfillfinish\endgroup}%
4299 \smallfonts \rm 4413 \smallexamplefonts \rm
4300 \display 4414 \display
4301} 4415}
4302 4416
@@ -4308,12 +4422,12 @@ width0pt\relax} \fi
4308 \let\Eformat = \nonfillfinish 4422 \let\Eformat = \nonfillfinish
4309 \gobble 4423 \gobble
4310} 4424}
4311 4425%
4312% @smallformat (when @smallbook): @format plus smaller fonts. 4426% @smallformat (when @smallbook): @format plus smaller fonts.
4313% 4427%
4314\def\smallformatx{\begingroup 4428\def\smallformatx{\begingroup
4315 \def\Esmallformat{\nonfillfinish\endgroup}% 4429 \def\Esmallformat{\nonfillfinish\endgroup}%
4316 \smallfonts \rm 4430 \smallexamplefonts \rm
4317 \format 4431 \format
4318} 4432}
4319 4433
@@ -4505,6 +4619,21 @@ width0pt\relax} \fi
4505 \endgroup\nonfillfinish\endgroup 4619 \endgroup\nonfillfinish\endgroup
4506} 4620}
4507 4621
4622% @copying ... @end copying.
4623% Save the text away for @insertcopying later.
4624%
4625\newbox\copyingbox
4626%
4627\def\copying{\begingroup
4628 \parindent = 0pt % looks wrong on title page
4629 \def\Ecopying{\egroup\endgroup}%
4630 \global\setbox\copyingbox = \vbox\bgroup
4631}
4632
4633% @insertcopying.
4634%
4635\def\insertcopying{\unvcopy\copyingbox}
4636
4508 4637
4509\message{defuns,} 4638\message{defuns,}
4510% @defun etc. 4639% @defun etc.
@@ -4601,56 +4730,60 @@ width0pt\relax} \fi
4601{\df #1}\enskip % Generate function name 4730{\df #1}\enskip % Generate function name
4602} 4731}
4603 4732
4604% Actually process the body of a definition 4733% Common pieces to start any @def...
4605% #1 should be the terminating control sequence, such as \Edefun.
4606% #2 should be the "another name" control sequence, such as \defunx.
4607% #3 should be the control sequence that actually processes the header,
4608% such as \defunheader.
4609
4610\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
4611\medbreak %
4612% Define the end token that this defining construct specifies
4613% so that it will exit this group.
4614\def#1{\endgraf\endgroup\medbreak}%
4615\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
4616\parindent=0in
4617\advance\leftskip by \defbodyindent
4618\exdentamount=\defbodyindent
4619\begingroup %
4620\catcode 61=\active % 61 is `='
4621\obeylines\activeparens\spacesplit#3}
4622
4623% #1 is the \E... control sequence to end the definition (which we define). 4734% #1 is the \E... control sequence to end the definition (which we define).
4624% #2 is the \...x control sequence for consecutive fns (which we define). 4735% #2 is the \...x control sequence (which our caller defines).
4625% #3 is the control sequence to call to resume processing. 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}
4755
4756% Process body of @defun, @deffn, @defmac, etc.
4757%
4758\def\defparsebody#1#2#3{%
4759 \parsebodycommon{#1}{#2}{#3}%
4760 \def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
4761 \catcode61=\active % 61 is `='
4762 \begingroup\obeylines\activeparens
4763 \spacesplit#3%
4764}
4765
4766% #1, #2, #3 are the common arguments (see \defparsebody).
4626% #4, delimited by the space, is the class name. 4767% #4, delimited by the space, is the class name.
4627% 4768%
4628\def\defmethparsebody#1#2#3#4 {\begingroup\inENV % 4769\def\defmethparsebody#1#2#3#4 {%
4629\medbreak % 4770 \parsebodycommon{#1}{#2}{#3}%
4630% Define the end token that this defining construct specifies 4771 \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
4631% so that it will exit this group. 4772 \begingroup\obeylines\activeparens
4632\def#1{\endgraf\endgroup\medbreak}% 4773 \spacesplit{#3{#4}}%
4633\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% 4774}
4634\parindent=0in
4635\advance\leftskip by \defbodyindent
4636\exdentamount=\defbodyindent
4637\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
4638 4775
4639% Used for @deftypemethod and @deftypeivar. 4776% Used for @deftypemethod and @deftypeivar.
4640% #1 is the \E... control sequence to end the definition (which we define). 4777% #1, #2, #3 are the common arguments (see \defparsebody).
4641% #2 is the \...x control sequence for consecutive fns (which we define).
4642% #3 is the control sequence to call to resume processing.
4643% #4, delimited by a space, is the class name. 4778% #4, delimited by a space, is the class name.
4644% #5 is the method's return type. 4779% #5 is the method's return type.
4645% 4780%
4646\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV 4781\def\deftypemethparsebody#1#2#3#4 #5 {%
4647 \medbreak 4782 \parsebodycommon{#1}{#2}{#3}%
4648 \def#1{\endgraf\endgroup\medbreak}%
4649 \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% 4783 \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
4650 \parindent=0in 4784 \begingroup\obeylines\activeparens
4651 \advance\leftskip by \defbodyindent 4785 \spacesplit{#3{#4}{#5}}%
4652 \exdentamount=\defbodyindent 4786}
4653 \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
4654 4787
4655% Used for @deftypeop. The change from \deftypemethparsebody is an 4788% Used for @deftypeop. The change from \deftypemethparsebody is an
4656% extra argument at the beginning which is the `category', instead of it 4789% extra argument at the beginning which is the `category', instead of it
@@ -4659,64 +4792,49 @@ width0pt\relax} \fi
4659% input at hand. Thus also need a control sequence (passed as #5) for 4792% input at hand. Thus also need a control sequence (passed as #5) for
4660% the \E... definition to assign the category name to. 4793% the \E... definition to assign the category name to.
4661% 4794%
4662\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV 4795\def\deftypeopparsebody#1#2#3#4#5 #6 {%
4663 \medbreak 4796 \parsebodycommon{#1}{#2}{#3}%
4664 \def#1{\endgraf\endgroup\medbreak}%
4665 \def#2##1 ##2 ##3 {% 4797 \def#2##1 ##2 ##3 {%
4666 \def#4{##1}% 4798 \def#4{##1}%
4667 \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% 4799 \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
4668 \parindent=0in 4800 \begingroup\obeylines\activeparens
4669 \advance\leftskip by \defbodyindent 4801 \spacesplit{#3{#5}{#6}}%
4670 \exdentamount=\defbodyindent 4802}
4671 \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} 4803
4672 4804% For @defop.
4673\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % 4805\def\defopparsebody #1#2#3#4#5 {%
4674\medbreak % 4806 \parsebodycommon{#1}{#2}{#3}%
4675% Define the end token that this defining construct specifies 4807 \def#2##1 ##2 {\def#4{##1}%
4676% so that it will exit this group. 4808 \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
4677\def#1{\endgraf\endgroup\medbreak}% 4809 \begingroup\obeylines\activeparens
4678\def#2##1 ##2 {\def#4{##1}% 4810 \spacesplit{#3{#5}}%
4679\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% 4811}
4680\parindent=0in
4681\advance\leftskip by \defbodyindent
4682\exdentamount=\defbodyindent
4683\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
4684 4812
4685% These parsing functions are similar to the preceding ones 4813% These parsing functions are similar to the preceding ones
4686% except that they do not make parens into active characters. 4814% except that they do not make parens into active characters.
4687% These are used for "variables" since they have no arguments. 4815% These are used for "variables" since they have no arguments.
4688
4689\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
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{\begingroup\obeylines\spacesplit#3}%
4695\parindent=0in
4696\advance\leftskip by \defbodyindent
4697\exdentamount=\defbodyindent
4698\begingroup %
4699\catcode 61=\active %
4700\obeylines\spacesplit#3}
4701
4702% This is used for \def{tp,vr}parsebody. It could probably be used for
4703% some of the others, too, with some judicious conditionals.
4704% 4816%
4705\def\parsebodycommon#1#2#3{% 4817\def\defvarparsebody #1#2#3{%
4706 \begingroup\inENV % 4818 \parsebodycommon{#1}{#2}{#3}%
4707 \medbreak % 4819 \def#2{\begingroup\obeylines\spacesplit#3}%
4708 % Define the end token that this defining construct specifies 4820 \catcode61=\active %
4709 % so that it will exit this group. 4821 \begingroup\obeylines
4710 \def#1{\endgraf\endgroup\medbreak}% 4822 \spacesplit#3%
4711 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% 4823}
4712 \parindent=0in 4824
4713 \advance\leftskip by \defbodyindent 4825% @defopvar.
4714 \exdentamount=\defbodyindent 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}}}%
4715 \begingroup\obeylines 4830 \begingroup\obeylines
4831 \spacesplit{#3{#5}}%
4716} 4832}
4717 4833
4718\def\defvrparsebody#1#2#3#4 {% 4834\def\defvrparsebody#1#2#3#4 {%
4719 \parsebodycommon{#1}{#2}{#3}% 4835 \parsebodycommon{#1}{#2}{#3}%
4836 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
4837 \begingroup\obeylines
4720 \spacesplit{#3{#4}}% 4838 \spacesplit{#3{#4}}%
4721} 4839}
4722 4840
@@ -4731,6 +4849,8 @@ width0pt\relax} \fi
4731% 4849%
4732\def\deftpparsebody #1#2#3#4 {% 4850\def\deftpparsebody #1#2#3#4 {%
4733 \parsebodycommon{#1}{#2}{#3}% 4851 \parsebodycommon{#1}{#2}{#3}%
4852 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
4853 \begingroup\obeylines
4734 \spacesplit{\parsetpheaderline{#3{#4}}}\empty 4854 \spacesplit{\parsetpheaderline{#3{#4}}}\empty
4735} 4855}
4736 4856
@@ -4747,33 +4867,19 @@ width0pt\relax} \fi
4747 #1{\removeemptybraces#2\relax}{#3}% 4867 #1{\removeemptybraces#2\relax}{#3}%
4748}% 4868}%
4749 4869
4750\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
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##1 ##2 {\def#4{##1}%
4756\begingroup\obeylines\spacesplit{#3{##2}}}%
4757\parindent=0in
4758\advance\leftskip by \defbodyindent
4759\exdentamount=\defbodyindent
4760\begingroup\obeylines\spacesplit{#3{#5}}}
4761
4762% Split up #2 at the first space token. 4870% Split up #2 at the first space token.
4763% call #1 with two arguments: 4871% call #1 with two arguments:
4764% the first is all of #2 before the space token, 4872% the first is all of #2 before the space token,
4765% the second is all of #2 after that space token. 4873% the second is all of #2 after that space token.
4766% If #2 contains no space token, all of it is passed as the first arg 4874% If #2 contains no space token, all of it is passed as the first arg
4767% and the second is passed as empty. 4875% and the second is passed as empty.
4768 4876%
4769{\obeylines 4877{\obeylines
4770\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% 4878\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
4771\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% 4879\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
4772\ifx\relax #3% 4880\ifx\relax #3%
4773#1{#2}{}\else #1{#2}{#3#4}\fi}} 4881#1{#2}{}\else #1{#2}{#3#4}\fi}}
4774 4882
4775% So much for the things common to all kinds of definitions.
4776
4777% Define @defun. 4883% Define @defun.
4778 4884
4779% First, define the processing that is wanted for arguments of \defun 4885% First, define the processing that is wanted for arguments of \defun
@@ -4833,7 +4939,7 @@ width0pt\relax} \fi
4833% #1 is the data type, #2 the name, #3 the args. 4939% #1 is the data type, #2 the name, #3 the args.
4834\def\deftypefunheaderx #1#2 #3\relax{% 4940\def\deftypefunheaderx #1#2 #3\relax{%
4835\doind {fn}{\code{#2}}% Make entry in function index 4941\doind {fn}{\code{#2}}% Make entry in function index
4836\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}% 4942\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
4837\deftypefunargs {#3}\endgroup % 4943\deftypefunargs {#3}\endgroup %
4838\catcode 61=\other % Turn off change made in \defparsebody 4944\catcode 61=\other % Turn off change made in \defparsebody
4839} 4945}
@@ -4842,9 +4948,9 @@ width0pt\relax} \fi
4842 4948
4843\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} 4949\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
4844 4950
4845% \defheaderxcond#1\relax$$$ 4951% \defheaderxcond#1\relax$.$
4846% 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.
4847\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}
4848 4954
4849% #1 is the classification. #2 is the data type. #3 is the name and args. 4955% #1 is the classification. #2 is the data type. #3 is the name and args.
4850\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} 4956\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
@@ -4854,7 +4960,7 @@ width0pt\relax} \fi
4854\begingroup 4960\begingroup
4855\normalparens % notably, turn off `&' magic, which prevents 4961\normalparens % notably, turn off `&' magic, which prevents
4856% at least some C++ text from working 4962% at least some C++ text from working
4857\defname {\defheaderxcond#2\relax$$$#3}{#1}% 4963\defname {\defheaderxcond#2\relax$.$#3}{#1}%
4858\deftypefunargs {#4}\endgroup % 4964\deftypefunargs {#4}\endgroup %
4859\catcode 61=\other % Turn off change made in \defparsebody 4965\catcode 61=\other % Turn off change made in \defparsebody
4860} 4966}
@@ -4900,7 +5006,7 @@ width0pt\relax} \fi
4900\def\deftypeopheader#1#2#3#4{% 5006\def\deftypeopheader#1#2#3#4{%
4901 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index 5007 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
4902 \begingroup 5008 \begingroup
4903 \defname{\defheaderxcond#2\relax$$$#3} 5009 \defname{\defheaderxcond#2\relax$.$#3}
4904 {\deftypeopcategory\ \putwordon\ \code{#1}}% 5010 {\deftypeopcategory\ \putwordon\ \code{#1}}%
4905 \deftypefunargs{#4}% 5011 \deftypefunargs{#4}%
4906 \endgroup 5012 \endgroup
@@ -4915,7 +5021,7 @@ width0pt\relax} \fi
4915\def\deftypemethodheader#1#2#3#4{% 5021\def\deftypemethodheader#1#2#3#4{%
4916 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index 5022 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
4917 \begingroup 5023 \begingroup
4918 \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% 5024 \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
4919 \deftypefunargs{#4}% 5025 \deftypefunargs{#4}%
4920 \endgroup 5026 \endgroup
4921} 5027}
@@ -4929,7 +5035,7 @@ width0pt\relax} \fi
4929\def\deftypeivarheader#1#2#3{% 5035\def\deftypeivarheader#1#2#3{%
4930 \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index 5036 \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
4931 \begingroup 5037 \begingroup
4932 \defname{\defheaderxcond#2\relax$$$#3} 5038 \defname{\defheaderxcond#2\relax$.$#3}
4933 {\putwordInstanceVariableof\ \code{#1}}% 5039 {\putwordInstanceVariableof\ \code{#1}}%
4934 \defvarargs{#3}% 5040 \defvarargs{#3}%
4935 \endgroup 5041 \endgroup
@@ -5012,7 +5118,7 @@ width0pt\relax} \fi
5012% is actually part of the data type, which should not be put into the index. 5118% is actually part of the data type, which should not be put into the index.
5013\def\deftypevarheader #1#2{% 5119\def\deftypevarheader #1#2{%
5014\dovarind#2 \relax% Make entry in variables index 5120\dovarind#2 \relax% Make entry in variables index
5015\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}% 5121\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
5016\interlinepenalty=10000 5122\interlinepenalty=10000
5017\endgraf\nobreak\vskip -\parskip\nobreak 5123\endgraf\nobreak\vskip -\parskip\nobreak
5018\endgroup} 5124\endgroup}
@@ -5023,7 +5129,7 @@ width0pt\relax} \fi
5023\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} 5129\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
5024 5130
5025\def\deftypevrheader #1#2#3{\dovarind#3 \relax% 5131\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
5026\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} 5132\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
5027\interlinepenalty=10000 5133\interlinepenalty=10000
5028\endgraf\nobreak\vskip -\parskip\nobreak 5134\endgraf\nobreak\vskip -\parskip\nobreak
5029\endgroup} 5135\endgroup}
@@ -5183,7 +5289,7 @@ width0pt\relax} \fi
5183 \message{Warning: redefining \the\macname}% 5289 \message{Warning: redefining \the\macname}%
5184 \else 5290 \else
5185 \expandafter\ifx\csname \the\macname\endcsname \relax 5291 \expandafter\ifx\csname \the\macname\endcsname \relax
5186 \else \errmessage{The name \the\macname\space is reserved}\fi 5292 \else \errmessage{Macro name \the\macname\space already defined}\fi
5187 \global\cslet{macsave.\the\macname}{\the\macname}% 5293 \global\cslet{macsave.\the\macname}{\the\macname}%
5188 \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% 5294 \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
5189 % Add the macroname to \macrolist 5295 % Add the macroname to \macrolist
@@ -5464,13 +5570,15 @@ width0pt\relax} \fi
5464 \ifpdf 5570 \ifpdf
5465 \leavevmode 5571 \leavevmode
5466 \getfilename{#4}% 5572 \getfilename{#4}%
5467 \ifnum\filenamelength>0 5573 {\normalturnoffactive
5468 \startlink attr{/Border [0 0 0]}% 5574 \ifnum\filenamelength>0
5469 goto file{\the\filename.pdf} name{#1@}% 5575 \startlink attr{/Border [0 0 0]}%
5470 \else 5576 goto file{\the\filename.pdf} name{#1}%
5471 \startlink attr{/Border [0 0 0]}% 5577 \else
5472 goto name{#1@}% 5578 \startlink attr{/Border [0 0 0]}%
5473 \fi 5579 goto name{#1}%
5580 \fi
5581 }%
5474 \linkcolor 5582 \linkcolor
5475 \fi 5583 \fi
5476 % 5584 %
@@ -5732,8 +5840,15 @@ width0pt\relax} \fi
5732 % 5840 %
5733 \smallfonts \rm 5841 \smallfonts \rm
5734 % 5842 %
5735 % Hang the footnote text off the number. 5843 % Because we use hanging indentation in footnotes, a @noindent appears
5736 \hang 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}%
5737 \textindent{\thisfootno}% 5852 \textindent{\thisfootno}%
5738 % 5853 %
5739 % Don't crash into the line above the footnote text. Since this 5854 % Don't crash into the line above the footnote text. Since this
@@ -5750,24 +5865,6 @@ width0pt\relax} \fi
5750 5865
5751}%end \catcode `\@=11 5866}%end \catcode `\@=11
5752 5867
5753% Set the baselineskip to #1, and the lineskip and strut size
5754% correspondingly. There is no deep meaning behind these magic numbers
5755% used as factors; they just match (closely enough) what Knuth defined.
5756%
5757\def\lineskipfactor{.08333}
5758\def\strutheightpercent{.70833}
5759\def\strutdepthpercent {.29167}
5760%
5761\def\setleading#1{%
5762 \normalbaselineskip = #1\relax
5763 \normallineskip = \lineskipfactor\normalbaselineskip
5764 \normalbaselines
5765 \setbox\strutbox =\hbox{%
5766 \vrule width0pt height\strutheightpercent\baselineskip
5767 depth \strutdepthpercent \baselineskip
5768 }%
5769}
5770
5771% @| inserts a changebar to the left of the current line. It should 5868% @| inserts a changebar to the left of the current line. It should
5772% surround any changed text. This approach does *not* work if the 5869% surround any changed text. This approach does *not* work if the
5773% change spans more than two lines of output. To handle that, we would 5870% change spans more than two lines of output. To handle that, we would
@@ -5832,41 +5929,44 @@ width0pt\relax} \fi
5832 \global\warnednoepsftrue 5929 \global\warnednoepsftrue
5833 \fi 5930 \fi
5834 \else 5931 \else
5835 \imagexxx #1,,,\finish 5932 \imagexxx #1,,,,,\finish
5836 \fi 5933 \fi
5837} 5934}
5838% 5935%
5839% Arguments to @image: 5936% Arguments to @image:
5840% #1 is (mandatory) image filename; we tack on .eps extension. 5937% #1 is (mandatory) image filename; we tack on .eps extension.
5841% #2 is (optional) width, #3 is (optional) height. 5938% #2 is (optional) width, #3 is (optional) height.
5842% #4 is just the usual extra ignored arg for parsing this stuff. 5939% #4 is (ignored optional) html alt text.
5843\def\imagexxx#1,#2,#3,#4\finish{% 5940% #5 is (ignored optional) extension.
5941% #6 is just the usual extra ignored arg for parsing this stuff.
5942\newif\ifimagevmode
5943\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
5944 \catcode`\^^M = 5 % in case we're inside an example
5945 \normalturnoffactive % allow _ et al. in names
5946 % If the image is by itself, center it.
5947 \ifvmode
5948 \imagevmodetrue
5949 \nobreak\bigskip
5950 % Usually we'll have text after the image which will insert
5951 % \parskip glue, so insert it here too to equalize the space
5952 % above and below.
5953 \nobreak\vskip\parskip
5954 \nobreak
5955 \line\bgroup\hss
5956 \fi
5957 %
5958 % Output the image.
5844 \ifpdf 5959 \ifpdf
5845 \centerline{\dopdfimage{#1}{#2}{#3}}% 5960 \dopdfimage{#1}{#2}{#3}%
5846 \else 5961 \else
5847 % \epsfbox itself resets \epsf?size at each figure. 5962 % \epsfbox itself resets \epsf?size at each figure.
5848 \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi 5963 \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
5849 \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi 5964 \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
5850 \begingroup 5965 \epsfbox{#1.eps}%
5851 \catcode`\^^M = 5 % in case we're inside an example
5852 \normalturnoffactive % allow _ et al. in names
5853 % If the image is by itself, center it.
5854 \ifvmode
5855 \nobreak\bigskip
5856 % Usually we'll have text after the image which will insert
5857 % \parskip glue, so insert it here too to equalize the space
5858 % above and below.
5859 \nobreak\vskip\parskip
5860 \nobreak
5861 \centerline{\epsfbox{#1.eps}}%
5862 \bigbreak
5863 \else
5864 % In the middle of a paragraph, no extra space.
5865 \epsfbox{#1.eps}%
5866 \fi
5867 \endgroup
5868 \fi 5966 \fi
5869} 5967 %
5968 \ifimagevmode \hss \egroup \bigbreak \fi % space after the image
5969\endgroup}
5870 5970
5871 5971
5872\message{localization,} 5972\message{localization,}
@@ -5935,8 +6035,9 @@ should work if nowhere else does.}
5935} 6035}
5936 6036
5937% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; 6037% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
5938% 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can 6038% 4) hoffset; 5) binding offset; 6) topskip. We also call
5939% set \parskip and call \setleading for \baselineskip. 6039% \setleading{\textleading}, so the caller should define \textleading.
6040% The caller should also set \parskip.
5940% 6041%
5941\def\internalpagesizes#1#2#3#4#5#6{% 6042\def\internalpagesizes#1#2#3#4#5#6{%
5942 \voffset = #3\relax 6043 \voffset = #3\relax
@@ -5957,6 +6058,8 @@ should work if nowhere else does.}
5957 \normaloffset = #4\relax 6058 \normaloffset = #4\relax
5958 \bindingoffset = #5\relax 6059 \bindingoffset = #5\relax
5959 % 6060 %
6061 \setleading{\textleading}
6062 %
5960 \parindent = \defaultparindent 6063 \parindent = \defaultparindent
5961 \setemergencystretch 6064 \setemergencystretch
5962} 6065}
@@ -5973,7 +6076,7 @@ should work if nowhere else does.}
5973% @letterpaper (the default). 6076% @letterpaper (the default).
5974\def\letterpaper{{\globaldefs = 1 6077\def\letterpaper{{\globaldefs = 1
5975 \parskip = 3pt plus 2pt minus 1pt 6078 \parskip = 3pt plus 2pt minus 1pt
5976 \setleading{13.2pt}% 6079 \textleading = 13.2pt
5977 % 6080 %
5978 % If page is nothing but text, make it come out even. 6081 % If page is nothing but text, make it come out even.
5979 \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% 6082 \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}%
@@ -5982,7 +6085,7 @@ should work if nowhere else does.}
5982% Use @smallbook to reset parameters for 7x9.5 (or so) format. 6085% Use @smallbook to reset parameters for 7x9.5 (or so) format.
5983\def\smallbook{{\globaldefs = 1 6086\def\smallbook{{\globaldefs = 1
5984 \parskip = 2pt plus 1pt 6087 \parskip = 2pt plus 1pt
5985 \setleading{12pt}% 6088 \textleading = 12pt
5986 % 6089 %
5987 \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% 6090 \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}%
5988 % 6091 %
@@ -5997,8 +6100,8 @@ should work if nowhere else does.}
5997 6100
5998% Use @afourpaper to print on European A4 paper. 6101% Use @afourpaper to print on European A4 paper.
5999\def\afourpaper{{\globaldefs = 1 6102\def\afourpaper{{\globaldefs = 1
6000 \setleading{12pt}%
6001 \parskip = 3pt plus 2pt minus 1pt 6103 \parskip = 3pt plus 2pt minus 1pt
6104 \textleading = 12pt
6002 % 6105 %
6003 \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% 6106 \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}%
6004 % 6107 %
@@ -6010,8 +6113,8 @@ should work if nowhere else does.}
6010% From romildo@urano.iceb.ufop.br, 2 July 2000. 6113% From romildo@urano.iceb.ufop.br, 2 July 2000.
6011% He also recommends making @example and @lisp be small. 6114% He also recommends making @example and @lisp be small.
6012\def\afivepaper{{\globaldefs = 1 6115\def\afivepaper{{\globaldefs = 1
6013 \setleading{12.5pt}%
6014 \parskip = 2pt plus 1pt minus 0.1pt 6116 \parskip = 2pt plus 1pt minus 0.1pt
6117 \textleading = 12.5pt
6015 % 6118 %
6016 \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% 6119 \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}%
6017 % 6120 %
@@ -6029,11 +6132,13 @@ should work if nowhere else does.}
6029% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin 6132% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
6030% 29mm, hence bottom margin 28mm, nominal side margin 3cm. 6133% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
6031\def\afourlatex{{\globaldefs = 1 6134\def\afourlatex{{\globaldefs = 1
6032 \setleading{13.6pt}% 6135 \textleading = 13.6pt
6033 % 6136 %
6034 \afourpaper 6137 \afourpaper
6035 \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% 6138 \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
6036 % 6139 %
6140 % Must explicitly reset to 0 because we call \afourpaper, apparently,
6141 % although this does not entirely make sense.
6037 \globaldefs = 0 6142 \globaldefs = 0
6038}} 6143}}
6039 6144
@@ -6041,8 +6146,6 @@ should work if nowhere else does.}
6041\def\afourwide{% 6146\def\afourwide{%
6042 \afourpaper 6147 \afourpaper
6043 \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% 6148 \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}%
6044 %
6045 \globaldefs = 0
6046} 6149}
6047 6150
6048% @pagesizes TEXTHEIGHT[,TEXTWIDTH] 6151% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
@@ -6056,7 +6159,7 @@ should work if nowhere else does.}
6056 \globaldefs = 1 6159 \globaldefs = 1
6057 % 6160 %
6058 \parskip = 3pt plus 2pt minus 1pt 6161 \parskip = 3pt plus 2pt minus 1pt
6059 \setleading{13.2pt}% 6162 \setleading{\textleading}%
6060 % 6163 %
6061 \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% 6164 \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}%
6062}} 6165}}
@@ -6086,7 +6189,7 @@ should work if nowhere else does.}
6086\def\normalless{<} 6189\def\normalless{<}
6087\def\normalgreater{>} 6190\def\normalgreater{>}
6088\def\normalplus{+} 6191\def\normalplus{+}
6089\def\normaldollar{$} 6192\def\normaldollar{$}%$ font-lock fix
6090 6193
6091% This macro is used to make a character print one way in ttfont 6194% This macro is used to make a character print one way in ttfont
6092% where it can probably just be output, and another way in other fonts, 6195% where it can probably just be output, and another way in other fonts,
@@ -6135,7 +6238,7 @@ should work if nowhere else does.}
6135\catcode`\+=\active 6238\catcode`\+=\active
6136\def+{{\tt \char 43}} 6239\def+{{\tt \char 43}}
6137\catcode`\$=\active 6240\catcode`\$=\active
6138\def${\ifusingit{{\sl\$}}\normaldollar} 6241\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
6139%\catcode 27=\active 6242%\catcode 27=\active
6140%\def^^[{$\diamondsuit$} 6243%\def^^[{$\diamondsuit$}
6141 6244
@@ -6180,7 +6283,7 @@ should work if nowhere else does.}
6180@let<=@normalless 6283@let<=@normalless
6181@let>=@normalgreater 6284@let>=@normalgreater
6182@let+=@normalplus 6285@let+=@normalplus
6183@let$=@normaldollar} 6286@let$=@normaldollar}%$ font-lock fix
6184 6287
6185@def@normalturnoffactive{@let"=@normaldoublequote 6288@def@normalturnoffactive{@let"=@normaldoublequote
6186@let\=@normalbackslash 6289@let\=@normalbackslash
@@ -6191,7 +6294,7 @@ should work if nowhere else does.}
6191@let<=@normalless 6294@let<=@normalless
6192@let>=@normalgreater 6295@let>=@normalgreater
6193@let+=@normalplus 6296@let+=@normalplus
6194@let$=@normaldollar} 6297@let$=@normaldollar}%$ font-lock fix
6195 6298
6196% Make _ and + \other characters, temporarily. 6299% Make _ and + \other characters, temporarily.
6197% This is canceled by @fixbackslash. 6300% This is canceled by @fixbackslash.