~ubuntu-branches/ubuntu/precise/avrdude/precise

« back to all changes in this revision

Viewing changes to doc/texinfo.tex

  • Committer: Bazaar Package Importer
  • Author(s): Michael Biebl
  • Date: 2009-07-14 15:09:17 UTC
  • mfrom: (1.1.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20090714150917-vthf96lweuevgtds
Tags: 5.8-1
* New upstream release.
* Bump Standards-Version to 3.8.2. No further changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
% Load plain if necessary, i.e., if running under initex.
4
4
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5
5
%
6
 
\def\texinfoversion{2004-11-25.16}
 
6
\def\texinfoversion{2005-07-05.19}
7
7
%
8
8
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9
 
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
 
9
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
10
10
% Foundation, Inc.
11
11
%
12
12
% This texinfo.tex file is free software; you can redistribute it and/or
21
21
%
22
22
% You should have received a copy of the GNU General Public License
23
23
% along with this texinfo.tex file; see the file COPYING.  If not, write
24
 
% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25
 
% Boston, MA 02111-1307, USA.
 
24
% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
25
% Boston, MA 02110-1301, USA.
26
26
%
27
27
% As a special exception, when this file is read by TeX when processing
28
28
% a Texinfo source document, you may use the result without
155
155
 
156
156
% In some macros, we cannot use the `\? notation---the left quote is
157
157
% in some cases the escape char.
 
158
\chardef\backChar  = `\\
158
159
\chardef\colonChar = `\:
159
160
\chardef\commaChar = `\,
160
161
\chardef\dotChar   = `\.
161
162
\chardef\exclamChar= `\!
 
163
\chardef\plusChar  = `\+
162
164
\chardef\questChar = `\?
163
165
\chardef\semiChar  = `\;
164
166
\chardef\underChar = `\_
167
169
\chardef\spacecat = 10
168
170
\def\spaceisspace{\catcode\spaceChar=\spacecat}
169
171
 
 
172
{% for help with debugging.
 
173
 % example usage: \expandafter\show\activebackslash
 
174
 \catcode`\! = 0 \catcode`\\ = \active
 
175
 !global!def!activebackslash{\}
 
176
}
 
177
 
170
178
% Ignore a token.
171
179
%
172
180
\def\gobble#1{}
302
310
    % take effect in \write's, yet the group defined by the \vbox ends
303
311
    % before the \shipout runs.
304
312
    %
305
 
    \escapechar = `\\     % use backslash in output files.
306
313
    \indexdummies         % don't expand commands in the output.
307
 
    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
308
 
                   % the page break happens to be in the middle of an example.
309
314
    \shipout\vbox{%
310
315
      % Do this early so pdf references go to the beginning of the page.
311
316
      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
356
361
      \egroup % \vbox from first cropmarks clause
357
362
      \fi
358
363
    }% end of \shipout\vbox
359
 
  }% end of group with \normalturnoffactive
 
364
  }% end of group with \indexdummies
360
365
  \advancepageno
361
366
  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
362
367
}
566
571
\let\}=\myrbrace
567
572
\begingroup
568
573
  % Definitions to produce \{ and \} commands for indices,
569
 
  % and @{ and @} for the aux file.
 
574
  % and @{ and @} for the aux/toc files.
570
575
  \catcode`\{ = \other \catcode`\} = \other
571
576
  \catcode`\[ = 1 \catcode`\] = 2
572
577
  \catcode`\! = 0 \catcode`\\ = \other
647
652
\let\/=\allowbreak
648
653
 
649
654
% @. is an end-of-sentence period.
650
 
\def\.{.\spacefactor=3000 }
 
655
\def\.{.\spacefactor=\endofsentencespacefactor\space}
651
656
 
652
657
% @! is an end-of-sentence bang.
653
 
\def\!{!\spacefactor=3000 }
 
658
\def\!{!\spacefactor=\endofsentencespacefactor\space}
654
659
 
655
660
% @? is an end-of-sentence query.
656
 
\def\?{?\spacefactor=3000 }
 
661
\def\?{?\spacefactor=\endofsentencespacefactor\space}
 
662
 
 
663
% @frenchspacing on|off  says whether to put extra space after punctuation.
 
664
 
665
\def\onword{on}
 
666
\def\offword{off}
 
667
%
 
668
\parseargdef\frenchspacing{%
 
669
  \def\temp{#1}%
 
670
  \ifx\temp\onword \plainfrenchspacing
 
671
  \else\ifx\temp\offword \plainnonfrenchspacing
 
672
  \else
 
673
    \errhelp = \EMsimple
 
674
    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
 
675
  \fi\fi
 
676
}
657
677
 
658
678
% @w prevents a word break.  Without the \leavevmode, @w at the
659
679
% beginning of a paragraph, when TeX is still in vertical mode, would
1092
1112
%
1093
1113
\def\enddots{%
1094
1114
  \dots
1095
 
  \spacefactor=3000
 
1115
  \spacefactor=\endofsentencespacefactor
1096
1116
}
1097
1117
 
1098
1118
% @comma{} is so commas can be inserted into text without messing up
1176
1196
    \fi
1177
1197
  \fi
1178
1198
\fi
1179
 
%
 
1199
 
 
1200
% PDF uses PostScript string constants for the names of xref targets, to
 
1201
% for display in the outlines, and in other places.  Thus, we have to
 
1202
% double any backslashes.  Otherwise, a name like "\node" will be
 
1203
% interpreted as a newline (\n), followed by o, d, e.  Not good.
 
1204
% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
 
1205
% (and related messages, the final outcome is that it is up to the TeX
 
1206
% user to double the backslashes and otherwise make the string valid, so
 
1207
% that's we do).
 
1208
 
 
1209
% double active backslashes.
 
1210
 
1211
{\catcode`\@=0 \catcode`\\=\active
 
1212
 @gdef@activebackslash{@catcode`@\=@active @otherbackslash}
 
1213
 @gdef@activebackslashdouble{%
 
1214
   @catcode@backChar=@active
 
1215
   @let\=@doublebackslash}
 
1216
}
 
1217
 
 
1218
% To handle parens, we must adopt a different approach, since parens are
 
1219
% not active characters.  hyperref.dtx (which has the same problem as
 
1220
% us) handles it with this amazing macro to replace tokens.  I've
 
1221
% tinkered with it a little for texinfo, but it's definitely from there.
 
1222
 
1223
% #1 is the tokens to replace.
 
1224
% #2 is the replacement.
 
1225
% #3 is the control sequence with the string.
 
1226
 
1227
\def\HyPsdSubst#1#2#3{%
 
1228
  \def\HyPsdReplace##1#1##2\END{%
 
1229
    ##1%
 
1230
    \ifx\\##2\\%
 
1231
    \else
 
1232
      #2%
 
1233
      \HyReturnAfterFi{%
 
1234
        \HyPsdReplace##2\END
 
1235
      }%
 
1236
    \fi
 
1237
  }%
 
