aboutsummaryrefslogtreecommitdiffstats
path: root/doc/misc
diff options
context:
space:
mode:
authorPaul Eggert2012-05-26 16:14:36 -0700
committerPaul Eggert2012-05-26 16:14:36 -0700
commitcaf8a9b2b301aba06735d403317b75b41df59bfe (patch)
treebfafb3cc0cf8a2f2394b4ed721e7c3d4891b78ab /doc/misc
parentfe453991eafc32a890297a2003ac532b9f579f92 (diff)
downloademacs-caf8a9b2b301aba06735d403317b75b41df59bfe.tar.gz
emacs-caf8a9b2b301aba06735d403317b75b41df59bfe.zip
Merge from gnulib.
Fixes: debbugs:11527
Diffstat (limited to 'doc/misc')
-rw-r--r--doc/misc/texinfo.tex495
1 files changed, 318 insertions, 177 deletions
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 3298298bb9d..0f3a0960c03 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{2011-09-23.09} 6\def\texinfoversion{2012-05-16.16}
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, 2010, 2011 Free Software Foundation, Inc. 10% 2007, 2008, 2009, 2010, 2011, 2012 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
@@ -28,9 +28,9 @@
28% 28%
29% Please try the latest version of texinfo.tex before submitting bug 29% Please try the latest version of texinfo.tex before submitting bug
30% reports; you can get the latest version from: 30% reports; you can get the latest version from:
31% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or 31% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
32% ftp://tug.org/tex/texinfo.tex 32% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
33% (and all CTAN mirrors, see http://www.ctan.org). 33% http://www.gnu.org/software/texinfo/ (the Texinfo home page)
34% The texinfo.tex in any given distribution could well be out 34% The texinfo.tex in any given distribution could well be out
35% of date, so if that's what you're using, please check. 35% of date, so if that's what you're using, please check.
36% 36%
@@ -116,6 +116,7 @@
116% Set up fixed words for English if not already set. 116% Set up fixed words for English if not already set.
117\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi 117\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
118\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi 118\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
119\ifx\putworderror\undefined \gdef\putworderror{error}\fi
119\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi 120\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
120\ifx\putwordin\undefined \gdef\putwordin{in}\fi 121\ifx\putwordin\undefined \gdef\putwordin{in}\fi
121\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi 122\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
@@ -229,6 +230,13 @@
229 \errorcontextlines16 230 \errorcontextlines16
230}% 231}%
231 232
233% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
234% aren't perfect, it's not the end of the world, being an error message,
235% after all.
236%
237\def\errormsg{\begingroup \indexnofonts \doerrormsg}
238\def\doerrormsg#1{\errmessage{#1}}
239
232% add check for \lastpenalty to plain's definitions. If the last thing 240% add check for \lastpenalty to plain's definitions. If the last thing
233% we did was a \nobreak, we don't want to insert more space. 241% we did was a \nobreak, we don't want to insert more space.
234% 242%
@@ -879,7 +887,7 @@ where each line of input produces a line of output.}
879\def\popthisfilestack{\errthisfilestackempty} 887\def\popthisfilestack{\errthisfilestackempty}
880\def\errthisfilestackempty{\errmessage{Internal error: 888\def\errthisfilestackempty{\errmessage{Internal error:
881 the stack of filenames is empty.}} 889 the stack of filenames is empty.}}
882 890%
883\def\thisfile{} 891\def\thisfile{}
884 892
885% @center line 893% @center line
@@ -887,36 +895,46 @@ where each line of input produces a line of output.}
887% 895%
888\parseargdef\center{% 896\parseargdef\center{%
889 \ifhmode 897 \ifhmode
890 \let\next\centerH 898 \let\centersub\centerH
891 \else 899 \else
892 \let\next\centerV 900 \let\centersub\centerV
893 \fi 901 \fi
894 \next{\hfil \ignorespaces#1\unskip \hfil}% 902 \centersub{\hfil \ignorespaces#1\unskip \hfil}%
903 \let\centersub\relax % don't let the definition persist, just in case
895} 904}
896\def\centerH#1{% 905\def\centerH#1{{%
897 {% 906 \hfil\break
898 \hfil\break 907 \advance\hsize by -\leftskip
899 \advance\hsize by -\leftskip 908 \advance\hsize by -\rightskip
900 \advance\hsize by -\rightskip 909 \line{#1}%
901 \line{#1}% 910 \break
902 \break 911}}
903 }% 912%
913\newcount\centerpenalty
914\def\centerV#1{%
915 % The idea here is the same as in \startdefun, \cartouche, etc.: if
916 % @center is the first thing after a section heading, we need to wipe
917 % out the negative parskip inserted by \sectionheading, but still
918 % prevent a page break here.
919 \centerpenalty = \lastpenalty
920 \ifnum\centerpenalty>10000 \vskip\parskip \fi
921 \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
922 \line{\kern\leftskip #1\kern\rightskip}%
904} 923}
905\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
906 924
907% @sp n outputs n lines of vertical space 925% @sp n outputs n lines of vertical space
908 926%
909\parseargdef\sp{\vskip #1\baselineskip} 927\parseargdef\sp{\vskip #1\baselineskip}
910 928
911% @comment ...line which is ignored... 929% @comment ...line which is ignored...
912% @c is the same as @comment 930% @c is the same as @comment
913% @ignore ... @end ignore is another way to write a comment 931% @ignore ... @end ignore is another way to write a comment
914 932%
915\def\comment{\begingroup \catcode`\^^M=\other% 933\def\comment{\begingroup \catcode`\^^M=\other%
916\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% 934\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
917\commentxxx} 935\commentxxx}
918{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} 936{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
919 937%
920\let\c=\comment 938\let\c=\comment
921 939
922% @paragraphindent NCHARS 940% @paragraphindent NCHARS
@@ -1089,50 +1107,24 @@ where each line of input produces a line of output.}
1089% for display in the outlines, and in other places. Thus, we have to 1107% for display in the outlines, and in other places. Thus, we have to
1090% double any backslashes. Otherwise, a name like "\node" will be 1108% double any backslashes. Otherwise, a name like "\node" will be
1091% interpreted as a newline (\n), followed by o, d, e. Not good. 1109% interpreted as a newline (\n), followed by o, d, e. Not good.
1092% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html 1110%
1093% (and related messages, the final outcome is that it is up to the TeX 1111% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
1094% user to double the backslashes and otherwise make the string valid, so 1112% related messages. The final outcome is that it is up to the TeX user
1095% that's what we do). 1113% to double the backslashes and otherwise make the string valid, so
1096 1114% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to
1097% double active backslashes. 1115% do this reliably, so we use it.
1098% 1116
1099{\catcode`\@=0 \catcode`\\=\active 1117% #1 is a control sequence in which to do the replacements,
1100 @gdef@activebackslashdouble{% 1118% which we \xdef.
1101 @catcode`@\=@active 1119\def\txiescapepdf#1{%
1102 @let\=@doublebackslash} 1120 \ifx\pdfescapestring\relax
1103} 1121 % No primitive available; should we give a warning or log?
1104 1122 % Many times it won't matter.
1105% To handle parens, we must adopt a different approach, since parens are 1123 \else
1106% not active characters. hyperref.dtx (which has the same problem as 1124 % The expandable \pdfescapestring primitive escapes parentheses,
1107% us) handles it with this amazing macro to replace tokens, with minor 1125 % backslashes, and other special chars.
1108% changes for Texinfo. It is included here under the GPL by permission 1126 \xdef#1{\pdfescapestring{#1}}%
1109% from the author, Heiko Oberdiek. 1127 \fi
1110%
1111% #1 is the tokens to replace.
1112% #2 is the replacement.
1113% #3 is the control sequence with the string.
1114%
1115\def\HyPsdSubst#1#2#3{%
1116 \def\HyPsdReplace##1#1##2\END{%
1117 ##1%
1118 \ifx\\##2\\%
1119 \else
1120 #2%
1121 \HyReturnAfterFi{%
1122 \HyPsdReplace##2\END
1123 }%
1124 \fi
1125 }%
1126 \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
1127}
1128\long\def\HyReturnAfterFi#1\fi{\fi#1}
1129
1130% #1 is a control sequence in which to do the replacements.
1131\def\backslashparens#1{%
1132 \xdef#1{#1}% redefine it as its expansion; the definition is simply
1133 % \lastnode when called from \setref -> \pdfmkdest.
1134 \HyPsdSubst{(}{\realbackslash(}{#1}%
1135 \HyPsdSubst{)}{\realbackslash)}{#1}%
1136} 1128}
1137 1129
1138\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images 1130\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
@@ -1191,32 +1183,34 @@ output) for that.)}
1191 % 1183 %
1192 % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). 1184 % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
1193 \def\dopdfimage#1#2#3{% 1185 \def\dopdfimage#1#2#3{%
1194 \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% 1186 \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
1195 \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% 1187 \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
1196 % 1188 %
1197 % pdftex (and the PDF format) support .png, .jpg, .pdf (among 1189 % pdftex (and the PDF format) support .pdf, .png, .jpg (among
1198 % others). Let's try in that order. 1190 % others). Let's try in that order, PDF first since if
1191 % someone has a scalable image, presumably better to use that than a
1192 % bitmap.
1199 \let\pdfimgext=\empty 1193 \let\pdfimgext=\empty
1200 \begingroup 1194 \begingroup
1201 \openin 1 #1.png \ifeof 1 1195 \openin 1 #1.pdf \ifeof 1
1202 \openin 1 #1.jpg \ifeof 1 1196 \openin 1 #1.PDF \ifeof 1
1203 \openin 1 #1.jpeg \ifeof 1 1197 \openin 1 #1.png \ifeof 1
1204 \openin 1 #1.JPG \ifeof 1 1198 \openin 1 #1.jpg \ifeof 1
1205 \openin 1 #1.pdf \ifeof 1 1199 \openin 1 #1.jpeg \ifeof 1
1206 \openin 1 #1.PDF \ifeof 1 1200 \openin 1 #1.JPG \ifeof 1
1207 \errhelp = \nopdfimagehelp 1201 \errhelp = \nopdfimagehelp
1208 \errmessage{Could not find image file #1 for pdf}% 1202 \errmessage{Could not find image file #1 for pdf}%
1209 \else \gdef\pdfimgext{PDF}% 1203 \else \gdef\pdfimgext{JPG}%
1210 \fi 1204 \fi
1211 \else \gdef\pdfimgext{pdf}% 1205 \else \gdef\pdfimgext{jpeg}%
1212 \fi 1206 \fi
1213 \else \gdef\pdfimgext{JPG}% 1207 \else \gdef\pdfimgext{jpg}%
1214 \fi 1208 \fi
1215 \else \gdef\pdfimgext{jpeg}% 1209 \else \gdef\pdfimgext{png}%
1216 \fi 1210 \fi
1217 \else \gdef\pdfimgext{jpg}% 1211 \else \gdef\pdfimgext{PDF}%
1218 \fi 1212 \fi
1219 \else \gdef\pdfimgext{png}% 1213 \else \gdef\pdfimgext{pdf}%
1220 \fi 1214 \fi
1221 \closein 1 1215 \closein 1
1222 \endgroup 1216 \endgroup
@@ -1228,8 +1222,8 @@ output) for that.)}
1228 \else 1222 \else
1229 \immediate\pdfximage 1223 \immediate\pdfximage
1230 \fi 1224 \fi
1231 \ifdim \wd0 >0pt width \imagewidth \fi 1225 \ifdim \wd0 >0pt width \pdfimagewidth \fi
1232 \ifdim \wd2 >0pt height \imageheight \fi 1226 \ifdim \wd2 >0pt height \pdfimageheight \fi
1233 \ifnum\pdftexversion<13 1227 \ifnum\pdftexversion<13
1234 #1.\pdfimgext 1228 #1.\pdfimgext
1235 \else 1229 \else
@@ -1244,10 +1238,9 @@ output) for that.)}
1244 % such as \, aren't expanded when present in a section title. 1238 % such as \, aren't expanded when present in a section title.
1245 \indexnofonts 1239 \indexnofonts
1246 \turnoffactive 1240 \turnoffactive
1247 \activebackslashdouble
1248 \makevalueexpandable 1241 \makevalueexpandable
1249 \def\pdfdestname{#1}% 1242 \def\pdfdestname{#1}%
1250 \backslashparens\pdfdestname 1243 \txiescapepdf\pdfdestname
1251 \safewhatsit{\pdfdest name{\pdfdestname} xyz}% 1244 \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
1252 }} 1245 }}
1253 % 1246 %
@@ -1279,28 +1272,22 @@ output) for that.)}
1279 % page number. We could generate a destination for the section 1272 % page number. We could generate a destination for the section
1280 % text in the case where a section has no node, but it doesn't 1273 % text in the case where a section has no node, but it doesn't
1281 % seem worth the trouble, since most documents are normally structured. 1274 % seem worth the trouble, since most documents are normally structured.
1282 \def\pdfoutlinedest{#3}% 1275 \edef\pdfoutlinedest{#3}%
1283 \ifx\pdfoutlinedest\empty 1276 \ifx\pdfoutlinedest\empty
1284 \def\pdfoutlinedest{#4}% 1277 \def\pdfoutlinedest{#4}%
1285 \else 1278 \else
1286 % Doubled backslashes in the name. 1279 \txiescapepdf\pdfoutlinedest
1287 {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
1288 \backslashparens\pdfoutlinedest}%
1289 \fi 1280 \fi
1290 % 1281 %
1291 % Also double the backslashes in the display string. 1282 % Also escape PDF chars in the display string.
1292 {\activebackslashdouble \xdef\pdfoutlinetext{#1}% 1283 \edef\pdfoutlinetext{#1}%
1293 \backslashparens\pdfoutlinetext}% 1284 \txiescapepdf\pdfoutlinetext
1294 % 1285 %
1295 \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% 1286 \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
1296 } 1287 }
1297 % 1288 %
1298 \def\pdfmakeoutlines{% 1289 \def\pdfmakeoutlines{%
1299 \begingroup 1290 \begingroup
1300 % Thanh's hack / proper braces in bookmarks
1301 \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
1302 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
1303 %
1304 % Read toc silently, to get counts of subentries for \pdfoutline. 1291 % Read toc silently, to get counts of subentries for \pdfoutline.
1305 \def\partentry##1##2##3##4{}% ignore parts in the outlines 1292 \def\partentry##1##2##3##4{}% ignore parts in the outlines
1306 \def\numchapentry##1##2##3##4{% 1293 \def\numchapentry##1##2##3##4{%
@@ -1356,25 +1343,41 @@ output) for that.)}
1356 % Latin 2 (0xea) gets translated to a | character. Info from 1343 % Latin 2 (0xea) gets translated to a | character. Info from
1357 % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. 1344 % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
1358 % 1345 %
1359 % xx to do this right, we have to translate 8-bit characters to 1346 % TODO this right, we have to translate 8-bit characters to
1360 % their "best" equivalent, based on the @documentencoding. Right 1347 % their "best" equivalent, based on the @documentencoding. Too
1361 % now, I guess we'll just let the pdf reader have its way. 1348 % much work for too little return. Just use the ASCII equivalents
1349 % we use for the index sort strings.
1350 %
1362 \indexnofonts 1351 \indexnofonts
1363 \setupdatafile 1352 \setupdatafile
1353 % We can have normal brace characters in the PDF outlines, unlike
1354 % Texinfo index files. So set that up.
1355 \def\{{\lbracecharliteral}%
1356 \def\}{\rbracecharliteral}%
1364 \catcode`\\=\active \otherbackslash 1357 \catcode`\\=\active \otherbackslash
1365 \input \tocreadfilename 1358 \input \tocreadfilename
1366 \endgroup 1359 \endgroup
1367 } 1360 }
1361 {\catcode`[=1 \catcode`]=2
1362 \catcode`{=\other \catcode`}=\other
1363 \gdef\lbracecharliteral[{]%
1364 \gdef\rbracecharliteral[}]%
1365 ]
1368 % 1366 %
1369 \def\skipspaces#1{\def\PP{#1}\def\D{|}% 1367 \def\skipspaces#1{\def\PP{#1}\def\D{|}%
1370 \ifx\PP\D\let\nextsp\relax 1368 \ifx\PP\D\let\nextsp\relax
1371 \else\let\nextsp\skipspaces 1369 \else\let\nextsp\skipspaces
1372 \ifx\p\space\else\addtokens{\filename}{\PP}% 1370 \addtokens{\filename}{\PP}%
1373 \advance\filenamelength by 1 1371 \advance\filenamelength by 1
1374 \fi
1375 \fi 1372 \fi
1376 \nextsp} 1373 \nextsp}
1377 \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} 1374 \def\getfilename#1{%
1375 \filenamelength=0
1376 % If we don't expand the argument now, \skipspaces will get
1377 % snagged on things like "@value{foo}".
1378 \edef\temp{#1}%
1379 \expandafter\skipspaces\temp|\relax
1380 }
1378 \ifnum\pdftexversion < 14 1381 \ifnum\pdftexversion < 14
1379 \let \startlink \pdfannotlink 1382 \let \startlink \pdfannotlink
1380 \else 1383 \else
@@ -1471,9 +1474,6 @@ output) for that.)}
1471\def\ttsl{\setfontstyle{ttsl}} 1474\def\ttsl{\setfontstyle{ttsl}}
1472 1475
1473 1476
1474% Default leading.
1475\newdimen\textleading \textleading = 13.2pt
1476
1477% Set the baselineskip to #1, and the lineskip and strut size 1477% Set the baselineskip to #1, and the lineskip and strut size
1478% correspondingly. There is no deep meaning behind these magic numbers 1478% correspondingly. There is no deep meaning behind these magic numbers
1479% used as factors; they just match (closely enough) what Knuth defined. 1479% used as factors; they just match (closely enough) what Knuth defined.
@@ -1485,6 +1485,7 @@ output) for that.)}
1485% can get a sort of poor man's double spacing by redefining this. 1485% can get a sort of poor man's double spacing by redefining this.
1486\def\baselinefactor{1} 1486\def\baselinefactor{1}
1487% 1487%
1488\newdimen\textleading
1488\def\setleading#1{% 1489\def\setleading#1{%
1489 \dimen0 = #1\relax 1490 \dimen0 = #1\relax
1490 \normalbaselineskip = \baselinefactor\dimen0 1491 \normalbaselineskip = \baselinefactor\dimen0
@@ -1757,18 +1758,24 @@ end
1757\fi\fi 1758\fi\fi
1758 1759
1759 1760
1760% Set the font macro #1 to the font named #2, adding on the 1761% Set the font macro #1 to the font named \fontprefix#2.
1761% specified font prefix (normally `cm').
1762% #3 is the font's design size, #4 is a scale factor, #5 is the CMap 1762% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
1763% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass 1763% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
1764% empty to omit). 1764% Example:
1765% #1 = \textrm
1766% #2 = \rmshape
1767% #3 = 10
1768% #4 = \mainmagstep
1769% #5 = OT1
1770%
1765\def\setfont#1#2#3#4#5{% 1771\def\setfont#1#2#3#4#5{%
1766 \font#1=\fontprefix#2#3 scaled #4 1772 \font#1=\fontprefix#2#3 scaled #4
1767 \csname cmap#5\endcsname#1% 1773 \csname cmap#5\endcsname#1%
1768} 1774}
1769% This is what gets called when #5 of \setfont is empty. 1775% This is what gets called when #5 of \setfont is empty.
1770\let\cmap\gobble 1776\let\cmap\gobble
1771% emacs-page end of cmaps 1777%
1778% (end of cmaps)
1772 1779
1773% Use cm as the default font prefix. 1780% Use cm as the default font prefix.
1774% To specify the font prefix, you must define \fontprefix 1781% To specify the font prefix, you must define \fontprefix
@@ -1778,7 +1785,7 @@ end
1778\fi 1785\fi
1779% Support font families that don't use the same naming scheme as CM. 1786% Support font families that don't use the same naming scheme as CM.
1780\def\rmshape{r} 1787\def\rmshape{r}
1781\def\rmbshape{bx} %where the normal face is bold 1788\def\rmbshape{bx} % where the normal face is bold
1782\def\bfshape{b} 1789\def\bfshape{b}
1783\def\bxshape{bx} 1790\def\bxshape{bx}
1784\def\ttshape{tt} 1791\def\ttshape{tt}
@@ -1793,8 +1800,7 @@ end
1793\def\scshape{csc} 1800\def\scshape{csc}
1794\def\scbshape{csc} 1801\def\scbshape{csc}
1795 1802
1796% Definitions for a main text size of 11pt. This is the default in 1803% Definitions for a main text size of 11pt. (The default in Texinfo.)
1797% Texinfo.
1798% 1804%
1799\def\definetextfontsizexi{% 1805\def\definetextfontsizexi{%
1800% Text fonts (11.2pt, magstep1). 1806% Text fonts (11.2pt, magstep1).
@@ -1919,7 +1925,7 @@ end
1919\textleading = 13.2pt % line spacing for 11pt CM 1925\textleading = 13.2pt % line spacing for 11pt CM
1920\textfonts % reset the current fonts 1926\textfonts % reset the current fonts
1921\rm 1927\rm
1922} % end of 11pt text font size definitions 1928} % end of 11pt text font size definitions, \definetextfontsizexi
1923 1929
1924 1930
1925% Definitions to make the main text be 10pt Computer Modern, with 1931% Definitions to make the main text be 10pt Computer Modern, with
@@ -2051,7 +2057,7 @@ end
2051\textleading = 12pt % line spacing for 10pt CM 2057\textleading = 12pt % line spacing for 10pt CM
2052\textfonts % reset the current fonts 2058\textfonts % reset the current fonts
2053\rm 2059\rm
2054} % end of 10pt text font size definitions 2060} % end of 10pt text font size definitions, \definetextfontsizex
2055 2061
2056 2062
2057% We provide the user-level command 2063% We provide the user-level command
@@ -2372,7 +2378,9 @@ end
2372 \else\ifx\next-% 2378 \else\ifx\next-%
2373 \else\ifx\next.% 2379 \else\ifx\next.%
2374 \else\ptexslash 2380 \else\ptexslash
2375 \fi\fi\fi} 2381 \fi\fi\fi
2382 \aftersmartic
2383}
2376 2384
2377% like \smartslanted except unconditionally uses \ttsl, and no ic. 2385% like \smartslanted except unconditionally uses \ttsl, and no ic.
2378% @var is set to this for defun arguments. 2386% @var is set to this for defun arguments.
@@ -2382,9 +2390,15 @@ end
2382% ttsl for book titles, do we? 2390% ttsl for book titles, do we?
2383\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} 2391\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
2384 2392
2393\def\aftersmartic{}
2394\def\var#1{%
2395 \let\saveaftersmartic = \aftersmartic
2396 \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
2397 \smartslanted{#1}%
2398}
2399
2385\let\i=\smartitalic 2400\let\i=\smartitalic
2386\let\slanted=\smartslanted 2401\let\slanted=\smartslanted
2387\def\var#1{\smartslanted{#1}}
2388\let\dfn=\smartslanted 2402\let\dfn=\smartslanted
2389\let\emph=\smartitalic 2403\let\emph=\smartitalic
2390 2404
@@ -2480,7 +2494,7 @@ end
2480 \plainfrenchspacing 2494 \plainfrenchspacing
2481 #1% 2495 #1%
2482 }% 2496 }%
2483 \null 2497 \null % reset spacefactor to 1000
2484} 2498}
2485 2499
2486% We *must* turn on hyphenation at `-' and `_' in @code. 2500% We *must* turn on hyphenation at `-' and `_' in @code.
@@ -2762,6 +2776,7 @@ end
2762 \ifx\temp\empty \else 2776 \ifx\temp\empty \else
2763 \space ({\unsepspaces \ignorespaces \temp \unskip})% 2777 \space ({\unsepspaces \ignorespaces \temp \unskip})%
2764 \fi 2778 \fi
2779 \null % reset \spacefactor=1000
2765} 2780}
2766 2781
2767% @abbr for "Comput. J." and the like. 2782% @abbr for "Comput. J." and the like.
@@ -2774,6 +2789,7 @@ end
2774 \ifx\temp\empty \else 2789 \ifx\temp\empty \else
2775 \space ({\unsepspaces \ignorespaces \temp \unskip})% 2790 \space ({\unsepspaces \ignorespaces \temp \unskip})%
2776 \fi 2791 \fi
2792 \null % reset \spacefactor=1000
2777} 2793}
2778 2794
2779% @asis just yields its argument. Used with @table, for example. 2795% @asis just yields its argument. Used with @table, for example.
@@ -2838,20 +2854,48 @@ end
2838 } 2854 }
2839} 2855}
2840 2856
2857% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
2858% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
2859% except specified as a normal braced arg, so no newlines to worry about.
2860%
2861\def\outfmtnametex{tex}
2862%
2863\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
2864\long\def\doinlinefmt#1,#2,\finish{%
2865 \def\inlinefmtname{#1}%
2866 \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
2867}
2868% For raw, must switch into @tex before parsing the argument, to avoid
2869% setting catcodes prematurely. Doing it this way means that, for
2870% example, @inlineraw{html, foo{bar} gets a parse error instead of being
2871% ignored. But this isn't important because if people want a literal
2872% *right* brace they would have to use a command anyway, so they may as
2873% well use a command to get a left brace too. We could re-use the
2874% delimiter character idea from \verb, but it seems like overkill.
2875%
2876\long\def\inlineraw{\tex \doinlineraw}
2877\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
2878\def\doinlinerawtwo#1,#2,\finish{%
2879 \def\inlinerawname{#1}%
2880 \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
2881 \endgroup % close group opened by \tex.
2882}
2883
2841 2884
2842\message{glyphs,} 2885\message{glyphs,}
2843% and logos. 2886% and logos.
2844 2887
2845% @@ prints an @. 2888% @@ prints an @, as does @atchar{}.
2846\def\@{\char64 } 2889\def\@{\char64 }
2890\let\atchar=\@
2847 2891
2848% Used to generate quoted braces. Unless we're in typewriter, use 2892% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
2849% \ecfont because the CM text fonts do not have braces, and we don't 2893% Unless we're in typewriter, use \ecfont because the CM text fonts do
2850% want to switch into math. 2894% not have braces, and we don't want to switch into math.
2851\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} 2895\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
2852\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} 2896\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
2853\let\{=\mylbrace 2897\let\{=\mylbrace \let\lbracechar=\{
2854\let\}=\myrbrace 2898\let\}=\myrbrace \let\rbracechar=\}
2855\begingroup 2899\begingroup
2856 % Definitions to produce \{ and \} commands for indices, 2900 % Definitions to produce \{ and \} commands for indices,
2857 % and @{ and @} for the aux/toc files. 2901 % and @{ and @} for the aux/toc files.
@@ -2979,7 +3023,7 @@ end
2979{\tentt \global\dimen0 = 3em}% Width of the box. 3023{\tentt \global\dimen0 = 3em}% Width of the box.
2980\dimen2 = .55pt % Thickness of rules 3024\dimen2 = .55pt % Thickness of rules
2981% The text. (`r' is open on the right, `e' somewhat less so on the left.) 3025% The text. (`r' is open on the right, `e' somewhat less so on the left.)
2982\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} 3026\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
2983% 3027%
2984\setbox\errorbox=\hbox to \dimen0{\hfil 3028\setbox\errorbox=\hbox to \dimen0{\hfil
2985 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. 3029 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -4409,6 +4453,7 @@ end
4409 \definedummyword\guillemetright 4453 \definedummyword\guillemetright
4410 \definedummyword\guilsinglleft 4454 \definedummyword\guilsinglleft
4411 \definedummyword\guilsinglright 4455 \definedummyword\guilsinglright
4456 \definedummyword\lbracechar
4412 \definedummyword\leq 4457 \definedummyword\leq
4413 \definedummyword\minus 4458 \definedummyword\minus
4414 \definedummyword\ogonek 4459 \definedummyword\ogonek
@@ -4421,6 +4466,7 @@ end
4421 \definedummyword\quoteleft 4466 \definedummyword\quoteleft
4422 \definedummyword\quoteright 4467 \definedummyword\quoteright
4423 \definedummyword\quotesinglbase 4468 \definedummyword\quotesinglbase
4469 \definedummyword\rbracechar
4424 \definedummyword\result 4470 \definedummyword\result
4425 \definedummyword\textdegree 4471 \definedummyword\textdegree
4426 % 4472 %
@@ -4472,7 +4518,9 @@ end
4472 \definedummyword\t 4518 \definedummyword\t
4473 % 4519 %
4474 % Commands that take arguments. 4520 % Commands that take arguments.
4521 \definedummyword\abbr
4475 \definedummyword\acronym 4522 \definedummyword\acronym
4523 \definedummyword\anchor
4476 \definedummyword\cite 4524 \definedummyword\cite
4477 \definedummyword\code 4525 \definedummyword\code
4478 \definedummyword\command 4526 \definedummyword\command
@@ -4482,7 +4530,9 @@ end
4482 \definedummyword\emph 4530 \definedummyword\emph
4483 \definedummyword\env 4531 \definedummyword\env
4484 \definedummyword\file 4532 \definedummyword\file
4533 \definedummyword\image
4485 \definedummyword\indicateurl 4534 \definedummyword\indicateurl
4535 \definedummyword\inforef
4486 \definedummyword\kbd 4536 \definedummyword\kbd
4487 \definedummyword\key 4537 \definedummyword\key
4488 \definedummyword\math 4538 \definedummyword\math
@@ -4529,7 +4579,10 @@ end
4529 % content at all. So for index sorting, we map @{ and @} to strings 4579 % content at all. So for index sorting, we map @{ and @} to strings
4530 % starting with |, since that ASCII character is between ASCII { and }. 4580 % starting with |, since that ASCII character is between ASCII { and }.
4531 \def\{{|a}% 4581 \def\{{|a}%
4582 \def\lbracechar{|a}%
4583 %
4532 \def\}{|b}% 4584 \def\}{|b}%
4585 \def\rbracechar{|b}%
4533 % 4586 %
4534 % Non-English letters. 4587 % Non-English letters.
4535 \def\AA{AA}% 4588 \def\AA{AA}%
@@ -4705,10 +4758,9 @@ end
4705% 4758%
4706% ..., ready, GO: 4759% ..., ready, GO:
4707% 4760%
4708\def\safewhatsit#1{% 4761\def\safewhatsit#1{\ifhmode
4709\ifhmode
4710 #1% 4762 #1%
4711\else 4763 \else
4712 % \lastskip and \lastpenalty cannot both be nonzero simultaneously. 4764 % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
4713 \whatsitskip = \lastskip 4765 \whatsitskip = \lastskip
4714 \edef\lastskipmacro{\the\lastskip}% 4766 \edef\lastskipmacro{\the\lastskip}%
@@ -4732,7 +4784,6 @@ end
4732 % to re-insert the same penalty (values >10000 are used for various 4784 % to re-insert the same penalty (values >10000 are used for various
4733 % signals); since we just inserted a non-discardable item, any 4785 % signals); since we just inserted a non-discardable item, any
4734 % following glue (such as a \parskip) would be a breakpoint. For example: 4786 % following glue (such as a \parskip) would be a breakpoint. For example:
4735 %
4736 % @deffn deffn-whatever 4787 % @deffn deffn-whatever
4737 % @vindex index-whatever 4788 % @vindex index-whatever
4738 % Description. 4789 % Description.
@@ -4745,8 +4796,7 @@ end
4745 % (the whatsit from the \write), so we must insert a \nobreak. 4796 % (the whatsit from the \write), so we must insert a \nobreak.
4746 \nobreak\vskip\whatsitskip 4797 \nobreak\vskip\whatsitskip
4747 \fi 4798 \fi
4748\fi 4799\fi}
4749}
4750 4800
4751% The index entry written in the file actually looks like 4801% The index entry written in the file actually looks like
4752% \entry {sortstring}{page}{topic} 4802% \entry {sortstring}{page}{topic}
@@ -5849,14 +5899,15 @@ end
5849 % 5899 %
5850 % We'll almost certainly start a paragraph next, so don't let that 5900 % We'll almost certainly start a paragraph next, so don't let that
5851 % glue accumulate. (Not a breakpoint because it's preceded by a 5901 % glue accumulate. (Not a breakpoint because it's preceded by a
5852 % discardable item.) 5902 % discardable item.) However, when a paragraph is not started next
5903 % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
5904 % or the negative glue will cause weirdly wrong output, typically
5905 % obscuring the section heading with something else.
5853 \vskip-\parskip 5906 \vskip-\parskip
5854 % 5907 %
5855 % This is purely so the last item on the list is a known \penalty > 5908 % This is so the last item on the main vertical list is a known
5856 % 10000. This is so \startdefun can avoid allowing breakpoints after 5909 % \penalty > 10000, so \startdefun, etc., can recognize the situation
5857 % section headings. Otherwise, it would insert a valid breakpoint between: 5910 % and do the needful.
5858 % @section sec-whatever
5859 % @deffn def-whatever
5860 \penalty 10001 5911 \penalty 10001
5861} 5912}
5862 5913
@@ -6276,7 +6327,7 @@ end
6276 % If this cartouche directly follows a sectioning command, we need the 6327 % If this cartouche directly follows a sectioning command, we need the
6277 % \parskip glue (backspaced over by default) or the cartouche can 6328 % \parskip glue (backspaced over by default) or the cartouche can
6278 % collide with the section heading. 6329 % collide with the section heading.
6279 \ifnum\lastpenalty>10000 \vskip\parskip \fi 6330 \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
6280 % 6331 %
6281 \vbox\bgroup 6332 \vbox\bgroup
6282 \baselineskip=0pt\parskip=0pt\lineskip=0pt 6333 \baselineskip=0pt\parskip=0pt\lineskip=0pt
@@ -7766,7 +7817,7 @@ end
7766 \fi\fi 7817 \fi\fi
7767} 7818}
7768 7819
7769 7820%
7770% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is 7821% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
7771% the node name, #2 the name of the Info cross-reference, #3 the printed 7822% the node name, #2 the name of the Info cross-reference, #3 the printed
7772% node name, #4 the name of the Info file, #5 the name of the printed 7823% node name, #4 the name of the Info file, #5 the name of the printed
@@ -7775,26 +7826,41 @@ end
7775\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} 7826\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
7776\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} 7827\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
7777\def\ref#1{\xrefX[#1,,,,,,,]} 7828\def\ref#1{\xrefX[#1,,,,,,,]}
7829%
7830\newbox\toprefbox
7831\newbox\printedrefnamebox
7832\newbox\infofilenamebox
7833\newbox\printedmanualbox
7834%
7778\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup 7835\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
7779 \unsepspaces 7836 \unsepspaces
7780 \def\printedmanual{\ignorespaces #5}% 7837 %
7838 % Get args without leading/trailing spaces.
7781 \def\printedrefname{\ignorespaces #3}% 7839 \def\printedrefname{\ignorespaces #3}%
7782 \setbox1=\hbox{\printedmanual\unskip}% 7840 \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
7783 \setbox0=\hbox{\printedrefname\unskip}% 7841 %
7784 \ifdim \wd0 = 0pt 7842 \def\infofilename{\ignorespaces #4}%
7843 \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
7844 %
7845 \def\printedmanual{\ignorespaces #5}%
7846 \setbox\printedmanualbox = \hbox{\printedmanual\unskip}%
7847 %
7848 % If the printed reference name (arg #3) was not explicitly given in
7849 % the @xref, figure out what we want to use.
7850 \ifdim \wd\printedrefnamebox = 0pt
7785 % No printed node name was explicitly given. 7851 % No printed node name was explicitly given.
7786 \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax 7852 \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
7787 % Use the node name inside the square brackets. 7853 % Not auto section-title: use node name inside the square brackets.
7788 \def\printedrefname{\ignorespaces #1}% 7854 \def\printedrefname{\ignorespaces #1}%
7789 \else 7855 \else
7790 % Use the actual chapter/section title appear inside 7856 % Auto section-title: use chapter/section title inside
7791 % the square brackets. Use the real section title if we have it. 7857 % the square brackets if we have it.
7792 \ifdim \wd1 > 0pt 7858 \ifdim \wd\printedmanualbox > 0pt
7793 % It is in another manual, so we don't have it. 7859 % It is in another manual, so we don't have it; use node name.
7794 \def\printedrefname{\ignorespaces #1}% 7860 \def\printedrefname{\ignorespaces #1}%
7795 \else 7861 \else
7796 \ifhavexrefs 7862 \ifhavexrefs
7797 % We know the real title if we have the xref values. 7863 % We (should) know the real title if we have the xref values.
7798 \def\printedrefname{\refx{#1-title}{}}% 7864 \def\printedrefname{\refx{#1-title}{}}%
7799 \else 7865 \else
7800 % Otherwise just copy the Info node name. 7866 % Otherwise just copy the Info node name.
@@ -7808,13 +7874,20 @@ end
7808 \ifpdf 7874 \ifpdf
7809 {\indexnofonts 7875 {\indexnofonts
7810 \turnoffactive 7876 \turnoffactive
7877 \makevalueexpandable
7811 % This expands tokens, so do it after making catcode changes, so _ 7878 % This expands tokens, so do it after making catcode changes, so _
7812 % etc. don't get their TeX definitions. 7879 % etc. don't get their TeX definitions. This ignores all spaces in
7880 % #4, including (wrongly) those in the middle of the filename.
7813 \getfilename{#4}% 7881 \getfilename{#4}%
7814 % 7882 %
7815 % See comments at \activebackslashdouble. 7883 % This (wrongly) does not take account of leading or trailing
7816 {\activebackslashdouble \xdef\pdfxrefdest{#1}% 7884 % spaces in #1, which should be ignored.
7817 \backslashparens\pdfxrefdest}% 7885 \edef\pdfxrefdest{#1}%
7886 \ifx\pdfxrefdest\empty
7887 \def\pdfxrefdest{Top}% no empty targets
7888 \else
7889 \txiescapepdf\pdfxrefdest % escape PDF special chars
7890 \fi
7818 % 7891 %
7819 \leavevmode 7892 \leavevmode
7820 \startlink attr{/Border [0 0 0]}% 7893 \startlink attr{/Border [0 0 0]}%
@@ -7841,29 +7914,42 @@ end
7841 \iffloat\Xthisreftitle 7914 \iffloat\Xthisreftitle
7842 % If the user specified the print name (third arg) to the ref, 7915 % If the user specified the print name (third arg) to the ref,
7843 % print it instead of our usual "Figure 1.2". 7916 % print it instead of our usual "Figure 1.2".
7844 \ifdim\wd0 = 0pt 7917 \ifdim\wd\printedrefnamebox = 0pt
7845 \refx{#1-snt}{}% 7918 \refx{#1-snt}{}%
7846 \else 7919 \else
7847 \printedrefname 7920 \printedrefname
7848 \fi 7921 \fi
7849 % 7922 %
7850 % if the user also gave the printed manual name (fifth arg), append 7923 % If the user also gave the printed manual name (fifth arg), append
7851 % "in MANUALNAME". 7924 % "in MANUALNAME".
7852 \ifdim \wd1 > 0pt 7925 \ifdim \wd\printedmanualbox > 0pt
7853 \space \putwordin{} \cite{\printedmanual}% 7926 \space \putwordin{} \cite{\printedmanual}%
7854 \fi 7927 \fi
7855 \else 7928 \else
7856 % node/anchor (non-float) references. 7929 % node/anchor (non-float) references.
7930 %
7931 % If we use \unhbox to print the node names, TeX does not insert
7932 % empty discretionaries after hyphens, which means that it will not
7933 % find a line break at a hyphen in a node names. Since some manuals
7934 % are best written with fairly long node names, containing hyphens,
7935 % this is a loss. Therefore, we give the text of the node name
7936 % again, so it is as if TeX is seeing it for the first time.
7937 %
7938 \ifdim \wd\printedmanualbox > 0pt
7939 % Cross-manual reference with a printed manual name.
7940 %
7941 \crossmanualxref{\cite{\printedmanual\unskip}}%
7942 %
7943 \else\ifdim \wd\infofilenamebox > 0pt
7944 % Cross-manual reference with only an info filename (arg 4), no
7945 % printed manual name (arg 5). This is essentially the same as
7946 % the case above; we output the filename, since we have nothing else.
7947 %
7948 \crossmanualxref{\code{\infofilename\unskip}}%
7857 % 7949 %
7858 % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
7859 % insert empty discretionaries after hyphens, which means that it will
7860 % not find a line break at a hyphen in a node names. Since some manuals
7861 % are best written with fairly long node names, containing hyphens, this
7862 % is a loss. Therefore, we give the text of the node name again, so it
7863 % is as if TeX is seeing it for the first time.
7864 \ifdim \wd1 > 0pt
7865 \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
7866 \else 7950 \else
7951 % Reference within this manual.
7952 %
7867 % _ (for example) has to be the character _ for the purposes of the 7953 % _ (for example) has to be the character _ for the purposes of the
7868 % control sequence corresponding to the node, but it has to expand 7954 % control sequence corresponding to the node, but it has to expand
7869 % into the usual \leavevmode...\vrule stuff for purposes of 7955 % into the usual \leavevmode...\vrule stuff for purposes of
@@ -7875,7 +7961,7 @@ end
7875 \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% 7961 \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
7876 \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi 7962 \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
7877 }% 7963 }%
7878 % output the `[mynode]' via a macro so it can be overridden. 7964 % output the `[mynode]' via the macro below so it can be overridden.
7879 \xrefprintnodename\printedrefname 7965 \xrefprintnodename\printedrefname
7880 % 7966 %
7881 % But we always want a comma and a space: 7967 % But we always want a comma and a space:
@@ -7883,11 +7969,37 @@ end
7883 % 7969 %
7884 % output the `page 3'. 7970 % output the `page 3'.
7885 \turnoffactive \putwordpage\tie\refx{#1-pg}{}% 7971 \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
7886 \fi 7972 \fi\fi
7887 \fi 7973 \fi
7888 \endlink 7974 \endlink
7889\endgroup} 7975\endgroup}
7890 7976
7977% Output a cross-manual xref to #1. Used just above (twice).
7978%
7979% Only include the text "Section ``foo'' in" if the foo is neither
7980% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
7981% "see The Foo Manual", the idea being to refer to the whole manual.
7982%
7983% But, this being TeX, we can't easily compare our node name against the
7984% string "Top" while ignoring the possible spaces before and after in
7985% the input. By adding the arbitrary 7sp below, we make it much less
7986% likely that a real node name would have the same width as "Top" (e.g.,
7987% in a monospaced font). Hopefully it will never happen in practice.
7988%
7989% For the same basic reason, we retypeset the "Top" at every
7990% reference, since the current font is indeterminate.
7991%
7992\def\crossmanualxref#1{%
7993 \setbox\toprefbox = \hbox{Top\kern7sp}%
7994 \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
7995 \ifdim \wd2 > 7sp % nonempty?
7996 \ifdim \wd2 = \wd\toprefbox \else % same as Top?
7997 \putwordSection{} ``\printedrefname'' \putwordin{}\space
7998 \fi
7999 \fi
8000 #1%
8001}
8002
7891% This macro is called from \xrefX for the `[nodename]' part of xref 8003% This macro is called from \xrefX for the `[nodename]' part of xref
7892% output. It's a separate macro only so it can be changed more easily, 8004% output. It's a separate macro only so it can be changed more easily,
7893% since square brackets don't work well in some documents. Particularly 8005% since square brackets don't work well in some documents. Particularly
@@ -8103,7 +8215,7 @@ end
8103% space to prevent strange expansion errors.) 8215% space to prevent strange expansion errors.)
8104\def\supereject{\par\penalty -20000\footnoteno =0 } 8216\def\supereject{\par\penalty -20000\footnoteno =0 }
8105 8217
8106% @footnotestyle is meaningful for info output only. 8218% @footnotestyle is meaningful for Info output only.
8107\let\footnotestyle=\comment 8219\let\footnotestyle=\comment
8108 8220
8109{\catcode `\@=11 8221{\catcode `\@=11
@@ -8166,6 +8278,8 @@ end
8166 % expands into a box, it must come within the paragraph, lest it 8278 % expands into a box, it must come within the paragraph, lest it
8167 % provide a place where TeX can split the footnote. 8279 % provide a place where TeX can split the footnote.
8168 \footstrut 8280 \footstrut
8281 %
8282 % Invoke rest of plain TeX footnote routine.
8169 \futurelet\next\fo@t 8283 \futurelet\next\fo@t
8170} 8284}
8171}%end \catcode `\@=11 8285}%end \catcode `\@=11
@@ -8253,7 +8367,7 @@ end
8253 it from ftp://tug.org/tex/epsf.tex.} 8367 it from ftp://tug.org/tex/epsf.tex.}
8254% 8368%
8255\def\image#1{% 8369\def\image#1{%
8256 \ifx\epsfbox\thisiundefined 8370 \ifx\epsfbox\thisisundefined
8257 \ifwarnednoepsf \else 8371 \ifwarnednoepsf \else
8258 \errhelp = \noepsfhelp 8372 \errhelp = \noepsfhelp
8259 \errmessage{epsf.tex not found, images will be ignored}% 8373 \errmessage{epsf.tex not found, images will be ignored}%
@@ -8277,6 +8391,13 @@ end
8277 % If the image is by itself, center it. 8391 % If the image is by itself, center it.
8278 \ifvmode 8392 \ifvmode
8279 \imagevmodetrue 8393 \imagevmodetrue
8394 \else \ifx\centersub\centerV
8395 % for @center @image, we need a vbox so we can have our vertical space
8396 \imagevmodetrue
8397 \vbox\bgroup % vbox has better behavior than vtop herev
8398 \fi\fi
8399 %
8400 \ifimagevmode
8280 \nobreak\medskip 8401 \nobreak\medskip
8281 % Usually we'll have text after the image which will insert 8402 % Usually we'll have text after the image which will insert
8282 % \parskip glue, so insert it here too to equalize the space 8403 % \parskip glue, so insert it here too to equalize the space
@@ -8286,9 +8407,13 @@ end
8286 \fi 8407 \fi
8287 % 8408 %
8288 % Leave vertical mode so that indentation from an enclosing 8409 % Leave vertical mode so that indentation from an enclosing
8289 % environment such as @quotation is respected. On the other hand, if 8410 % environment such as @quotation is respected.
8290 % it's at the top level, we don't want the normal paragraph indentation. 8411 % However, if we're at the top level, we don't want the
8291 \noindent 8412 % normal paragraph indentation.
8413 % On the other hand, if we are in the case of @center @image, we don't
8414 % want to start a paragraph, which will create a hsize-width box and
8415 % eradicate the centering.
8416 \ifx\centersub\centerV\else \noindent \fi
8292 % 8417 %
8293 % Output the image. 8418 % Output the image.
8294 \ifpdf 8419 \ifpdf
@@ -8300,7 +8425,10 @@ end
8300 \epsfbox{#1.eps}% 8425 \epsfbox{#1.eps}%
8301 \fi 8426 \fi
8302 % 8427 %
8303 \ifimagevmode \medskip \fi % space after the standalone image 8428 \ifimagevmode
8429 \medskip % space after a standalone image
8430 \fi
8431 \ifx\centersub\centerV \egroup \fi
8304\endgroup} 8432\endgroup}
8305 8433
8306 8434
@@ -9781,14 +9909,24 @@ directory should work if nowhere else does.}
9781 9909
9782% In texinfo, backslash is an active character; it prints the backslash 9910% In texinfo, backslash is an active character; it prints the backslash
9783% in fixed width font. 9911% in fixed width font.
9784\catcode`\\=\active 9912\catcode`\\=\active % @ for escape char from now on.
9785@def@normalbackslash{{@tt@backslashcurfont}} 9913
9914% The story here is that in math mode, the \char of \backslashcurfont
9915% ends up printing the roman \ from the math symbol font (because \char
9916% in math mode uses the \mathcode, and plain.tex sets
9917% \mathcode`\\="026E). It seems better for @backslashchar{} to always
9918% print a typewriter backslash, hence we use an explicit \mathchar,
9919% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
9920% ignored family value; char position "5C). We can't use " for the
9921% usual hex value because it has already been made active.
9922@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
9923@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
9924
9786% On startup, @fixbackslash assigns: 9925% On startup, @fixbackslash assigns:
9787% @let \ = @normalbackslash 9926% @let \ = @normalbackslash
9788
9789% \rawbackslash defines an active \ to do \backslashcurfont. 9927% \rawbackslash defines an active \ to do \backslashcurfont.
9790% \otherbackslash defines an active \ to be a literal `\' character with 9928% \otherbackslash defines an active \ to be a literal `\' character with
9791% catcode other. 9929% catcode other. We switch back and forth between these.
9792@gdef@rawbackslash{@let\=@backslashcurfont} 9930@gdef@rawbackslash{@let\=@backslashcurfont}
9793@gdef@otherbackslash{@let\=@realbackslash} 9931@gdef@otherbackslash{@let\=@realbackslash}
9794 9932
@@ -9844,10 +9982,13 @@ directory should work if nowhere else does.}
9844@def@normalslash{/} 9982@def@normalslash{/}
9845 9983
9846% These look ok in all fonts, so just make them not special. 9984% These look ok in all fonts, so just make them not special.
9985% @hashchar{} gets its own user-level command, because of #line.
9847@catcode`@& = @other @def@normalamp{&} 9986@catcode`@& = @other @def@normalamp{&}
9848@catcode`@# = @other @def@normalhash{#} 9987@catcode`@# = @other @def@normalhash{#}
9849@catcode`@% = @other @def@normalpercent{%} 9988@catcode`@% = @other @def@normalpercent{%}
9850 9989
9990@let @hashchar = @normalhash
9991
9851@c Finally, make ` and ' active, so that txicodequoteundirected and 9992@c Finally, make ` and ' active, so that txicodequoteundirected and
9852@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we 9993@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
9853@c don't make ` and ' active, @code will not get them as active chars. 9994@c don't make ` and ' active, @code will not get them as active chars.