source: patches/glibc-2.7-branch_update-1A.patch@ a10d39b

Last change on this file since a10d39b was 67300de, checked in by Joe Ciccone <jciccone@…>, 16 years ago

Create a clfs-1.1 branch in preperation for a RC.

  • Property mode set to 100644
File size: 63.8 KB
RevLine 
[67300de]1Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
2Date: 10-25-2007
3 Altered to omit changes to nptl/sysdeps/powerpc/tcb-offsets.sym which don't compile
4 and are no longer in recent snapshots: Ken Moffat
5Initial Package Version: 2.7
6Origin: Upstream
7Upstream Status: Applied
8Description: This is a branch update for Glibc-2.7, and should be
9 rechecked periodically. See the 'Changelog' and 'localedata/ChangeLog'
10 for specific details.
11
12diff -Naur glibc-2.7.orig/ChangeLog glibc-2.7/ChangeLog
13--- glibc-2.7.orig/ChangeLog 2007-10-17 17:09:32.000000000 -0700
14+++ glibc-2.7/ChangeLog 2007-10-21 22:03:58.000000000 -0700
15@@ -1,3 +1,17 @@
16+2007-10-21 Andreas Jaeger <aj@suse.de>
17+
18+ * manual/texinfo.tex: Update to latest version.
19+
20+ * manual/sysinfo.texi (System Parameters): Fix Formatting.
21+
22+ * manual/arith.texi (Status bit operations): Fix formatting.
23+
24+ * manual/errno.texi (Error Messages): Fix formatting.
25+
26+ * manual/sysinfo.texi (System Parameters): Fix formatting.
27+
28+ * manual/libc.texinfo: Update VERSION and UPDATED.
29+
30 2007-10-17 Jakub Jelinek <jakub@redhat.com>
31
32 * sysdeps/x86_64/memset.S (bzero): Renamed to __bzero. Add
33diff -Naur glibc-2.7.orig/manual/arith.texi glibc-2.7/manual/arith.texi
34--- glibc-2.7.orig/manual/arith.texi 2004-10-05 20:02:14.000000000 -0700
35+++ glibc-2.7/manual/arith.texi 2007-10-21 22:03:58.000000000 -0700
36@@ -778,8 +778,7 @@
37
38 @comment fenv.h
39 @comment ISO
40-@deftypefun int fesetexceptflag (const fexcept_t *@var{flagp}, int
41-@var{excepts})
42+@deftypefun int fesetexceptflag (const fexcept_t *@var{flagp}, int @var{excepts})
43 This function restores the flags for the exceptions indicated by
44 @var{excepts} to the values stored in the variable pointed to by
45 @var{flagp}.
46diff -Naur glibc-2.7.orig/manual/errno.texi glibc-2.7/manual/errno.texi
47--- glibc-2.7.orig/manual/errno.texi 2007-07-21 23:53:48.000000000 -0700
48+++ glibc-2.7/manual/errno.texi 2007-10-21 22:03:58.000000000 -0700
49@@ -1494,7 +1494,7 @@
50
51 @comment error.h
52 @comment GNU
53-@deftypevar {void (*} error_print_progname ) (void)
54+@deftypevar {void (*) error_print_progname } (void)
55 If the @code{error_print_progname} variable is defined to a non-zero
56 value the function pointed to is called by @code{error} or
57 @code{error_at_line}. It is expected to print the program name or do
58diff -Naur glibc-2.7.orig/manual/libc.texinfo glibc-2.7/manual/libc.texinfo
59--- glibc-2.7.orig/manual/libc.texinfo 2007-07-30 18:53:58.000000000 -0700
60+++ glibc-2.7/manual/libc.texinfo 2007-10-21 22:03:58.000000000 -0700
61@@ -19,8 +19,8 @@
62
63 @c sold 0.06/1.09, print run out 21may96
64 @set EDITION 0.11
65-@set VERSION 2.6
66-@set UPDATED 2006-12-03
67+@set VERSION 2.7
68+@set UPDATED 2007-09-09
69 @set ISBN 1-882114-55-8
70
71 @copying
72diff -Naur glibc-2.7.orig/manual/sysinfo.texi glibc-2.7/manual/sysinfo.texi
73--- glibc-2.7.orig/manual/sysinfo.texi 2006-11-10 13:10:22.000000000 -0800
74+++ glibc-2.7/manual/sysinfo.texi 2007-10-21 22:03:58.000000000 -0700
75@@ -1066,8 +1066,7 @@
76
77 @comment sysctl.h
78 @comment BSD
79-@deftypefun int sysctl (int *@var{names}, int @var{nlen}, void *@var{oldval},
80- size_t *@var{oldlenp}, void *@var{newval}, size_t @var{newlen})
81+@deftypefun int sysctl (int *@var{names}, int @var{nlen}, void *@var{oldval}, size_t *@var{oldlenp}, void *@var{newval}, size_t @var{newlen})
82
83 @code{sysctl} gets or sets a specified system parameter. There are so
84 many of these parameters that it is not practical to list them all here,
85diff -Naur glibc-2.7.orig/manual/texinfo.tex glibc-2.7/manual/texinfo.tex
86--- glibc-2.7.orig/manual/texinfo.tex 2005-02-15 20:23:16.000000000 -0800
87+++ glibc-2.7/manual/texinfo.tex 2007-10-21 22:03:58.000000000 -0700
88@@ -3,11 +3,11 @@
89 % Load plain if necessary, i.e., if running under initex.
90 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
91 %
92-\def\texinfoversion{2004-11-25.16}
93+\def\texinfoversion{2006-11-08.17}
94 %
95 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
96-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
97-% Foundation, Inc.
98+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
99+% Software Foundation, Inc.
100 %
101 % This texinfo.tex file is free software; you can redistribute it and/or
102 % modify it under the terms of the GNU General Public License as
103@@ -21,8 +21,8 @@
104 %
105 % You should have received a copy of the GNU General Public License
106 % along with this texinfo.tex file; see the file COPYING. If not, write
107-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
108-% Boston, MA 02111-1307, USA.
109+% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
110+% Boston, MA 02110-1301, USA.
111 %
112 % As a special exception, when this file is read by TeX when processing
113 % a Texinfo source document, you may use the result without
114@@ -153,20 +153,22 @@
115 \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
116 \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
117
118-% In some macros, we cannot use the `\? notation---the left quote is
119-% in some cases the escape char.
120+% Since the category of space is not known, we have to be careful.
121+\chardef\spacecat = 10
122+\def\spaceisspace{\catcode`\ =\spacecat}
123+
124+% sometimes characters are active, so we need control sequences.
125 \chardef\colonChar = `\:
126 \chardef\commaChar = `\,
127+\chardef\dashChar = `\-
128 \chardef\dotChar = `\.
129 \chardef\exclamChar= `\!
130+\chardef\lquoteChar= `\`
131 \chardef\questChar = `\?
132+\chardef\rquoteChar= `\'
133 \chardef\semiChar = `\;
134 \chardef\underChar = `\_
135
136-\chardef\spaceChar = `\ %
137-\chardef\spacecat = 10
138-\def\spaceisspace{\catcode\spaceChar=\spacecat}
139-
140 % Ignore a token.
141 %
142 \def\gobble#1{}
143@@ -302,10 +304,14 @@
144 % take effect in \write's, yet the group defined by the \vbox ends
145 % before the \shipout runs.
146 %
147- \escapechar = `\\ % use backslash in output files.
148 \indexdummies % don't expand commands in the output.
149 \normalturnoffactive % \ in index entries must not stay \, e.g., if
150- % the page break happens to be in the middle of an example.
151+ % the page break happens to be in the middle of an example.
152+ % We don't want .vr (or whatever) entries like this:
153+ % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
154+ % "\acronym" won't work when it's read back in;
155+ % it needs to be
156+ % {\code {{\tt \backslashcurfont }acronym}
157 \shipout\vbox{%
158 % Do this early so pdf references go to the beginning of the page.
159 \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
160@@ -333,9 +339,9 @@
161 \pagebody{#1}%
162 \ifdim\ht\footlinebox > 0pt
163 % Only leave this space if the footline is nonempty.
164- % (We lessened \vsize for it in \oddfootingxxx.)
165+ % (We lessened \vsize for it in \oddfootingyyy.)
166 % The \baselineskip=24pt in plain's \makefootline has no effect.
167- \vskip 2\baselineskip
168+ \vskip 24pt
169 \unvbox\footlinebox
170 \fi
171 %
172@@ -356,7 +362,7 @@
173 \egroup % \vbox from first cropmarks clause
174 \fi
175 }% end of \shipout\vbox
176- }% end of group with \normalturnoffactive
177+ }% end of group with \indexdummies
178 \advancepageno
179 \ifnum\outputpenalty>-20000 \else\dosupereject\fi
180 }
181@@ -391,7 +397,7 @@
182 %
183 \def\parsearg{\parseargusing{}}
184 \def\parseargusing#1#2{%
185- \def\next{#2}%
186+ \def\argtorun{#2}%
187 \begingroup
188 \obeylines
189 \spaceisspace
190@@ -422,8 +428,7 @@
191 \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
192 \def\temp{#3}%
193 \ifx\temp\empty
194- % We cannot use \next here, as it holds the macro to run;
195- % thus we reuse \temp.
196+ % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
197 \let\temp\finishparsearg
198 \else
199 \let\temp\argcheckspaces
200@@ -435,14 +440,14 @@
201 % If a _delimited_ argument is enclosed in braces, they get stripped; so
202 % to get _exactly_ the rest of the line, we had to prevent such situation.
203 % We prepended an \empty token at the very beginning and we expand it now,
204-% just before passing the control to \next.
205+% just before passing the control to \argtorun.
206 % (Similarily, we have to think about #3 of \argcheckspacesY above: it is
207 % either the null string, or it ends with \^^M---thus there is no danger
208 % that a pair of braces would be stripped.
209 %
210 % But first, we have to remove the trailing space token.
211 %
212-\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
213+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
214
215 % \parseargdef\foo{...}
216 % is roughly equivalent to
217@@ -566,7 +571,7 @@
218 \let\}=\myrbrace
219 \begingroup
220 % Definitions to produce \{ and \} commands for indices,
221- % and @{ and @} for the aux file.
222+ % and @{ and @} for the aux/toc files.
223 \catcode`\{ = \other \catcode`\} = \other
224 \catcode`\[ = 1 \catcode`\] = 2
225 \catcode`\! = 0 \catcode`\\ = \other
226@@ -647,13 +652,28 @@
227 \let\/=\allowbreak
228
229 % @. is an end-of-sentence period.
230-\def\.{.\spacefactor=3000 }
231+\def\.{.\spacefactor=\endofsentencespacefactor\space}
232
233 % @! is an end-of-sentence bang.
234-\def\!{!\spacefactor=3000 }
235+\def\!{!\spacefactor=\endofsentencespacefactor\space}
236
237 % @? is an end-of-sentence query.
238-\def\?{?\spacefactor=3000 }
239+\def\?{?\spacefactor=\endofsentencespacefactor\space}
240+
241+% @frenchspacing on|off says whether to put extra space after punctuation.
242+%
243+\def\onword{on}
244+\def\offword{off}
245+%
246+\parseargdef\frenchspacing{%
247+ \def\temp{#1}%
248+ \ifx\temp\onword \plainfrenchspacing
249+ \else\ifx\temp\offword \plainnonfrenchspacing
250+ \else
251+ \errhelp = \EMsimple
252+ \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
253+ \fi\fi
254+}
255
256 % @w prevents a word break. Without the \leavevmode, @w at the
257 % beginning of a paragraph, when TeX is still in vertical mode, would
258@@ -1031,9 +1051,9 @@
259 % _ active, and distinguish by seeing if the current family is \slfam,
260 % which is what @var uses.
261 {
262- \catcode\underChar = \active
263+ \catcode`\_ = \active
264 \gdef\mathunderscore{%
265- \catcode\underChar=\active
266+ \catcode`\_=\active
267 \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
268 }
269 }
270@@ -1076,15 +1096,24 @@
271 \def\minus{$-$}
272
273 % @dots{} outputs an ellipsis using the current font.
274-% We do .5em per period so that it has the same spacing in a typewriter
275-% font as three actual period characters.
276+% We do .5em per period so that it has the same spacing in the cm
277+% typewriter fonts as three actual period characters; on the other hand,
278+% in other typewriter fonts three periods are wider than 1.5em. So do
279+% whichever is larger.
280 %
281 \def\dots{%
282 \leavevmode
283- \hbox to 1.5em{%
284- \hskip 0pt plus 0.25fil
285- .\hfil.\hfil.%
286- \hskip 0pt plus 0.5fil
287+ \setbox0=\hbox{...}% get width of three periods
288+ \ifdim\wd0 > 1.5em
289+ \dimen0 = \wd0
290+ \else
291+ \dimen0 = 1.5em
292+ \fi
293+ \hbox to \dimen0{%
294+ \hskip 0pt plus.25fil
295+ .\hskip 0pt plus1fil
296+ .\hskip 0pt plus1fil
297+ .\hskip 0pt plus.5fil
298 }%
299 }
300
301@@ -1092,7 +1121,7 @@
302 %
303 \def\enddots{%
304 \dots
305- \spacefactor=3000
306+ \spacefactor=\endofsentencespacefactor
307 }
308
309 % @comma{} is so commas can be inserted into text without messing up
310@@ -1176,13 +1205,98 @@
311 \fi
312 \fi
313 \fi
314-%
315+
316+% PDF uses PostScript string constants for the names of xref targets,
317+% for display in the outlines, and in other places. Thus, we have to
318+% double any backslashes. Otherwise, a name like "\node" will be
319+% interpreted as a newline (\n), followed by o, d, e. Not good.
320+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
321+% (and related messages, the final outcome is that it is up to the TeX
322+% user to double the backslashes and otherwise make the string valid, so
323+% that's what we do).
324+
325+% double active backslashes.
326+%
327+{\catcode`\@=0 \catcode`\\=\active
328+ @gdef@activebackslashdouble{%
329+ @catcode`@\=@active
330+ @let\=@doublebackslash}
331+}
332+
333+% To handle parens, we must adopt a different approach, since parens are
334+% not active characters. hyperref.dtx (which has the same problem as
335+% us) handles it with this amazing macro to replace tokens. I've
336+% tinkered with it a little for texinfo, but it's definitely from there.
337+%
338+% #1 is the tokens to replace.
339+% #2 is the replacement.
340+% #3 is the control sequence with the string.
341+%
342+\def\HyPsdSubst#1#2#3{%
343+ \def\HyPsdReplace##1#1##2\END{%
344+ ##1%
345+ \ifx\\##2\\%
346+ \else
347+ #2%
348+ \HyReturnAfterFi{%
349+ \HyPsdReplace##2\END
350+ }%
351+ \fi
352+ }%
353+ \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
354+}
355+\long\def\HyReturnAfterFi#1\fi{\fi#1}
356+
357+% #1 is a control sequence in which to do the replacements.
358+\def\backslashparens#1{%
359+ \xdef#1{#1}% redefine it as its expansion; the definition is simply
360+ % \lastnode when called from \setref -> \pdfmkdest.
361+ \HyPsdSubst{(}{\realbackslash(}{#1}%
362+ \HyPsdSubst{)}{\realbackslash)}{#1}%
363+}
364+
365+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
366+with PDF output, and none of those formats could be found. (.eps cannot
367+be supported due to the design of the PDF format; use regular TeX (DVI
368+output) for that.)}
369+
370 \ifpdf
371 \input pdfcolor
372 \pdfcatalog{/PageMode /UseOutlines}%
373+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
374 \def\dopdfimage#1#2#3{%
375- \def\imagewidth{#2}%
376- \def\imageheight{#3}%
377+ \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
378+ \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
379+ %
380+ % pdftex (and the PDF format) support .png, .jpg, .pdf (among
381+ % others). Let's try in that order.
382+ \let\pdfimgext=\empty
383+ \begingroup
384+ \openin 1 #1.png \ifeof 1
385+ \openin 1 #1.jpg \ifeof 1
386+ \openin 1 #1.jpeg \ifeof 1
387+ \openin 1 #1.JPG \ifeof 1
388+ \openin 1 #1.pdf \ifeof 1
389+ \errhelp = \nopdfimagehelp
390+ \errmessage{Could not find image file #1 for pdf}%
391+ \else
392+ \gdef\pdfimgext{pdf}%
393+ \fi
394+ \else
395+ \gdef\pdfimgext{JPG}%
396+ \fi
397+ \else
398+ \gdef\pdfimgext{jpeg}%
399+ \fi
400+ \else
401+ \gdef\pdfimgext{jpg}%
402+ \fi
403+ \else
404+ \gdef\pdfimgext{png}%
405+ \fi
406+ \closein 1
407+ \endgroup
408+ %
409 % without \immediate, pdftex seg faults when the same image is
410 % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
411 \ifnum\pdftexversion < 14
412@@ -1190,24 +1304,29 @@
413 \else
414 \immediate\pdfximage
415 \fi
416- \ifx\empty\imagewidth\else width \imagewidth \fi
417- \ifx\empty\imageheight\else height \imageheight \fi
418+ \ifdim \wd0 >0pt width \imagewidth \fi
419+ \ifdim \wd2 >0pt height \imageheight \fi
420 \ifnum\pdftexversion<13
421- #1.pdf%
422+ #1.\pdfimgext
423 \else
424- {#1.pdf}%
425+ {#1.\pdfimgext}%
426 \fi
427 \ifnum\pdftexversion < 14 \else
428 \pdfrefximage \pdflastximage
429 \fi}
430 \def\pdfmkdest#1{{%
431- % We have to set dummies so commands such as @code in a section title
432- % aren't expanded.
433+ % We have to set dummies so commands such as @code, and characters
434+ % such as \, aren't expanded when present in a section title.
435 \atdummies
436- \normalturnoffactive
437- \pdfdest name{#1} xyz%
438- }}
439- \def\pdfmkpgn#1{#1}
440+ \activebackslashdouble
441+ \def\pdfdestname{#1}%
442+ \backslashparens\pdfdestname
443+ \pdfdest name{\pdfdestname} xyz%
444+ }}%
445+ %
446+ % used to mark target names; must be expandable.
447+ \def\pdfmkpgn#1{#1}%
448+ %
449 \let\linkcolor = \Blue % was Cyan, but that seems light?
450 \def\endlink{\Black\pdfendlink}
451 % Adding outlines to PDF; macros for calculating structure of outlines
452@@ -1218,20 +1337,31 @@
453 \advance\tempnum by 1
454 \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
455 %
456- % #1 is the section text. #2 is the pdf expression for the number
457- % of subentries (or empty, for subsubsections). #3 is the node
458- % text, which might be empty if this toc entry had no
459- % corresponding node. #4 is the page number.
460+ % #1 is the section text, which is what will be displayed in the
461+ % outline by the pdf viewer. #2 is the pdf expression for the number
462+ % of subentries (or empty, for subsubsections). #3 is the node text,
463+ % which might be empty if this toc entry had no corresponding node.
464+ % #4 is the page number
465 %
466 \def\dopdfoutline#1#2#3#4{%
467 % Generate a link to the node text if that exists; else, use the
468 % page number. We could generate a destination for the section
469 % text in the case where a section has no node, but it doesn't
470- % seem worthwhile, since most documents are normally structured.
471+ % seem worth the trouble, since most documents are normally structured.
472 \def\pdfoutlinedest{#3}%
473- \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
474+ \ifx\pdfoutlinedest\empty
475+ \def\pdfoutlinedest{#4}%
476+ \else
477+ % Doubled backslashes in the name.
478+ {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
479+ \backslashparens\pdfoutlinedest}%
480+ \fi
481 %
482- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
483+ % Also double the backslashes in the display string.
484+ {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
485+ \backslashparens\pdfoutlinetext}%
486+ %
487+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
488 }
489 %
490 \def\pdfmakeoutlines{%
491@@ -1272,7 +1402,7 @@
492 \def\unnsecentry{\numsecentry}%
493 \def\unnsubsecentry{\numsubsecentry}%
494 \def\unnsubsubsecentry{\numsubsubsecentry}%
495- \input \jobname.toc
496+ \readdatafile{toc}%
497 %
498 % Read toc second time, this time actually producing the outlines.
499 % The `-' means take the \expnumber as the absolute number of
500@@ -1298,41 +1428,12 @@
501 % their "best" equivalent, based on the @documentencoding. Right
502 % now, I guess we'll just let the pdf reader have its way.
503 \indexnofonts
504- \turnoffactive
505+ \setupdatafile
506+ \catcode`\\=\active \otherbackslash
507 \input \jobname.toc
508 \endgroup
509 }
510 %
511- \def\makelinks #1,{%
512- \def\params{#1}\def\E{END}%
513- \ifx\params\E
514- \let\nextmakelinks=\relax
515- \else
516- \let\nextmakelinks=\makelinks
517- \ifnum\lnkcount>0,\fi
518- \picknum{#1}%
519- \startlink attr{/Border [0 0 0]}
520- goto name{\pdfmkpgn{\the\pgn}}%
521- \linkcolor #1%
522- \advance\lnkcount by 1%
523- \endlink
524- \fi
525- \nextmakelinks
526- }
527- \def\picknum#1{\expandafter\pn#1}
528- \def\pn#1{%
529- \def\p{#1}%
530- \ifx\p\lbrace
531- \let\nextpn=\ppn
532- \else
533- \let\nextpn=\ppnn
534- \def\first{#1}
535- \fi
536- \nextpn
537- }
538- \def\ppn#1{\pgn=#1\gobble}
539- \def\ppnn{\pgn=\first}
540- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
541 \def\skipspaces#1{\def\PP{#1}\def\D{|}%
542 \ifx\PP\D\let\nextsp\relax
543 \else\let\nextsp\skipspaces
544@@ -1347,9 +1448,17 @@
545 \else
546 \let \startlink \pdfstartlink
547 \fi
548+ % make a live url in pdf output.
549 \def\pdfurl#1{%
550 \begingroup
551- \normalturnoffactive\def\@{@}%
552+ % it seems we really need yet another set of dummies; have not
553+ % tried to figure out what each command should do in the context
554+ % of @url. for now, just make @/ a no-op, that's the only one
555+ % people have actually reported a problem with.
556+ %
557+ \normalturnoffactive
558+ \def\@{@}%
559+ \let\/=\empty
560 \makevalueexpandable
561 \leavevmode\Red
562 \startlink attr{/Border [0 0 0]}%
563@@ -1419,6 +1528,7 @@
564 % We don't need math for this font style.
565 \def\ttsl{\setfontstyle{ttsl}}
566
567+
568 % Default leading.
569 \newdimen\textleading \textleading = 13.2pt
570
571@@ -1440,11 +1550,13 @@
572 }%
573 }
574
575+
576 % Set the font macro #1 to the font named #2, adding on the
577 % specified font prefix (normally `cm').
578 % #3 is the font's design size, #4 is a scale factor
579 \def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
580
581+
582 % Use cm as the default font prefix.
583 % To specify the font prefix, you must define \fontprefix
584 % before you read in texinfo.tex.
585@@ -1468,6 +1580,10 @@
586 \def\scshape{csc}
587 \def\scbshape{csc}
588
589+% Definitions for a main text size of 11pt. This is the default in
590+% Texinfo.
591+%
592+\def\definetextfontsizexi{
593 % Text fonts (11.2pt, magstep1).
594 \def\textnominalsize{11pt}
595 \edef\mainmagstep{\magstephalf}
596@@ -1581,6 +1697,165 @@
597 \font\reducedi=cmmi10
598 \font\reducedsy=cmsy10
599
600+% reset the current fonts
601+\textfonts
602+\rm
603+} % end of 11pt text font size definitions
604+
605+
606+% Definitions to make the main text be 10pt Computer Modern, with
607+% section, chapter, etc., sizes following suit. This is for the GNU
608+% Press printing of the Emacs 22 manual. Maybe other manuals in the
609+% future. Used with @smallbook, which sets the leading to 12pt.
610+%
611+\def\definetextfontsizex{%
612+% Text fonts (10pt).
613+\def\textnominalsize{10pt}
614+\edef\mainmagstep{1000}
615+\setfont\textrm\rmshape{10}{\mainmagstep}
616+\setfont\texttt\ttshape{10}{\mainmagstep}
617+\setfont\textbf\bfshape{10}{\mainmagstep}
618+\setfont\textit\itshape{10}{\mainmagstep}
619+\setfont\textsl\slshape{10}{\mainmagstep}
620+\setfont\textsf\sfshape{10}{\mainmagstep}
621+\setfont\textsc\scshape{10}{\mainmagstep}
622+\setfont\textttsl\ttslshape{10}{\mainmagstep}
623+\font\texti=cmmi10 scaled \mainmagstep
624+\font\textsy=cmsy10 scaled \mainmagstep
625+
626+% A few fonts for @defun names and args.
627+\setfont\defbf\bfshape{10}{\magstephalf}
628+\setfont\deftt\ttshape{10}{\magstephalf}
629+\setfont\defttsl\ttslshape{10}{\magstephalf}
630+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
631+
632+% Fonts for indices, footnotes, small examples (9pt).
633+\def\smallnominalsize{9pt}
634+\setfont\smallrm\rmshape{9}{1000}
635+\setfont\smalltt\ttshape{9}{1000}
636+\setfont\smallbf\bfshape{10}{900}
637+\setfont\smallit\itshape{9}{1000}
638+\setfont\smallsl\slshape{9}{1000}
639+\setfont\smallsf\sfshape{9}{1000}
640+\setfont\smallsc\scshape{10}{900}
641+\setfont\smallttsl\ttslshape{10}{900}
642+\font\smalli=cmmi9
643+\font\smallsy=cmsy9
644+
645+% Fonts for small examples (8pt).
646+\def\smallernominalsize{8pt}
647+\setfont\smallerrm\rmshape{8}{1000}
648+\setfont\smallertt\ttshape{8}{1000}
649+\setfont\smallerbf\bfshape{10}{800}
650+\setfont\smallerit\itshape{8}{1000}
651+\setfont\smallersl\slshape{8}{1000}
652+\setfont\smallersf\sfshape{8}{1000}
653+\setfont\smallersc\scshape{10}{800}
654+\setfont\smallerttsl\ttslshape{10}{800}
655+\font\smalleri=cmmi8
656+\font\smallersy=cmsy8
657+
658+% Fonts for title page (20.4pt):
659+\def\titlenominalsize{20pt}
660+\setfont\titlerm\rmbshape{12}{\magstep3}
661+\setfont\titleit\itbshape{10}{\magstep4}
662+\setfont\titlesl\slbshape{10}{\magstep4}
663+\setfont\titlett\ttbshape{12}{\magstep3}
664+\setfont\titlettsl\ttslshape{10}{\magstep4}
665+\setfont\titlesf\sfbshape{17}{\magstep1}
666+\let\titlebf=\titlerm
667+\setfont\titlesc\scbshape{10}{\magstep4}
668+\font\titlei=cmmi12 scaled \magstep3
669+\font\titlesy=cmsy10 scaled \magstep4
670+\def\authorrm{\secrm}
671+\def\authortt{\sectt}
672+
673+% Chapter fonts (14.4pt).
674+\def\chapnominalsize{14pt}
675+\setfont\chaprm\rmbshape{12}{\magstep1}
676+\setfont\chapit\itbshape{10}{\magstep2}
677+\setfont\chapsl\slbshape{10}{\magstep2}
678+\setfont\chaptt\ttbshape{12}{\magstep1}
679+\setfont\chapttsl\ttslshape{10}{\magstep2}
680+\setfont\chapsf\sfbshape{12}{\magstep1}
681+\let\chapbf\chaprm
682+\setfont\chapsc\scbshape{10}{\magstep2}
683+\font\chapi=cmmi12 scaled \magstep1
684+\font\chapsy=cmsy10 scaled \magstep2
685+
686+% Section fonts (12pt).
687+\def\secnominalsize{12pt}
688+\setfont\secrm\rmbshape{12}{1000}
689+\setfont\secit\itbshape{10}{\magstep1}
690+\setfont\secsl\slbshape{10}{\magstep1}
691+\setfont\sectt\ttbshape{12}{1000}
692+\setfont\secttsl\ttslshape{10}{\magstep1}
693+\setfont\secsf\sfbshape{12}{1000}
694+\let\secbf\secrm
695+\setfont\secsc\scbshape{10}{\magstep1}
696+\font\seci=cmmi12
697+\font\secsy=cmsy10 scaled \magstep1
698+
699+% Subsection fonts (10pt).
700+\def\ssecnominalsize{10pt}
701+\setfont\ssecrm\rmbshape{10}{1000}
702+\setfont\ssecit\itbshape{10}{1000}
703+\setfont\ssecsl\slbshape{10}{1000}
704+\setfont\ssectt\ttbshape{10}{1000}
705+\setfont\ssecttsl\ttslshape{10}{1000}
706+\setfont\ssecsf\sfbshape{10}{1000}
707+\let\ssecbf\ssecrm
708+\setfont\ssecsc\scbshape{10}{1000}
709+\font\sseci=cmmi10
710+\font\ssecsy=cmsy10
711+
712+% Reduced fonts for @acro in text (9pt).
713+\def\reducednominalsize{9pt}
714+\setfont\reducedrm\rmshape{9}{1000}
715+\setfont\reducedtt\ttshape{9}{1000}
716+\setfont\reducedbf\bfshape{10}{900}
717+\setfont\reducedit\itshape{9}{1000}
718+\setfont\reducedsl\slshape{9}{1000}
719+\setfont\reducedsf\sfshape{9}{1000}
720+\setfont\reducedsc\scshape{10}{900}
721+\setfont\reducedttsl\ttslshape{10}{900}
722+\font\reducedi=cmmi9
723+\font\reducedsy=cmsy9
724+
725+% reduce space between paragraphs
726+\divide\parskip by 2
727+
728+% reset the current fonts
729+\textfonts
730+\rm
731+} % end of 10pt text font size definitions
732+
733+
734+% We provide the user-level command
735+% @fonttextsize 10
736+% (or 11) to redefine the text font size. pt is assumed.
737+%
738+\def\xword{10}
739+\def\xiword{11}
740+%
741+\parseargdef\fonttextsize{%
742+ \def\textsizearg{#1}%
743+ \wlog{doing @fonttextsize \textsizearg}%
744+ %
745+ % Set \globaldefs so that documents can use this inside @tex, since
746+ % makeinfo 4.8 does not support it, but we need it nonetheless.
747+ %
748+ \begingroup \globaldefs=1
749+ \ifx\textsizearg\xword \definetextfontsizex
750+ \else \ifx\textsizearg\xiword \definetextfontsizexi
751+ \else
752+ \errhelp=\EMsimple
753+ \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
754+ \fi\fi
755+ \endgroup
756+}
757+
758+
759 % In order for the font changes to affect most math symbols and letters,
760 % we have to define the \textfont of the standard families. Since
761 % texinfo doesn't allow for producing subscripts and superscripts except
762@@ -1691,7 +1966,7 @@
763
764 % Set up the default fonts, so we can use them for creating boxes.
765 %
766-\textfonts \rm
767+\definetextfontsizexi
768
769 % Define these so they can be easily changed for other fonts.
770 \def\angleleft{$\langle$}
771@@ -1749,14 +2024,21 @@
772 % sometimes \x has an active definition that messes things up.
773 %
774 \catcode`@=11
775- \def\frenchspacing{%
776+ \def\plainfrenchspacing{%
777 \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
778 \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
779+ \def\endofsentencespacefactor{1000}% for @. and friends
780+ }
781+ \def\plainnonfrenchspacing{%
782+ \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
783+ \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
784+ \def\endofsentencespacefactor{3000}% for @. and friends
785 }
786 \catcode`@=\other
787+\def\endofsentencespacefactor{3000}% default
788
789 \def\t#1{%
790- {\tt \rawbackslash \frenchspacing #1}%
791+ {\tt \rawbackslash \plainfrenchspacing #1}%
792 \null
793 }
794 \def\samp#1{`\tclose{#1}'\null}
795@@ -1768,6 +2050,7 @@
796 \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
797 \kern-0.4pt\hrule}%
798 \kern-.06em\raise0.4pt\hbox{\angleright}}}}
799+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
800 % The old definition, with no lozenge:
801 %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
802 \def\ctrl #1{{\tt \rawbackslash \hat}#1}
803@@ -1793,7 +2076,7 @@
804 \nohyphenation
805 %
806 \rawbackslash
807- \frenchspacing
808+ \plainfrenchspacing
809 #1%
810 }%
811 \null
812@@ -1809,12 +2092,21 @@
813 % and arrange explicitly to hyphenate at a dash.
814 % -- rms.
815 {
816- \catcode`\-=\active
817- \catcode`\_=\active
818+ \catcode`\-=\active \catcode`\_=\active
819+ \catcode`\'=\active \catcode`\`=\active
820 %
821 \global\def\code{\begingroup
822- \catcode`\-=\active \let-\codedash
823- \catcode`\_=\active \let_\codeunder
824+ \catcode\rquoteChar=\active \catcode\lquoteChar=\active
825+ \let'\codequoteright \let`\codequoteleft
826+ %
827+ \catcode\dashChar=\active \catcode\underChar=\active
828+ \ifallowcodebreaks
829+ \let-\codedash
830+ \let_\codeunder
831+ \else
832+ \let-\realdash
833+ \let_\realunder
834+ \fi
835 \codex
836 }
837 }
838@@ -1834,6 +2126,28 @@
839 }
840 \def\codex #1{\tclose{#1}\endgroup}
841
842+% An additional complication: the above will allow breaks after, e.g.,
843+% each of the four underscores in __typeof__. This is undesirable in
844+% some manuals, especially if they don't have long identifiers in
845+% general. @allowcodebreaks provides a way to control this.
846+%
847+\newif\ifallowcodebreaks \allowcodebreakstrue
848+
849+\def\keywordtrue{true}
850+\def\keywordfalse{false}
851+
852+\parseargdef\allowcodebreaks{%
853+ \def\txiarg{#1}%
854+ \ifx\txiarg\keywordtrue
855+ \allowcodebreakstrue
856+ \else\ifx\txiarg\keywordfalse
857+ \allowcodebreaksfalse
858+ \else
859+ \errhelp = \EMsimple
860+ \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
861+ \fi\fi
862+}
863+
864 % @kbd is like @code, except that if the argument is just one @key command,
865 % then @kbd has no effect.
866
867@@ -1841,16 +2155,16 @@
868 % `example' (@kbd uses ttsl only inside of @example and friends),
869 % or `code' (@kbd uses normal tty font always).
870 \parseargdef\kbdinputstyle{%
871- \def\arg{#1}%
872- \ifx\arg\worddistinct
873+ \def\txiarg{#1}%
874+ \ifx\txiarg\worddistinct
875 \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
876- \else\ifx\arg\wordexample
877+ \else\ifx\txiarg\wordexample
878 \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
879- \else\ifx\arg\wordcode
880+ \else\ifx\txiarg\wordcode
881 \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
882 \else
883 \errhelp = \EMsimple
884- \errmessage{Unknown @kbdinputstyle option `\arg'}%
885+ \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
886 \fi\fi\fi
887 }
888 \def\worddistinct{distinct}
889@@ -1962,7 +2276,7 @@
890 %
891 \def\abbr#1{\doabbr #1,,\finish}
892 \def\doabbr#1,#2,#3\finish{%
893- {\frenchspacing #1}%
894+ {\plainfrenchspacing #1}%
895 \def\temp{#2}%
896 \ifx\temp\empty \else
897 \space ({\unsepspaces \ignorespaces \temp \unskip})%
898@@ -2000,7 +2314,7 @@
899 \def\eurofont{%
900 % We set the font at each command, rather than predefining it in
901 % \textfonts and the other font-switching commands, so that
902- % installations which never need the symbold don't have to have the
903+ % installations which never need the symbol don't have to have the
904 % font installed.
905 %
906 % There is only one designed size (nominal 10pt), so we always scale
907@@ -2031,6 +2345,10 @@
908 }$%
909 }
910
911+% @textdegree - the normal degrees sign.
912+%
913+\def\textdegree{$^\circ$}
914+
915 % Laurent Siebenmann reports \Orb undefined with:
916 % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
917 % so we'll define it if necessary.
918@@ -2202,8 +2520,8 @@
919 %
920 % Leave some space for the footline. Hopefully ok to assume
921 % @evenfooting will not be used by itself.
922- \global\advance\pageheight by -\baselineskip
923- \global\advance\vsize by -\baselineskip
924+ \global\advance\pageheight by -12pt
925+ \global\advance\vsize by -12pt
926 }
927
928 \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
929@@ -2862,6 +3180,7 @@
930
931 \def\doignore#1{\begingroup
932 % Scan in ``verbatim'' mode:
933+ \obeylines
934 \catcode`\@ = \other
935 \catcode`\{ = \other
936 \catcode`\} = \other
937@@ -2882,16 +3201,16 @@
938 \gdef\dodoignore#1{%
939 % #1 contains the command name as a string, e.g., `ifinfo'.
940 %
941- % Define a command to find the next `@end #1', which must be on a line
942- % by itself.
943- \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
944+ % Define a command to find the next `@end #1'.
945+ \long\def\doignoretext##1^^M@end #1{%
946+ \doignoretextyyy##1^^M@#1\_STOP_}%
947+ %
948 % And this command to find another #1 command, at the beginning of a
949 % line. (Otherwise, we would consider a line `@c @ifset', for
950 % example, to count as an @ifset for nesting.)
951 \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
952 %
953 % And now expand that command.
954- \obeylines %
955 \doignoretext ^^M%
956 }%
957 }
958@@ -2921,7 +3240,12 @@
959 }
960
961 % Finish off ignored text.
962-\def\enddoignore{\endgroup\ignorespaces}
963+{ \obeylines%
964+ % Ignore anything after the last `@end #1'; this matters in verbatim
965+ % environments, where otherwise the newline after an ignored conditional
966+ % would result in a blank line in the output.
967+ \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
968+}
969
970
971 % @set VAR sets the variable VAR to an empty value.
972@@ -3121,42 +3445,50 @@
973 % we have to laboriously prevent expansion for those that we don't.
974 %
975 \def\indexdummies{%
976+ \escapechar = `\\ % use backslash in output files.
977 \def\@{@}% change to @@ when we switch to @ as escape char in index files.
978 \def\ {\realbackslash\space }%
979+ %
980 % Need these in case \tex is in effect and \{ is a \delimiter again.
981 % But can't use \lbracecmd and \rbracecmd because texindex assumes
982 % braces and backslashes are used only as delimiters.
983 \let\{ = \mylbrace
984 \let\} = \myrbrace
985 %
986- % \definedummyword defines \#1 as \realbackslash #1\space, thus
987- % effectively preventing its expansion. This is used only for control
988- % words, not control letters, because the \space would be incorrect
989- % for control characters, but is needed to separate the control word
990- % from whatever follows.
991- %
992- % For control letters, we have \definedummyletter, which omits the
993- % space.
994- %
995- % These can be used both for control words that take an argument and
996- % those that do not. If it is followed by {arg} in the input, then
997- % that will dutifully get written to the index (or wherever).
998- %
999- \def\definedummyword##1{%
1000- \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
1001- }%
1002- \def\definedummyletter##1{%
1003- \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
1004- }%
1005- \let\definedummyaccent\definedummyletter
1006+ % I don't entirely understand this, but when an index entry is
1007+ % generated from a macro call, the \endinput which \scanmacro inserts
1008+ % causes processing to be prematurely terminated. This is,
1009+ % apparently, because \indexsorttmp is fully expanded, and \endinput
1010+ % is an expandable command. The redefinition below makes \endinput
1011+ % disappear altogether for that purpose -- although logging shows that
1012+ % processing continues to some further point. On the other hand, it
1013+ % seems \endinput does not hurt in the printed index arg, since that
1014+ % is still getting written without apparent harm.
1015+ %
1016+ % Sample source (mac-idx3.tex, reported by Graham Percival to
1017+ % help-texinfo, 22may06):
1018+ % @macro funindex {WORD}
1019+ % @findex xyz
1020+ % @end macro
1021+ % ...
1022+ % @funindex commtest
1023+ %
1024+ % The above is not enough to reproduce the bug, but it gives the flavor.
1025+ %
1026+ % Sample whatsit resulting:
1027+ % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
1028+ %
1029+ % So:
1030+ \let\endinput = \empty
1031 %
1032 % Do the redefinitions.
1033 \commondummies
1034 }
1035
1036-% For the aux file, @ is the escape character. So we want to redefine
1037-% everything using @ instead of \realbackslash. When everything uses
1038-% @, this will be simpler.
1039+% For the aux and toc files, @ is the escape character. So we want to
1040+% redefine everything using @ as the escape character (instead of
1041+% \realbackslash, still used for index files). When everything uses @,
1042+% this will be simpler.
1043 %
1044 \def\atdummies{%
1045 \def\@{@@}%
1046@@ -3164,147 +3496,152 @@
1047 \let\{ = \lbraceatcmd
1048 \let\} = \rbraceatcmd
1049 %
1050- % (See comments in \indexdummies.)
1051- \def\definedummyword##1{%
1052- \expandafter\def\csname ##1\endcsname{@##1\space}%
1053- }%
1054- \def\definedummyletter##1{%
1055- \expandafter\def\csname ##1\endcsname{@##1}%
1056- }%
1057- \let\definedummyaccent\definedummyletter
1058- %
1059 % Do the redefinitions.
1060 \commondummies
1061+ \otherbackslash
1062 }
1063
1064-% Called from \indexdummies and \atdummies. \definedummyword and
1065-% \definedummyletter must be defined first.
1066+% Called from \indexdummies and \atdummies.
1067 %
1068 \def\commondummies{%
1069 %
1070- \normalturnoffactive
1071+ % \definedummyword defines \#1 as \string\#1\space, thus effectively
1072+ % preventing its expansion. This is used only for control% words,
1073+ % not control letters, because the \space would be incorrect for
1074+ % control characters, but is needed to separate the control word
1075+ % from whatever follows.
1076+ %
1077+ % For control letters, we have \definedummyletter, which omits the
1078+ % space.
1079+ %
1080+ % These can be used both for control words that take an argument and
1081+ % those that do not. If it is followed by {arg} in the input, then
1082+ % that will dutifully get written to the index (or wherever).
1083+ %
1084+ \def\definedummyword ##1{\def##1{\string##1\space}}%
1085+ \def\definedummyletter##1{\def##1{\string##1}}%
1086+ \let\definedummyaccent\definedummyletter
1087 %
1088 \commondummiesnofonts
1089 %
1090- \definedummyletter{_}%
1091+ \definedummyletter\_%
1092 %
1093 % Non-English letters.
1094- \definedummyword{AA}%
1095- \definedummyword{AE}%
1096- \definedummyword{L}%
1097- \definedummyword{OE}%
1098- \definedummyword{O}%
1099- \definedummyword{aa}%
1100- \definedummyword{ae}%
1101- \definedummyword{l}%
1102- \definedummyword{oe}%
1103- \definedummyword{o}%
1104- \definedummyword{ss}%
1105- \definedummyword{exclamdown}%
1106- \definedummyword{questiondown}%
1107- \definedummyword{ordf}%
1108- \definedummyword{ordm}%
1109+ \definedummyword\AA
1110+ \definedummyword\AE
1111+ \definedummyword\L
1112+ \definedummyword\OE
1113+ \definedummyword\O
1114+ \definedummyword\aa
1115+ \definedummyword\ae
1116+ \definedummyword\l
1117+ \definedummyword\oe
1118+ \definedummyword\o
1119+ \definedummyword\ss
1120+ \definedummyword\exclamdown
1121+ \definedummyword\questiondown
1122+ \definedummyword\ordf
1123+ \definedummyword\ordm
1124 %
1125 % Although these internal commands shouldn't show up, sometimes they do.
1126- \definedummyword{bf}%
1127- \definedummyword{gtr}%
1128- \definedummyword{hat}%
1129- \definedummyword{less}%
1130- \definedummyword{sf}%
1131- \definedummyword{sl}%
1132- \definedummyword{tclose}%
1133- \definedummyword{tt}%
1134+ \definedummyword\bf
1135+ \definedummyword\gtr
1136+ \definedummyword\hat
1137+ \definedummyword\less
1138+ \definedummyword\sf
1139+ \definedummyword\sl
1140+ \definedummyword\tclose
1141+ \definedummyword\tt
1142 %
1143- \definedummyword{LaTeX}%
1144- \definedummyword{TeX}%
1145+ \definedummyword\LaTeX
1146+ \definedummyword\TeX
1147 %
1148 % Assorted special characters.
1149- \definedummyword{bullet}%
1150- \definedummyword{comma}%
1151- \definedummyword{copyright}%
1152- \definedummyword{registeredsymbol}%
1153- \definedummyword{dots}%
1154- \definedummyword{enddots}%
1155- \definedummyword{equiv}%
1156- \definedummyword{error}%
1157- \definedummyword{euro}%
1158- \definedummyword{expansion}%
1159- \definedummyword{minus}%
1160- \definedummyword{pounds}%
1161- \definedummyword{point}%
1162- \definedummyword{print}%
1163- \definedummyword{result}%
1164+ \definedummyword\bullet
1165+ \definedummyword\comma
1166+ \definedummyword\copyright
1167+ \definedummyword\registeredsymbol
1168+ \definedummyword\dots
1169+ \definedummyword\enddots
1170+ \definedummyword\equiv
1171+ \definedummyword\error
1172+ \definedummyword\euro
1173+ \definedummyword\expansion
1174+ \definedummyword\minus
1175+ \definedummyword\pounds
1176+ \definedummyword\point
1177+ \definedummyword\print
1178+ \definedummyword\result
1179+ \definedummyword\textdegree
1180+ %
1181+ % We want to disable all macros so that they are not expanded by \write.
1182+ \macrolist
1183+ %
1184+ \normalturnoffactive
1185 %
1186 % Handle some cases of @value -- where it does not contain any
1187 % (non-fully-expandable) commands.
1188 \makevalueexpandable
1189- %
1190- % Normal spaces, not active ones.
1191- \unsepspaces
1192- %
1193- % No macro expansion.
1194- \turnoffmacros
1195 }
1196
1197 % \commondummiesnofonts: common to \commondummies and \indexnofonts.
1198 %
1199-% Better have this without active chars.
1200-{
1201- \catcode`\~=\other
1202- \gdef\commondummiesnofonts{%
1203- % Control letters and accents.
1204- \definedummyletter{!}%
1205- \definedummyaccent{"}%
1206- \definedummyaccent{'}%
1207- \definedummyletter{*}%
1208- \definedummyaccent{,}%
1209- \definedummyletter{.}%
1210- \definedummyletter{/}%
1211- \definedummyletter{:}%
1212- \definedummyaccent{=}%
1213- \definedummyletter{?}%
1214- \definedummyaccent{^}%
1215- \definedummyaccent{`}%
1216- \definedummyaccent{~}%
1217- \definedummyword{u}%
1218- \definedummyword{v}%
1219- \definedummyword{H}%
1220- \definedummyword{dotaccent}%
1221- \definedummyword{ringaccent}%
1222- \definedummyword{tieaccent}%
1223- \definedummyword{ubaraccent}%
1224- \definedummyword{udotaccent}%
1225- \definedummyword{dotless}%
1226- %
1227- % Texinfo font commands.
1228- \definedummyword{b}%
1229- \definedummyword{i}%
1230- \definedummyword{r}%
1231- \definedummyword{sc}%
1232- \definedummyword{t}%
1233- %
1234- % Commands that take arguments.
1235- \definedummyword{acronym}%
1236- \definedummyword{cite}%
1237- \definedummyword{code}%
1238- \definedummyword{command}%
1239- \definedummyword{dfn}%
1240- \definedummyword{emph}%
1241- \definedummyword{env}%
1242- \definedummyword{file}%
1243- \definedummyword{kbd}%
1244- \definedummyword{key}%
1245- \definedummyword{math}%
1246- \definedummyword{option}%
1247- \definedummyword{samp}%
1248- \definedummyword{strong}%
1249- \definedummyword{tie}%
1250- \definedummyword{uref}%
1251- \definedummyword{url}%
1252- \definedummyword{var}%
1253- \definedummyword{verb}%
1254- \definedummyword{w}%
1255- }
1256+\def\commondummiesnofonts{%
1257+ % Control letters and accents.
1258+ \definedummyletter\!%
1259+ \definedummyaccent\"%
1260+ \definedummyaccent\'%
1261+ \definedummyletter\*%
1262+ \definedummyaccent\,%
1263+ \definedummyletter\.%
1264+ \definedummyletter\/%
1265+ \definedummyletter\:%
1266+ \definedummyaccent\=%
1267+ \definedummyletter\?%
1268+ \definedummyaccent\^%
1269+ \definedummyaccent\`%
1270+ \definedummyaccent\~%
1271+ \definedummyword\u
1272+ \definedummyword\v
1273+ \definedummyword\H
1274+ \definedummyword\dotaccent
1275+ \definedummyword\ringaccent
1276+ \definedummyword\tieaccent
1277+ \definedummyword\ubaraccent
1278+ \definedummyword\udotaccent
1279+ \definedummyword\dotless
1280+ %
1281+ % Texinfo font commands.
1282+ \definedummyword\b
1283+ \definedummyword\i
1284+ \definedummyword\r
1285+ \definedummyword\sc
1286+ \definedummyword\t
1287+ %
1288+ % Commands that take arguments.
1289+ \definedummyword\acronym
1290+ \definedummyword\cite
1291+ \definedummyword\code
1292+ \definedummyword\command
1293+ \definedummyword\dfn
1294+ \definedummyword\emph
1295+ \definedummyword\env
1296+ \definedummyword\file
1297+ \definedummyword\kbd
1298+ \definedummyword\key
1299+ \definedummyword\math
1300+ \definedummyword\option
1301+ \definedummyword\pxref
1302+ \definedummyword\ref
1303+ \definedummyword\samp
1304+ \definedummyword\strong
1305+ \definedummyword\tie
1306+ \definedummyword\uref
1307+ \definedummyword\url
1308+ \definedummyword\var
1309+ \definedummyword\verb
1310+ \definedummyword\w
1311+ \definedummyword\xref
1312 }
1313
1314 % \indexnofonts is used when outputting the strings to sort the index
1315@@ -3314,13 +3651,9 @@
1316 %
1317 \def\indexnofonts{%
1318 % Accent commands should become @asis.
1319- \def\definedummyaccent##1{%
1320- \expandafter\let\csname ##1\endcsname\asis
1321- }%
1322+ \def\definedummyaccent##1{\let##1\asis}%
1323 % We can just ignore other control letters.
1324- \def\definedummyletter##1{%
1325- \expandafter\def\csname ##1\endcsname{}%
1326- }%
1327+ \def\definedummyletter##1{\let##1\empty}%
1328 % Hopefully, all control words can become @asis.
1329 \let\definedummyword\definedummyaccent
1330 %
1331@@ -3373,9 +3706,19 @@
1332 \def\point{.}%
1333 \def\print{-|}%
1334 \def\result{=>}%
1335+ \def\textdegree{degrees}%
1336 %
1337- % Don't write macro names.
1338- \emptyusermacros
1339+ % We need to get rid of all macros, leaving only the arguments (if present).
1340+ % Of course this is not nearly correct, but it is the best we can do for now.
1341+ % makeinfo does not expand macros in the argument to @deffn, which ends up
1342+ % writing an index entry, and texindex isn't prepared for an index sort entry
1343+ % that starts with \.
1344+ %
1345+ % Since macro invocations are followed by braces, we can just redefine them
1346+ % to take a single TeX argument. The case of a macro invocation that
1347+ % goes to end-of-line is not handled.
1348+ %
1349+ \macrolist
1350 }
1351
1352 \let\indexbackslash=0 %overridden during \printindex.
1353@@ -3422,7 +3765,6 @@
1354 %
1355 % Remember, we are within a group.
1356 \indexdummies % Must do this here, since \bf, etc expand at this stage
1357- \escapechar=`\\
1358 \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
1359 % so it will be output as is; and it will print as backslash.
1360 %
1361@@ -3713,9 +4055,9 @@
1362 \endgroup
1363 }
1364
1365-% Like \dotfill except takes at least 1 em.
1366+% Like plain.tex's \dotfill, except uses up at least 1 em.
1367 \def\indexdotfill{\cleaders
1368- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
1369+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
1370
1371 \def\primary #1{\line{#1\hfil}}
1372
1373@@ -4289,14 +4631,17 @@
1374 \ifx\temptype\Ynothingkeyword
1375 \setbox0 = \hbox{}%
1376 \def\toctype{unnchap}%
1377- \def\thischapter{#1}%
1378+ \gdef\thischapternum{}%
1379+ \gdef\thischapter{#1}%
1380 \else\ifx\temptype\Yomitfromtockeyword
1381 \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
1382 \def\toctype{omit}%
1383- \xdef\thischapter{}%
1384+ \gdef\thischapternum{}%
1385+ \gdef\thischapter{}%
1386 \else\ifx\temptype\Yappendixkeyword
1387 \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
1388 \def\toctype{app}%
1389+ \xdef\thischapternum{\appendixletter}%
1390 % We don't substitute the actual chapter name into \thischapter
1391 % because we don't want its macros evaluated now. And we don't
1392 % use \thissection because that changes with each section.
1393@@ -4306,6 +4651,7 @@
1394 \else
1395 \setbox0 = \hbox{#3\enspace}%
1396 \def\toctype{numchap}%
1397+ \xdef\thischapternum{\the\chapno}%
1398 \xdef\thischapter{\putwordChapter{} \the\chapno:
1399 \noexpand\thischaptername}%
1400 \fi\fi\fi
1401@@ -4417,13 +4763,21 @@
1402 \gdef\thissection{#1}%
1403 \fi\fi\fi
1404 %
1405- % Write the toc entry (before \donoderef). See comments in \chfplain.
1406+ % Write the toc entry (before \donoderef). See comments in \chapmacro.
1407 \writetocentry{\toctype\sectionlevel}{#1}{#4}%
1408 %
1409 % Write the node reference (= pdf destination for pdftex).
1410- % Again, see comments in \chfplain.
1411+ % Again, see comments in \chapmacro.
1412 \donoderef{#3}%
1413 %
1414+ % Interline glue will be inserted when the vbox is completed.
1415+ % That glue will be a valid breakpoint for the page, since it'll be
1416+ % preceded by a whatsit (usually from the \donoderef, or from the
1417+ % \writetocentry if there was no node). We don't want to allow that
1418+ % break, since then the whatsits could end up on page n while the
1419+ % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
1420+ \nobreak
1421+ %
1422 % Output the actual section heading.
1423 \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
1424 \hangindent=\wd0 % zero if no section number
1425@@ -4482,11 +4836,11 @@
1426 \fi
1427 %
1428 \iflinks
1429- \toks0 = {#2}%
1430- \toks2 = \expandafter{\lastnode}%
1431- \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
1432- {\the\toks2}{\noexpand\folio}}}%
1433- \temp
1434+ {\atdummies
1435+ \edef\temp{%
1436+ \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
1437+ \temp
1438+ }%
1439 \fi
1440 \fi
1441 %
1442@@ -4499,6 +4853,31 @@
1443 \ifpdf \global\pdfmakepagedesttrue \fi
1444 }
1445
1446+
1447+% These characters do not print properly in the Computer Modern roman
1448+% fonts, so we must take special care. This is more or less redundant
1449+% with the Texinfo input format setup at the end of this file.
1450+%
1451+\def\activecatcodes{%
1452+ \catcode`\"=\active
1453+ \catcode`\$=\active
1454+ \catcode`\<=\active
1455+ \catcode`\>=\active
1456+ \catcode`\\=\active
1457+ \catcode`\^=\active
1458+ \catcode`\_=\active
1459+ \catcode`\|=\active
1460+ \catcode`\~=\active
1461+}
1462+
1463+
1464+% Read the toc file, which is essentially Texinfo input.
1465+\def\readtocfile{%
1466+ \setupdatafile
1467+ \activecatcodes
1468+ \input \jobname.toc
1469+}
1470+
1471 \newskip\contentsrightmargin \contentsrightmargin=1in
1472 \newcount\savepageno
1473 \newcount\lastnegativepageno \lastnegativepageno = -1
1474@@ -4520,11 +4899,7 @@
1475 %
1476 \savepageno = \pageno
1477 \begingroup % Set up to handle contents files properly.
1478- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
1479- % We can't do this, because then an actual ^ in a section
1480- % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
1481- %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
1482- \raggedbottom % Worry more about breakpoints than the bottom.
1483+ \raggedbottom % Worry more about breakpoints than the bottom.
1484 \advance\hsize by -\contentsrightmargin % Don't use the full line length.
1485 %
1486 % Roman numerals for page numbers.
1487@@ -4537,7 +4912,7 @@
1488 \startcontents{\putwordTOC}%
1489 \openin 1 \jobname.toc
1490 \ifeof 1 \else
1491- \input \jobname.toc
1492+ \readtocfile
1493 \fi
1494 \vfill \eject
1495 \contentsalignmacro % in case @setchapternewpage odd is in effect
1496@@ -4575,7 +4950,7 @@
1497 \let\unnsubsubsecentry = \numsecentry
1498 \openin 1 \jobname.toc
1499 \ifeof 1 \else
1500- \input \jobname.toc
1501+ \readtocfile
1502 \fi
1503 \closein 1
1504 \vfill \eject
1505@@ -4717,7 +5092,7 @@
1506 {\tentt \global\dimen0 = 3em}% Width of the box.
1507 \dimen2 = .55pt % Thickness of rules
1508 % The text. (`r' is open on the right, `e' somewhat less so on the left.)
1509-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
1510+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
1511 %
1512 \setbox\errorbox=\hbox to \dimen0{\hfil
1513 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
1514@@ -4765,6 +5140,7 @@
1515 \let\/=\ptexslash
1516 \let\*=\ptexstar
1517 \let\t=\ptext
1518+ \let\frenchspacing=\plainfrenchspacing
1519 %
1520 \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
1521 \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
1522@@ -4810,7 +5186,8 @@
1523
1524 \let\afterenvbreak = \aboveenvbreak
1525
1526-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
1527+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
1528+% also clear it, so that its embedded environments do the narrowing again.
1529 \let\nonarrowing=\relax
1530
1531 % @cartouche ... @end cartouche: draw rectangle w/rounded corners around
1532@@ -4847,7 +5224,7 @@
1533 % each corner char, and rule thickness
1534 \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
1535 % Flag to tell @lisp, etc., not to narrow margin.
1536- \let\nonarrowing=\comment
1537+ \let\nonarrowing = t%
1538 \vbox\bgroup
1539 \baselineskip=0pt\parskip=0pt\lineskip=0pt
1540 \carttop
1541@@ -4887,11 +5264,11 @@
1542 \parskip = 0pt
1543 \parindent = 0pt
1544 \emergencystretch = 0pt % don't try to avoid overfull boxes
1545- % @cartouche defines \nonarrowing to inhibit narrowing
1546- % at next level down.
1547 \ifx\nonarrowing\relax
1548 \advance \leftskip by \lispnarrowing
1549 \exdentamount=\lispnarrowing
1550+ \else
1551+ \let\nonarrowing = \relax
1552 \fi
1553 \let\exdent=\nofillexdent
1554 }
1555@@ -4938,11 +5315,10 @@
1556 %
1557 \maketwodispenvs {lisp}{example}{%
1558 \nonfillstart
1559- \tt
1560+ \tt\quoteexpand
1561 \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
1562 \gobble % eat return
1563 }
1564-
1565 % @display/@smalldisplay: same as @lisp except keep current font.
1566 %
1567 \makedispenv {display}{%
1568@@ -4991,6 +5367,7 @@
1569 \advance\leftskip by \lispnarrowing
1570 \advance\rightskip by \lispnarrowing
1571 \exdentamount = \lispnarrowing
1572+ \else
1573 \let\nonarrowing = \relax
1574 \fi
1575 \parsearg\quotationlabel
1576@@ -5069,6 +5446,34 @@
1577 \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
1578 %
1579 \def\starttabbox{\setbox0=\hbox\bgroup}
1580+
1581+% Allow an option to not replace quotes with a regular directed right
1582+% quote/apostrophe (char 0x27), but instead use the undirected quote
1583+% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
1584+% the default, but it works for pasting with more pdf viewers (at least
1585+% evince), the lilypond developers report. xpdf does work with the
1586+% regular 0x27.
1587+%
1588+\def\codequoteright{%
1589+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
1590+ '%
1591+ \else
1592+ \char'15
1593+ \fi
1594+}
1595+%
1596+% and a similar option for the left quote char vs. a grave accent.
1597+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
1598+% the code environments to do likewise.
1599+%
1600+\def\codequoteleft{%
1601+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
1602+ `%
1603+ \else
1604+ \char'22
1605+ \fi
1606+}
1607+%
1608 \begingroup
1609 \catcode`\^^I=\active
1610 \gdef\tabexpand{%
1611@@ -5081,15 +5486,25 @@
1612 \wd0=\dimen0 \box0 \starttabbox
1613 }%
1614 }
1615+ \catcode`\'=\active
1616+ \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
1617+ %
1618+ \catcode`\`=\active
1619+ \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
1620+ %
1621+ \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
1622 \endgroup
1623+
1624+% start the verbatim environment.
1625 \def\setupverbatim{%
1626+ \let\nonarrowing = t%
1627 \nonfillstart
1628- \advance\leftskip by -\defbodyindent
1629 % Easiest (and conventionally used) font for verbatim
1630 \tt
1631 \def\par{\leavevmode\egroup\box0\endgraf}%
1632 \catcode`\`=\active
1633 \tabexpand
1634+ \quoteexpand
1635 % Respect line breaks,
1636 % print special symbols as themselves, and
1637 % make each space count
1638@@ -5539,7 +5954,6 @@
1639 \spaceisspace
1640 %
1641 % Append \endinput to make sure that TeX does not see the ending newline.
1642- %
1643 % I've verified that it is necessary both for e-TeX and for ordinary TeX
1644 % --kasal, 29nov03
1645 \scantokens{#1\endinput}%
1646@@ -5554,8 +5968,19 @@
1647 \newcount\paramno % Count of parameters
1648 \newtoks\macname % Macro name
1649 \newif\ifrecursive % Is it recursive?
1650-\def\macrolist{} % List of all defined macros in the form
1651- % \do\macro1\do\macro2...
1652+
1653+% List of all defined macros in the form
1654+% \definedummyword\macro1\definedummyword\macro2...
1655+% Currently is also contains all @aliases; the list can be split
1656+% if there is a need.
1657+\def\macrolist{}
1658+
1659+% Add the macro to \macrolist
1660+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
1661+\def\addtomacrolistxxx#1{%
1662+ \toks0 = \expandafter{\macrolist\definedummyword#1}%
1663+ \xdef\macrolist{\the\toks0}%
1664+}
1665
1666 % Utility routines.
1667 % This does \let #1 = #2, with \csnames; that is,
1668@@ -5653,10 +6078,7 @@
1669 \else \errmessage{Macro name \the\macname\space already defined}\fi
1670 \global\cslet{macsave.\the\macname}{\the\macname}%
1671 \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
1672- % Add the macroname to \macrolist
1673- \toks0 = \expandafter{\macrolist\do}%
1674- \xdef\macrolist{\the\toks0
1675- \expandafter\noexpand\csname\the\macname\endcsname}%
1676+ \addtomacrolist{\the\macname}%
1677 \fi
1678 \begingroup \macrobodyctxt
1679 \ifrecursive \expandafter\parsermacbody
1680@@ -5670,7 +6092,7 @@
1681 % Remove the macro name from \macrolist:
1682 \begingroup
1683 \expandafter\let\csname#1\endcsname \relax
1684- \let\do\unmacrodo
1685+ \let\definedummyword\unmacrodo
1686 \xdef\macrolist{\macrolist}%
1687 \endgroup
1688 \else
1689@@ -5682,10 +6104,10 @@
1690 % macro definitions that have been changed to \relax.
1691 %
1692 \def\unmacrodo#1{%
1693- \ifx#1\relax
1694+ \ifx #1\relax
1695 % remove this
1696 \else
1697- \noexpand\do \noexpand #1%
1698+ \noexpand\definedummyword \noexpand#1%
1699 \fi
1700 }
1701
1702@@ -5798,30 +6220,11 @@
1703 % {. If so it reads up to the closing }, if not, it reads the whole
1704 % line. Whatever was read is then fed to the next control sequence
1705 % as an argument (by \parsebrace or \parsearg)
1706-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
1707+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
1708 \def\braceorlinexxx{%
1709 \ifx\nchar\bgroup\else
1710 \expandafter\parsearg
1711- \fi \next}
1712-
1713-% We want to disable all macros during \shipout so that they are not
1714-% expanded by \write.
1715-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
1716- \edef\next{\macrolist}\expandafter\endgroup\next}
1717-
1718-% For \indexnofonts, we need to get rid of all macros, leaving only the
1719-% arguments (if present). Of course this is not nearly correct, but it
1720-% is the best we can do for now. makeinfo does not expand macros in the
1721-% argument to @deffn, which ends up writing an index entry, and texindex
1722-% isn't prepared for an index sort entry that starts with \.
1723-%
1724-% Since macro invocations are followed by braces, we can just redefine them
1725-% to take a single TeX argument. The case of a macro invocation that
1726-% goes to end-of-line is not handled.
1727-%
1728-\def\emptyusermacros{\begingroup
1729- \def\do##1{\let\noexpand##1=\noexpand\asis}%
1730- \edef\next{\macrolist}\expandafter\endgroup\next}
1731+ \fi \macnamexxx}
1732
1733
1734 % @alias.
1735@@ -5832,6 +6235,7 @@
1736 \def\aliasyyy #1=#2\relax{%
1737 {%
1738 \expandafter\let\obeyedspace=\empty
1739+ \addtomacrolist{#1}%
1740 \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
1741 }%
1742 \next
1743@@ -5901,8 +6305,6 @@
1744 \iflinks
1745 {%
1746 \atdummies % preserve commands, but don't expand them
1747- \turnoffactive
1748- \otherbackslash
1749 \edef\writexrdef##1##2{%
1750 \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
1751 ##1}{##2}}% these are parameters of \writexrdef
1752@@ -5956,13 +6358,17 @@
1753 \ifpdf
1754 \leavevmode
1755 \getfilename{#4}%
1756- {\turnoffactive \otherbackslash
1757+ {\turnoffactive
1758+ % See comments at \activebackslashdouble.
1759+ {\activebackslashdouble \xdef\pdfxrefdest{#1}%
1760+ \backslashparens\pdfxrefdest}%
1761+ %
1762 \ifnum\filenamelength>0
1763 \startlink attr{/Border [0 0 0]}%
1764- goto file{\the\filename.pdf} name{#1}%
1765+ goto file{\the\filename.pdf} name{\pdfxrefdest}%
1766 \else
1767 \startlink attr{/Border [0 0 0]}%
1768- goto name{\pdfmkpgn{#1}}%
1769+ goto name{\pdfmkpgn{\pdfxrefdest}}%
1770 \fi
1771 }%
1772 \linkcolor
1773@@ -5976,7 +6382,6 @@
1774 % include an _ in the xref name, etc.
1775 \indexnofonts
1776 \turnoffactive
1777- \otherbackslash
1778 \expandafter\global\expandafter\let\expandafter\Xthisreftitle
1779 \csname XR#1-title\endcsname
1780 }%
1781@@ -5984,7 +6389,7 @@
1782 % If the user specified the print name (third arg) to the ref,
1783 % print it instead of our usual "Figure 1.2".
1784 \ifdim\wd0 = 0pt
1785- \refx{#1-snt}%
1786+ \refx{#1-snt}{}%
1787 \else
1788 \printedrefname
1789 \fi
1790@@ -6011,7 +6416,7 @@
1791 % into the usual \leavevmode...\vrule stuff for purposes of
1792 % printing. So we \turnoffactive for the \refx-snt, back on for the
1793 % printing, back off for the \refx-pg.
1794- {\turnoffactive \otherbackslash
1795+ {\turnoffactive
1796 % Only output a following space if the -snt ref is nonempty; for
1797 % @unnumbered and @anchor, it won't be.
1798 \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
1799@@ -6024,7 +6429,7 @@
1800 ,\space
1801 %
1802 % output the `page 3'.
1803- \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
1804+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
1805 \fi
1806 \fi
1807 \endlink
1808@@ -6127,13 +6532,13 @@
1809 \def\tryauxfile{%
1810 \openin 1 \jobname.aux
1811 \ifeof 1 \else
1812- \readauxfile
1813+ \readdatafile{aux}%
1814 \global\havexrefstrue
1815 \fi
1816 \closein 1
1817 }
1818
1819-\def\readauxfile{\begingroup
1820+\def\setupdatafile{%
1821 \catcode`\^^@=\other
1822 \catcode`\^^A=\other
1823 \catcode`\^^B=\other
1824@@ -6202,11 +6607,11 @@
1825 %
1826 % Make the characters 128-255 be printing characters.
1827 {%
1828- \count 1=128
1829+ \count1=128
1830 \def\loop{%
1831- \catcode\count 1=\other
1832- \advance\count 1 by 1
1833- \ifnum \count 1<256 \loop \fi
1834+ \catcode\count1=\other
1835+ \advance\count1 by 1
1836+ \ifnum \count1<256 \loop \fi
1837 }%
1838 }%
1839 %
1840@@ -6214,10 +6619,13 @@
1841 \catcode`\{=1
1842 \catcode`\}=2
1843 \catcode`\@=0
1844- %
1845- \input \jobname.aux
1846-\endgroup}
1847+}
1848
1849+\def\readdatafile#1{%
1850+\begingroup
1851+ \setupdatafile
1852+ \input\jobname.#1
1853+\endgroup}
1854
1855 \message{insertions,}
1856 % including footnotes.
1857@@ -6411,7 +6819,7 @@
1858 % above and below.
1859 \nobreak\vskip\parskip
1860 \nobreak
1861- \line\bgroup\hss
1862+ \line\bgroup
1863 \fi
1864 %
1865 % Output the image.
1866@@ -6424,7 +6832,7 @@
1867 \epsfbox{#1.eps}%
1868 \fi
1869 %
1870- \ifimagevmode \hss \egroup \bigbreak \fi % space after the image
1871+ \ifimagevmode \egroup \bigbreak \fi % space after the image
1872 \endgroup}
1873
1874
1875@@ -6564,7 +6972,8 @@
1876 % \floatlabel-lof. Besides \floatident, we include the short
1877 % caption if specified, else the full caption if specified, else nothing.
1878 {%
1879- \atdummies \turnoffactive \otherbackslash
1880+ \atdummies
1881+ %
1882 % since we read the caption text in the macro world, where ^^M
1883 % is turned into a normal character, we have to scan it back, so
1884 % we don't write the literal three characters "^^M" into the aux file.
1885@@ -6585,8 +6994,9 @@
1886 %
1887 % place the captured inserts
1888 %
1889- % BEWARE: when the floats start float, we have to issue warning whenever an
1890- % insert appears inside a float which could possibly float. --kasal, 26may04
1891+ % BEWARE: when the floats start floating, we have to issue warning
1892+ % whenever an insert appears inside a float which could possibly
1893+ % float. --kasal, 26may04
1894 %
1895 \checkinserts
1896 }
1897@@ -6754,9 +7164,9 @@
1898 \fi
1899 }
1900
1901-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
1902-% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
1903-% physical page width.
1904+% Parameters in order: 1) textheight; 2) textwidth;
1905+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
1906+% 7) physical page height; 8) physical page width.
1907 %
1908 % We also call \setleading{\textleading}, so the caller should define
1909 % \textleading. The caller should also set \parskip.
1910@@ -6803,7 +7213,7 @@
1911 {11in}{8.5in}%
1912 }}
1913
1914-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
1915+% Use @smallbook to reset parameters for 7x9.25 trim size.
1916 \def\smallbook{{\globaldefs = 1
1917 \parskip = 2pt plus 1pt
1918 \textleading = 12pt
1919@@ -6820,6 +7230,24 @@
1920 \defbodyindent = .5cm
1921 }}
1922
1923+% Use @smallerbook to reset parameters for 6x9 trim size.
1924+% (Just testing, parameters still in flux.)
1925+\def\smallerbook{{\globaldefs = 1
1926+ \parskip = 1.5pt plus 1pt
1927+ \textleading = 12pt
1928+ %
1929+ \internalpagesizes{7.4in}{4.8in}%
1930+ {-.2in}{-.4in}%
1931+ {0pt}{14pt}%
1932+ {9in}{6in}%
1933+ %
1934+ \lispnarrowing = 0.25in
1935+ \tolerance = 700
1936+ \hfuzz = 1pt
1937+ \contentsrightmargin = 0pt
1938+ \defbodyindent = .4cm
1939+}}
1940+
1941 % Use @afourpaper to print on European A4 paper.
1942 \def\afourpaper{{\globaldefs = 1
1943 \parskip = 3pt plus 2pt minus 1pt
1944@@ -6972,6 +7400,7 @@
1945
1946 \catcode`\_=\active
1947 \def_{\ifusingtt\normalunderscore\_}
1948+\let\realunder=_
1949 % Subroutine for the previous macro.
1950 \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
1951
1952@@ -6994,6 +7423,13 @@
1953 % \otherifyactive is called near the end of this file.
1954 \def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
1955
1956+% Used sometimes to turn off (effectively) the active characters even after
1957+% parsing them.
1958+\def\turnoffactive{%
1959+ \normalturnoffactive
1960+ \otherbackslash
1961+}
1962+
1963 \catcode`\@=0
1964
1965 % \backslashcurfont outputs one backslash character in current font,
1966@@ -7001,27 +7437,29 @@
1967 \global\chardef\backslashcurfont=`\\
1968 \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
1969
1970+% \realbackslash is an actual character `\' with catcode other, and
1971+% \doublebackslash is two of them (for the pdf outlines).
1972+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
1973+
1974+% In texinfo, backslash is an active character; it prints the backslash
1975+% in fixed width font.
1976+\catcode`\\=\active
1977+@def@normalbackslash{{@tt@backslashcurfont}}
1978+% On startup, @fixbackslash assigns:
1979+% @let \ = @normalbackslash
1980+
1981 % \rawbackslash defines an active \ to do \backslashcurfont.
1982 % \otherbackslash defines an active \ to be a literal `\' character with
1983 % catcode other.
1984-{\catcode`\\=\active
1985- @gdef@rawbackslash{@let\=@backslashcurfont}
1986- @gdef@otherbackslash{@let\=@realbackslash}
1987-}
1988-
1989-% \realbackslash is an actual character `\' with catcode other.
1990-{\catcode`\\=\other @gdef@realbackslash{\}}
1991+@gdef@rawbackslash{@let\=@backslashcurfont}
1992+@gdef@otherbackslash{@let\=@realbackslash}
1993
1994-% \normalbackslash outputs one backslash in fixed width font.
1995-\def\normalbackslash{{\tt\backslashcurfont}}
1996-
1997-\catcode`\\=\active
1998-
1999-% Used sometimes to turn off (effectively) the active characters
2000-% even after parsing them.
2001-@def@turnoffactive{%
2002+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
2003+% the literal character `\'.
2004+%
2005+@def@normalturnoffactive{%
2006+ @let\=@normalbackslash
2007 @let"=@normaldoublequote
2008- @let\=@realbackslash
2009 @let~=@normaltilde
2010 @let^=@normalcaret
2011 @let_=@normalunderscore
2012@@ -7033,12 +7471,6 @@
2013 @unsepspaces
2014 }
2015
2016-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
2017-% the literal character `\'. (Thus, \ is not expandable when this is in
2018-% effect.)
2019-%
2020-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
2021-
2022 % Make _ and + \other characters, temporarily.
2023 % This is canceled by @fixbackslash.
2024 @otherifyactive
2025@@ -7051,9 +7483,9 @@
2026 @global@let\ = @eatinput
2027
2028 % On the other hand, perhaps the file did not have a `\input texinfo'. Then
2029-% the first `\{ in the file would cause an error. This macro tries to fix
2030+% the first `\' in the file would cause an error. This macro tries to fix
2031 % that, assuming it is called before the first `\' could plausibly occur.
2032-% Also back turn on active characters that might appear in the input
2033+% Also turn back on active characters that might appear in the input
2034 % file name, in case not using a pre-dumped format.
2035 %
2036 @gdef@fixbackslash{%
Note: See TracBrowser for help on using the repository browser.