1238
  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
 
1239
}
 
1240
\long\def\HyReturnAfterFi#1\fi{\fi#1}
 
1241
 
 
1242
% #1 is a control sequence in which to do the replacements.
 
1243
\def\backslashparens#1{%
 
1244
  \xdef#1{#1}% redefine it as its expansion; the definition is simply
 
1245
             % \lastnode when called from \setref -> \pdfmkdest.
 
1246
  \HyPsdSubst{(}{\backslashlparen}{#1}%
 
1247
  \HyPsdSubst{)}{\backslashrparen}{#1}%
 
1248
}
 
1249
 
 
1250
{\catcode\exclamChar = 0 \catcode\backChar = \other
 
1251
 !gdef!backslashlparen{\(}%
 
1252
 !gdef!backslashrparen{\)}%
 
1253
}
 
1254
 
1180
1255
\ifpdf
1181
1256
  \input pdfcolor
1182
1257
  \pdfcatalog{/PageMode /UseOutlines}%
1201
1276
      \pdfrefximage \pdflastximage
1202
1277
    \fi}
1203
1278
  \def\pdfmkdest#1{{%
1204
 
    % We have to set dummies so commands such as @code in a section title
1205
 
    % aren't expanded.
 
1279
    % We have to set dummies so commands such as @code, and characters
 
1280
    % such as \, aren't expanded when present in a section title.
1206
1281
    \atdummies
1207
 
    \normalturnoffactive
1208
 
    \pdfdest name{#1} xyz%
1209
 
  }}
1210
 
  \def\pdfmkpgn#1{#1}
 
1282
    \activebackslashdouble
 
1283
    \def\pdfdestname{#1}%
 
1284
    \backslashparens\pdfdestname
 
1285
    \pdfdest name{\pdfdestname} xyz%
 
1286
  }}%
 
1287
  %
 
1288
  % used to mark target names; must be expandable.
 
1289
  \def\pdfmkpgn#1{#1}%
 
1290
  %
1211
1291
  \let\linkcolor = \Blue  % was Cyan, but that seems light?
1212
1292
  \def\endlink{\Black\pdfendlink}
1213
1293
  % Adding outlines to PDF; macros for calculating structure of outlines
1218
1298
    \advance\tempnum by 1
1219
1299
    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
1220
1300
  %
1221
 
  % #1 is the section text.  #2 is the pdf expression for the number
1222
 
  % of subentries (or empty, for subsubsections).  #3 is the node
1223
 
  % text, which might be empty if this toc entry had no
1224
 
  % corresponding node.  #4 is the page number.
 
1301
  % #1 is the section text, which is what will be displayed in the
 
1302
  % outline by the pdf viewer.  #2 is the pdf expression for the number
 
1303
  % of subentries (or empty, for subsubsections).  #3 is the node text,
 
1304
  % which might be empty if this toc entry had no corresponding node.
 
1305
  % #4 is the page number
1225
1306
  %
1226
1307
  \def\dopdfoutline#1#2#3#4{%
1227
1308
    % Generate a link to the node text if that exists; else, use the
1228
1309
    % page number.  We could generate a destination for the section
1229
1310
    % text in the case where a section has no node, but it doesn't
1230
 
    % seem worthwhile, since most documents are normally structured.
 
1311
    % seem worth the trouble, since most documents are normally structured.
1231
1312
    \def\pdfoutlinedest{#3}%
1232
 
    \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
1233
 
    %
1234
 
    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
 
1313
    \ifx\pdfoutlinedest\empty
 
1314
      \def\pdfoutlinedest{#4}%
 
1315
    \else
 
1316
      % Doubled backslashes in the name.
 
1317
      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
 
1318
       \backslashparens\pdfoutlinedest}%
 
1319
    \fi
 
1320
    %
 
1321
    % Also double the backslashes in the display string.
 
1322
    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
 
1323
     \backslashparens\pdfoutlinetext}%
 
1324
    %
 
1325
    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
1235
1326
  }
1236
1327
  %
