aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2011-01-07 11:49:15 -0800
committerPaul Eggert2011-01-07 11:49:15 -0800
commitf56e0e7a85978026b611bc8f28bdb91d7f8130d4 (patch)
tree0e1c15bcf587ba15b953b5f67f566f04b69bfa4b
parentbc5585d187f453d52329ad923f266f92aedda29e (diff)
downloademacs-f56e0e7a85978026b611bc8f28bdb91d7f8130d4.tar.gz
emacs-f56e0e7a85978026b611bc8f28bdb91d7f8130d4.zip
* texinfo.tex: Update to version 2010-12-23.17 from gnulib,
which in turn is copied from ftp://tug.org/tex/.
-rw-r--r--doc/misc/ChangeLog5
-rw-r--r--doc/misc/texinfo.tex828
2 files changed, 477 insertions, 356 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index fb8c5d723ca..1acf8b0bbda 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,8 @@
12011-01-07 Paul Eggert <eggert@cs.ucla.edu>
2
3 * texinfo.tex: Update to version 2010-12-23.17 from gnulib,
4 which in turn is copied from ftp://tug.org/tex/.
5
12011-01-04 Jan Moringen <jan.moringen@uni-bielefeld.de> 62011-01-04 Jan Moringen <jan.moringen@uni-bielefeld.de>
2 7
3 * dbus.texi (Receiving Method Calls): Describe new optional 8 * dbus.texi (Receiving Method Calls): Describe new optional
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 91408263bc9..1130b8fc56c 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,11 +3,11 @@
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{2009-08-14.15} 6\def\texinfoversion{2010-12-23.17}
7% 7%
8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
10% 2007, 2008, 2009 Free Software Foundation, Inc. 10% 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
11% 11%
12% This texinfo.tex file is free software: you can redistribute it and/or 12% This texinfo.tex file is free software: you can redistribute it and/or
13% modify it under the terms of the GNU General Public License as 13% modify it under the terms of the GNU General Public License as
@@ -65,7 +65,6 @@
65\everyjob{\message{[Texinfo version \texinfoversion]}% 65\everyjob{\message{[Texinfo version \texinfoversion]}%
66 \catcode`+=\active \catcode`\_=\active} 66 \catcode`+=\active \catcode`\_=\active}
67 67
68
69\chardef\other=12 68\chardef\other=12
70 69
71% We never want plain's \outer definition of \+ in Texinfo. 70% We never want plain's \outer definition of \+ in Texinfo.
@@ -93,14 +92,13 @@
93\let\ptexnewwrite\newwrite 92\let\ptexnewwrite\newwrite
94\let\ptexnoindent=\noindent 93\let\ptexnoindent=\noindent
95\let\ptexplus=+ 94\let\ptexplus=+
95\let\ptexraggedright=\raggedright
96\let\ptexrbrace=\} 96\let\ptexrbrace=\}
97\let\ptexslash=\/ 97\let\ptexslash=\/
98\let\ptexstar=\* 98\let\ptexstar=\*
99\let\ptext=\t 99\let\ptext=\t
100\let\ptextop=\top 100\let\ptextop=\top
101{\catcode`\'=\active 101{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
102\global\let\ptexquoteright'}% Math-mode def from plain.tex.
103\let\ptexraggedright=\raggedright
104 102
105% If this character appears in an error message or help string, it 103% If this character appears in an error message or help string, it
106% starts a new line in the output. 104% starts a new line in the output.
@@ -199,36 +197,7 @@
199% that mark overfull boxes (in case you have decided 197% that mark overfull boxes (in case you have decided
200% that the text looks ok even though it passes the margin). 198% that the text looks ok even though it passes the margin).
201% 199%
202\def\finalout{\overfullrule=0pt} 200\def\finalout{\overfullrule=0pt }
203
204% @| inserts a changebar to the left of the current line. It should
205% surround any changed text. This approach does *not* work if the
206% change spans more than two lines of output. To handle that, we would
207% have adopt a much more difficult approach (putting marks into the main
208% vertical list for the beginning and end of each change).
209%
210\def\|{%
211 % \vadjust can only be used in horizontal mode.
212 \leavevmode
213 %
214 % Append this vertical mode material after the current line in the output.
215 \vadjust{%
216 % We want to insert a rule with the height and depth of the current
217 % leading; that is exactly what \strutbox is supposed to record.
218 \vskip-\baselineskip
219 %
220 % \vadjust-items are inserted at the left edge of the type. So
221 % the \llap here moves out into the left-hand margin.
222 \llap{%
223 %
224 % For a thicker or thinner bar, change the `1pt'.
225 \vrule height\baselineskip width1pt
226 %
227 % This is the space between the bar and the text.
228 \hskip 12pt
229 }%
230 }%
231}
232 201
233% Sometimes it is convenient to have everything in the transcript file 202% Sometimes it is convenient to have everything in the transcript file
234% and nothing on the terminal. We don't just call \tracingall here, 203% and nothing on the terminal. We don't just call \tracingall here,
@@ -267,7 +236,6 @@
267\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount 236\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
268 \removelastskip\penalty-200\bigskip\fi\fi} 237 \removelastskip\penalty-200\bigskip\fi\fi}
269 238
270% For @cropmarks command.
271% Do @cropmarks to get crop marks. 239% Do @cropmarks to get crop marks.
272% 240%
273\newif\ifcropmarks 241\newif\ifcropmarks
@@ -599,85 +567,6 @@
599\newhelp\EMsimple{Press RETURN to continue.} 567\newhelp\EMsimple{Press RETURN to continue.}
600 568
601 569
602%% Simple single-character @ commands
603
604% @@ prints an @
605% Kludge this until the fonts are right (grr).
606\def\@{{\tt\char64}}
607
608% This is turned off because it was never documented
609% and you can use @w{...} around a quote to suppress ligatures.
610%% Define @` and @' to be the same as ` and '
611%% but suppressing ligatures.
612%\def\`{{`}}
613%\def\'{{'}}
614
615% Used to generate quoted braces.
616\def\mylbrace {{\tt\char123}}
617\def\myrbrace {{\tt\char125}}
618\let\{=\mylbrace
619\let\}=\myrbrace
620\begingroup
621 % Definitions to produce \{ and \} commands for indices,
622 % and @{ and @} for the aux/toc files.
623 \catcode`\{ = \other \catcode`\} = \other
624 \catcode`\[ = 1 \catcode`\] = 2
625 \catcode`\! = 0 \catcode`\\ = \other
626 !gdef!lbracecmd[\{]%
627 !gdef!rbracecmd[\}]%
628 !gdef!lbraceatcmd[@{]%
629 !gdef!rbraceatcmd[@}]%
630!endgroup
631
632% @comma{} to avoid , parsing problems.
633\let\comma = ,
634
635% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
636% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
637\let\, = \c
638\let\dotaccent = \.
639\def\ringaccent#1{{\accent23 #1}}
640\let\tieaccent = \t
641\let\ubaraccent = \b
642\let\udotaccent = \d
643
644% Other special characters: @questiondown @exclamdown @ordf @ordm
645% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
646\def\questiondown{?`}
647\def\exclamdown{!`}
648\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
649\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
650
651% Dotless i and dotless j, used for accents.
652\def\imacro{i}
653\def\jmacro{j}
654\def\dotless#1{%
655 \def\temp{#1}%
656 \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
657 \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
658 \else \errmessage{@dotless can be used only with i or j}%
659 \fi\fi
660}
661
662% The \TeX{} logo, as in plain, but resetting the spacing so that a
663% period following counts as ending a sentence. (Idea found in latex.)
664%
665\edef\TeX{\TeX \spacefactor=1000 }
666
667% @LaTeX{} logo. Not quite the same results as the definition in
668% latex.ltx, since we use a different font for the raised A; it's most
669% convenient for us to use an explicitly smaller font, rather than using
670% the \scriptstyle font (since we don't reset \scriptstyle and
671% \scriptscriptstyle).
672%
673\def\LaTeX{%
674 L\kern-.36em
675 {\setbox0=\hbox{T}%
676 \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
677 \kern-.15em
678 \TeX
679}
680
681% Be sure we're in horizontal mode when doing a tie, since we make space 570% Be sure we're in horizontal mode when doing a tie, since we make space
682% equivalent to this in @example-like environments. Otherwise, a space 571% equivalent to this in @example-like environments. Otherwise, a space
683% at the beginning of a line will start with \penalty -- and 572% at the beginning of a line will start with \penalty -- and
@@ -873,7 +762,7 @@ where each line of input produces a line of output.}
873 762
874% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current 763% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
875% paragraph. For more general purposes, use the \margin insertion 764% paragraph. For more general purposes, use the \margin insertion
876% class. WHICH is `l' or `r'. 765% class. WHICH is `l' or `r'. Not documented, written for gawk manual.
877% 766%
878\newskip\inmarginspacing \inmarginspacing=1cm 767\newskip\inmarginspacing \inmarginspacing=1cm
879\def\strutdepth{\dp\strutbox} 768\def\strutdepth{\dp\strutbox}
@@ -920,6 +809,36 @@ where each line of input produces a line of output.}
920 \temp 809 \temp
921} 810}
922 811
812% @| inserts a changebar to the left of the current line. It should
813% surround any changed text. This approach does *not* work if the
814% change spans more than two lines of output. To handle that, we would
815% have adopt a much more difficult approach (putting marks into the main
816% vertical list for the beginning and end of each change). This command
817% is not documented, not supported, and doesn't work.
818%
819\def\|{%
820 % \vadjust can only be used in horizontal mode.
821 \leavevmode
822 %
823 % Append this vertical mode material after the current line in the output.
824 \vadjust{%
825 % We want to insert a rule with the height and depth of the current
826 % leading; that is exactly what \strutbox is supposed to record.
827 \vskip-\baselineskip
828 %
829 % \vadjust-items are inserted at the left edge of the type. So
830 % the \llap here moves out into the left-hand margin.
831 \llap{%
832 %
833 % For a thicker or thinner bar, change the `1pt'.
834 \vrule height\baselineskip width1pt
835 %
836 % This is the space between the bar and the text.
837 \hskip 12pt
838 }%
839 }%
840}
841
923% @include FILE -- \input text of FILE. 842% @include FILE -- \input text of FILE.
924% 843%
925\def\include{\parseargusing\filenamecatcodes\includezzz} 844\def\include{\parseargusing\filenamecatcodes\includezzz}
@@ -1095,109 +1014,6 @@ where each line of input produces a line of output.}
1095} 1014}
1096 1015
1097 1016
1098% @asis just yields its argument. Used with @table, for example.
1099%
1100\def\asis#1{#1}
1101
1102% @math outputs its argument in math mode.
1103%
1104% One complication: _ usually means subscripts, but it could also mean
1105% an actual _ character, as in @math{@var{some_variable} + 1}. So make
1106% _ active, and distinguish by seeing if the current family is \slfam,
1107% which is what @var uses.
1108{
1109 \catcode`\_ = \active
1110 \gdef\mathunderscore{%
1111 \catcode`\_=\active
1112 \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
1113 }
1114}
1115% Another complication: we want \\ (and @\) to output a \ character.
1116% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
1117% this is not advertised and we don't care. Texinfo does not
1118% otherwise define @\.
1119%
1120% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
1121\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
1122%
1123\def\math{%
1124 \tex
1125 \mathunderscore
1126 \let\\ = \mathbackslash
1127 \mathactive
1128 % make the texinfo accent commands work in math mode
1129 \let\"=\ddot
1130 \let\'=\acute
1131 \let\==\bar
1132 \let\^=\hat
1133 \let\`=\grave
1134 \let\u=\breve
1135 \let\v=\check
1136 \let\~=\tilde
1137 \let\dotaccent=\dot
1138 $\finishmath
1139}
1140\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
1141
1142% Some active characters (such as <) are spaced differently in math.
1143% We have to reset their definitions in case the @math was an argument
1144% to a command which sets the catcodes (such as @item or @section).
1145%
1146{
1147 \catcode`^ = \active
1148 \catcode`< = \active
1149 \catcode`> = \active
1150 \catcode`+ = \active
1151 \catcode`' = \active
1152 \gdef\mathactive{%
1153 \let^ = \ptexhat
1154 \let< = \ptexless
1155 \let> = \ptexgtr
1156 \let+ = \ptexplus
1157 \let' = \ptexquoteright
1158 }
1159}
1160
1161% Some math mode symbols.
1162\def\bullet{$\ptexbullet$}
1163\def\geq{\ifmmode \ge\else $\ge$\fi}
1164\def\leq{\ifmmode \le\else $\le$\fi}
1165\def\minus{\ifmmode -\else $-$\fi}
1166
1167% @dots{} outputs an ellipsis using the current font.
1168% We do .5em per period so that it has the same spacing in the cm
1169% typewriter fonts as three actual period characters; on the other hand,
1170% in other typewriter fonts three periods are wider than 1.5em. So do
1171% whichever is larger.
1172%
1173\def\dots{%
1174 \leavevmode
1175 \setbox0=\hbox{...}% get width of three periods
1176 \ifdim\wd0 > 1.5em
1177 \dimen0 = \wd0
1178 \else
1179 \dimen0 = 1.5em
1180 \fi
1181 \hbox to \dimen0{%
1182 \hskip 0pt plus.25fil
1183 .\hskip 0pt plus1fil
1184 .\hskip 0pt plus1fil
1185 .\hskip 0pt plus.5fil
1186 }%
1187}
1188
1189% @enddots{} is an end-of-sentence ellipsis.
1190%
1191\def\enddots{%
1192 \dots
1193 \spacefactor=\endofsentencespacefactor
1194}
1195
1196% @comma{} is so commas can be inserted into text without messing up
1197% Texinfo's parsing.
1198%
1199\let\comma = ,
1200
1201% @refill is a no-op. 1017% @refill is a no-op.
1202\let\refill=\relax 1018\let\refill=\relax
1203 1019
@@ -1492,6 +1308,7 @@ output) for that.)}
1492 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace 1308 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
1493 % 1309 %
1494 % Read toc silently, to get counts of subentries for \pdfoutline. 1310 % Read toc silently, to get counts of subentries for \pdfoutline.
1311 \def\partentry##1##2##3##4{}% ignore parts in the outlines
1495 \def\numchapentry##1##2##3##4{% 1312 \def\numchapentry##1##2##3##4{%
1496 \def\thischapnum{##2}% 1313 \def\thischapnum{##2}%
1497 \def\thissecnum{0}% 1314 \def\thissecnum{0}%
@@ -2105,8 +1922,8 @@ end
2105\font\reducedsy=cmsy10 1922\font\reducedsy=cmsy10
2106\def\reducedecsize{1000} 1923\def\reducedecsize{1000}
2107 1924
2108% reset the current fonts 1925\textleading = 13.2pt % line spacing for 11pt CM
2109\textfonts 1926\textfonts % reset the current fonts
2110\rm 1927\rm
2111} % end of 11pt text font size definitions 1928} % end of 11pt text font size definitions
2112 1929
@@ -2236,11 +2053,9 @@ end
2236\font\reducedsy=cmsy9 2053\font\reducedsy=cmsy9
2237\def\reducedecsize{0900} 2054\def\reducedecsize{0900}
2238 2055
2239% reduce space between paragraphs 2056\divide\parskip by 2 % reduce space between paragraphs
2240\divide\parskip by 2 2057\textleading = 12pt % line spacing for 10pt CM
2241 2058\textfonts % reset the current fonts
2242% reset the current fonts
2243\textfonts
2244\rm 2059\rm
2245} % end of 10pt text font size definitions 2060} % end of 10pt text font size definitions
2246 2061
@@ -2249,8 +2064,9 @@ end
2249% @fonttextsize 10 2064% @fonttextsize 10
2250% (or 11) to redefine the text font size. pt is assumed. 2065% (or 11) to redefine the text font size. pt is assumed.
2251% 2066%
2252\def\xword{10}
2253\def\xiword{11} 2067\def\xiword{11}
2068\def\xword{10}
2069\def\xwordpt{10pt}
2254% 2070%
2255\parseargdef\fonttextsize{% 2071\parseargdef\fonttextsize{%
2256 \def\textsizearg{#1}% 2072 \def\textsizearg{#1}%
@@ -2308,7 +2124,7 @@ end
2308 \let\tenttsl=\titlettsl 2124 \let\tenttsl=\titlettsl
2309 \def\curfontsize{title}% 2125 \def\curfontsize{title}%
2310 \def\lsize{chap}\def\lllsize{subsec}% 2126 \def\lsize{chap}\def\lllsize{subsec}%
2311 \resetmathfonts \setleading{25pt}} 2127 \resetmathfonts \setleading{27pt}}
2312\def\titlefont#1{{\titlefonts\rmisbold #1}} 2128\def\titlefont#1{{\titlefonts\rmisbold #1}}
2313\def\chapfonts{% 2129\def\chapfonts{%
2314 \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl 2130 \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
@@ -2460,14 +2276,19 @@ end
2460 2276
2461\let\markupsetuplqcode \markupsetcodequoteleft 2277\let\markupsetuplqcode \markupsetcodequoteleft
2462\let\markupsetuprqcode \markupsetcodequoteright 2278\let\markupsetuprqcode \markupsetcodequoteright
2279%
2463\let\markupsetuplqexample \markupsetcodequoteleft 2280\let\markupsetuplqexample \markupsetcodequoteleft
2464\let\markupsetuprqexample \markupsetcodequoteright 2281\let\markupsetuprqexample \markupsetcodequoteright
2282%
2283\let\markupsetuplqsamp \markupsetcodequoteleft
2284\let\markupsetuprqsamp \markupsetcodequoteright
2285%
2465\let\markupsetuplqverb \markupsetcodequoteleft 2286\let\markupsetuplqverb \markupsetcodequoteleft
2466\let\markupsetuprqverb \markupsetcodequoteright 2287\let\markupsetuprqverb \markupsetcodequoteright
2288%
2467\let\markupsetuplqverbatim \markupsetcodequoteleft 2289\let\markupsetuplqverbatim \markupsetcodequoteleft
2468\let\markupsetuprqverbatim \markupsetcodequoteright 2290\let\markupsetuprqverbatim \markupsetcodequoteright
2469 2291
2470\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
2471\let\markupsetuplqkbd \markupsetnoligaturesquoteleft 2292\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
2472 2293
2473% Allow an option to not replace quotes with a regular directed right 2294% Allow an option to not replace quotes with a regular directed right
@@ -2505,27 +2326,40 @@ end
2505% Count depth in font-changes, for error checks 2326% Count depth in font-changes, for error checks
2506\newcount\fontdepth \fontdepth=0 2327\newcount\fontdepth \fontdepth=0
2507 2328
2508%% Add scribe-like font environments, plus @l for inline lisp (usually sans 2329% Font commands.
2509%% serif) and @ii for TeX italic 2330
2331% #1 is the font command (\sl or \it), #2 is the text to slant.
2332% If we are in a monospaced environment, however, 1) always use \ttsl,
2333% and 2) do not add an italic correction.
2334\def\dosmartslant#1#2{%
2335 \ifusingtt
2336 {{\ttsl #2}\let\next=\relax}%
2337 {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
2338 \next
2339}
2340\def\smartslanted{\dosmartslant\sl}
2341\def\smartitalic{\dosmartslant\it}
2510 2342
2511% \smartitalic{ARG} outputs arg in italics, followed by an italic correction 2343% Output an italic correction unless \next (presumed to be the following
2512% unless the following character is such as not to need one. 2344% character) is such as not to need one.
2513\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else 2345\def\smartitaliccorrection{%
2514 \ptexslash\fi\fi\fi} 2346 \ifx\next,%
2515\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} 2347 \else\ifx\next-%
2516\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} 2348 \else\ifx\next.%
2349 \else\ptexslash
2350 \fi\fi\fi}
2517 2351
2518% like \smartslanted except unconditionally uses \ttsl. 2352% like \smartslanted except unconditionally uses \ttsl, and no ic.
2519% @var is set to this for defun arguments. 2353% @var is set to this for defun arguments.
2520\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} 2354\def\ttslanted#1{{\ttsl #1}}
2521 2355
2522% @cite is like \smartslanted except unconditionally use \sl. We never want 2356% @cite is like \smartslanted except unconditionally use \sl. We never want
2523% ttsl for book titles, do we? 2357% ttsl for book titles, do we?
2524\def\cite#1{{\sl #1}\futurelet\next\smartitalicx} 2358\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
2525 2359
2526\let\i=\smartitalic 2360\let\i=\smartitalic
2527\let\slanted=\smartslanted 2361\let\slanted=\smartslanted
2528\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} 2362\def\var#1{\smartslanted{#1}}
2529\let\dfn=\smartslanted 2363\let\dfn=\smartslanted
2530\let\emph=\smartitalic 2364\let\emph=\smartitalic
2531 2365
@@ -2819,8 +2653,188 @@ end
2819 \fi 2653 \fi
2820} 2654}
2821 2655
2656% @asis just yields its argument. Used with @table, for example.
2657%
2658\def\asis#1{#1}
2659
2660% @math outputs its argument in math mode.
2661%
2662% One complication: _ usually means subscripts, but it could also mean
2663% an actual _ character, as in @math{@var{some_variable} + 1}. So make
2664% _ active, and distinguish by seeing if the current family is \slfam,
2665% which is what @var uses.
2666{
2667 \catcode`\_ = \active
2668 \gdef\mathunderscore{%
2669 \catcode`\_=\active
2670 \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
2671 }
2672}
2673% Another complication: we want \\ (and @\) to output a math (or tt) \.
2674% FYI, plain.tex uses \\ as a temporary control sequence (for no
2675% particular reason), but this is not advertised and we don't care.
2676%
2677% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
2678\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
2679%
2680\def\math{%
2681 \tex
2682 \mathunderscore
2683 \let\\ = \mathbackslash
2684 \mathactive
2685 % make the texinfo accent commands work in math mode
2686 \let\"=\ddot
2687 \let\'=\acute
2688 \let\==\bar
2689 \let\^=\hat
2690 \let\`=\grave
2691 \let\u=\breve
2692 \let\v=\check
2693 \let\~=\tilde
2694 \let\dotaccent=\dot
2695 $\finishmath
2696}
2697\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
2698
2699% Some active characters (such as <) are spaced differently in math.
2700% We have to reset their definitions in case the @math was an argument
2701% to a command which sets the catcodes (such as @item or @section).
2702%
2703{
2704 \catcode`^ = \active
2705 \catcode`< = \active
2706 \catcode`> = \active
2707 \catcode`+ = \active
2708 \catcode`' = \active
2709 \gdef\mathactive{%
2710 \let^ = \ptexhat
2711 \let< = \ptexless
2712 \let> = \ptexgtr
2713 \let+ = \ptexplus
2714 \let' = \ptexquoteright
2715 }
2716}
2717
2822 2718
2823\message{glyphs,} 2719\message{glyphs,}
2720% and logos.
2721
2722% @@ prints an @.
2723\def\@{\char64 }
2724
2725% Used to generate quoted braces. Unless we're in typewriter, use
2726% \ecfont because the CM text fonts do not have braces, and we don't
2727% want to switch into math.
2728\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
2729\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
2730\let\{=\mylbrace
2731\let\}=\myrbrace
2732\begingroup
2733 % Definitions to produce \{ and \} commands for indices,
2734 % and @{ and @} for the aux/toc files.
2735 \catcode`\{ = \other \catcode`\} = \other
2736 \catcode`\[ = 1 \catcode`\] = 2
2737 \catcode`\! = 0 \catcode`\\ = \other
2738 !gdef!lbracecmd[\{]%
2739 !gdef!rbracecmd[\}]%
2740 !gdef!lbraceatcmd[@{]%
2741 !gdef!rbraceatcmd[@}]%
2742!endgroup
2743
2744% @comma{} to avoid , parsing problems.
2745\let\comma = ,
2746
2747% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
2748% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
2749\let\, = \ptexc
2750\let\dotaccent = \ptexdot
2751\def\ringaccent#1{{\accent23 #1}}
2752\let\tieaccent = \ptext
2753\let\ubaraccent = \ptexb
2754\let\udotaccent = \d
2755
2756% Other special characters: @questiondown @exclamdown @ordf @ordm
2757% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
2758\def\questiondown{?`}
2759\def\exclamdown{!`}
2760\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
2761\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
2762
2763% Dotless i and dotless j, used for accents.
2764\def\imacro{i}
2765\def\jmacro{j}
2766\def\dotless#1{%
2767 \def\temp{#1}%
2768 \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
2769 \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
2770 \else \errmessage{@dotless can be used only with i or j}%
2771 \fi\fi
2772}
2773
2774% The \TeX{} logo, as in plain, but resetting the spacing so that a
2775% period following counts as ending a sentence. (Idea found in latex.)
2776%
2777\edef\TeX{\TeX \spacefactor=1000 }
2778
2779% @LaTeX{} logo. Not quite the same results as the definition in
2780% latex.ltx, since we use a different font for the raised A; it's most
2781% convenient for us to use an explicitly smaller font, rather than using
2782% the \scriptstyle font (since we don't reset \scriptstyle and
2783% \scriptscriptstyle).
2784%
2785\def\LaTeX{%
2786 L\kern-.36em
2787 {\setbox0=\hbox{T}%
2788 \vbox to \ht0{\hbox{%
2789 \ifx\textnominalsize\xwordpt
2790 % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
2791 % Revert to plain's \scriptsize, which is 7pt.
2792 \count255=\the\fam $\fam\count255 \scriptstyle A$%
2793 \else
2794 % For 11pt, we can use our lllsize.
2795 \selectfonts\lllsize A%
2796 \fi
2797 }%
2798 \vss
2799 }}%
2800 \kern-.15em
2801 \TeX
2802}
2803
2804% Some math mode symbols.
2805\def\bullet{$\ptexbullet$}
2806\def\geq{\ifmmode \ge\else $\ge$\fi}
2807\def\leq{\ifmmode \le\else $\le$\fi}
2808\def\minus{\ifmmode -\else $-$\fi}
2809
2810% @dots{} outputs an ellipsis using the current font.
2811% We do .5em per period so that it has the same spacing in the cm
2812% typewriter fonts as three actual period characters; on the other hand,
2813% in other typewriter fonts three periods are wider than 1.5em. So do
2814% whichever is larger.
2815%
2816\def\dots{%
2817 \leavevmode
2818 \setbox0=\hbox{...}% get width of three periods
2819 \ifdim\wd0 > 1.5em
2820 \dimen0 = \wd0
2821 \else
2822 \dimen0 = 1.5em
2823 \fi
2824 \hbox to \dimen0{%
2825 \hskip 0pt plus.25fil
2826 .\hskip 0pt plus1fil
2827 .\hskip 0pt plus1fil
2828 .\hskip 0pt plus.5fil
2829 }%
2830}
2831
2832% @enddots{} is an end-of-sentence ellipsis.
2833%
2834\def\enddots{%
2835 \dots
2836 \spacefactor=\endofsentencespacefactor
2837}
2824 2838
2825% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. 2839% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
2826% 2840%
@@ -3207,10 +3221,14 @@ end
3207 3221
3208\def\headings #1 {\csname HEADINGS#1\endcsname} 3222\def\headings #1 {\csname HEADINGS#1\endcsname}
3209 3223
3210\def\HEADINGSoff{% 3224\def\headingsoff{% non-global headings elimination
3211\global\evenheadline={\hfil} \global\evenfootline={\hfil} 3225 \evenheadline={\hfil}\evenfootline={\hfil}%
3212\global\oddheadline={\hfil} \global\oddfootline={\hfil}} 3226 \oddheadline={\hfil}\oddfootline={\hfil}%
3213\HEADINGSoff 3227}
3228
3229\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
3230\HEADINGSoff % it's the default
3231
3214% When we turn headings on, set the page number to 1. 3232% When we turn headings on, set the page number to 1.
3215% For double-sided printing, put current file name in lower left corner, 3233% For double-sided printing, put current file name in lower left corner,
3216% chapter name on inside top of right hand pages, document 3234% chapter name on inside top of right hand pages, document
@@ -3322,7 +3340,7 @@ end
3322 \begingroup 3340 \begingroup
3323 \advance\leftskip by-\tableindent 3341 \advance\leftskip by-\tableindent
3324 \advance\hsize by\tableindent 3342 \advance\hsize by\tableindent
3325 \advance\rightskip by0pt plus1fil 3343 \advance\rightskip by0pt plus1fil\relax
3326 \leavevmode\unhbox0\par 3344 \leavevmode\unhbox0\par
3327 \endgroup 3345 \endgroup
3328 % 3346 %
@@ -4134,11 +4152,14 @@ end
4134 \def\@{@}% change to @@ when we switch to @ as escape char in index files. 4152 \def\@{@}% change to @@ when we switch to @ as escape char in index files.
4135 \def\ {\realbackslash\space }% 4153 \def\ {\realbackslash\space }%
4136 % 4154 %
4137 % Need these in case \tex is in effect and \{ is a \delimiter again. 4155 % Need these unexpandable (because we define \tt as a dummy)
4138 % But can't use \lbracecmd and \rbracecmd because texindex assumes 4156 % definitions when @{ or @} appear in index entry text. Also, more
4139 % braces and backslashes are used only as delimiters. 4157 % complicated, when \tex is in effect and \{ is a \delimiter again.
4140 \let\{ = \mylbrace 4158 % We can't use \lbracecmd and \rbracecmd because texindex assumes
4141 \let\} = \myrbrace 4159 % braces and backslashes are used only as delimiters. Perhaps we
4160 % should define @lbrace and @rbrace commands a la @comma.
4161 \def\{{{\tt\char123}}%
4162 \def\}{{\tt\char125}}%
4142 % 4163 %
4143 % I don't entirely understand this, but when an index entry is 4164 % I don't entirely understand this, but when an index entry is
4144 % generated from a macro call, the \endinput which \scanmacro inserts 4165 % generated from a macro call, the \endinput which \scanmacro inserts
@@ -4191,7 +4212,7 @@ end
4191\def\commondummies{% 4212\def\commondummies{%
4192 % 4213 %
4193 % \definedummyword defines \#1 as \string\#1\space, thus effectively 4214 % \definedummyword defines \#1 as \string\#1\space, thus effectively
4194 % preventing its expansion. This is used only for control% words, 4215 % preventing its expansion. This is used only for control words,
4195 % not control letters, because the \space would be incorrect for 4216 % not control letters, because the \space would be incorrect for
4196 % control characters, but is needed to separate the control word 4217 % control characters, but is needed to separate the control word
4197 % from whatever follows. 4218 % from whatever follows.
@@ -4210,6 +4231,7 @@ end
4210 \commondummiesnofonts 4231 \commondummiesnofonts
4211 % 4232 %
4212 \definedummyletter\_% 4233 \definedummyletter\_%
4234 \definedummyletter\-%
4213 % 4235 %
4214 % Non-English letters. 4236 % Non-English letters.
4215 \definedummyword\AA 4237 \definedummyword\AA
@@ -4246,20 +4268,24 @@ end
4246 \definedummyword\TeX 4268 \definedummyword\TeX
4247 % 4269 %
4248 % Assorted special characters. 4270 % Assorted special characters.
4271 \definedummyword\arrow
4249 \definedummyword\bullet 4272 \definedummyword\bullet
4250 \definedummyword\comma 4273 \definedummyword\comma
4251 \definedummyword\copyright 4274 \definedummyword\copyright
4252 \definedummyword\registeredsymbol 4275 \definedummyword\registeredsymbol
4253 \definedummyword\dots 4276 \definedummyword\dots
4254 \definedummyword\enddots 4277 \definedummyword\enddots
4278 \definedummyword\entrybreak
4255 \definedummyword\equiv 4279 \definedummyword\equiv
4256 \definedummyword\error 4280 \definedummyword\error
4257 \definedummyword\euro 4281 \definedummyword\euro
4282 \definedummyword\expansion
4283 \definedummyword\geq
4258 \definedummyword\guillemetleft 4284 \definedummyword\guillemetleft
4259 \definedummyword\guillemetright 4285 \definedummyword\guillemetright
4260 \definedummyword\guilsinglleft 4286 \definedummyword\guilsinglleft
4261 \definedummyword\guilsinglright 4287 \definedummyword\guilsinglright
4262 \definedummyword\expansion 4288 \definedummyword\leq
4263 \definedummyword\minus 4289 \definedummyword\minus
4264 \definedummyword\ogonek 4290 \definedummyword\ogonek
4265 \definedummyword\pounds 4291 \definedummyword\pounds
@@ -4316,7 +4342,9 @@ end
4316 \definedummyword\b 4342 \definedummyword\b
4317 \definedummyword\i 4343 \definedummyword\i
4318 \definedummyword\r 4344 \definedummyword\r
4345 \definedummyword\sansserif
4319 \definedummyword\sc 4346 \definedummyword\sc
4347 \definedummyword\slanted
4320 \definedummyword\t 4348 \definedummyword\t
4321 % 4349 %
4322 % Commands that take arguments. 4350 % Commands that take arguments.
@@ -4325,10 +4353,12 @@ end
4325 \definedummyword\code 4353 \definedummyword\code
4326 \definedummyword\command 4354 \definedummyword\command
4327 \definedummyword\dfn 4355 \definedummyword\dfn
4356 \definedummyword\dmn
4328 \definedummyword\email 4357 \definedummyword\email
4329 \definedummyword\emph 4358 \definedummyword\emph
4330 \definedummyword\env 4359 \definedummyword\env
4331 \definedummyword\file 4360 \definedummyword\file
4361 \definedummyword\indicateurl
4332 \definedummyword\kbd 4362 \definedummyword\kbd
4333 \definedummyword\key 4363 \definedummyword\key
4334 \definedummyword\math 4364 \definedummyword\math
@@ -4356,7 +4386,7 @@ end
4356 \def\definedummyaccent##1{\let##1\asis}% 4386 \def\definedummyaccent##1{\let##1\asis}%
4357 % We can just ignore other control letters. 4387 % We can just ignore other control letters.
4358 \def\definedummyletter##1{\let##1\empty}% 4388 \def\definedummyletter##1{\let##1\empty}%
4359 % Hopefully, all control words can become @asis. 4389 % All control words become @asis by default; overrides below.
4360 \let\definedummyword\definedummyaccent 4390 \let\definedummyword\definedummyaccent
4361 % 4391 %
4362 \commondummiesnofonts 4392 \commondummiesnofonts
@@ -4368,8 +4398,14 @@ end
4368 % 4398 %
4369 \def\ { }% 4399 \def\ { }%
4370 \def\@{@}% 4400 \def\@{@}%
4371 % how to handle braces?
4372 \def\_{\normalunderscore}% 4401 \def\_{\normalunderscore}%
4402 \def\-{}% @- shouldn't affect sorting
4403 %
4404 % Unfortunately, texindex is not prepared to handle braces in the
4405 % content at all. So for index sorting, we map @{ and @} to strings
4406 % starting with |, since that ASCII character is between ASCII { and }.
4407 \def\{{|a}%
4408 \def\}{|b}%
4373 % 4409 %
4374 % Non-English letters. 4410 % Non-English letters.
4375 \def\AA{AA}% 4411 \def\AA{AA}%
@@ -4397,6 +4433,7 @@ end
4397 % 4433 %
4398 % Assorted special characters. 4434 % Assorted special characters.
4399 % (The following {} will end up in the sort string, but that's ok.) 4435 % (The following {} will end up in the sort string, but that's ok.)
4436 \def\arrow{->}%
4400 \def\bullet{bullet}% 4437 \def\bullet{bullet}%
4401 \def\comma{,}% 4438 \def\comma{,}%
4402 \def\copyright{copyright}% 4439 \def\copyright{copyright}%
@@ -4406,10 +4443,12 @@ end
4406 \def\error{error}% 4443 \def\error{error}%
4407 \def\euro{euro}% 4444 \def\euro{euro}%
4408 \def\expansion{==>}% 4445 \def\expansion{==>}%
4446 \def\geq{>=}%
4409 \def\guillemetleft{<<}% 4447 \def\guillemetleft{<<}%
4410 \def\guillemetright{>>}% 4448 \def\guillemetright{>>}%
4411 \def\guilsinglleft{<}% 4449 \def\guilsinglleft{<}%
4412 \def\guilsinglright{>}% 4450 \def\guilsinglright{>}%
4451 \def\leq{<=}%
4413 \def\minus{-}% 4452 \def\minus{-}%
4414 \def\point{.}% 4453 \def\point{.}%
4415 \def\pounds{pounds}% 4454 \def\pounds{pounds}%
@@ -4424,6 +4463,9 @@ end
4424 \def\result{=>}% 4463 \def\result{=>}%
4425 \def\textdegree{o}% 4464 \def\textdegree{o}%
4426 % 4465 %
4466 \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
4467 \else \indexlquoteignore \fi
4468 %
4427 % We need to get rid of all macros, leaving only the arguments (if present). 4469 % We need to get rid of all macros, leaving only the arguments (if present).
4428 % Of course this is not nearly correct, but it is the best we can do for now. 4470 % Of course this is not nearly correct, but it is the best we can do for now.
4429 % makeinfo does not expand macros in the argument to @deffn, which ends up 4471 % makeinfo does not expand macros in the argument to @deffn, which ends up
@@ -4437,6 +4479,11 @@ end
4437 \macrolist 4479 \macrolist
4438} 4480}
4439 4481
4482% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
4483% ignore left quotes in the sort term.
4484{\catcode`\`=\active
4485 \gdef\indexlquoteignore{\let`=\empty}}
4486
4440\let\indexbackslash=0 %overridden during \printindex. 4487\let\indexbackslash=0 %overridden during \printindex.
4441\let\SETmarginindex=\relax % put index entries in margin (undocumented)? 4488\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
4442 4489
@@ -4694,7 +4741,6 @@ end
4694% But this freezes the catcodes in the argument, and can cause problems to 4741% But this freezes the catcodes in the argument, and can cause problems to
4695% @code, which sets - active. This problem was fixed by a kludge--- 4742% @code, which sets - active. This problem was fixed by a kludge---
4696% ``-'' was active throughout whole index, but this isn't really right. 4743% ``-'' was active throughout whole index, but this isn't really right.
4697%
4698% The right solution is to prevent \entry from swallowing the whole text. 4744% The right solution is to prevent \entry from swallowing the whole text.
4699% --kasal, 21nov03 4745% --kasal, 21nov03
4700\def\entry{% 4746\def\entry{%
@@ -4731,10 +4777,17 @@ end
4731 % columns. 4777 % columns.
4732 \vskip 0pt plus1pt 4778 \vskip 0pt plus1pt
4733 % 4779 %
4780 % When reading the text of entry, convert explicit line breaks
4781 % from @* into spaces. The user might give these in long section
4782 % titles, for instance.
4783 \def\*{\unskip\space\ignorespaces}%
4784 \def\entrybreak{\hfil\break}%
4785 %
4734 % Swallow the left brace of the text (first parameter): 4786 % Swallow the left brace of the text (first parameter):
4735 \afterassignment\doentry 4787 \afterassignment\doentry
4736 \let\temp = 4788 \let\temp =
4737} 4789}
4790\def\entrybreak{\unskip\space\ignorespaces}%
4738\def\doentry{% 4791\def\doentry{%
4739 \bgroup % Instead of the swallowed brace. 4792 \bgroup % Instead of the swallowed brace.
4740 \noindent 4793 \noindent
@@ -4967,7 +5020,22 @@ end
4967\message{sectioning,} 5020\message{sectioning,}
4968% Chapters, sections, etc. 5021% Chapters, sections, etc.
4969 5022
4970% \unnumberedno is an oxymoron, of course. But we count the unnumbered 5023% Let's start with @part.
5024\outer\parseargdef\part{\partzzz{#1}}
5025\def\partzzz#1{%
5026 \chapoddpage
5027 \null
5028 \vskip.3\vsize % move it down on the page a bit
5029 \begingroup
5030 \noindent \titlefonts\rmisbold #1\par % the text
5031 \let\lastnode=\empty % no node to associate with
5032 \writetocentry{part}{#1}{}% but put it in the toc
5033 \headingsoff % no headline or footline on the part page
5034 \chapoddpage
5035 \endgroup
5036}
5037
5038% \unnumberedno is an oxymoron. But we count the unnumbered
4971% sections so that we can refer to them unambiguously in the pdf 5039% sections so that we can refer to them unambiguously in the pdf
4972% outlines by their "section number". We avoid collisions with chapter 5040% outlines by their "section number". We avoid collisions with chapter
4973% numbers by starting them at 10000. (If a document ever has 10000 5041% numbers by starting them at 10000. (If a document ever has 10000
@@ -5046,8 +5114,8 @@ end
5046\chardef\maxseclevel = 3 5114\chardef\maxseclevel = 3
5047% 5115%
5048% A numbered section within an unnumbered changes to unnumbered too. 5116% A numbered section within an unnumbered changes to unnumbered too.
5049% To achive this, remember the "biggest" unnum. sec. we are currently in: 5117% To achieve this, remember the "biggest" unnum. sec. we are currently in:
5050\chardef\unmlevel = \maxseclevel 5118\chardef\unnlevel = \maxseclevel
5051% 5119%
5052% Trace whether the current chapter is an appendix or not: 5120% Trace whether the current chapter is an appendix or not:
5053% \chapheadtype is "N" or "A", unnumbered chapters are ignored. 5121% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -5072,8 +5140,8 @@ end
5072 % The heading type: 5140 % The heading type:
5073 \def\headtype{#1}% 5141 \def\headtype{#1}%
5074 \if \headtype U% 5142 \if \headtype U%
5075 \ifnum \absseclevel < \unmlevel 5143 \ifnum \absseclevel < \unnlevel
5076 \chardef\unmlevel = \absseclevel 5144 \chardef\unnlevel = \absseclevel
5077 \fi 5145 \fi
5078 \else 5146 \else
5079 % Check for appendix sections: 5147 % Check for appendix sections:
@@ -5085,10 +5153,10 @@ end
5085 \fi\fi 5153 \fi\fi
5086 \fi 5154 \fi
5087 % Check for numbered within unnumbered: 5155 % Check for numbered within unnumbered:
5088 \ifnum \absseclevel > \unmlevel 5156 \ifnum \absseclevel > \unnlevel
5089 \def\headtype{U}% 5157 \def\headtype{U}%
5090 \else 5158 \else
5091 \chardef\unmlevel = 3 5159 \chardef\unnlevel = 3
5092 \fi 5160 \fi
5093 \fi 5161 \fi
5094 % Now print the heading: 5162 % Now print the heading:
@@ -5340,9 +5408,8 @@ end
5340 \chappager 5408 \chappager
5341 \ifodd\pageno \else 5409 \ifodd\pageno \else
5342 \begingroup 5410 \begingroup
5343 \evenheadline={\hfil}\evenfootline={\hfil}% 5411 \headingsoff
5344 \oddheadline={\hfil}\oddfootline={\hfil}% 5412 \null
5345 \hbox to 0pt{}%
5346 \chappager 5413 \chappager
5347 \endgroup 5414 \endgroup
5348 \fi 5415 \fi
@@ -5785,6 +5852,7 @@ end
5785\def\summarycontents{% 5852\def\summarycontents{%
5786 \startcontents{\putwordShortTOC}% 5853 \startcontents{\putwordShortTOC}%
5787 % 5854 %
5855 \let\partentry = \shortpartentry
5788 \let\numchapentry = \shortchapentry 5856 \let\numchapentry = \shortchapentry
5789 \let\appentry = \shortchapentry 5857 \let\appentry = \shortchapentry
5790 \let\unnchapentry = \shortunnchapentry 5858 \let\unnchapentry = \shortunnchapentry
@@ -5840,6 +5908,19 @@ end
5840% The last argument is the page number. 5908% The last argument is the page number.
5841% The arguments in between are the chapter number, section number, ... 5909% The arguments in between are the chapter number, section number, ...
5842 5910
5911% Parts, in the main contents. Replace the part number, which doesn't
5912% exist, with an empty box. Let's hope all the numbers have the same width.
5913% Also ignore the page number, which is conventionally not printed.
5914\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
5915\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
5916%
5917% Parts, in the short toc.
5918\def\shortpartentry#1#2#3#4{%
5919 \penalty-300
5920 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
5921 \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
5922}
5923
5843% Chapters, in the main contents. 5924% Chapters, in the main contents.
5844\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} 5925\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
5845% 5926%
@@ -5929,9 +6010,9 @@ end
5929\message{environments,} 6010\message{environments,}
5930% @foo ... @end foo. 6011% @foo ... @end foo.
5931 6012
5932% @tex ... @end tex escapes into raw Tex temporarily. 6013% @tex ... @end tex escapes into raw TeX temporarily.
5933% One exception: @ is still an escape character, so that @end tex works. 6014% One exception: @ is still an escape character, so that @end tex works.
5934% But \@ or @@ will get a plain tex @ character. 6015% But \@ or @@ will get a plain @ character.
5935 6016
5936\envdef\tex{% 6017\envdef\tex{%
5937 \setupmarkupstyle{tex}% 6018 \setupmarkupstyle{tex}%
@@ -5948,6 +6029,10 @@ end
5948 \catcode`\'=\other 6029 \catcode`\'=\other
5949 \escapechar=`\\ 6030 \escapechar=`\\
5950 % 6031 %
6032 % ' is active in math mode (mathcode"8000). So reset it, and all our
6033 % other math active characters (just in case), to plain's definitions.
6034 \mathactive
6035 %
5951 \let\b=\ptexb 6036 \let\b=\ptexb
5952 \let\bullet=\ptexbullet 6037 \let\bullet=\ptexbullet
5953 \let\c=\ptexc 6038 \let\c=\ptexc
@@ -6150,41 +6235,42 @@ end
6150} 6235}
6151 6236
6152% We often define two environments, @foo and @smallfoo. 6237% We often define two environments, @foo and @smallfoo.
6153% Let's do it by one command: 6238% Let's do it in one command. #1 is the env name, #2 the definition.
6154\def\makedispenv #1#2{ 6239\def\makedispenvdef#1#2{%
6155 \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} 6240 \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
6156 \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} 6241 \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
6157 \expandafter\let\csname E#1\endcsname \afterenvbreak 6242 \expandafter\let\csname E#1\endcsname \afterenvbreak
6158 \expandafter\let\csname Esmall#1\endcsname \afterenvbreak 6243 \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
6159} 6244}
6160 6245
6161% Define two synonyms: 6246% Define two environment synonyms (#1 and #2) for an environment.
6162\def\maketwodispenvs #1#2#3{ 6247\def\maketwodispenvdef#1#2#3{%
6163 \makedispenv{#1}{#3} 6248 \makedispenvdef{#1}{#3}%
6164 \makedispenv{#2}{#3} 6249 \makedispenvdef{#2}{#3}%
6165} 6250}
6166 6251%
6167% @lisp: indented, narrowed, typewriter font; @example: same as @lisp. 6252% @lisp: indented, narrowed, typewriter font;
6253% @example: same as @lisp.
6168% 6254%
6169% @smallexample and @smalllisp: use smaller fonts. 6255% @smallexample and @smalllisp: use smaller fonts.
6170% Originally contributed by Pavel@xerox. 6256% Originally contributed by Pavel@xerox.
6171% 6257%
6172\maketwodispenvs {lisp}{example}{% 6258\maketwodispenvdef{lisp}{example}{%
6173 \nonfillstart 6259 \nonfillstart
6174 \tt\setupmarkupstyle{example}% 6260 \tt\setupmarkupstyle{example}%
6175 \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. 6261 \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
6176 \gobble % eat return 6262 \gobble % eat return
6177} 6263}
6178% @display/@smalldisplay: same as @lisp except keep current font. 6264% @display/@smalldisplay: same as @lisp except keep current font.
6179% 6265%
6180\makedispenv {display}{% 6266\makedispenvdef{display}{%
6181 \nonfillstart 6267 \nonfillstart
6182 \gobble 6268 \gobble
6183} 6269}
6184 6270
6185% @format/@smallformat: same as @display except don't narrow margins. 6271% @format/@smallformat: same as @display except don't narrow margins.
6186% 6272%
6187\makedispenv{format}{% 6273\makedispenvdef{format}{%
6188 \let\nonarrowing = t% 6274 \let\nonarrowing = t%
6189 \nonfillstart 6275 \nonfillstart
6190 \gobble 6276 \gobble
@@ -6203,7 +6289,7 @@ end
6203\envdef\flushright{% 6289\envdef\flushright{%
6204 \let\nonarrowing = t% 6290 \let\nonarrowing = t%
6205 \nonfillstart 6291 \nonfillstart
6206 \advance\leftskip by 0pt plus 1fill 6292 \advance\leftskip by 0pt plus 1fill\relax
6207 \gobble 6293 \gobble
6208} 6294}
6209\let\Eflushright = \afterenvbreak 6295\let\Eflushright = \afterenvbreak
@@ -6238,6 +6324,8 @@ end
6238% we're doing normal filling. So, when using \aboveenvbreak and 6324% we're doing normal filling. So, when using \aboveenvbreak and
6239% \afterenvbreak, temporarily make \parskip 0. 6325% \afterenvbreak, temporarily make \parskip 0.
6240% 6326%
6327\makedispenvdef{quotation}{\quotationstart}
6328%
6241\def\quotationstart{% 6329\def\quotationstart{%
6242 {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip 6330 {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
6243 \parindent=0pt 6331 \parindent=0pt
@@ -6253,17 +6341,6 @@ end
6253 \parsearg\quotationlabel 6341 \parsearg\quotationlabel
6254} 6342}
6255 6343
6256\envdef\quotation{%
6257 \setnormaldispenv
6258 \quotationstart
6259}
6260
6261\envdef\smallquotation{%
6262 \setsmalldispenv
6263 \quotationstart
6264}
6265\let\Esmallquotation = \Equotation
6266
6267% We have retained a nonzero parskip for the environment, since we're 6344% We have retained a nonzero parskip for the environment, since we're
6268% doing normal filling. 6345% doing normal filling.
6269% 6346%
@@ -6275,6 +6352,7 @@ end
6275 \fi 6352 \fi
6276 {\parskip=0pt \afterenvbreak}% 6353 {\parskip=0pt \afterenvbreak}%
6277} 6354}
6355\def\Esmallquotation{\Equotation}
6278 6356
6279% If we're given an argument, typeset it in bold with a colon after. 6357% If we're given an argument, typeset it in bold with a colon after.
6280\def\quotationlabel#1{% 6358\def\quotationlabel#1{%
@@ -6331,21 +6409,28 @@ end
6331 6409
6332% Setup for the @verbatim environment 6410% Setup for the @verbatim environment
6333% 6411%
6334% Real tab expansion 6412% Real tab expansion.
6335\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount 6413\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
6336% 6414%
6337\def\starttabbox{\setbox0=\hbox\bgroup} 6415% We typeset each line of the verbatim in an \hbox, so we can handle
6416% tabs. The \global is in case the verbatim line starts with an accent,
6417% or some other command that starts with a begin-group. Otherwise, the
6418% entire \verbbox would disappear at the corresponding end-group, before
6419% it is typeset. Meanwhile, we can't have nested verbatim commands
6420% (can we?), so the \global won't be overwriting itself.
6421\newbox\verbbox
6422\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
6338% 6423%
6339\begingroup 6424\begingroup
6340 \catcode`\^^I=\active 6425 \catcode`\^^I=\active
6341 \gdef\tabexpand{% 6426 \gdef\tabexpand{%
6342 \catcode`\^^I=\active 6427 \catcode`\^^I=\active
6343 \def^^I{\leavevmode\egroup 6428 \def^^I{\leavevmode\egroup
6344 \dimen0=\wd0 % the width so far, or since the previous tab 6429 \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
6345 \divide\dimen0 by\tabw 6430 \divide\dimen\verbbox by\tabw
6346 \multiply\dimen0 by\tabw % compute previous multiple of \tabw 6431 \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
6347 \advance\dimen0 by\tabw % advance to next multiple of \tabw 6432 \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw
6348 \wd0=\dimen0 \box0 \starttabbox 6433 \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
6349 }% 6434 }%
6350 } 6435 }
6351\endgroup 6436\endgroup
@@ -6354,15 +6439,16 @@ end
6354\def\setupverbatim{% 6439\def\setupverbatim{%
6355 \let\nonarrowing = t% 6440 \let\nonarrowing = t%
6356 \nonfillstart 6441 \nonfillstart
6357 % Easiest (and conventionally used) font for verbatim 6442 \tt % easiest (and conventionally used) font for verbatim
6358 \tt 6443 % The \leavevmode here is for blank lines. Otherwise, we would
6359 \def\par{\leavevmode\egroup\box0\endgraf}% 6444 % never \starttabox and the \egroup would end verbatim mode.
6445 \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
6360 \tabexpand 6446 \tabexpand
6361 \setupmarkupstyle{verbatim}% 6447 \setupmarkupstyle{verbatim}%
6362 % Respect line breaks, 6448 % Respect line breaks,
6363 % print special symbols as themselves, and 6449 % print special symbols as themselves, and
6364 % make each space count 6450 % make each space count.
6365 % must do in this order: 6451 % Must do in this order:
6366 \obeylines \uncatcodespecials \sepspaces 6452 \obeylines \uncatcodespecials \sepspaces
6367 \everypar{\starttabbox}% 6453 \everypar{\starttabbox}%
6368} 6454}
@@ -6505,7 +6591,7 @@ end
6505 #1#2 \endheader 6591 #1#2 \endheader
6506 % common ending: 6592 % common ending:
6507 \interlinepenalty = 10000 6593 \interlinepenalty = 10000
6508 \advance\rightskip by 0pt plus 1fil 6594 \advance\rightskip by 0pt plus 1fil\relax
6509 \endgraf 6595 \endgraf
6510 \nobreak\vskip -\parskip 6596 \nobreak\vskip -\parskip
6511 \penalty\defunpenalty % signal to \startdefun and \dodefunx 6597 \penalty\defunpenalty % signal to \startdefun and \dodefunx
@@ -6805,25 +6891,28 @@ end
6805 } 6891 }
6806\fi 6892\fi
6807 6893
6808\def\scanmacro#1{% 6894\def\scanmacro#1{\begingroup
6809 \begingroup 6895 \newlinechar`\^^M
6810 \newlinechar`\^^M 6896 \let\xeatspaces\eatspaces
6811 \let\xeatspaces\eatspaces 6897 %
6812 % Undo catcode changes of \startcontents and \doprintindex 6898 % Undo catcode changes of \startcontents and \doprintindex
6813 % When called from @insertcopying or (short)caption, we need active 6899 % When called from @insertcopying or (short)caption, we need active
6814 % backslash to get it printed correctly. Previously, we had 6900 % backslash to get it printed correctly. Previously, we had
6815 % \catcode`\\=\other instead. We'll see whether a problem appears 6901 % \catcode`\\=\other instead. We'll see whether a problem appears
6816 % with macro expansion. --kasal, 19aug04 6902 % with macro expansion. --kasal, 19aug04
6817 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ 6903 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
6818 % ... and \example 6904 %
6819 \spaceisspace 6905 % ... and for \example:
6820 % 6906 \spaceisspace
6821 % Append \endinput to make sure that TeX does not see the ending newline. 6907 %
6822 % I've verified that it is necessary both for e-TeX and for ordinary TeX 6908 % The \empty here causes a following catcode 5 newline to be eaten
6823 % --kasal, 29nov03 6909 % as part of reading whitespace after a control sequence. It does
6824 \scantokens{#1\endinput}% 6910 % not eat a catcode 13 newline. There's no good way to handle the
6825 \endgroup 6911 % two cases. See the Macro Details node in the manual for the
6826} 6912 % workaround we currently have to recommend for macros and
6913 % line-oriented commands.
6914 \scantokens{#1\empty}%
6915\endgroup}
6827 6916
6828\def\scanexp#1{% 6917\def\scanexp#1{%
6829 \edef\temp{\noexpand\scanmacro{#1}}% 6918 \edef\temp{\noexpand\scanmacro{#1}}%
@@ -6877,17 +6966,18 @@ end
6877 6966
6878% Macro bodies are absorbed as an argument in a context where 6967% Macro bodies are absorbed as an argument in a context where
6879% all characters are catcode 10, 11 or 12, except \ which is active 6968% all characters are catcode 10, 11 or 12, except \ which is active
6880% (as in normal texinfo). It is necessary to change the definition of \. 6969% (as in normal texinfo). It is necessary to change the definition of \
6881 6970% to recognize macro arguments; this is the job of \mbodybackslash.
6971%
6882% Non-ASCII encodings make 8-bit characters active, so un-activate 6972% Non-ASCII encodings make 8-bit characters active, so un-activate
6883% them to avoid their expansion. Must do this non-globally, to 6973% them to avoid their expansion. Must do this non-globally, to
6884% confine the change to the current group. 6974% confine the change to the current group.
6885 6975%
6886% It's necessary to have hard CRs when the macro is executed. This is 6976% It's necessary to have hard CRs when the macro is executed. This is
6887% done by making ^^M (\endlinechar) catcode 12 when reading the macro 6977% done by making ^^M (\endlinechar) catcode 12 when reading the macro
6888% body, and then making it the \newlinechar in \scanmacro. 6978% body, and then making it the \newlinechar in \scanmacro.
6889 6979%
6890\def\scanctxt{% 6980\def\scanctxt{% used as subroutine
6891 \catcode`\"=\other 6981 \catcode`\"=\other
6892 \catcode`\+=\other 6982 \catcode`\+=\other
6893 \catcode`\<=\other 6983 \catcode`\<=\other
@@ -6900,13 +6990,13 @@ end
6900 \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi 6990 \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
6901} 6991}
6902 6992
6903\def\scanargctxt{% 6993\def\scanargctxt{% used for copying and captions, not macros.
6904 \scanctxt 6994 \scanctxt
6905 \catcode`\\=\other 6995 \catcode`\\=\other
6906 \catcode`\^^M=\other 6996 \catcode`\^^M=\other
6907} 6997}
6908 6998
6909\def\macrobodyctxt{% 6999\def\macrobodyctxt{% used for @macro definitions
6910 \scanctxt 7000 \scanctxt
6911 \catcode`\{=\other 7001 \catcode`\{=\other
6912 \catcode`\}=\other 7002 \catcode`\}=\other
@@ -6914,30 +7004,48 @@ end
6914 \usembodybackslash 7004 \usembodybackslash
6915} 7005}
6916 7006
6917\def\macroargctxt{% 7007\def\macroargctxt{% used when scanning invocations
6918 \scanctxt 7008 \scanctxt
6919 \catcode`\\=\other 7009 \catcode`\\=0
6920} 7010}
7011% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes"
7012% for the single characters \ { }. Thus, we end up with the "commands"
7013% that would be written @\ @{ @} in a Texinfo document.
7014%
7015% We already have @{ and @}. For @\, we define it here, and only for
7016% this purpose, to produce a typewriter backslash (so, the @\ that we
7017% define for @math can't be used with @macro calls):
7018%
7019\def\\{\normalbackslash}%
7020%
7021% We would like to do this for \, too, since that is what makeinfo does.
7022% But it is not possible, because Texinfo already has a command @, for a
7023% cedilla accent. Documents must use @comma{} instead.
7024%
7025% \anythingelse will almost certainly be an error of some kind.
7026
6921 7027
6922% \mbodybackslash is the definition of \ in @macro bodies. 7028% \mbodybackslash is the definition of \ in @macro bodies.
6923% It maps \foo\ => \csname macarg.foo\endcsname => #N 7029% It maps \foo\ => \csname macarg.foo\endcsname => #N
6924% where N is the macro parameter number. 7030% where N is the macro parameter number.
6925% We define \csname macarg.\endcsname to be \realbackslash, so 7031% We define \csname macarg.\endcsname to be \realbackslash, so
6926% \\ in macro replacement text gets you a backslash. 7032% \\ in macro replacement text gets you a backslash.
6927 7033%
6928{\catcode`@=0 @catcode`@\=@active 7034{\catcode`@=0 @catcode`@\=@active
6929 @gdef@usembodybackslash{@let\=@mbodybackslash} 7035 @gdef@usembodybackslash{@let\=@mbodybackslash}
6930 @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} 7036 @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
6931} 7037}
6932\expandafter\def\csname macarg.\endcsname{\realbackslash} 7038\expandafter\def\csname macarg.\endcsname{\realbackslash}
6933 7039
7040\def\margbackslash#1{\char`\#1 }
7041
6934\def\macro{\recursivefalse\parsearg\macroxxx} 7042\def\macro{\recursivefalse\parsearg\macroxxx}
6935\def\rmacro{\recursivetrue\parsearg\macroxxx} 7043\def\rmacro{\recursivetrue\parsearg\macroxxx}
6936 7044
6937\def\macroxxx#1{% 7045\def\macroxxx#1{%
6938 \getargs{#1}% now \macname is the macname and \argl the arglist 7046 \getargs{#1}% now \macname is the macname and \argl the arglist
6939 \ifx\argl\empty % no arguments 7047 \ifx\argl\empty % no arguments
6940 \paramno=0% 7048 \paramno=0
6941 \else 7049 \else
6942 \expandafter\parsemargdef \argl;% 7050 \expandafter\parsemargdef \argl;%
6943 \fi 7051 \fi
@@ -6986,28 +7094,32 @@ end
6986% an opening brace, and that opening brace is not consumed. 7094% an opening brace, and that opening brace is not consumed.
6987\def\getargs#1{\getargsxxx#1{}} 7095\def\getargs#1{\getargsxxx#1{}}
6988\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} 7096\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
6989\def\getmacname #1 #2\relax{\macname={#1}} 7097\def\getmacname#1 #2\relax{\macname={#1}}
6990\def\getmacargs#1{\def\argl{#1}} 7098\def\getmacargs#1{\def\argl{#1}}
6991 7099
6992% Parse the optional {params} list. Set up \paramno and \paramlist 7100% Parse the optional {params} list. Set up \paramno and \paramlist
6993% so \defmacro knows what to do. Define \macarg.blah for each blah 7101% so \defmacro knows what to do. Define \macarg.blah for each blah
6994% in the params list, to be ##N where N is the position in that list. 7102% in the params list to be ##N where N is the position in that list.
6995% That gets used by \mbodybackslash (above). 7103% That gets used by \mbodybackslash (above).
6996 7104%
6997% We need to get `macro parameter char #' into several definitions. 7105% We need to get `macro parameter char #' into several definitions.
6998% The technique used is stolen from LaTeX: let \hash be something 7106% The technique used is stolen from LaTeX: let \hash be something
6999% unexpandable, insert that wherever you need a #, and then redefine 7107% unexpandable, insert that wherever you need a #, and then redefine
7000% it to # just before using the token list produced. 7108% it to # just before using the token list produced.
7001% 7109%
7002% The same technique is used to protect \eatspaces till just before 7110% The same technique is used to protect \eatspaces till just before
7003% the macro is used. 7111% the macro is used.
7004 7112
7005\def\parsemargdef#1;{\paramno=0\def\paramlist{}% 7113\def\parsemargdef#1;{%
7006 \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} 7114 \paramno=0\def\paramlist{}%
7115 \let\hash\relax
7116 \let\xeatspaces\relax
7117 \parsemargdefxxx#1,;,%
7118}
7007\def\parsemargdefxxx#1,{% 7119\def\parsemargdefxxx#1,{%
7008 \if#1;\let\next=\relax 7120 \if#1;\let\next=\relax
7009 \else \let\next=\parsemargdefxxx 7121 \else \let\next=\parsemargdefxxx
7010 \advance\paramno by 1% 7122 \advance\paramno by 1
7011 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname 7123 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
7012 {\xeatspaces{\hash\the\paramno}}% 7124 {\xeatspaces{\hash\the\paramno}}%
7013 \edef\paramlist{\paramlist\hash\the\paramno,}% 7125 \edef\paramlist{\paramlist\hash\the\paramno,}%
@@ -7015,7 +7127,7 @@ end
7015 7127
7016% These two commands read recursive and nonrecursive macro bodies. 7128% These two commands read recursive and nonrecursive macro bodies.
7017% (They're different since rec and nonrec macros end differently.) 7129% (They're different since rec and nonrec macros end differently.)
7018 7130%
7019\long\def\parsemacbody#1@end macro% 7131\long\def\parsemacbody#1@end macro%
7020{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% 7132{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
7021\long\def\parsermacbody#1@end rmacro% 7133\long\def\parsermacbody#1@end rmacro%
@@ -7026,6 +7138,7 @@ end
7026% Much magic with \expandafter here. 7138% Much magic with \expandafter here.
7027% \xdef is used so that macro definitions will survive the file 7139% \xdef is used so that macro definitions will survive the file
7028% they're defined in; @include reads the file inside a group. 7140% they're defined in; @include reads the file inside a group.
7141%
7029\def\defmacro{% 7142\def\defmacro{%
7030 \let\hash=##% convert placeholders to macro parameter chars 7143 \let\hash=##% convert placeholders to macro parameter chars
7031 \ifrecursive 7144 \ifrecursive
@@ -7089,7 +7202,8 @@ end
7089% \braceorline decides whether the next nonwhitespace character is a 7202% \braceorline decides whether the next nonwhitespace character is a
7090% {. If so it reads up to the closing }, if not, it reads the whole 7203% {. If so it reads up to the closing }, if not, it reads the whole
7091% line. Whatever was read is then fed to the next control sequence 7204% line. Whatever was read is then fed to the next control sequence
7092% as an argument (by \parsebrace or \parsearg) 7205% as an argument (by \parsebrace or \parsearg).
7206%
7093\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} 7207\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
7094\def\braceorlinexxx{% 7208\def\braceorlinexxx{%
7095 \ifx\nchar\bgroup\else 7209 \ifx\nchar\bgroup\else
@@ -7099,7 +7213,8 @@ end
7099 7213
7100% @alias. 7214% @alias.
7101% We need some trickery to remove the optional spaces around the equal 7215% We need some trickery to remove the optional spaces around the equal
7102% sign. Just make them active and then expand them all to nothing. 7216% sign. Make them active and then expand them all to nothing.
7217%
7103\def\alias{\parseargusing\obeyspaces\aliasxxx} 7218\def\alias{\parseargusing\obeyspaces\aliasxxx}
7104\def\aliasxxx #1{\aliasyyy#1\relax} 7219\def\aliasxxx #1{\aliasyyy#1\relax}
7105\def\aliasyyy #1=#2\relax{% 7220\def\aliasyyy #1=#2\relax{%
@@ -7357,7 +7472,8 @@ end
7357 \angleleft un\-de\-fined\angleright 7472 \angleleft un\-de\-fined\angleright
7358 \iflinks 7473 \iflinks
7359 \ifhavexrefs 7474 \ifhavexrefs
7360 \message{\linenumber Undefined cross reference `#1'.}% 7475 {\toks0 = {#1}% avoid expansion of possibly-complex value
7476 \message{\linenumber Undefined cross reference `\the\toks0'.}}%
7361 \else 7477 \else
7362 \ifwarnedxrefs\else 7478 \ifwarnedxrefs\else
7363 \global\warnedxrefstrue 7479 \global\warnedxrefstrue
@@ -7687,7 +7803,7 @@ end
7687% #2 is (optional) width, #3 is (optional) height. 7803% #2 is (optional) width, #3 is (optional) height.
7688% #4 is (ignored optional) html alt text. 7804% #4 is (ignored optional) html alt text.
7689% #5 is (ignored optional) extension. 7805% #5 is (ignored optional) extension.
7690% #6 is just the usual extra ignored arg for parsing this stuff. 7806% #6 is just the usual extra ignored arg for parsing stuff.
7691\newif\ifimagevmode 7807\newif\ifimagevmode
7692\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup 7808\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
7693 \catcode`\^^M = 5 % in case we're inside an example 7809 \catcode`\^^M = 5 % in case we're inside an example
@@ -8339,8 +8455,8 @@ directory should work if nowhere else does.}
8339 \gdef^^ea{\ogonek{e}} 8455 \gdef^^ea{\ogonek{e}}
8340 \gdef^^eb{\"e} 8456 \gdef^^eb{\"e}
8341 \gdef^^ec{\v e} 8457 \gdef^^ec{\v e}
8342 \gdef^^ed{\'\i} 8458 \gdef^^ed{\'{\dotless{i}}}
8343 \gdef^^ee{\^\i} 8459 \gdef^^ee{\^{\dotless{i}}}
8344 \gdef^^ef{\v d} 8460 \gdef^^ef{\v d}
8345 % 8461 %
8346 \gdef^^f0{\dh} 8462 \gdef^^f0{\dh}
@@ -8899,8 +9015,8 @@ directory should work if nowhere else does.}
8899% Prevent underfull vbox error messages. 9015% Prevent underfull vbox error messages.
8900\vbadness = 10000 9016\vbadness = 10000
8901 9017
8902% Don't be so finicky about underfull hboxes, either. 9018% Don't be very finicky about underfull hboxes, either.
8903\hbadness = 2000 9019\hbadness = 6666
8904 9020
8905% Following George Bush, get rid of widows and orphans. 9021% Following George Bush, get rid of widows and orphans.
8906\widowpenalty=10000 9022\widowpenalty=10000