1237
1328
  \def\pdfmakeoutlines{%
1272
1363
      \def\unnsecentry{\numsecentry}%
1273
1364
      \def\unnsubsecentry{\numsubsecentry}%
1274
1365
      \def\unnsubsubsecentry{\numsubsubsecentry}%
1275
 
      \input \jobname.toc
 
1366
      \readdatafile{toc}%
1276
1367
      %
1277
1368
      % Read toc second time, this time actually producing the outlines.
1278
1369
      % The `-' means take the \expnumber as the absolute number of
1298
1389
      % their "best" equivalent, based on the @documentencoding.  Right
1299
1390
      % now, I guess we'll just let the pdf reader have its way.
1300
1391
      \indexnofonts
1301
 
      \turnoffactive
 
1392
      \setupdatafile
 
1393
      \activebackslash
1302
1394
      \input \jobname.toc
1303
1395
    \endgroup
1304
1396
  }
1305
1397
  %
1306
 
  \def\makelinks #1,{%
1307
 
    \def\params{#1}\def\E{END}%
1308
 
    \ifx\params\E
1309
 
      \let\nextmakelinks=\relax
1310
 
    \else
1311
 
      \let\nextmakelinks=\makelinks
1312
 
      \ifnum\lnkcount>0,\fi
1313
 
      \picknum{#1}%
1314
 
      \startlink attr{/Border [0 0 0]}
1315
 
        goto name{\pdfmkpgn{\the\pgn}}%
1316
 
      \linkcolor #1%
1317
 
      \advance\lnkcount by 1%
1318
 
      \endlink
1319
 
    \fi
1320
 
    \nextmakelinks
1321
 
  }
1322
 
  \def\picknum#1{\expandafter\pn#1}
1323
 
  \def\pn#1{%
1324
 
    \def\p{#1}%
1325
 
    \ifx\p\lbrace
1326
 
      \let\nextpn=\ppn
1327
 
    \else
1328
 
      \let\nextpn=\ppnn
1329
 
      \def\first{#1}
1330
 
    \fi
1331
 
    \nextpn
1332
 
  }
1333
 
  \def\ppn#1{\pgn=#1\gobble}
1334
 
  \def\ppnn{\pgn=\first}
1335
 
  \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
1336
1398
  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
1337
1399
    \ifx\PP\D\let\nextsp\relax
1338
1400
    \else\let\nextsp\skipspaces
1749
1811
% sometimes \x has an active definition that messes things up.
1750
1812
%
1751
1813
\catcode`@=11
1752
 
  \def\frenchspacing{%
 
1814
  \def\plainfrenchspacing{%
1753
1815
    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
1754
1816
    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
 
1817
    \def\endofsentencespacefactor{1000}% for @. and friends
 
1818
  }
 
1819
  \def\plainnonfrenchspacing{%
 
1820
    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
 
1821
    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
 
1822
    \def\endofsentencespacefactor{3000}% for @. and friends
1755
1823
  }
1756
1824
\catcode`@=\other
 
1825
\def\endofsentencespacefactor{3000}% default
1757
1826
 
1758
1827
\def\t#1{%
1759
 
  {\tt \rawbackslash \frenchspacing #1}%
 
1828
  {\tt \rawbackslash \plainfrenchspacing #1}%
1760
1829
  \null
1761
1830
}
1762
1831
\def\samp#1{`\tclose{#1}'\null}
1793
1862
    \nohyphenation
1794
1863
    %
1795
1864
    \rawbackslash
1796
 
    \frenchspacing
 
1865
    \plainfrenchspacing
1797
1866
    #1%
1798
1867
  }%
1799
1868
  \null
1813
1882
  \catcode`\_=\active
1814
1883
  %
1815
1884
  \global\def\code{\begingroup
1816
 
    \catcode`\-=\active \let-\codedash
1817
 
    \catcode`\_=\active \let_\codeunder
 
1885
    \catcode`\-=\active  \catcode`\_=\active
 
1886
    \ifallowcodebreaks
 
1887
     \let-\codedash
 
1888
     \let_\codeunder
 
1889
    \else
 
1890
     \let-\realdash
 
1891
     \let_\realunder
 
1892
    \fi
1818
1893
    \codex
1819
1894
  }
1820
1895
}
1834
1909
}
1835
1910
\def\codex #1{\tclose{#1}\endgroup}
1836
1911
 
 
1912
% An additional complication: the above will allow breaks after, e.g.,
 
1913
% each of the four underscores in __typeof__.  This is undesirable in
 
1914
% some manuals, especially if they don't have long identifiers in
 
1915
% general.  @allowcodebreaks provides a way to control this.
 
1916
 
1917
\newif\ifallowcodebreaks  \allowcodebreakstrue
 
1918
 
 
1919
\def\keywordtrue{true}
 
1920
\def\keywordfalse{false}
 
1921
 
 
1922
\parseargdef\allowcodebreaks{%
 
1923
  \def\txiarg{#1}%
 
1924
  \ifx\txiarg\keywordtrue
 
1925
    \allowcodebreakstrue
 
1926
  \else\ifx\txiarg\keywordfalse
 
1927
    \allowcodebreaksfalse
 
1928
  \else
 
1929
    \errhelp = \EMsimple
 
1930
    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
 
1931
  \fi\fi
 
1932
}
 
1933
 
1837
1934
% @kbd is like @code, except that if the argument is just one @key command,
1838
1935
% then @kbd has no effect.
1839
1936
 
1841
1938
%   `example' (@kbd uses ttsl only inside of @example and friends),
1842
1939
%   or `code' (@kbd uses normal tty font always).
1843
1940
\parseargdef\kbdinputstyle{%
1844
 
  \def\arg{#1}%
1845
 
  \ifx\arg\worddistinct
 
1941
  \def\txiarg{#1}%
 
1942
  \ifx\txiarg\worddistinct
1846
1943
    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
1847
 
  \else\ifx\arg\wordexample
 
1944
  \else\ifx\txiarg\wordexample
1848
1945
    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
1849
 
  \else\ifx\arg\wordcode
 
1946
  \else\ifx\txiarg\wordcode
1850
1947
    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
1851
1948
  \else
1852
1949
    \errhelp = \EMsimple
1853
 
    \errmessage{Unknown @kbdinputstyle option `\arg'}%
 
1950
    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
1854
1951
  \fi\fi\fi
1855
1952
}
1856
1953
\def\worddistinct{distinct}
1962
2059
1963
2060
\def\abbr#1{\doabbr #1,,\finish}
1964
2061
\def\doabbr#1,#2,#3\finish{%
1965
 
  {\frenchspacing #1}%
 
2062
  {\plainfrenchspacing #1}%
1966
2063
  \def\temp{#2}%
1967
2064
  \ifx\temp\empty \else
1968
2065
    \space ({\unsepspaces \ignorespaces \temp \unskip})%
2000
2097
\def\eurofont{%
2001
2098
  % We set the font at each command, rather than predefining it in
2002
2099
  % \textfonts and the other font-switching commands, so that
2003
 
  % installations which never need the symbold don't have to have the
 
2100
  % installations which never need the symbol don't have to have the
2004
2101
  % font installed.
2005
2102
  % 
2006
2103
  % There is only one designed size (nominal 10pt), so we always scale
3121
3218
% we have to laboriously prevent expansion for those that we don't.
3122
3219
%
3123
3220
\def\indexdummies{%
 
3221
  \escapechar = `\\     % use backslash in output files.
3124
3222
  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
3125
3223
  \def\ {\realbackslash\space }%
3126
3224
  % Need these in case \tex is in effect and \{ is a \delimiter again.
3129
3227
  \let\{ = \mylbrace
3130
3228
  \let\} = \myrbrace
3131
3229
  %
3132
 
  % \definedummyword defines \#1 as \realbackslash #1\space, thus
3133
 
  % effectively preventing its expansion.  This is used only for control
3134
 
  % words, not control letters, because the \space would be incorrect
3135
 
  % for control characters, but is needed to separate the control word
 
3230
  % Do the redefinitions.
 
3231
  \commondummies
 
3232
}
 
3233
 
 
3234
% For the aux and toc files, @ is the escape character.  So we want to
 
3235
% redefine everything using @ as the escape character (instead of
 
3236
% \realbackslash, still used for index files).  When everything uses @,
 
3237
% this will be simpler.
 
3238
%
 
3239
\def\atdummies{%
 
3240
  \def\@{@@}%
 
3241
  \def\ {@ }%
 
3242
  \let\{ = \lbraceatcmd
 
3243
  \let\} = \rbraceatcmd
 
3244
  %
 
3245
  % Do the redefinitions.
 
3246
  \commondummies
 
3247
}
 
3248
 
 
3249
% Called from \indexdummies and \atdummies.
 
3250
%
 
3251
\def\commondummies{%
 
3252
  %
 
3253
  % \definedummyword defines \#1 as \string\#1\space, thus effectively
 
3254
  % preventing its expansion.  This is used only for control% words,
 
3255
  % not control letters, because the \space would be incorrect for
 
3256
  % control characters, but is needed to separate the control word
3136
3257
  % from whatever follows.
3137
3258
  %
3138
3259
  % For control letters, we have \definedummyletter, which omits the
3142
3263
  % those that do not.  If it is followed by {arg} in the input, then
3143
3264
  % that will dutifully get written to the index (or wherever).
3144
3265
  %
3145
 
  \def\definedummyword##1{%
3146
 
    \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
3147
 
  }%
3148
 
  \def\definedummyletter##1{%
3149
 
    \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
3150
 
  }%
3151
 
  \let\definedummyaccent\definedummyletter
3152
 
  %
3153
 
  % Do the redefinitions.
3154
 
  \commondummies
3155
 
}
3156
 
 
3157
 
% For the aux file, @ is the escape character.  So we want to redefine
3158
 
% everything using @ instead of \realbackslash.  When everything uses
3159
 
% @, this will be simpler.
3160
 
%
3161
 
\def\atdummies{%
3162
 
  \def\@{@@}%
3163
 
  \def\ {@ }%
3164
 
  \let\{ = \lbraceatcmd
3165
 
  \let\} = \rbraceatcmd
3166
 
  %
3167
 
  % (See comments in \indexdummies.)
3168
 
  \def\definedummyword##1{%
3169
 
    \expandafter\def\csname ##1\endcsname{@##1\space}%
3170
 
  }%
3171
 
  \def\definedummyletter##1{%
3172
 
    \expandafter\def\csname ##1\endcsname{@##1}%
3173
 
  }%
3174
 
  \let\definedummyaccent\definedummyletter
3175
 
  %
3176
 
  % Do the redefinitions.
3177
 
  \commondummies
3178
 
}
3179
 
 
3180
 
% Called from \indexdummies and \atdummies.  \definedummyword and
3181
 
% \definedummyletter must be defined first.
3182
 
%
3183
 
\def\commondummies{%
 
3266
  \def\definedummyword  ##1{\def##1{\string##1\space}}%
 
3267
  \def\definedummyletter##1{\def##1{\string##1}}%
 
3268
  \let\definedummyaccent\definedummyletter
 
3269
  %
 
3270
  \commondummiesnofonts
 
3271
  %
 
3272
  \definedummyletter\_%
 
3273
  %
 
3274
  % Non-English letters.
 
3275
  \definedummyword\AA
 
3276
  \definedummyword\AE
 
3277
  \definedummyword\L
 
3278
  \definedummyword\OE
 
3279
  \definedummyword\O
 
3280
  \definedummyword\aa
 
3281
  \definedummyword\ae
 
3282
  \definedummyword\l
 
3283
  \definedummyword\oe
 
3284
  \definedummyword\o
 
3285
  \definedummyword\ss
 
3286
  \definedummyword\exclamdown
 
3287
  \definedummyword\questiondown
 
3288
  \definedummyword\ordf
 
3289
  \definedummyword\ordm
 
3290
  %
 
3291
  % Although these internal commands shouldn't show up, sometimes they do.
 
3292
  \definedummyword\bf
 
3293
  \definedummyword\gtr
 
3294
  \definedummyword\hat
 
3295
  \definedummyword\less
 
3296
  \definedummyword\sf
 
3297
  \definedummyword\sl
 
3298
  \definedummyword\tclose
 
3299
  \definedummyword\tt
 
3300
  %
 
3301
  \definedummyword\LaTeX
 
3302
  \definedummyword\TeX
 
3303
  %
 
3304
  % Assorted special characters.
 
3305
  \definedummyword\bullet
 
3306
  \definedummyword\comma
 
3307
  \definedummyword\copyright
 
3308
  \definedummyword\registeredsymbol
 
3309
  \definedummyword\dots
 
3310
  \definedummyword\enddots
 
3311
  \definedummyword\equiv
 
3312
  \definedummyword\error
 
3313
  \definedummyword\euro
 
3314
  \definedummyword\expansion
 
3315
  \definedummyword\minus
 
3316
  \definedummyword\pounds
 
3317
  \definedummyword\point
 
3318
  \definedummyword\print
 
3319
  \definedummyword\result
 
3320
  %
 
3321
  % We want to disable all macros so that they are not expanded by \write.
 
3322
  \macrolist
3184
3323
  %
3185
3324
  \normalturnoffactive
3186
3325
  %
3187
 
  \commondummiesnofonts
3188
 
  %
3189
 
  \definedummyletter{_}%
3190
 
  %
3191
 
  % Non-English letters.
3192
 
  \definedummyword{AA}%
3193
 
  \definedummyword{AE}%
3194
 
  \definedummyword{L}%
3195
 
  \definedummyword{OE}%
3196
 
  \definedummyword{O}%
3197
 
  \definedummyword{aa}%
3198
 
  \definedummyword{ae}%
3199
 
  \definedummyword{l}%
3200
 
  \definedummyword{oe}%
3201
 
  \definedummyword{o}%
3202
 
  \definedummyword{ss}%
3203
 
  \definedummyword{exclamdown}%
3204
 
  \definedummyword{questiondown}%
3205
 
  \definedummyword{ordf}%
3206
 
  \definedummyword{ordm}%
3207
 
  %
3208
 
  % Although these internal commands shouldn't show up, sometimes they do.
3209
 
  \definedummyword{bf}%
3210
 
  \definedummyword{gtr}%
3211
 
  \definedummyword{hat}%
3212
 
  \definedummyword{less}%
3213
 
  \definedummyword{sf}%
3214
 
  \definedummyword{sl}%
3215
 
  \definedummyword{tclose}%
3216
 
  \definedummyword{tt}%
3217
 
  %
3218
 
  \definedummyword{LaTeX}%
3219
 
  \definedummyword{TeX}%
3220
 
  %
3221
 
  % Assorted special characters.
3222
 
  \definedummyword{bullet}%
3223
 
  \definedummyword{comma}%
3224
 
  \definedummyword{copyright}%
3225
 
  \definedummyword{registeredsymbol}%
3226
 
  \definedummyword{dots}%
3227
 
  \definedummyword{enddots}%
3228
 
  \definedummyword{equiv}%
3229
 
  \definedummyword{error}%
3230
 
  \definedummyword{euro}%
3231
 
  \definedummyword{expansion}%
3232
 
  \definedummyword{minus}%
3233
 
  \definedummyword{pounds}%
3234
 
  \definedummyword{point}%
3235
 
  \definedummyword{print}%
3236
 
  \definedummyword{result}%
3237
 
  %
3238
3326
  % Handle some cases of @value -- where it does not contain any
3239
3327
  % (non-fully-expandable) commands.
3240
3328
  \makevalueexpandable
3241
 
  %
3242
 
  % Normal spaces, not active ones.
3243
 
  \unsepspaces
3244
 
  %
3245
 
  % No macro expansion.
3246
 
  \turnoffmacros
3247
3329
}
3248
3330
 
3249
3331
% \commondummiesnofonts: common to \commondummies and \indexnofonts.
3253
3335
  \catcode`\~=\other
3254
3336
  \gdef\commondummiesnofonts{%
3255
3337
    % Control letters and accents.
3256
 
    \definedummyletter{!}%
3257
 
    \definedummyaccent{"}%
3258
 
    \definedummyaccent{'}%
3259
 
    \definedummyletter{*}%
3260
 
    \definedummyaccent{,}%
3261
 
    \definedummyletter{.}%
3262
 
    \definedummyletter{/}%
3263
 
    \definedummyletter{:}%
3264
 
    \definedummyaccent{=}%
3265
 
    \definedummyletter{?}%
3266
 
    \definedummyaccent{^}%
3267
 
    \definedummyaccent{`}%
3268
 
    \definedummyaccent{~}%
3269
 
    \definedummyword{u}%
3270
 
    \definedummyword{v}%
3271
 
    \definedummyword{H}%
3272
 
    \definedummyword{dotaccent}%
3273
 
    \definedummyword{ringaccent}%
3274
 
    \definedummyword{tieaccent}%
3275
 
    \definedummyword{ubaraccent}%
3276
 
    \definedummyword{udotaccent}%
3277
 
    \definedummyword{dotless}%
 
3338
    \definedummyletter\!%
 
3339
    \definedummyaccent\"%
 
3340
    \definedummyaccent\'%
 
3341
    \definedummyletter\*%
 
3342
    \definedummyaccent\,%
 
3343
    \definedummyletter\.%
 
3344
    \definedummyletter\/%
 
3345
    \definedummyletter\:%
 
3346
    \definedummyaccent\=%
 
3347
    \definedummyletter\?%
 
3348
    \definedummyaccent\^%
 
3349
    \definedummyaccent\`%
 
3350
    \definedummyaccent\~%
 
3351
    \definedummyword\u
 
3352
    \definedummyword\v
 
3353
    \definedummyword\H
 
3354
    \definedummyword\dotaccent
 
3355
    \definedummyword\ringaccent
 
3356
    \definedummyword\tieaccent
 
3357
    \definedummyword\ubaraccent
 
3358
    \definedummyword\udotaccent
 
3359
    \definedummyword\dotless
3278
3360
    %
3279
3361
    % Texinfo font commands.
3280
 
    \definedummyword{b}%
3281
 
    \definedummyword{i}%
3282
 
    \definedummyword{r}%
3283
 
    \definedummyword{sc}%
3284
 
    \definedummyword{t}%
 
3362
    \definedummyword\b
 
3363
    \definedummyword\i
 
3364
    \definedummyword\r
 
3365
    \definedummyword\sc
 
3366
    \definedummyword\t
3285
3367
    %
3286
3368
    % Commands that take arguments.
3287
 
    \definedummyword{acronym}%
3288
 
    \definedummyword{cite}%
3289
 
    \definedummyword{code}%
3290
 
    \definedummyword{command}%
3291
 
    \definedummyword{dfn}%
3292
 
    \definedummyword{emph}%
3293
 
    \definedummyword{env}%
3294
 
    \definedummyword{file}%
3295
 
    \definedummyword{kbd}%
3296
 
    \definedummyword{key}%
3297
 
    \definedummyword{math}%
3298
 
    \definedummyword{option}%
3299
 
    \definedummyword{samp}%
3300
 
    \definedummyword{strong}%
3301
 
    \definedummyword{tie}%
3302
 
    \definedummyword{uref}%
3303
 
    \definedummyword{url}%
3304
 
    \definedummyword{var}%
3305
 
    \definedummyword{verb}%
3306
 
    \definedummyword{w}%
 
3369
    \definedummyword\acronym
 
3370
    \definedummyword\cite
 
3371
    \definedummyword\code
 
3372
    \definedummyword\command
 
3373
    \definedummyword\dfn
 
3374
    \definedummyword\emph
 
3375
    \definedummyword\env
 
3376
    \definedummyword\file
 
3377
    \definedummyword\kbd
 
3378
    \definedummyword\key
 
3379
    \definedummyword\math
 
3380
    \definedummyword\option
 
3381
    \definedummyword\samp
 
3382
    \definedummyword\strong
 
3383
    \definedummyword\tie
 
3384
    \definedummyword\uref
 
3385
    \definedummyword\url
 
3386
    \definedummyword\var
 
3387
    \definedummyword\verb
 
3388
    \definedummyword\w
3307
3389
  }
3308
3390
}
3309
3391
 
3314
3396
%
3315
3397
\def\indexnofonts{%
3316
3398
  % Accent commands should become @asis.
3317
 
  \def\definedummyaccent##1{%
3318
 
    \expandafter\let\csname ##1\endcsname\asis
3319
 
  }%
 
3399
  \def\definedummyaccent##1{\let##1\asis}%
3320
3400
  % We can just ignore other control letters.
3321
 
  \def\definedummyletter##1{%
3322
 
    \expandafter\def\csname ##1\endcsname{}%
3323
 
  }%
 
3401
  \def\definedummyletter##1{\let##1\empty}%
3324
3402
  % Hopefully, all control words can become @asis.
3325
3403
  \let\definedummyword\definedummyaccent
3326
3404
  %
3374
3452
  \def\print{-|}%
3375
3453
  \def\result{=>}%
3376
3454
  %
3377
 
  % Don't write macro names.
3378
 
  \emptyusermacros
 
3455
  % We need to get rid of all macros, leaving only the arguments (if present).
 
3456
  % Of course this is not nearly correct, but it is the best we can do for now.
 
3457
  % makeinfo does not expand macros in the argument to @deffn, which ends up
 
3458
  % writing an index entry, and texindex isn't prepared for an index sort entry
 
3459
  % that starts with \.
 
3460
  % 
 
3461
  % Since macro invocations are followed by braces, we can just redefine them
 
3462
  % to take a single TeX argument.  The case of a macro invocation that
 
3463
  % goes to end-of-line is not handled.
 
3464
  % 
 
3465
  \macrolist
3379
3466
}
3380
3467
 
3381
3468
\let\indexbackslash=0  %overridden during \printindex.
3422
3509
  %
3423
3510
  % Remember, we are within a group.
3424
3511
  \indexdummies % Must do this here, since \bf, etc expand at this stage
3425
 
  \escapechar=`\\
3426
3512
  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
3427
3513
      % so it will be output as is; and it will print as backslash.
3428
3514
  %
4289
4375
    \ifx\temptype\Ynothingkeyword
4290
4376
      \setbox0 = \hbox{}%
4291
4377
      \def\toctype{unnchap}%
4292
 
      \def\thischapter{#1}%
 
4378
      \gdef\thischapter{#1}%
4293
4379
    \else\ifx\temptype\Yomitfromtockeyword
4294
4380
      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
4295
4381
      \def\toctype{omit}%
4296
 
      \xdef\thischapter{}%
 
4382
      \gdef\thischapter{}%
4297
4383
    \else\ifx\temptype\Yappendixkeyword
4298
4384
      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
4299
4385
      \def\toctype{app}%
4482
4568
    \fi
4483
4569
    %
4484
4570
    \iflinks
4485
 
      \toks0 = {#2}%
4486
 
      \toks2 = \expandafter{\lastnode}%
4487
 
      \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
4488
 
                               {\the\toks2}{\noexpand\folio}}}%
4489
 
      \temp
 
4571
      {\atdummies
 
4572
       \edef\temp{%
 
4573
         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
 
4574
       \temp
 
4575
      }
4490
4576
    \fi
4491
4577
  \fi
4492
4578
  %
4499
4585
  \ifpdf \global\pdfmakepagedesttrue \fi
4500
4586
}
4501
4587
 
 
4588
 
 
4589
% These characters do not print properly in the Computer Modern roman
 
4590
% fonts, so we must take special care.  This is more or less redundant
 
4591
% with the Texinfo input format setup at the end of this file.
 
4592
 
4593
\def\activecatcodes{%
 
4594
  \catcode`\"=\active
 
4595
  \catcode`\$=\active
 
4596
  \catcode`\<=\active
 
4597
  \catcode`\>=\active
 
4598
  \catcode`\\=\active
 
4599
  \catcode`\^=\active
 
4600
  \catcode`\_=\active
 
4601
  \catcode`\|=\active
 
4602
  \catcode`\~=\active
 
4603
}
 
4604
 
 
4605
 
 
4606
% Read the toc file, which is essentially Texinfo input.
 
4607
\def\readtocfile{%
 
4608
  \setupdatafile
 
4609
  \activecatcodes
 
4610
  \input \jobname.toc
 
4611
}
 
4612
 
4502
4613
\newskip\contentsrightmargin \contentsrightmargin=1in
4503
4614
\newcount\savepageno
4504
4615
\newcount\lastnegativepageno \lastnegativepageno = -1
4520
4631
  %
4521
4632
  \savepageno = \pageno
4522
4633
  \begingroup                  % Set up to handle contents files properly.
4523
 
    \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
4524
 
    % We can't do this, because then an actual ^ in a section
4525
 
    % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97.
4526
 
    %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
4527
 
    \raggedbottom             % Worry more about breakpoints than the bottom.
 
4634
    \raggedbottom              % Worry more about breakpoints than the bottom.
4528
4635
    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
4529
4636
    %
4530
4637
    % Roman numerals for page numbers.
4537
4644
  \startcontents{\putwordTOC}%
4538
4645
    \openin 1 \jobname.toc
4539
4646
    \ifeof 1 \else
4540
 
      \input \jobname.toc
 
4647
      \readtocfile
4541
4648
    \fi
4542
4649
    \vfill \eject
4543
4650
    \contentsalignmacro % in case @setchapternewpage odd is in effect
4575
4682
    \let\unnsubsubsecentry = \numsecentry
4576
4683
    \openin 1 \jobname.toc
4577
4684
    \ifeof 1 \else
4578
 
      \input \jobname.toc
 
4685
      \readtocfile
4579
4686
    \fi
4580
4687
    \closein 1
4581
4688
    \vfill \eject
4765
4872
  \let\/=\ptexslash
4766
4873
  \let\*=\ptexstar
4767
4874
  \let\t=\ptext
 
4875
  \let\frenchspacing=\plainfrenchspacing
4768
4876
  %
4769
4877
  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
4770
4878
  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
4810
4918
 
4811
4919
\let\afterenvbreak = \aboveenvbreak
4812
4920
 
4813
 
% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins.
 
4921
% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
 
4922
% also clear it, so that its embedded environments do the narrowing again.
4814
4923
\let\nonarrowing=\relax
4815
4924
 
4816
4925
% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
4847
4956
                                % each corner char, and rule thickness
4848
4957
  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
4849
4958
  % Flag to tell @lisp, etc., not to narrow margin.
4850
 
  \let\nonarrowing=\comment
 
4959
  \let\nonarrowing = t%
4851
4960
  \vbox\bgroup
4852
4961
      \baselineskip=0pt\parskip=0pt\lineskip=0pt
4853
4962
      \carttop
4887
4996
  \parskip = 0pt
4888
4997
  \parindent = 0pt
4889
4998
  \emergencystretch = 0pt % don't try to avoid overfull boxes
4890
 
  % @cartouche defines \nonarrowing to inhibit narrowing
4891
 
  % at next level down.
4892
4999
  \ifx\nonarrowing\relax
4893
5000
    \advance \leftskip by \lispnarrowing
4894
5001
    \exdentamount=\lispnarrowing
 
5002
  \else
 
5003
    \let\nonarrowing = \relax
4895
5004
  \fi
4896
5005
  \let\exdent=\nofillexdent
4897
5006
}
4991
5100
    \advance\leftskip by \lispnarrowing
4992
5101
    \advance\rightskip by \lispnarrowing
4993
5102
    \exdentamount = \lispnarrowing
 
5103
  \else
4994
5104
    \let\nonarrowing = \relax
4995
5105
  \fi
4996
5106
  \parsearg\quotationlabel
5083
5193
  }
5084
5194
\endgroup
5085
5195
\def\setupverbatim{%
 
5196
  \let\nonarrowing = t%
5086
5197
  \nonfillstart
5087
 
  \advance\leftskip by -\defbodyindent
5088
5198
  % Easiest (and conventionally used) font for verbatim
5089
5199
  \tt
5090
5200
  \def\par{\leavevmode\egroup\box0\endgraf}%
5554
5664
\newcount\paramno   % Count of parameters
5555
5665
\newtoks\macname    % Macro name
5556
5666
\newif\ifrecursive  % Is it recursive?
5557
 
\def\macrolist{}    % List of all defined macros in the form
5558
 
                    % \do\macro1\do\macro2...
 
5667
 
 
5668
% List of all defined macros in the form
 
5669
%    \definedummyword\macro1\definedummyword\macro2...
 
5670
% Currently is also contains all @aliases; the list can be split
 
5671
% if there is a need.
 
5672
\def\macrolist{}
 
5673
 
 
5674
% Add the macro to \macrolist
 
5675
\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
 
5676
\def\addtomacrolistxxx#1{%
 
5677
     \toks0 = \expandafter{\macrolist\definedummyword#1}%
 
5678
     \xdef\macrolist{\the\toks0}%
 
5679
}
5559
5680
 
5560
5681
% Utility routines.
5561
5682
% This does \let #1 = #2, with \csnames; that is,
5653
5774
     \else \errmessage{Macro name \the\macname\space already defined}\fi
5654
5775
     \global\cslet{macsave.\the\macname}{\the\macname}%
5655
5776
     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
5656
 
     % Add the macroname to \macrolist
5657
 
     \toks0 = \expandafter{\macrolist\do}%
5658
 
     \xdef\macrolist{\the\toks0
5659
 
       \expandafter\noexpand\csname\the\macname\endcsname}%
 
5777
     \addtomacrolist{\the\macname}%
5660
5778
  \fi
5661
5779
  \begingroup \macrobodyctxt
5662
5780
  \ifrecursive \expandafter\parsermacbody
5670
5788
    % Remove the macro name from \macrolist:
5671
5789
    \begingroup
5672
5790
      \expandafter\let\csname#1\endcsname \relax
5673
 
      \let\do\unmacrodo
 
5791
      \let\definedummyword\unmacrodo
5674
5792
      \xdef\macrolist{\macrolist}%
5675
5793
    \endgroup
5676
5794
  \else
5682
5800
% macro definitions that have been changed to \relax.
5683
5801
%
5684
5802
\def\unmacrodo#1{%
5685
 
  \ifx#1\relax
 
5803
  \ifx #1\relax
5686
5804
    % remove this
5687
5805
  \else
5688
 
    \noexpand\do \noexpand #1%
 
5806
    \noexpand\definedummyword \noexpand#1%
5689
5807
  \fi
5690
5808
}
5691
5809
 
5804
5922
    \expandafter\parsearg
5805
5923
  \fi \next}
5806
5924
 
5807
 
% We want to disable all macros during \shipout so that they are not
5808
 
% expanded by \write.
5809
 
\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
5810
 
  \edef\next{\macrolist}\expandafter\endgroup\next}
5811
 
 
5812
 
% For \indexnofonts, we need to get rid of all macros, leaving only the
5813
 
% arguments (if present).  Of course this is not nearly correct, but it
5814
 
% is the best we can do for now.  makeinfo does not expand macros in the
5815
 
% argument to @deffn, which ends up writing an index entry, and texindex
5816
 
% isn't prepared for an index sort entry that starts with \.
5817
 
5818
 
% Since macro invocations are followed by braces, we can just redefine them
5819
 
% to take a single TeX argument.  The case of a macro invocation that
5820
 
% goes to end-of-line is not handled.
5821
 
5822
 
\def\emptyusermacros{\begingroup
5823
 
  \def\do##1{\let\noexpand##1=\noexpand\asis}%
5824
 
  \edef\next{\macrolist}\expandafter\endgroup\next}
5825
 
 
5826
5925
 
5827
5926
% @alias.
5828
5927
% We need some trickery to remove the optional spaces around the equal
5832
5931
\def\aliasyyy #1=#2\relax{%
5833
5932
  {%
5834
5933
    \expandafter\let\obeyedspace=\empty
 
5934
    \addtomacrolist{#1}%
5835
5935
    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
5836
5936
  }%
5837
5937
  \next
5901
6001
  \iflinks
5902
6002
    {%
5903
6003
      \atdummies  % preserve commands, but don't expand them
5904
 
      \turnoffactive
5905
 
      \otherbackslash
5906
6004
      \edef\writexrdef##1##2{%
5907
6005
        \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
5908
6006
          ##1}{##2}}% these are parameters of \writexrdef
5956
6054
  \ifpdf
5957
6055
    \leavevmode
5958
6056
    \getfilename{#4}%
5959
 
    {\turnoffactive \otherbackslash
 
6057
    {\turnoffactive
 
6058
     % See comments at \activebackslashdouble.
 
6059
     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
 
6060
      \backslashparens\pdfxrefdest}%
 
6061
     %
5960
6062
     \ifnum\filenamelength>0
5961
6063
       \startlink attr{/Border [0 0 0]}%
5962
 
         goto file{\the\filename.pdf} name{#1}%
 
6064
         goto file{\the\filename.pdf} name{\pdfxrefdest}%
5963
6065
     \else
5964
6066
       \startlink attr{/Border [0 0 0]}%
5965
 
         goto name{\pdfmkpgn{#1}}%
 
6067
         goto name{\pdfmkpgn{\pdfxrefdest}}%
5966
6068
     \fi
5967
6069
    }%
5968
6070
    \linkcolor
5976
6078
    % include an _ in the xref name, etc.
5977
6079
    \indexnofonts
5978
6080
    \turnoffactive
5979
 
    \otherbackslash
5980
6081
    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
5981
6082
      \csname XR#1-title\endcsname
5982
6083
  }%
6011
6112
      % into the usual \leavevmode...\vrule stuff for purposes of
6012
6113
      % printing. So we \turnoffactive for the \refx-snt, back on for the
6013
6114
      % printing, back off for the \refx-pg.
6014
 
      {\turnoffactive \otherbackslash
 
6115
      {\turnoffactive
6015
6116
       % Only output a following space if the -snt ref is nonempty; for
6016
6117
       % @unnumbered and @anchor, it won't be.
6017
6118
       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
6024
6125
      ,\space
6025
6126
      %
6026
6127
      % output the `page 3'.
6027
 
      \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
 
6128
      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
6028
6129
    \fi
6029
6130
  \fi
6030
6131
  \endlink
6127
6228
\def\tryauxfile{%
6128
6229
  \openin 1 \jobname.aux
6129
6230
  \ifeof 1 \else
6130
 
    \readauxfile
 
6231
    \readdatafile{aux}%
6131
6232
    \global\havexrefstrue
6132
6233
  \fi
6133
6234
  \closein 1
6134
6235
}
6135
6236
 
6136
 
\def\readauxfile{\begingroup
 
6237
\def\setupdatafile{%
6137
6238
  \catcode`\^^@=\other
6138
6239
  \catcode`\^^A=\other
6139
6240
  \catcode`\^^B=\other
6202
6303
  %
6203
6304
  % Make the characters 128-255 be printing characters.
6204
6305
  {%
6205
 
    \count 1=128
 
6306
    \count1=128
6206
6307
    \def\loop{%
6207
 
      \catcode\count 1=\other
6208
 
      \advance\count 1 by 1
6209
 
      \ifnum \count 1<256 \loop \fi
 
6308
      \catcode\count1=\other
 
6309
      \advance\count1 by 1
 
6310
      \ifnum \count1<256 \loop \fi
6210
6311
    }%
6211
6312
  }%
6212
6313
  %
6214
6315
  \catcode`\{=1
6215
6316
  \catcode`\}=2
6216
6317
  \catcode`\@=0
6217
 
  %
6218
 
  \input \jobname.aux
 
6318
}
 
6319
 
 
6320
\def\readdatafile#1{%
 
6321
\begingroup
 
6322
  \setupdatafile
 
6323
  \input\jobname.#1
6219
6324
\endgroup}
6220
6325
 
6221
 
 
6222
6326
\message{insertions,}
6223
6327
% including footnotes.
6224
6328
 
6564
6668
      % \floatlabel-lof.  Besides \floatident, we include the short
6565
6669
      % caption if specified, else the full caption if specified, else nothing.
6566
6670
      {%
6567
 
        \atdummies \turnoffactive \otherbackslash
 
6671
        \atdummies
6568
6672
        % since we read the caption text in the macro world, where ^^M
6569
6673
        % is turned into a normal character, we have to scan it back, so
6570
6674
        % we don't write the literal three characters "^^M" into the aux file.
6754
6858
  \fi
6755
6859
}
6756
6860
 
6757
 
% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
6758
 
% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
6759
 
% physical page width.
 
6861
% Parameters in order: 1) textheight; 2) textwidth;
 
6862
% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
 
6863
% 7) physical page height; 8) physical page width.
6760
6864
%
6761
6865
% We also call \setleading{\textleading}, so the caller should define
6762
6866
% \textleading.  The caller should also set \parskip.
6803
6907
                    {11in}{8.5in}%
6804
6908
}}
6805
6909
 
6806
 
% Use @smallbook to reset parameters for 7x9.5 (or so) format.
 
6910
% Use @smallbook to reset parameters for 7x9.25 trim size.
6807
6911
\def\smallbook{{\globaldefs = 1
6808
6912
  \parskip = 2pt plus 1pt
6809
6913
  \textleading = 12pt
6820
6924
  \defbodyindent = .5cm
6821
6925
}}
6822
6926
 
 
6927
% Use @smallerbook to reset parameters for 6x9 trim size.
 
6928
% (Just testing, parameters still in flux.)
 
6929
\def\smallerbook{{\globaldefs = 1
 
6930
  \parskip = 1.5pt plus 1pt
 
6931
  \textleading = 12pt
 
6932
  %
 
6933
  \internalpagesizes{7.4in}{4.8in}%
 
6934
                    {-.2in}{-.4in}%
 
6935
                    {0pt}{14pt}%
 
6936
                    {9in}{6in}%
 
6937
  %
 
6938
  \lispnarrowing = 0.25in
 
6939
  \tolerance = 700
 
6940
  \hfuzz = 1pt
 
6941
  \contentsrightmargin = 0pt
 
6942
  \defbodyindent = .4cm
 
6943
}}
 
6944
 
6823
6945
% Use @afourpaper to print on European A4 paper.
6824
6946
\def\afourpaper{{\globaldefs = 1
6825
6947
  \parskip = 3pt plus 2pt minus 1pt
6972
7094
 
6973
7095
\catcode`\_=\active
6974
7096
\def_{\ifusingtt\normalunderscore\_}
 
7097
\let\realunder=_
6975
7098
% Subroutine for the previous macro.
6976
7099
\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
6977
7100
 
7009
7132
 @gdef@otherbackslash{@let\=@realbackslash}
7010
7133
}
7011
7134
 
7012
 
% \realbackslash is an actual character `\' with catcode other.
7013
 
{\catcode`\\=\other @gdef@realbackslash{\}}
 
7135
% \realbackslash is an actual character `\' with catcode other, and
 
7136
% \doublebackslash is two of them (for the pdf outlines).
 
7137
{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
7014
7138
 
7015
7139
% \normalbackslash outputs one backslash in fixed width font.
7016
7140
\def\normalbackslash{{\tt\backslashcurfont}}
7053
7177
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
7054
7178
% the first `\{ in the file would cause an error. This macro tries to fix
7055
7179
% that, assuming it is called before the first `\' could plausibly occur.
7056
 
% Also back turn on active characters that might appear in the input
 
7180
% Also turn back on active characters that might appear in the input
7057
7181
% file name, in case not using a pre-dumped format.
7058
7182
%
7059
7183
@gdef@fixbackslash{%