~ubuntu-branches/ubuntu/karmic/fweb/karmic

« back to all changes in this revision

Viewing changes to Manual/fwebmac.sty

  • Committer: Bazaar Package Importer
  • Author(s): Yann Dirson
  • Date: 2002-01-04 23:20:22 UTC
  • Revision ID: james.westby@ubuntu.com-20020104232022-330ad4iyzpvb5bm4
Tags: upstream-1.62
ImportĀ upstreamĀ versionĀ 1.62

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%  FTANGLE v1.60,
 
2
%% created with UNIX on "Thursday, September 10, 1998 at 22:59." 
 
3
%%  COMMAND LINE: "/u/krommes/Fweb/Web/ftangle -# fwebmac"
 
4
%%  RUN TIME:     "Friday, September 11, 1998 at 18:55."
 
5
%%  WEB FILE:     "fwebmac.web"
 
6
%%  CHANGE FILE:  (none)
 
7
 
 
8
 
 
9
 
 
10
 
 
11
 
 
12
 
 
13
\ifx\FWEBisloaded\relax\endinput\else\let\FWEBisloaded\relax\fi
 
14
 
 
15
 
 
16
\newif\ifFWEBstandalone
 
17
\FWEBstandalonetrue
 
18
 
 
19
 
 
20
\catcode`\@=11
 
21
 
 
22
 
 
23
\chardef\other=12
 
24
 
 
25
 
 
26
\long\def\comment#1\endcomment{}
 
27
 
 
28
 
 
29
\def\FWEBversion{$REVISION}
 
30
\def\FWEBdate{September 23, 1995}
 
31
 
 
32
 
 
33
\newcount\W@count
 
34
\newcount\W@counta
 
35
\newtoks\W@tk
 
36
 
 
37
\ifx\DeclareRobustCommand\undefined
 
38
 
 
39
        \def\DeclareRobustCommand#1{\@ifnextchar[%
 
40
{\W@argdef#1}{\W@argdef#1[0]}}
 
41
 
 
42
        \def\W@argdef#1[#2]{\W@tk={}%
 
43
        \W@count=0
 
44
        \loop
 
45
        \ifnum\W@count<#2
 
46
                \advance\W@count by1
 
47
                \edef\next{\W@tk={\the\W@tk########\the\W@count}}\next
 
48
        \repeat
 
49
        \edef\next{\def\noexpand#1\the\W@tk}\next}
 
50
 
 
51
\fi
 
52
 
 
53
\ifx\@ifnextchar\undefined
 
54
 
 
55
        \def\@ifnextchar#1#2#3{\let\@tempe#1
 
56
        \def\@tempa{#2}%
 
57
        \def\@tempb{#3}%
 
58
        \futurelet\@tempc\@ifnch}
 
59
 
 
60
        \def\@ifnch{\ifx\@tempc\@sptoken
 
61
                \let\@tempd\@xifnch
 
62
        \else
 
63
                \ifx\@tempc\@tempe
 
64
                        \let\@tempd\@tempa
 
65
                \else
 
66
                        \let\@tempd\@tempb
 
67
                \fi
 
68
        \fi
 
69
        \@tempd
 
70
        }
 
71
 
 
72
        {\def\:{\global\let\@sptoken= } \: }
 
73
 
 
74
        \def\@xifnch{\futurelet\@tempc\@ifnch}
 
75
 
 
76
\fi
 
77
 
 
78
 
 
79
\let\DRC\DeclareRobustCommand
 
80
 
 
81
 
 
82
\def\TeX{T\kern-0.1667em\lower0.5ex\hbox{E}\kern-0.125emX\W@t}
 
83
 
 
84
\ifx\LaTeX\undefined
 
85
        \def\LaTeX{L\kern-0.36em\raise0.3ex\hbox{\Csc a}\kern-0.15em\TeX}
 
86
\fi
 
87
 
 
88
\newif\ifnoLaTeXe% By default, we have \LaTeXe.
 
89
 
 
90
\ifx\LaTeXe\undefined
 
91
        \noLaTeXetrue
 
92
        \def\LaTeXe{\LaTeX 2$_\varepsilon$}
 
93
\fi
 
94
 
 
95
 
 
96
\newif\ifLaTeXisloaded
 
97
 
 
98
\ifx\pageno\undefined
 
99
        \LaTeXisloadedtrue
 
100
\fi
 
101
 
 
102
\ifLaTeXisloaded
 
103
 \def\W@stop{}
 
104
\else
 
105
 \def\W@stop{
 
106
  \message{Please use LaTeX.  Plain TeX is no longer supported.  ABORTING!}
 
107
  \end
 
108
  }
 
109
\fi
 
110
 
 
111
\W@stop
 
112
 
 
113
 
 
114
\newif\ifuseREVTeX
 
115
 
 
116
\newif\ifusedocumentstyle
 
117
 
 
118
\ifnoLaTeXe
 
119
        \usedocumentstyletrue
 
120
\fi
 
121
 
 
122
\ifuseREVTeX
 
123
        \usedocumentstyletrue
 
124
\fi
 
125
 
 
126
 
 
127
 
 
128
\DRC\WEB{\Wtypewriter{WEB}}
 
129
\DRC\FWEB{\Wtypewriter{FWEB}}
 
130
\DRC\CWEB{\Wtypewriter{CWEB}}
 
131
\DRC\TANGLE{\Wtypewriter{TANGLE}}       \let\Tangle\TANGLE
 
132
\DRC\WEAVE{\Wtypewriter{WEAVE}}         \let\Weave\WEAVE
 
133
\DRC\FTANGLE{\Wtypewriter{FTANGLE}}
 
134
\DRC\FWEAVE{\Wtypewriter{FWEAVE}}
 
135
 
 
136
 
 
137
\DRC\C{C\W@t}
 
138
\DRC\Cpp{\C{\tt ++}}
 
139
\DRC\FORTRAN{{\Csc Fortran}}    \let\Fortran\FORTRAN
 
140
\DRC\MAKE{{\tt MAKE}}           \let\Make\MAKE
 
141
\DRC\RATFOR{{\Csc Ratfor}}      \let\Ratfor\RATFOR
 
142
\DRC\UNIX{{\SC UNIX}}           \let\Unix\UNIX
 
143
 
 
144
 
 
145
 
 
146
\ifLaTeXisloaded
 
147
\else
 
148
        \let\@\relax
 
149
        \let\\\relax
 
150
        \let\protect\relax
 
151
\fi
 
152
 
 
153
\let\amp\&
 
154
\let\at\@
 
155
\let\bslash\\
 
156
\let\caret\^
 
157
\let\dollar\$
 
158
\let\dstar\*
 
159
\let\equals\=
 
160
\let\period\.
 
161
\let\textcolon:
 
162
\let\leftbrace\{
 
163
\let\rightbrace\}
 
164
\let\vertbar|
 
165
\let\PM\#
 
166
\let\PC\%
 
167
 
 
168
 
 
169
\let\W@t\@
 
170
\let\W@S\S
 
171
 
 
172
 
 
173
\dimen0=\normalbaselineskip
 
174
\parskip=\dimen0 plus 1pt minus 6pt
 
175
 
 
176
\newskip\pardimen
 
177
\pardimen=\parskip
 
178
 
 
179
 
 
180
\newdimen\TeXindent
 
181
\TeXindent 1em% For paragraphs in the \TeX\ part.
 
182
 
 
183
 
 
184
\ifLaTeXisloaded
 
185
        \let\pageno\c@page% \WEB\ has its own name for the page number.
 
186
\fi
 
187
 
 
188
 
 
189
\ifnoLaTeXe
 
190
        \ifx\tenrm\undefined
 
191
                \font\tenrm=cmr10
 
192
        \fi
 
193
        \ifx\itfam\undefined
 
194
                \chardef\itfam4
 
195
        \fi
 
196
        \ifx\small\undefined
 
197
                \let\small\relax
 
198
        \fi
 
199
        \let\mainfont\tenrm \let\cmntfont\tenrm
 
200
        \font\eightrm=cmr8 \let\SC\eightrm
 
201
 
 
202
        \font\titlefont=cmssbx10 scaled \magstep2% Sans serif
 
203
        \font\ttitlefont=cmtt10 scaled\magstep2% Typewriter type
 
204
 
 
205
        \font\tentex=cmtex10 % \TeX\ \.{extended char.\ set} (used in strings)
 
206
        \let\extendedtex\tentex
 
207
        \font\Csc=cmcsc10 % Caps/small caps.
 
208
        \font\tenbfit=cmbxti10 % \&{Intrinsic functions}
 
209
        \let\bfit\tenbfit % Doesn't work right in titles.
 
210
 
 
211
        \font\seventi=cmti7
 
212
        \font\sevenrm=cmr7
 
213
        \font\sevenbf=cmbx7
 
214
 
 
215
        \font\sevenit=cmti7
 
216
        \scriptfont\itfam=\sevenit
 
217
 
 
218
        \scriptscriptfont\itfam=\sevenit
 
219
 
 
220
        \def\mathrm#1{{\rm #1}}
 
221
        \def\mathit#1{{\it #1}}
 
222
 
 
223
\else % \LaTeXe
 
224
        \def\mainfont{\normalsize\usefont{OT1}{\rmdefault}{m}{n}}
 
225
        \let\cmntfont\mainfont
 
226
 
 
227
        \def\eightrm{\footnotesize\usefont{OT1}{\rmdefault}{m}{n}}
 
228
        \let\SC\eightrm
 
229
 
 
230
        \def\titlefont{\Large\usefont{OT1}{\sfdefault}{\bfdefault}{n}}
 
231
        \def\ttitlefont{\Large\usefont{OT1}{\ttdefault}{m}{n}}
 
232
 
 
233
        \def\extendedtex{\usefont{OT1}{\ttdefault}{m}{n}}
 
234
        \def\tentex{\normalsize\extendedtex}
 
235
 
 
236
        \def\Csc{\usefont{OT1}{\rmdefault}{m}{\scdefault}}
 
237
 
 
238
        \def\bfit{\usefont{OT1}{\rmdefault}{\bfdefault}{\itdefault}}
 
239
        \def\tenbfit{\normalsize\bfit}
 
240
 
 
241
        \def\seventi{\scriptsize\usefont{OT1}{\rmdefault}{m}{\itdefault}}
 
242
        \def\sevenrm{\scriptsize\usefont{OT1}{\rmdefault}{m}{n}}
 
243
        \def\sevenbf{\scriptsize\usefont{OT1}{\rmdefault}{\bfdefault}{n}}
 
244
 
 
245
        \def\fiveti{\tiny\usefont{OT1}{\rmdefault}{m}{\itdefault}}
 
246
        \def\fiverm{\tiny\usefont{OT1}{\rmdefault}{m}{n}}
 
247
        \def\fivebf{\tiny\usefont{OT1}{\rmdefault}{\bfdefault}{n}}
 
248
 
 
249
        \def\tensy{\normalsize\usefont{OT1}{cmsy}{m}{n}}
 
250
 
 
251
\fi
 
252
 
 
253
 
 
254
\DRC\Wshort[1]{\leavevmode\hbox{$#1$}}% One-letter identifiers such
 
255
        % as~\Wshort{x} look better this way.
 
256
 
 
257
\DRC\Wid[1]{\leavevmode\hbox{\it#1\/\kern.05em}}% Italic type for ordinary
 
258
        % identifiers such as \Wid{test}.
 
259
 
 
260
\DRC\WID[1]{\leavevmode\hbox{\small\it#1\/\kern.05em}}% For all %
 
261
%\WID{UPPERCASE}.
 
262
 
 
263
\let\WidD\Wid % Outer macro
 
264
\let\WIDD\WID % Upper-case outer macro
 
265
 
 
266
\let\WidM\Wid % FWEB macro
 
267
\let\WIDM\WID % Upper-case FWEB macro
 
268
 
 
269
\DRC\Wreserved[1]{\leavevmode\hbox{\def\\{\tt\WBS}\bf#1\/}}% Boldface type
 
270
        % for reserved words such as \Wreserved{int}.
 
271
 
 
272
\DRC\WRESERVED[1]{\leavevmode\hbox{\def\\{\tt\WBS}\small\bf#1\/}}% Boldface 
 
273
%type
 
274
        % for upper-case reserved words such as \WRESERVED{INTEGER}.
 
275
 
 
276
 
 
277
\DRC\Wintrinsic[1]{\leavevmode\hbox{\def\\{\tt\WBS}\bfit#1\/\kern.05em}}%
 
278
        % Library/intrinsic function name such as \@{sin}.
 
279
 
 
280
 
 
281
\def\W@twodef#1#2#3#4{\gdef#1{#3}\gdef#2{#4}}
 
282
 
 
283
\def\Wequate#1#2#3#4#5#6#7#8#9{%
 
284
        \W@twodef#1\Wreserved\WRESERVED% |\&| by default.
 
285
        \gdef#2{\Wshort}% |\|| by default.
 
286
        \W@twodef#5\WidM\WIDM% |\\| by default.
 
287
        \W@twodef#4\WidD\WIDD% |\\| by default.
 
288
        \W@twodef#3\Wid\WID% |\\| by default.
 
289
        \gdef#6{\Wintrinsic}% |\@| by default.
 
290
        \W@twodef#7\Wkeyword\WKEYWORD% |\.| by default.
 
291
        \gdef#8{\Wtypewriter}% |\.| by default.
 
292
        % \#9 is for future use.
 
293
        }
 
294
 
 
295
 
 
296
\def\W@zero{0}% For the comparison in |\WIN| below.
 
297
 
 
298
\DRC\WIN[2]{\ifmmode\def\ZZ{}\else\def\ZZ{\null$\null}\fi
 
299
        \ZZ_{\def\W@rg{#2}\ifx\W@rg\W@zero{\bullet}\else\W@IN{#1}{#2}\fi}\ZZ}
 
300
 
 
301
 
 
302
\gdef\W@IN#1#2{%
 
303
        \ifcase#1
 
304
         \underline{\hbox{\sevenrm\Wmodtrans{#2}}}% Generic name (\.{@[}). [0]
 
305
        \or\hbox{\sevenrm\Wmodtrans{#2}}% Function name. [1]
 
306
        \or\underline{\hbox{\seventi\Wmodtrans{#2}}}% WEB macro. [2]
 
307
        \or\hbox{\seventi\Wmodtrans{#2}}% Outer macro. [3]
 
308
        \or\underline{\hbox{\sevenbf\Wmodtrans{#2}}}% \.{@`}. [4]
 
309
        \or\hbox{\sevenbf\Wmodtrans{#2}}% \&{typedef}. [5]
 
310
        \else{\Wmodtrans{#2}}% Error trap.
 
311
        \fi
 
312
        }
 
313
 
 
314
 
 
315
 
 
316
\DRC\Wtypewriter[1]{\relax\ifmmode\gdef\YY{\null$\null}\else\gdef\YY{}\fi
 
317
        \YY{\leavevmode\W@INITSTR#1}\YY}
 
318
 
 
319
\let\Wkeyword\Wtypewriter
 
320
\let\WKEYWORD\Wtypewriter
 
321
 
 
322
\let\.\Wtypewriter
 
323
 
 
324
 
 
325
\def\W@INITSTR{%
 
326
        \extendedtex % Typewriter type for strings.  (We don't say
 
327
        \let\\=\WBS % Backslash in a string: '\.\\'.
 
328
        \let\'=\WRQ % Right quote in a string: '\.\''.
 
329
        \let\`=\WLQ % Left quote in a string: '\.\`'.
 
330
        \let\{=\WLB % Left brace in a string: '\.\WLB'.
 
331
        \let\}=\WRB % Right brace in a string: '\.\WRB'.
 
332
        \let\~=\WTL % Tilde in a string: '\.\~'.
 
333
        \let\ =\WSP % Space in a string: '\.\ '.
 
334
        \let\_=\WUL % Underline in a string: '\.\_'.
 
335
        \let\&=\WAM % Ampersand in a string: '\.\&'.
 
336
        \def\0{\discretionary{\WBS}{}{}}% \FWEB\ inserts this automatically every
 
337
          % so often so very long strings will break. Broken strings will
 
338
          % be marked by a backslash.
 
339
        \def\1{,\0}% \FWEB\ replaces commas in strings by this, so strings
 
340
                % tend to break after commas.
 
341
        \let\2\space % Ordinary space after control sequences in \TeX.
 
342
        \def\3{\space\space}% Translation of a tab in \TeX.
 
343
        }
 
344
 
 
345
 
 
346
\DRC\#{\hbox{\tt\char35}}% Parameter sign: '\#'.
 
347
\DRC\${\hbox{\tt\char36}}% Dollar sign: '\$'.
 
348
\DRC\%{\hbox{\tt\char37}}% Percent sign: '\%'.
 
349
\DRC\^{\ifmmode\raise0.45ex\hbox{$\,\scriptstyle\mathchar"25E\,$}%
 
350
        \else\char`^ \fi}% Pointer or
 
351
        % hat: '\^'.
 
352
        % Circumflex accents can be obtained from |\^^D| instead of |\^|.
 
353
\let\Caret\^% For proper indexing of |@c++ operator ^|.
 
354
\def\AT!{@}% Knuth's abbreviation for the at sign for control text: '\AT!'
 
355
 
 
356
 
 
357
\chardef\asterisk=`\*
 
358
 
 
359
 
 
360
\chardef\WAM=`\&% Ampersand character in a string: '\.\&'.
 
361
\chardef\WBS=`\\% Backslash in a string: '\.\\'.
 
362
\DRC\WttBS{{\tt\WBS}}% Literal backslash: '\WttBS'.
 
363
\chardef\WLB=`\{% Left brace in a string: '\.\WLB'.
 
364
\DRC\WLQ{{\tt\char'22}}% Left quote in a string: '\.\`'.
 
365
\chardef\WRB=`\}% Right brace in a string: '\.\WRB'.
 
366
\DRC\WRQ{{\tt\char'23}}% Right quote in a string: '\.\''.
 
367
\DRC\WSP{{\tt\char`\ }}% (Visible) space in a string: '\.\ '.
 
368
\chardef\WTL=`\~% Tilde in a string: '\.\~'.
 
369
\chardef\WUL=`\_% Underline character in a string: '\.\_'.
 
370
 
 
371
 
 
372
\DRC\WLQx{\hbox{\WLQ}}
 
373
 
 
374
 
 
375
\newbox\rulebox
 
376
\newcount\ruleno
 
377
 
 
378
\def\rules#1{\leavevmode
 
379
        \ruleno=0
 
380
        \rlap{\vtop to 0pt{\null
 
381
                \def\R{\setbox0=\hbox{\the\ruleno}%
 
382
                        \rlap{\vrule height0pt depth#1}%
 
383
                        \kern-0.5\wd0\copy0\kern-0.5\wd0
 
384
                        \advance\ruleno by1
 
385
                        \hskip1em}
 
386
                \rlap{\R\R\R\R\R\R\R}
 
387
                \vss}}}
 
388
 
 
389
 
 
390
\newdimen\notch
 
391
 
 
392
 
 
393
\newcount\W@globalindent
 
394
\W@globalindent=3 % Global indentation in notches.
 
395
 
 
396
 
 
397
\newcount\W@ind % Current indentation in notches.
 
398
\newcount\W@lastind % Used for preprocessor commands.
 
399
\def\W@saveind{\global\W@lastind=\W@ind}
 
400
 
 
401
 
 
402
\newbox\b@k
 
403
\newbox\b@kk
 
404
 
 
405
\def\W@setboxes#1{\notch=#1
 
406
        \setbox\b@k=\hbox to -\notch{}% Backspace one notch.
 
407
        \setbox\b@kk=\hbox to -2\notch{}% Backspace two notches.
 
408
        }
 
409
 
 
410
 
 
411
\newif\ifW@firstbreak
 
412
 
 
413
\newcount\W@nBK
 
414
 
 
415
\def\WBKo{}% NOT FINISHED YET!
 
416
 
 
417
\def\WBK{\WBK@{0}}
 
418
 
 
419
\def\WBK@#1{\hfil\break
 
420
\ifW@firstbreak
 
421
        \W@nBK=\W@ind
 
422
        \advance\W@nBK by -#1 % Compensate for glob's outdented by 1 from body.
 
423
        \W@firstbreakfalse % Reset by |\6|.
 
424
\fi
 
425
\hangindent\W@nBK\notch
 
426
\ignorespaces}
 
427
 
 
428
 
 
429
\def\1{\global\advance\W@ind by1\hangindent\W@ind\notch}% Indent one more notch
 
430
 
 
431
 
 
432
\def\2{\global\advance\W@ind by-1{}}% Indent one less notch
 
433
 
 
434
 
 
435
\def\3#1{\hfil\penalty#10\hfilneg}% Optional break within a statement.
 
436
 
 
437
 
 
438
\def\4{\copy\b@k \ignorespaces}% Backspace one notch
 
439
 
 
440
 
 
441
\def\5{\hfil\penalty-1\hfilneg \kern2.5\notch\copy\b@kk
 
442
        \yskipfalse\ignorespaces}
 
443
 
 
444
 
 
445
\def\6{\ifmmode\else\par
 
446
        \hangindent\W@ind\notch \noindent \kern\W@ind\notch \copy\b@kk \ignorespaces%
 
447
\fi}
 
448
 
 
449
 
 
450
\def\7{\WY\6}% Forced break and a little extra space.
 
451
 
 
452
 
 
453
\def\8{\hskip-\W@ind\notch \hskip 2\notch}
 
454
 
 
455
 
 
456
\newif\ifyskip
 
457
\def\yskip{\medskip}
 
458
 
 
459
 
 
460
\def\W@Hspace{\hbox{ }}
 
461
 
 
462
 
 
463
\DRC\WPR[1]{\copy\b@kk \W@saveind%      |\global\advance\W@ind by 2|
 
464
        \1\Wreserved{@#1}\W@Hspace}
 
465
 
 
466
\DRC\WPs{\global\W@ind=\W@lastind}
 
467
 
 
468
 
 
469
\def\W@point{!}
 
470
 
 
471
\def\W@defin#1#2{\4\W@saveind
 
472
        \1\Wreserved{#1}%
 
473
        \def\W@temp{#2}%
 
474
        \ifx\W@temp\ast \ast
 
475
        \else\ifx\W@temp\W@point \W@point
 
476
        \else\hbox{$^{\mathrm{#2}}$}%
 
477
        \fi\fi
 
478
        \W@Hspace}% Begin @d, @m, or @f.
 
479
 
 
480
 
 
481
\def\note#1#2.{\WY\noindent{\hangindent2em\baselineskip10pt\footnotesize
 
482
#1 #2.\par}}
 
483
 
 
484
 
 
485
\def\W@lapstar{\rlap{*}}
 
486
 
 
487
\newif\ifW@modchanged
 
488
 
 
489
\def\W@checkstar{\edef\W@temp{\noexpand\W@isstar\modstar\noexpand\*\relax}%
 
490
\W@temp}
 
491
 
 
492
\def\W@isstar#1\*#2\relax{\ifx#2\*\W@modchangedtrue\else\W@modchangedfalse\fi}
 
493
 
 
494
 
 
495
\def\W@includefile{}
 
496
 
 
497
\def\WIF#1{\gdef\W@includefile{#1}}
 
498
 
 
499
\def\WIF@name{\ifx\W@includefile\empty
 
500
        \else
 
501
                \W@prninclude
 
502
        \fi}
 
503
 
 
504
\def\W@prninclude{\ifLaTeXisloaded\else\ \fi
 
505
                \WIFfmt{\W@includefile} }
 
506
 
 
507
\def\WIFfmt#1{[{\tt#1}]}
 
508
 
 
509
\def\W@startsection{\WQ
 
510
        \W@checkstar
 
511
        {\let\*=\W@lapstar
 
512
        \ifLaTeXisloaded
 
513
                \leavevmode
 
514
        \else
 
515
                \noindent
 
516
                \bf\modstar.%
 
517
        \fi
 
518
        \WIF@name% Print name of current include file, if there is one.
 
519
        \ifLaTeXisloaded\else\quad\fi
 
520
        }}
 
521
 
 
522
 
 
523
\def\W@skipbrace#1{\catcode`\{=1 }
 
524
 
 
525
\DRC\WC{\W@cmnt{/\ast}{\W@finishcomment}}% Long comment.
 
526
\DRC\Wc{\W@cmnt{//}{\XX}}% Short comment.
 
527
\DRC\Wci{\W@cmnt{}{\XX}}% No comment symbol at all; for special effects.
 
528
 
 
529
\def\W@cmnt#1#2{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi% C-style cmnt
 
530
        \XX\hfil\penalty-1\hfilneg
 
531
        \ifyskip\else\quad\fi$#1\,$%
 
532
        \bgroup\cmntfont % The user can redefine the comment font |\cmntfont|.
 
533
                \aftergroup#2%
 
534
                \catcode`\{=\other\W@skipbrace}
 
535
 
 
536
\def\W@finishcomment{$\,\ast/$\XX}
 
537
 
 
538
\def\Wx#1{\kern-0.5\notch\hbox{\tt\%}}
 
539
 
 
540
 
 
541
\def\WCDIR#1{\WPR?\Wtypewriter{#1}\WPs}
 
542
 
 
543
 
 
544
\DRC\WCD[1]{\ifmmode\hbox\fi{\ignorespaces#1}}
 
545
 
 
546
 
 
547
\def\WD#1{\W@defin{@D}{#1}}% Outer macro definition: `\.{@D}'
 
548
\def\Wd#1{\W@defin{@d}{#1}}% Outer macro definition: `\.{@d}'
 
549
\def\WUd#1{\W@defin{@u}{#1}}% Undef outer macro: `\.{@u}'.
 
550
\def\WMD{\W@defin{@M}}% WEB macro definition: `\.{@M}'.  Second argument
 
551
                        % supplied by \FWEAVE.
 
552
\def\WMd{\W@defin{@m}}% WEB macro definition: `\.{@m}'.  As above.
 
553
\def\WE#1{\WPR{\##1}}% WEB preprocessor command: `\.{@\#if\dots}'.
 
554
 
 
555
\def\Wf#1{\W@defin{@f}{#1}}% Format definition: `\.{@f}'.
 
556
\def\WF#1{\W@defin{@F}{#1}}% Format definition: `\.{@F}'.
 
557
 
 
558
\def\Wl#1{\W@defin{@l}{#1}}% Limbo text definition: `\.{@l}'.
 
559
\def\Wv#1{\W@defin{@v}{#1}}% Operator overloading: `\.{@v}'.
 
560
\def\WWW#1{\W@defin{@W}{#1}}% Identifier overloading:  `\.{@W}'.
 
561
\def\Ww#1{\W@defin{@w}{#1}}% Identifier overloading:  `\.{@w}'.
 
562
 
 
563
 
 
564
\newif\ifpagerefs% Page references or module-number references?
 
565
\pagerefsfalse
 
566
 
 
567
\newif\ifnumberTeX% Do we start the \TeX\ part of unnamed sections with
 
568
\numberTeXfalse
 
569
 
 
570
\newif\ifnumberdefs% As above, but for the definition part.
 
571
\numberdefstrue
 
572
 
 
573
\newif\ifnumbercode% As above, but for the code part.
 
574
\numbercodetrue
 
575
 
 
576
\newif\ifnumberunnamed% Number unnamed section?
 
577
\numberunnamedfalse
 
578
 
 
579
\newskip\Wuparindent
 
580
\let\Wrefstepcounter\refstepcounter
 
581
 
 
582
\newif\ifstripzeros
 
583
 
 
584
\ifuseREVTeX
 
585
        \stripzerosfalse
 
586
\else
 
587
        \stripzerostrue % By default, we're bold.
 
588
\fi
 
589
 
 
590
\def\W@modequate#1{\def\W@temp{#1}%
 
591
\ifx\W@temp\empty\else
 
592
        \gdef#1{\Wmodtrans}%
 
593
\fi}
 
594
 
 
595
 
 
596
\newcount\W@ssmax% Maximum depth of the \.{@*}$n$ commands.
 
597
\newcount\W@lsmax% Max. local (per section) depth of the \.{@*}$n$ commands.
 
598
 
 
599
\def\W@maxdepth#1{{\count0=#1
 
600
        \advance\count0 by\W@ssmin%
 
601
        \xdef\W@depth{\the\count0}}%
 
602
        \ifFWEBstandalone\else
 
603
                \immediate\write\@auxout{\string\@writefile{toc}%
 
604
                        {\string\setcounter{tocdepth}{\W@depth}}}%
 
605
        \fi
 
606
        }
 
607
 
 
608
\def\Wunnamed#1#2{\csname ifnumber#1\endcsname
 
609
        \gdef\Wnewoutname{#2}%
 
610
        \ifx\Woutname\Wnewoutname\else
 
611
                \8\Wtypewriter{"#2"} \Wscrap ${}\equiv{}$\6%
 
612
                \global\let\Woutname\Wnewoutname
 
613
        \fi\fi}
 
614
 
 
615
 
 
616
\newcount\secpenalty
 
617
\secpenalty=-500 % Strongly encourage breaks at sections.
 
618
 
 
619
\def\W@Lvmode#1{%
 
620
\if@minipage\else
 
621
\if@nobreak\else
 
622
\ifdim\lastskip=\z@
 
623
        \vfil
 
624
        \penalty#1\relax
 
625
        \vfilneg
 
626
\else
 
627
        \@tempskipb\lastskip
 
628
        \vskip-\lastskip
 
629
        \vfil
 
630
        \penalty#1
 
631
        \vfilneg
 
632
        \vskip\@tempskipb
 
633
\fi\fi\fi}
 
634
 
 
635
\ifLaTeXisloaded
 
636
 
 
637
        \def\W@raggedbottom{\def\@textbottom{\vskip\z@ \vfil}%
 
638
                \let\@texttop\relax
 
639
                \@secpenalty=\secpenalty
 
640
                \ifnum\secpenalty<0
 
641
                        \def\addpenalty##1{%
 
642
                                \ifvmode
 
643
                                        \W@Lvmode{##1}%
 
644
                                \else
 
645
                                        \@noitemerr
 
646
                                \fi}
 
647
                \fi
 
648
                }
 
649
 
 
650
 
 
651
        \newcounter{subsubsubsection}
 
652
 
 
653
        \gdef\thesubsubsubsection{\thesubsubsection.\arabic{subsubsubsection}}
 
654
 
 
655
        \gdef\cl@subsubsubsection{\@elt{paragraph}}
 
656
        \gdef\l@subsubsubsection{\@dottedtocline{4}{3.8em}{3.2em}}
 
657
        \gdef\subsubsubsectionmark#1{}
 
658
 
 
659
 \ifnoLaTeXe
 
660
        \gdef\paragraph{\@startsection{paragraph}{5}{\z@}{3.25ex plus1ex
 
661
minus.2ex}{-1em}{\reset@font\normalsize\bf}}
 
662
 \fi
 
663
 
 
664
        \gdef\W@setsecdepth{%
 
665
                \@ifundefined{W@depth}{\gdef\W@depth{1}}{}%
 
666
                \setcounter{secnumdepth}{\W@depth}%
 
667
                \setcounter{tocdepth}{\W@depth}%
 
668
                \ifnumberunnamed
 
669
                        \Wuparindent0pt
 
670
                        \addtocounter{secnumdepth}{1}%
 
671
                        \gdef\WRefstepcounter##1{}%
 
672
                \else
 
673
                        \Wuparindent-\TeXindent
 
674
                        \global\let\WRefstepcounter\Wrefstepcounter
 
675
                \fi
 
676
                \ifcase\W@depth % Level 0; should never happen.
 
677
                \or % Level 1
 
678
                        \def\subsection{\WRefstepcounter{subsection}%
 
679
\@startsection{subsection}{2}{\z@}{-3.25ex plus-1ex minus-.2ex}{\Wuparindent}
 
680
{\reset@font \normalsize \bf}}%
 
681
                        \let\Wunnamedsect\subsection
 
682
                        \def\W@subsect{subsection}%
 
683
                \or % Level 2
 
684
                        \def\subsubsection{\WRefstepcounter{subsubsection}%
 
685
\@startsection{subsubsection}{3}{\z@}{-3.25ex plus-1ex minus-.2ex}
 
686
{\Wuparindent}{\reset@font \normalsize \bf}}%
 
687
                        \let\Wunnamedsect\subsubsection
 
688
                        \def\W@subsect{subsubsection}%
 
689
                \or % Level 3
 
690
                        \def\subsubsubsection{%
 
691
\WRefstepcounter{subsubsubsection}%
 
692
\@startsection{subsubsubsection}{4}{\z@}{-3.25ex plus-1ex minus-.2ex}
 
693
{\Wuparindent}{\reset@font \normalsize \bf}}%
 
694
                        \let\Wunnamedsect\subsubsubsection
 
695
                        \def\W@subsect{subsubsubsection}%
 
696
                \else
 
697
                        \let\Wunnamedsect\paragraph
 
698
                        \def\W@subsect{}%
 
699
                \fi
 
700
                }
 
701
 
 
702
 
 
703
        \gdef\Wmodtrans#1{\@ifundefined{r@#1}
 
704
                {\W@split{\##1}{\##1}{0}{0}}
 
705
                {\expandafter\expandafter\expandafter
 
706
                        \W@split\csname r@#1\endcsname{#1}}%
 
707
                }
 
708
 
 
709
 
 
710
        \gdef\W@split#1#2#3#4{%
 
711
                \ifpagerefs
 
712
                        #2% Just extract the page number.
 
713
                        % Add a letter subscript if more than 1 sec. per page.
 
714
                        \@ifundefined{W@#3}%
 
715
                                {\setcounter{W@tempcounter}{#4}%
 
716
                                \addtocounter{W@tempcounter}{-#3}%
 
717
\ifnum\value{W@tempcounter}>25 \setcounter{W@tempcounter}{25}\fi
 
718
                                \hbox{\alph{W@tempcounter}}}
 
719
                                {}%
 
720
                \else % Section-number references (the default).
 
721
                        \ifstripzeros
 
722
                                \W@strip#1.,%
 
723
                        \else
 
724
                                #1% If we gave up and said |\stripzerosfalse|.
 
725
                        \fi
 
726
                \fi
 
727
                }
 
728
 
 
729
 
 
730
 
 
731
        \def\W@strip#1.#2,{\W@first#1\relax \W@tempc{#1}{#2}}
 
732
 
 
733
        \def\W@first#1#2\relax{%
 
734
                \ifx#1\#%
 
735
                        \def\W@tempc##1##2{##1}%
 
736
                \else
 
737
                        \def\W@tempc##1##2{%
 
738
                                \W@Strip{##1.##2}%
 
739
                                {
 
740
                                \@ifundefined{l@##1}%
 
741
                                        {0}%
 
742
                                        {\csname l@##1\endcsname}%
 
743
                                }%
 
744
                                }%
 
745
                \fi
 
746
                }
 
747
 
 
748
 
 
749
        \def\W@Strip#1#2{\W@STRIP#1\relax{#2}}
 
750
 
 
751
 
 
752
        \def\W@STRIP#1.\relax#2{{%
 
753
\W@tk={}\W@count=0
 
754
\W@counta=\W@depth
 
755
\advance\W@counta by-#2 % How many zeros to strip.
 
756
\loop
 
757
\ifnum\W@count<\W@counta
 
758
        \advance\W@count by1
 
759
        \edef\next{\W@tk={\the\W@tk.0}}\next % Build template `\.{.0.0\dots}'.
 
760
\repeat
 
761
\let\eat\let
 
762
\edef\next{\def\noexpand\reduce####1\the\W@tk####2\eat####3\eat
 
763
{\noexpand\W@preface{####1}####2}}%
 
764
\next
 
765
\edef\next{\noexpand\reduce#1\eat\the\W@tk\eat\eat\relax}%
 
766
\def\eat##1{}%
 
767
\next}}
 
768
 
 
769
        \global\let\modno\empty
 
770
        \global\let\W@name\empty
 
771
 
 
772
        \def\W@preface#1{#1}% Redefined to |\W@getsection| in fwebinsert.sty.
 
773
 
 
774
        \def\W@getsection#1{%
 
775
                \let\W@Preface\empty% Just in case.
 
776
                \ifcase\W@ssmin\relax
 
777
                        \W@xsection#1.\relax
 
778
                        \def\W@Preface{\thesection}% Level 0
 
779
                \or
 
780
                        \def\W@Preface{\thesection.#1}% Level 1
 
781
                \or
 
782
                        \def\W@Preface{\thesubsection.#1}% Level 2
 
783
                \or
 
784
                        \def\W@Preface{\thesubsubsection.#1}% Level 3
 
785
                \fi
 
786
                \W@Preface
 
787
                }
 
788
 
 
789
        \def\W@xsection#1.#2\relax{\c@section=\Wb@se
 
790
                \advance\c@section by#1}
 
791
 
 
792
 
 
793
 
 
794
        \def\WM#1.{\WMN#1.%
 
795
                \W@mark{{\oldmodno}{\oldWname}}{{\modno}{\W@name}}%
 
796
                \ifon
 
797
                        \advance\W@ss by10 %
 
798
                        \W@start{\ifnumberTeX\Wmodtrans{\modno}\fi}% ????
 
799
                        \advance\W@ss by-10 %
 
800
                        \ignorespaces}
 
801
\else % No \LaTeX; for \TeX, one just gets module numbers.
 
802
        \def\Wmodtrans#1{#1}
 
803
 
 
804
        \outer\def\WM#1.{\WMN#1.\W@mark\ifon\Wskip\W@startsection\ignorespaces}
 
805
\fi % End of no \LaTeX.
 
806
 
 
807
 
 
808
\newcount\W@ss % Counter for the dots.
 
809
\newcount\W@lastsect % Level number of section immediately above.
 
810
 
 
811
\newif\ifW@dotsafter % Do subsection dots come after or before the section 
 
812
%name?
 
813
\W@dotsafterfalse
 
814
 
 
815
\ifW@dotsafter % ``@* NAME...''
 
816
        \def\W@before/#1.{\W@defname{#1}\W@dot}%
 
817
        \def\W@fter{\W@Nss}%
 
818
\else % ``@*.. NAME.'' or ``@*2 NAME.''
 
819
        \def\W@before/ {\futurelet\next\W@check}%
 
820
        \def\W@fter#1.{\W@defname{#1}\W@Nss}% Done after figuring out level.
 
821
        \def\W@fter@#1#2.{\W@defname{#2}\W@Nss}% |#1| eats the sectionnum.
 
822
\fi
 
823
 
 
824
\def\W@check{\ifx\next.\def\next{\W@dot.}% Count arbitrary dots.
 
825
        \else\ifx\next0\W@sectionnum{0}%
 
826
        \else\ifx\next1\W@sectionnum{1}%
 
827
        \else\ifx\next2\W@sectionnum{2}% Highest numerical level (subsubsect.)
 
828
        \else\ifx\next3\W@badlevel{3}%
 
829
        \else\ifx\next4\W@badlevel{4}%
 
830
        \else\ifx\next5\W@badlevel{5}%
 
831
        \else\ifx\next6\W@badlevel{6}%
 
832
        \else\ifx\next7\W@badlevel{7}%
 
833
        \else\ifx\next8\W@badlevel{8}%
 
834
        \else\ifx\next9\W@badlevel{9}%
 
835
        \else\let\next\W@fter
 
836
        \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
 
837
        \next}%
 
838
 
 
839
\def\W@badlevel#1{\errhelp=\b@dlevelhelp
 
840
\errmessage{FWEBMAC WARNING: @*#1 changed to @*2}%
 
841
\W@sectionnum{2}}
 
842
 
 
843
\newhelp\b@dlevelhelp{Only the major-section (table-of-contents)
 
844
commands @* (section), @*1 (subsection), and @*2 (subsubsection) are
 
845
allowed.}
 
846
 
 
847
\def\W@sectionnum#1{\W@ss#1%
 
848
        \advance\W@ss by\W@ssmin
 
849
        \let\next\W@fter@}
 
850
 
 
851
 
 
852
\def\W@defname#1{\@ifnextchar[{\W@getname}{\W@getname[#1]}#1.}
 
853
 
 
854
\def\W@getname[#1]#2.{\gdef\W@name{#1}% Running headline (short name).
 
855
        \gdef\W@longname{#2}}% Remember name of section (used in |\W@start|).
 
856
 
 
857
\def\W@ssmin{0}% The lowest (top) level.
 
858
 
 
859
\def\WN#1.{\WMN#1.\W@ss=\W@ssmin \W@before/}% Begin a starred section.
 
860
 
 
861
 
 
862
\def\W@outlsmax#1{\if@filesw
 
863
        {%
 
864
        \ifLaTeXisloaded
 
865
                \expandafter\W@major\c@section.\relax
 
866
        \else
 
867
                \expandafter\W@major\@currentlabel.\relax
 
868
        \fi
 
869
        \advance\W@count by#1
 
870
        \advance\W@count by-1
 
871
        \advance\W@lsmax by1
 
872
        \edef\@tempa{\ifFWEBstandalone
 
873
                \write\@auxout{\string\Lastdepth{\the\W@count}%
 
874
                {\the\W@lsmax}}%
 
875
                \fi}%
 
876
        \expandafter}\@tempa
 
877
        \fi
 
878
        \W@lsmax=0
 
879
        }
 
880
 
 
881
\ifLaTeXisloaded
 
882
 
 
883
        \def\W@major#1.#2\relax{\W@count=#1}% Get the major section.
 
884
 
 
885
        \def\Lastdepth#1#2{%
 
886
                \edef\@tempc{\gdef\expandafter\noexpand
 
887
                        \csname l@#1\endcsname{#2}}%
 
888
                \@tempc% Define something like |\l@1| to be last max depth.
 
889
                }
 
890
 
 
891
\else
 
892
        \def\W@outlsmax#1{}
 
893
\fi
 
894
 
 
895
 
 
896
\def\W@dot{\futurelet\next\W@Ns}
 
897
 
 
898
\def\W@Ns{\ifx\next.%
 
899
        \advance\W@ss by 1
 
900
        \let\next\W@next
 
901
\else
 
902
        \let\next\W@fter
 
903
\fi
 
904
\next}
 
905
 
 
906
\def\W@next#1{\W@dot}
 
907
 
 
908
 
 
909
\ifLaTeXisloaded
 
910
        \let\Wsectionbreak\relax
 
911
\else
 
912
        \def\Wsectionbreak{\ifcase\W@ss\vfil\eject\fi}
 
913
\fi
 
914
 
 
915
\def\rhead{\ifcase\W@ss
 
916
                \uppercase{\ignorespaces\W@name}%
 
917
        \else
 
918
                \ignorespaces\W@name%
 
919
        \fi}% Define running headline.
 
920
 
 
921
\let\WZ\let % Now one can |\send| the control sequence |\WZ|
 
922
\let\WIM\let % This macro is made temporarily unexpandable; see |\WZ|.
 
923
 
 
924
\def\W@Llabel#1{\@bsphack
 
925
        \if@filesw
 
926
                {\let\thepage\relax
 
927
                \let\W@botmodno\relax
 
928
                \def\protect{\noexpand\noexpand\noexpand}%
 
929
                \edef\@tempa{\ifFWEBstandalone
 
930
                        \write\@auxout{\string\Newlabel{#1}%
 
931
                        {{\@currentlabel}{\thepage}}{\W@botmodno}}%
 
932
                        \fi}%
 
933
                \expandafter}\@tempa
 
934
                \if@nobreak
 
935
                        \ifvmode
 
936
                                \nobreak
 
937
                        \fi
 
938
                \fi
 
939
        \fi
 
940
        \@esphack}
 
941
 
 
942
\ifLaTeXisloaded
 
943
        \gdef\NoIndex{NoIndex}% Written as arg to |\Wbegin| by \.{-xi}.
 
944
 
 
945
        \gdef\W@Nss{%
 
946
                {\let\protect\noexpand \xdef\Wupn@me{\W@name}}%
 
947
                \ifx\Wupn@me\INDEX
 
948
                        \ifx\INDEX\NoIndex
 
949
                                \onfalse% Don't print section heading.
 
950
                        \else
 
951
                      \W@mark{{\oldmodno}{\oldWname}}{{\oldmodno}{\oldWname}}%
 
952
                        \fi
 
953
                \else% Emit mark before section break.
 
954
                        \W@mark{{\oldmodno}{\oldWname}}{{\modno}{\W@name}}%
 
955
                \fi
 
956
                \message{*\modno}% Progress report to the terminal.
 
957
                \ifon% Start output of named section; explicit |\fi|
 
958
                        \ifnum\W@ss>\W@ssmax
 
959
                                \global\W@ssmax=\W@ss% Track max depth.
 
960
                        \fi
 
961
                        \ifnum\W@ss>\W@lsmax
 
962
                                \global\W@lsmax=\W@ss% Maximum local depth.
 
963
                        \fi
 
964
                        \W@start{\W@longname}%
 
965
                        \ignorespaces
 
966
                }
 
967
 
 
968
        \def\steppagemodule{\noexpand\expandafter\expandafter\expandafter
 
969
{\addtocounter{pagemodule}{1}}\thepagemodule}
 
970
 
 
971
        \let\Wlabel\W@Llabel
 
972
 
 
973
 
 
974
        \gdef\beforeindex{%
 
975
                \ifx\multicols\undefined
 
976
                        \twocolumn
 
977
                \else
 
978
                        \ifFWEBstandalone
 
979
                                \newpage
 
980
                        \fi
 
981
                \fi
 
982
                }
 
983
 
 
984
        \gdef\W@start#1{%
 
985
                {\let\protect\noexpand \xdef\Wupn@me{\W@name}}%
 
986
                \ifx\Wupn@me\INDEX\beforeindex\fi
 
987
                \ifcase\W@ss
 
988
                        \let\Wsect\section % Level 0
 
989
                        \W@lastsect\W@ss
 
990
                \or
 
991
                        \let\Wsect\subsection % Level 1
 
992
                        \W@lastsect\W@ss
 
993
                \or
 
994
                        \let\Wsect\subsubsection % Level 2
 
995
                        \W@lastsect\W@ss
 
996
                \else
 
997
                        \let\Wsect\Wunnamedsect
 
998
                \fi
 
999
                \ifnum\W@lastsect>2
 
1000
                        \W@setU
 
1001
                \fi
 
1002
                \Wsect{#1}% Execute LaTeX section heading.
 
1003
                \ifnum\W@ss=0 % Check if major section.
 
1004
                        \W@outlsmax{0}% If so, write out |\Lastdepth| command.
 
1005
                \fi
 
1006
                \W@mark{{\modno}{\W@name}}{{\modno}{\W@name}}%
 
1007
                \Wlabel{\modno}% Section number to aux file.
 
1008
                \@ifundefined{r@\modno}
 
1009
                        {\expandafter\xdef\csname r@\modno\endcsname
 
1010
                                {{\@currentlabel}{\thepage}{-1}}}
 
1011
                        {}% For present run.
 
1012
                \W@startsection
 
1013
                }
 
1014
\else % No \LaTeX
 
1015
 
 
1016
\def\W@Nss{%
 
1017
        \let\protect\noexpand
 
1018
        \W@mark%Can't put this in |\WMN| since |\rhead| must be defined first.
 
1019
        \Wsectionbreak % Typeset the break between sections.
 
1020
        \message{*\modno}% Progress report to the terminal.
 
1021
        \ifon
 
1022
                \ifcase\W@ss\else\Wskip\fi
 
1023
                \W@startsection{\bf\ignorespaces\W@name.\quad}%
 
1024
                {\def\WIN{\WIM}%
 
1025
                \edef\next{\write\W@cont{\WZ{\the\W@ss}{\W@name}%
 
1026
                {\modno}{\noexpand\the\pageno}}}\next}%
 
1027
                        % To contents file |CONTENTS.tex|.
 
1028
                \ignorespaces}
 
1029
\fi
 
1030
 
 
1031
 
 
1032
\ifuseREVTeX
 
1033
 
 
1034
  \def\W@setu#1{\expandafter\def\csname p@\W@subsect\endcsname{#1}
 
1035
        \expandafter\def\csname the\W@subsect\endcsname{\arabic{\W@subsect}}}
 
1036
 
 
1037
  \def\W@setU{
 
1038
        \ifcase\lastsect
 
1039
                \W@setu{\thesection.}%
 
1040
        \or
 
1041
                \W@setu{\thesection\,\thesubsection.}%
 
1042
        \or
 
1043
                \W@setu{\thesection\,\thesubsection\,\thesubsubsection.}%
 
1044
        \fi
 
1045
        }
 
1046
\else
 
1047
        \def\W@setU{}
 
1048
\fi
 
1049
 
 
1050
 
 
1051
\def\W@markN{\def\W@mark{{\def\WIN{\WIM}%
 
1052
                \mark{\modno\noexpand\else\rhead}}}}
 
1053
 
 
1054
\ifx\selectfont\undefined
 
1055
        \W@markN
 
1056
\else
 
1057
        \def\W@mark{{\def\WIN{\WIM}\let\protect\noexpand
 
1058
                \mark{\modno\noexpand\else\rhead}}}
 
1059
\fi
 
1060
 
 
1061
\def\Wmodno{\iftrue\topmark\fi}% Extracts the left-hand part of the mark.
 
1062
 
 
1063
\def\Whead{{\let\WIM\WIN
 
1064
        \expandafter\iffalse\topmark\fi}}% Extracts the right-hand part.
 
1065
 
 
1066
 
 
1067
\def\WMN#1.{\par
 
1068
        \parskip=\pardimen % Reset to \TeX\ spacing
 
1069
        \parindent=\TeXindent
 
1070
        {\ifLaTeXisloaded
 
1071
                \global\let\oldmodno\modno
 
1072
                \global\let\oldWname\W@name
 
1073
                \xdef\@currentlabel{\modno}%
 
1074
                \global\let\Woutname\empty
 
1075
                \addtocounter{pagemodule}{1}%
 
1076
        \fi
 
1077
        \xdef\modstar{#1}%
 
1078
        \let\*=\empty
 
1079
        \xdef\modno{#1}%
 
1080
        }%
 
1081
        \ifx\modno\modstar
 
1082
                \global\onmaybe% For conditional listing of changed secs.
 
1083
        \else
 
1084
                \global\ontrue% Print this section.
 
1085
        \fi
 
1086
        }
 
1087
 
 
1088
 
 
1089
 
 
1090
\def\Wscrap{{\footnotesize\Wmodtrans{\modno}%
 
1091
        \ifW@modchanged*\fi}}
 
1092
 
 
1093
{\gdef\@verbatim{\if@minipage \else \vskip \parskip \fi
 
1094
\leftskip
 
1095
 \@totalleftmargin \rightskip \z@ \parindent \z@ \parfillskip \@flushglue
 
1096
\parskip \z@ \@@par \@tempswafalse \def \par {\if@tempswa \hbox {}\fi
 
1097
\@tempswatrue
 
1098
\@@par \penalty \interlinepenalty }\obeylines \tt \catcode ``=13
 
1099
\@noligs \let \do \@makeother \dospecials}}
 
1100
 
 
1101
{\catcode`/=0 /catcode`/\=12 /catcode`/^^I=13
 
1102
/gdef/WBM{%/8/kern/notch
 
1103
/begingroup
 
1104
/parindent/W@globalindent/notch /advance/parindent by-1/notch
 
1105
/def/par{/endgraf/leavevmode}%
 
1106
/catcode`^^I=13 /def^^I{/leavevmode/penalty10000/ / / / / / / / }%
 
1107
/catcode``=13 /@noligs /tt
 
1108
/let/do/@makeother /dospecials
 
1109
/@vobeyspaces/frenchspacing/obeylines
 
1110
/W@M}
 
1111
/gdef/W@M#1\WEM{#1/endgroup}}
 
1112
 
 
1113
 
 
1114
\def\WDP#1{\ifx E#1\else{\tt#1}\fi}% Used in the exponent macro below.
 
1115
 
 
1116
\DRC\WO[1]{%
 
1117
        {% Make the next definitions local.
 
1118
        \let\-\_%
 
1119
        \let\d\$%
 
1120
        \def\\{\let\_\-\let\$\d}%
 
1121
        \def\?{\kern.2em}%
 
1122
        \let\{\bgroup% Braces are inserted in \Fortran-90 by kind parameter.
 
1123
        \let\}\egroup
 
1124
        \def\###1{\kern0.1em{\tt \ifcase##1F\or L\or U\or UL\else?\fi}}%C~constant.
 
1125
        \def\^##1{\cdot 10^{\aftergroup}\aftergroup\WDP\aftergroup##1}% Power of ten
 
1126
        \def\_{_{\\\rm\aftergroup}}% Fortran-90 kind parameter.
 
1127
        \def\%{{\rm H}\hbox{\aftergroup}\Wtypewriter{\aftergroup}}% Hollerith constant
 
1128
        \def\&{0{\tt b}}% Binary constant.
 
1129
        \def\~{\hbox{\rm\char'23\kern-.2em\it\aftergroup\?\aftergroup}}% Octal
 
1130
        \def\`{\hbox{\rm\char"7D\tt\aftergroup}}% Double quotes for hex constant
 
1131
        #1}}
 
1132
 
 
1133
 
 
1134
\def\WKINDCHAR#1\.#2{%
 
1135
        \hbox{\Wtypewriter{#2}}_{\Wkindids \rm #1}}
 
1136
 
 
1137
\DRC\Wkindids{\def\Wshort##1{##1}%
 
1138
        \def\Wid##1{##1}%
 
1139
        \def\WID##1{##1}}
 
1140
 
 
1141
 
 
1142
\def\WPr{\global\W@ind=\W@globalindent \1}
 
1143
 
 
1144
 
 
1145
\def\WP{\parskip=0pt \parindent=\notch
 
1146
        \rightskip=0pt plus 100pt minus 10pt
 
1147
        \sfcode`;=3000
 
1148
        \pretolerance 10000
 
1149
        \WPr
 
1150
        \W@firstbreaktrue % Reset to true by |\6|.
 
1151
        \leavevmode\kern\notch}
 
1152
 
 
1153
 
 
1154
\def\WQ{\rightskip=0pt
 
1155
        \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 }
 
1156
 
 
1157
\def\Wendd{\par}% End of definition part.
 
1158
\def\Wendc{\par}% End of code part.
 
1159
 
 
1160
 
 
1161
\def\WA{\note{See also}}% Cross-reference for multiply defined section names.
 
1162
        % English!
 
1163
 
 
1164
\def\Wauto[#1]{\Wtypewriter{[#1]}\ }
 
1165
 
 
1166
\DRC\WB{\mathopen{\Wtypewriter{@/\ast}}}% Begin controlled comment.
 
1167
 
 
1168
\let\WG\ge % Greater than or equal sign: '$\WG$'.
 
1169
 
 
1170
\DRC\WI{\neq}% Unequal sign: '$\WI$'.  (Better reserve |\ne| for the
 
1171
                % electron density~$n_e$.)
 
1172
 
 
1173
\DRC\WJ{\Wtypewriter{@\&}}% TANGLE's join operation: '\WJ'.
 
1174
 
 
1175
\let\WK\gets % Left arrow: '$\WK$'.
 
1176
 
 
1177
\let\Wlbl\llap
 
1178
 
 
1179
 
 
1180
 
 
1181
 
 
1182
\let\WL\le % Less than or equal sign: '$\WL$'.
 
1183
 
 
1184
\let\WLA\langle % Opening of template:  '$\WLA$'.
 
1185
\let\WRA\rangle % Closing of template:  '$\WRA$'.
 
1186
 
 
1187
\DRC\WTLD{\Wtypewriter{@\~}}
 
1188
 
 
1189
\def\Wskip{\vfil\penalty-100\vfilneg \vskip12ptminus3pt}% See |\WM|, etc.
 
1190
 
 
1191
\def\Wskipped#1{\8\mathhexbox278.\quad\Wtypewriter{@I "#1"}\ \ {\it Section(s)
 
1192
skipped}\dots\WP}
 
1193
 
 
1194
\let\WPtr\Rightarrow % Fortran's stupid pointer assignment statement:
 
1195
                % '$\WPtr$'.
 
1196
 
 
1197
\let\WR=\lnot % Logical not: '$\WR$'.
 
1198
 
 
1199
\let\WS=\equiv % Equivalence sign: '$\WS$'.
 
1200
\let\WSQ=\equiv % This symbol is used when defining a section name.
 
1201
 
 
1202
\DRC\WSl{\ifmmode\mathbin{/}\else/\fi}% Division
 
1203
 
 
1204
\DRC\WT{\mathclose{\Wtypewriter{@\ast/}}}% Terminate controlled comment.
 
1205
 
 
1206
\def\WU{\note{This code is used in}}% Cross-reference for uses of sections.
 
1207
        % English!
 
1208
 
 
1209
\let\WV\lor % Logical or: '$\WV$'.
 
1210
 
 
1211
\let\WW=\land % Logical and: '$\WW$'.
 
1212
 
 
1213
 
 
1214
\ifLaTeXisloaded
 
1215
\else
 
1216
        \let\footnotesize\eightrm
 
1217
\fi
 
1218
 
 
1219
\def\WX#1#2\X#3\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi
 
1220
        \XX$\langle\,$#2{\footnotesize\kern.5em#1}%
 
1221
$\,\rangle^{\mathrm{#3}}$\XX}
 
1222
 
 
1223
 
 
1224
\def\WY{\par
 
1225
        \yskip
 
1226
        \parskip=0pt}
 
1227
 
 
1228
 
 
1229
\DRC\?{\mathrel?}
 
1230
 
 
1231
 
 
1232
\DRC\Colon{\ifmmode\colon\else\textcolon\fi}
 
1233
 
 
1234
\DRC\WCC{\mathord{::}}% For C:  '$x\WCC y$'.
 
1235
\DRC\WCF{{}\mathbin{::}{}}% For \Fortran:  '$x\WCF y$'.
 
1236
 
 
1237
 
 
1238
 
 
1239
\DRC\=[1]{\kern2pt\hbox{\vrule\vtop{\vbox{\hrule
 
1240
        \hbox{\strut\kern2pt\Wtypewriter{#1}\kern2pt}}
 
1241
        \hrule}\vrule}\kern2pt}
 
1242
 
 
1243
\let\Wequals\=
 
1244
 
 
1245
 
 
1246
\let\~=\ignorespaces
 
1247
\let\*=*
 
1248
 
 
1249
 
 
1250
\def\WPQ{\mathrel{+\mathord\equiv}}% '$\WPQ$'.
 
1251
 
 
1252
 
 
1253
\def\W@LP{(}% Must be |\def|, not |\let|.
 
1254
\def\W@ISL#1#2]{\def\next{#1}}
 
1255
\DRC\WEE[1]{\W@ISL#1]\ifx\next\W@LP\WEXP[#1]\else\WEXP[(#1)]\fi}
 
1256
\def\WEXP[(#1)]{^{#1}}
 
1257
 
 
1258
 
 
1259
 
 
1260
\DRC\WCMN[2]{\Wtypewriter{/#2/}}
 
1261
 
 
1262
\let\WSlSl\parallel% Concatenation: '$\WSlSl$'.
 
1263
 
 
1264
\DRC\WEQV{\mathrel{?{=}}}% `$x\WEQV y$'.
 
1265
\DRC\WNEQV{\not\equiv}% `$x\WNEQV y$'.
 
1266
 
 
1267
 
 
1268
\DRC\WLS{\mathopen{({/}\,}}
 
1269
\DRC\WSR{\mathclose{\,{/})}}
 
1270
 
 
1271
 
 
1272
\DRC\WFALSE{{\cal F}}% '$\WFALSE$'.
 
1273
\DRC\WTRUE{{\cal T}}% '$\WTRUE$'.
 
1274
 
 
1275
 
 
1276
\def\Wblock#1{\Wc\bgroup\ Block #1\egroup}% `\Wblock{99}'
 
1277
 
 
1278
 
 
1279
\def\WNN{\hbox{\#\#}}% '\WNN'.
 
1280
\def\WNP{\hbox{\#!}}% '\WNP'.
 
1281
\def\WNC{\hbox{\#:}}% '\WNC'.
 
1282
\def\WND{\hbox{\#.}}% '\WND'.
 
1283
\def\WNq{\hbox{\#\tt'}}% '\WNq'.
 
1284
\def\WNQ{\hbox{\#\tt"}}% '\WNQ'.
 
1285
 
 
1286
 
 
1287
\mathchardef\TLD="0218 % '$\TLD$'.
 
1288
 
 
1289
\DRC\WPP{\mathord{++}}% '$\WPP$'.
 
1290
\DRC\WMM{\mathord{--}}% '$\WMM$'.
 
1291
 
 
1292
\DRC\WMG{\mathord{\to}}% '$\WMG$'.
 
1293
 
 
1294
\DRC\Wcp{\mathrel{+{=}}} \let\PE\Wcp % `$x\PE y$'.
 
1295
\DRC\Wcm{\mathrel{-{=}}} \let\ME\Wcm % `$x\ME y$'.
 
1296
\DRC\Wcs{\mathrel{\ast{=}}} \let\TE\Wcs % `$x\Wcs y$'.
 
1297
\DRC\Wcv{\mathrel{/{=}}} \let\FE\Wcv % `$x\FE y$'.
 
1298
\DRC\Wcd{\mathrel{\%{=}}} \let\CE\Wcd % `$x\Wcd y$'.
 
1299
\DRC\Wcx{\mathrel{\^\!{=}}}% `$x\Wcx y$'.
 
1300
\DRC\Wca{\mathrel{\amp{=}}}% `$x\Wca y$'.
 
1301
\DRC\Wco{\mathrel{\WOR{=}}}% `$x\Wco y$'.
 
1302
\DRC\Wcg{\mathrel{\WGG\!{=}}}% `$x\Wcg y$'.
 
1303
\DRC\Wcl{\mathrel{\WLL\!{=}}}% `$x\Wcl y$'.
 
1304
 
 
1305
 
 
1306
\DRC\WMOD{\mathrel{\%}}% `$x\WMOD y$'.
 
1307
\DRC\WOR{{\,|\,}}% `$x\WOR y$'.
 
1308
\DRC\WAND{{\,\amp\,}}% `$x\WAND y$.
 
1309
 
 
1310
\DRC\WGG{\mathrel{>\!>}}% `$x\WGG y$'.
 
1311
\DRC\WLL{\mathrel{<\!<}}% `$x\WLL y$'.
 
1312
 
 
1313
\DRC\WHE{\mathrel{\uparrow=}}% `$x\WHE y$'.
 
1314
 
 
1315
\DRC\Woperator[1]{\Wreserved{operator}~\hbox{$#1$}\ignorespaces}
 
1316
\DRC\Woperatoro{\Wreserved{operator}~\ignorespaces}
 
1317
 
 
1318
 
 
1319
\let\openbraces=\{
 
1320
\let\closebraces=\}
 
1321
\def\{{\ifmmode\openbraces\else$\openbraces$\fi}
 
1322
\def\}{\ifmmode\closebraces\else$\closebraces$\fi}
 
1323
 
 
1324
 
 
1325
 
 
1326
 
 
1327
 
 
1328
\newif\ifop
 
1329
\newbox\dotbox
 
1330
 
 
1331
\def\Wunknown#1{\={??#1??}}% For unknown dot constant.
 
1332
 
 
1333
{\catcode`\_=11
 
1334
 
 
1335
\gdef\newop#1#2#3{%
 
1336
        \edef\next{\def\expandafter\noexpand\csname _#1_#2\endcsname}%
 
1337
        \next{#3}}
 
1338
 
 
1339
\gdef\newbinop#1#2#3{%
 
1340
        \edef\next{\def\expandafter\noexpand\csname _#1_#2\endcsname}%
 
1341
        \next{\mathrel{#3}}}
 
1342
 
 
1343
\gdef\newunop#1#2#3{%
 
1344
        \edef\next{\def\expandafter\noexpand\csname _#1_#2\endcsname}%
 
1345
        \next{\mathbin{#3}}}
 
1346
 
 
1347
\gdef\Wop#1#2{\setbox\dotbox\hbox{\tt .#1.}%
 
1348
        \edef\nxt{\expandafter\noexpand\csname _#1_#2\endcsname}%
 
1349
        \edef\ifnxt{\noexpand\ifx\expandafter\noexpand\csname _#1_#2\endcsname}%
 
1350
        \ifnxt\empty
 
1351
                \def\next{\box\dotbox}% Macro not defined; just use \.{.NAME.}.
 
1352
        \else
 
1353
                \def\next{\futurelet\nextchar\W@q}% Be careful about |\WEE|.
 
1354
        \fi
 
1355
        \next}%
 
1356
}
 
1357
 
 
1358
\global\let\Wb\Wop
 
1359
\global\let\Wu\Wop
 
1360
 
 
1361
\let\Lbrace{
 
1362
 
 
1363
\def\W@q{\ifx\nextchar\Lbrace
 
1364
                \let\next\nxt % There's an argument coming up.
 
1365
        \else
 
1366
                \ifop
 
1367
                        \def\next{\nxt{}\equiv\box\dotbox}%
 
1368
                \else
 
1369
                        \let\next\nxt
 
1370
                \fi
 
1371
        \fi
 
1372
        \opfalse
 
1373
        \next}
 
1374
 
 
1375
 
 
1376
\DRC\WTeX[1]{\ [{\ifmmode\def\XX{}\else\def\XX{\null$\null}\fi
 
1377
\XX#1\XX}]\ }
 
1378
 
 
1379
 
 
1380
\newtoks\W@ARRAYarga
 
1381
\newtoks\W@ARRAYargb
 
1382
 
 
1383
\DRC\WXA[1]{\begingroup
 
1384
        \def\Wshort##1{##1}%
 
1385
        \def\Wid##1{\mathit{##1\/\kern.05em}}%
 
1386
        \global\W@ARRAYarga{#1}%
 
1387
        \futurelet\W@next\WARRAYm}
 
1388
 
 
1389
\def\WARRAYm{\ifx\W@next\WXA
 
1390
                \global\let\W@next\WARRAYn% Multiple indices in C:  a[i][j][k]
 
1391
        \else
 
1392
                \global\let\W@next\relax
 
1393
                \WARRAY{\the\W@ARRAYarga}% Typeset the accumulated indices.
 
1394
        \fi
 
1395
        \endgroup
 
1396
        \W@next}
 
1397
 
 
1398
\def\WARRAYn#1#2{\W@ARRAYargb{#2}%
 
1399
        \edef\W@next{\noexpand\WXA{\the\W@ARRAYarga,\the\W@ARRAYargb}}%Concatenate
 
1400
        \W@next}
 
1401
 
 
1402
\DRC\WARRAY[1]{[#1]}% Default definition.
 
1403
\DRC\WSUB[1]{_{\scriptstyle#1}}% E.g., subscript indices.
 
1404
 
 
1405
 
 
1406
\def\Wouto#1#2{\Wreserved{@#1}\W@Hspace\Wtypewriter{#2}}
 
1407
\def\Wout#1{\Wouto{o}{#1}}
 
1408
\def\WOut#1{\Wouto{O}{#1}}
 
1409
 
 
1410
 
 
1411
\def\WRCS#1#2{\langle\!\langle\,\Wtypewriter{#2}\,\rangle\!\rangle
 
1412
        \ifnum#1=0 _{0}\fi}
 
1413
 
 
1414
 
 
1415
\def\modlabel#1{%
 
1416
        \ifLaTeXisloaded
 
1417
                \label{MOD#1}%
 
1418
        \else
 
1419
                \edef\next{\gdef\expandafter\noexpand\csname MOD#1\endcsname{\modno}}%
 
1420
                \next
 
1421
        \fi}
 
1422
 
 
1423
\def\Wmodule#1{\ifLaTeXisloaded
 
1424
                \ref{MOD#1}%
 
1425
        \else
 
1426
                \csname MOD#1\endcsname
 
1427
        \fi}
 
1428
 
 
1429
\def\WEBsection#1{section~\Wmodule{#1}}% |\section| is used by \LaTeX.
 
1430
\def\WEBmodule#1{module~\Wmodule{#1}}
 
1431
\let\module\WEBmodule% For backward compatibility.
 
1432
 
 
1433
 
 
1434
\def\strutdepth{\dp\strutbox}
 
1435
 
 
1436
\def\W@marginal#1{\strut\vadjust{\kern-\strutdepth\W@specialmargin{#1}}}
 
1437
 
 
1438
\def\W@specialmargin#1{\vtop to\strutdepth{
 
1439
        \baselineskip\strutdepth
 
1440
        \vss\llap{#1 }\null}}
 
1441
 
 
1442
\def\LANGUAGE#1{\W@marginal{\smash{\vtop{\hbox{%
 
1443
        \hbox{\tt @L\lowercase{#1}\textcolon\enspace}}\null}}}\ignorespaces}
 
1444
 
 
1445
 
 
1446
 
 
1447
 
 
1448
\newif\ifon
 
1449
\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue
 
1450
 
 
1451
 
 
1452
\newif\iftitle \newif\ifpagesaved
 
1453
 
 
1454
\newcount\contentspageno
 
1455
 
 
1456
 
 
1457
\def\Wmodhd#1{ [#1]}
 
1458
 
 
1459
\newif\ifW@headers
 
1460
\W@headerstrue% Stand-alone setting (might be changed in fwebinsert.sty).
 
1461
 
 
1462
\def\W@seczero{0}
 
1463
 
 
1464
\def\WsetLmarks{
 
1465
        \def\Wsecrange##1##2{%
 
1466
                \def\W@tempa{##1}\def\W@tempb{##2}%
 
1467
                \ifx\W@tempa\W@tempb% Equal sec.\ nums; just print one.
 
1468
                        \W@S\Wmodtrans{##1}\Wmodhd{\###1}%
 
1469
                \else\ifx\W@tempb\W@seczero
 
1470
                        \W@S\Wmodtrans{##1}\Wmodhd{\###1}%
 
1471
                \else
 
1472
                    \W@S\Wmodtrans{##1}--\W@S\Wmodtrans{##2}%
 
1473
\Wmodhd{\###1--\###2}%
 
1474
                \fi\fi}
 
1475
 
 
1476
        \gdef\@leftmark##1##2##3##4{%
 
1477
                \let\protect\relax
 
1478
                \let\\\ %
 
1479
                \qquad\mainfont##2
 
1480
                \hfill
 
1481
                \Wtitle\qquad
 
1482
                \ifnum##1>0%
 
1483
                  \mainfont\Wsecrange{##1}{##3}%
 
1484
                \fi
 
1485
                }
 
1486
 
 
1487
        \gdef\@rightmark##1##2##3##4{%
 
1488
                \let\protect\relax
 
1489
                \let\\\ %
 
1490
                \ifnum##1>0
 
1491
                        \mainfont\Wsecrange{##1}{##3}\qquad%
 
1492
                \fi
 
1493
                \mainfont\Wtitle
 
1494
                \hfill
 
1495
                \mainfont##4\qquad
 
1496
                }
 
1497
 
 
1498
        \gdef\leftmark{%
 
1499
\ifnoLaTeXe
 
1500
\else
 
1501
        \let\protect\@unexpandable@protect
 
1502
\fi
 
1503
\edef\W@tempb{\expandafter\iftrue\botmark\fi}%
 
1504
\edef\W@tempa{\expandafter\iffalse\topmark\fi}%
 
1505
\expandafter\expandafter\expandafter\@leftmark\expandafter\W@tempa\W@tempb{}{}}
 
1506
 
 
1507
        \gdef\rightmark{%
 
1508
\ifnoLaTeXe
 
1509
\else
 
1510
        \let\protect\@unexpandable@protect
 
1511
\fi
 
1512
\edef\W@tempb{\expandafter\iftrue\botmark\fi}%
 
1513
\edef\W@tempa{\expandafter\iffalse\topmark\fi}%
 
1514
\expandafter\expandafter\expandafter\@rightmark\expandafter\W@tempa%
 
1515
\W@tempb{}{}}
 
1516
 
 
1517
        \gdef\W@markN{\gdef\W@mark####1####2{{\def\WIN{\WIM}%
 
1518
                \mark{####1\noexpand\else####2}}}}
 
1519
 
 
1520
        \ifx\selectfont\undefined
 
1521
                \W@markN
 
1522
        \else
 
1523
                \gdef\W@mark##1##2{{%\def\WIN{\WIM}%
 
1524
                        \let\protect\@unexpandable@protect
 
1525
                        \mark{##1\noexpand\else##2}}}
 
1526
        \fi
 
1527
}
 
1528
 
 
1529
\ifLaTeXisloaded
 
1530
\else
 
1531
\def\lheader{\mainfont\the\pageno\eightrm\qquad\Whead\hfill\Wtitle\qquad
 
1532
        \ifnum\pageno=\contentspageno\else
 
1533
                \W@S\mainfont\Wmodno
 
1534
        \fi}
 
1535
 
 
1536
\def\rheader{\ifnum\pageno=\contentspageno\else
 
1537
                \W@S\mainfont\Wmodno
 
1538
        \fi
 
1539
        \eightrm\qquad\Wtitle\hfill\Whead
 
1540
        \qquad\mainfont\the\pageno}
 
1541
\fi
 
1542
 
 
1543
 
 
1544
\def\pagewidtho{6.5}% The width of each page
 
1545
\def\pageheighto{8.7}% The height of each page
 
1546
\def\fullpageheighto{9}% Page height including headlines
 
1547
 
 
1548
\newdimen\pagewidth \pagewidth\pagewidtho in
 
1549
\newdimen\pageheight \pageheight\pageheighto in
 
1550
\newdimen\fullpageheight \fullpageheight\fullpageheighto in
 
1551
 
 
1552
\newdimen\pageshift \pageshift=0in% Shift righthand pages wrt lefthand ones
 
1553
 
 
1554
\def\setpage{\hsize\pagewidth
 
1555
        \vsize\pageheight
 
1556
        \ifLaTeXisloaded
 
1557
                \oddsidemargin=0pt
 
1558
                \evensidemargin=0pt
 
1559
                \topmargin=0pt
 
1560
                \setlength{\linewidth}{\pagewidth}
 
1561
                \setlength{\textwidth}{\pagewidth}
 
1562
                \setlength{\textheight}{\pageheight}
 
1563
        \fi
 
1564
        }
 
1565
        
 
1566
\ifLaTeXisloaded
 
1567
\else
 
1568
\def\magnify#1{\mag=#1
 
1569
        \pagewidth\pagewidtho truein
 
1570
        \pageheight\pageheighto truein
 
1571
        \fullpageheight\fullpageheighto truein
 
1572
        \setpage}
 
1573
 
 
1574
\fi
 
1575
 
 
1576
 
 
1577
\def\page{\box255 }
 
1578
 
 
1579
\newif\ifidenticalpageheads
 
1580
 
 
1581
\def\normaloutput#1#2#3{
 
1582
        \ifodd\pageno\hoffset=\pageshift\fi
 
1583
        \shipout\vbox
 
1584
                {
 
1585
                \vbox to\fullpageheight
 
1586
                        {
 
1587
                        \iftitle\global\titlefalse
 
1588
                        \else \hbox to\pagewidth
 
1589
                                {\vbox to10pt{}%
 
1590
                                \ifidenticalpageheads#2\else
 
1591
                                \ifodd\pageno
 
1592
                                        #3% Pg nos alternate left \& right.
 
1593
                                \else#2\fi
 
1594
                                \fi
 
1595
                                }%      
 
1596
                        \fi
 
1597
                        \vfill#1% Parameter |#1| is the page itself.
 
1598
                        }
 
1599
                }
 
1600
        \global\advance\pageno by1}
 
1601
 
 
1602
\def\W@name{{FWEB} OUTPUT}% This section name is reset by starred sections.
 
1603
 
 
1604
 
 
1605
\newtoks\Woutput
 
1606
\Woutput\output% Remember \FWEB's definition.
 
1607
 
 
1608
 
 
1609
 
 
1610
\newcount\minutes
 
1611
\newcount\hours
 
1612
 
 
1613
\hours=\time
 
1614
\divide\hours by 60
 
1615
\multiply\hours by 60
 
1616
\minutes=\time
 
1617
\advance\minutes by -\hours
 
1618
\divide\hours by 60
 
1619
 
 
1620
\def\Time{\the\hours\textcolon\ifnum\minutes<10 0\fi\the\minutes}
 
1621
 
 
1622
\def\Date{\ifcase\month\or
 
1623
        January\or February\or March\or April\or May\or June\or
 
1624
        July\or August\or September\or October\or November\or December\fi
 
1625
        \space\number\day, \number\year}
 
1626
 
 
1627
 
 
1628
 
 
1629
\def\Wtitle{}% Short title for running heads.  Can redefine after |\Title|.j
 
1630
 
 
1631
\def\Title{\@ifnextchar[\W@@Title\W@Title}
 
1632
\def\W@Title#1{\W@@Title[#1]{#1}}
 
1633
\def\W@@Title[#1]#2{\gdef\Wtitle{{\large\tt#1}}\title{{\ttitlefont#2}}}
 
1634
 
 
1635
 
 
1636
 
 
1637
\ifLaTeXisloaded
 
1638
        \def\topofcontents{}% We use \LaTeX's defaults.
 
1639
\else
 
1640
        \def\topofcontents{\centerline{\titlefont\Wtitle}
 
1641
          \vfill} % This is the default.
 
1642
\fi
 
1643
 
 
1644
 
 
1645
 
 
1646
\ifLaTeXisloaded
 
1647
        \def\botofcontents{}
 
1648
\else
 
1649
\def\botofcontents{\vfill
 
1650
        \rightline{\Date}
 
1651
        \rightline{\Time}}
 
1652
\fi
 
1653
 
 
1654
\ifLaTeXisloaded
 
1655
        \contentspageno=1
 
1656
        \pageno=\contentspageno
 
1657
\else
 
1658
        \contentspageno=0% Default page number for table of contents
 
1659
\fi
 
1660
 
 
1661
 
 
1662
\newwrite\W@cont % For the table of contents.
 
1663
 
 
1664
\ifLaTeXisloaded
 
1665
        \def\Wfirst#1#2#3#4#5{#1}
 
1666
 
 
1667
        \def\W@output{\setcounter{pagemodule}{0}%
 
1668
                \xdef\W@botmodno{\expandafter\Wfirst\botmark}}
 
1669
 
 
1670
        \def\W@botmodno{0}
 
1671
 
 
1672
        \def\Newlabel#1#2#3{%
 
1673
                \ifFWEBstandalone
 
1674
                        \@ifundefined{r@#1}{}%
 
1675
                                {\@warning {Label `#1' multiply defined}}
 
1676
                \fi
 
1677
                \global\@namedef{r@#1}{#2{#3}}% |\@namedef| is from \LaTeX.
 
1678
                \global\W@lpha=#3
 
1679
                \ifnum\W@lpha=\W@ref\global\advance\W@pmcount by1
 
1680
                \else
 
1681
                        \ifnum\W@pmcount=1
 
1682
                        \edef\next{\gdef\csname W@\the\W@ref\endcsname{}}\next
 
1683
                        \fi
 
1684
                        \W@ref=\W@lpha
 
1685
                        \W@pmcount=1
 
1686
                \fi}
 
1687
\fi
 
1688
 
 
1689
 
 
1690
\newcount\W@ref
 
1691
\W@ref=-1
 
1692
 
 
1693
\newcount\W@lpha
 
1694
 
 
1695
\newcount\W@pmcount
 
1696
\W@pmcount=1
 
1697
 
 
1698
\outer\def\Wbegin[#1]#2#3#4#5#6#7#8#9{\edef\contentsfile{#5}%
 
1699
        \def\readcontents{\input\contentsfile}%
 
1700
 
 
1701
        \Wequate#6
 
1702
        \W@modequate{#7}%
 
1703
        \edef\INDEX{#9}%
 
1704
        \def\W@splitprms##1##2[##3;##4]{\def##1{##3}\def##2{##4}}%
 
1705
        \W@splitprms\W@preamble\W@postamble[#8]%
 
1706
        \ifLaTeXisloaded
 
1707
                  \ifFWEBstandalone
 
1708
                \def\FWEBend{% \LaTeX\ redefines |\end|.
 
1709
                        \W@outlsmax{1}% The `1' is because sec. #
 
1710
                                % isn't incremented for the module list.
 
1711
                          \global\advance\W@ssmax by1
 
1712
          \immediate\write\@auxout{\string\W@maxdepth{\the\W@ssmax}}%
 
1713
                          \W@postamble
 
1714
                          \W@makeatend% Override |\makeatletter|
 
1715
                          \end{document}%
 
1716
                        }%
 
1717
                        \def\W@ssmin{0}
 
1718
                \else% Insert mode; not stand-alone.
 
1719
                        \def\FWEBend{}
 
1720
                        % |\W@ssmin| isn't defined; it's set by |\fweblevel|.
 
1721
                  \fi
 
1722
                \W@splitprms\W@prma\W@prmb[#1]%
 
1723
                \W@splitprms\W@prmc\W@prmd[#2]%
 
1724
                \ifusedocumentstyle
 
1725
                   \edef\W@temp{\noexpand\documentstyle[\W@prma]{\W@prmc}}%
 
1726
                        \W@temp
 
1727
                \else
 
1728
                        \ifFWEBstandalone
 
1729
                                \documentclass[\W@prma]{\W@prmc}%
 
1730
                                \usepackage[\W@prmb]{\W@prmd}%
 
1731
                        \fi
 
1732
                \fi
 
1733
                \ifFWEBstandalone
 
1734
                        \textwidth\pagewidth
 
1735
                        \textheight\pageheight
 
1736
                \fi
 
1737
                \TeXindent#3
 
1738
                \title{}%
 
1739
                \author{}%
 
1740
                \date{\today\\[3pt]\Time}%
 
1741
                \pagestyle{myheadings}%
 
1742
                \ifx\c@pagemodule\undefined
 
1743
                        \newcounter{pagemodule}%
 
1744
                        \newcounter{W@tempcounter}%
 
1745
                \fi
 
1746
                \gdef\cl@section{\@elt{subsection}\cl@subsection}
 
1747
                \gdef\cl@subsection{\@elt{subsubsection}\cl@subsubsection}
 
1748
                \gdef\cl@subsubsection{\@elt{subsubsubsection}}
 
1749
                \xdef\normaloutput##1##2##3{\the\output \noexpand\W@output}%
 
1750
                \ifW@headers
 
1751
                        \WsetLmarks
 
1752
                \else
 
1753
                        \def\W@markN{}%
 
1754
                        \def\W@mark##1##2{}%
 
1755
                \fi
 
1756
                \W@preamble
 
1757
                \W@raggedbottom
 
1758
                \ifFWEBstandalone
 
1759
                        \begin{document}
 
1760
                \else
 
1761
                        \begingroup
 
1762
                        \makeatletter
 
1763
                        \@input{\jobname.aux}
 
1764
                                %|\jobname| is redefined in \.{fwebinsert.sty}.
 
1765
                        \endgroup
 
1766
                \fi
 
1767
                \W@setsecdepth
 
1768
        \else % Plain \TeX.
 
1769
                \immediate\openout\W@cont=\contentsfile
 
1770
                \def\FWEBend{\W@postamble\end}
 
1771
                \TeXindent#3
 
1772
                \W@preamble
 
1773
        \fi
 
1774
        \W@setboxes{#4}% Set dimensions of backspace boxes.
 
1775
        \ifFWEBstandalone
 
1776
                \output
 
1777
                        {\setbox0=\page% The first page is garbage
 
1778
                        \global\output{\normaloutput\page\lheader\rheader}%
 
1779
                        }%
 
1780
                \setpage
 
1781
                \vbox to \vsize{}
 
1782
        \fi
 
1783
        }
 
1784
 
 
1785
 
 
1786
\def\W@makeatend{\let\W@makeatletter\makeatletter
 
1787
        \def\makeatletter{\def\Newlabel{\W@testdef r}%
 
1788
        \W@makeatletter}}
 
1789
 
 
1790
\def\W@testdef#1#2#3#4{\def\reserved@a{#3{#4}}%
 
1791
\expandafter\ifx\csname#1@#2\endcsname
 
1792
                \reserved@a
 
1793
        \else
 
1794
                \@tempswatrue
 
1795
        \fi
 
1796
}
 
1797
 
 
1798
 
 
1799
\def\Wch{\note{The following sections were changed by the change file:}
 
1800
        \let\*=\relax}% English!
 
1801
 
 
1802
 
 
1803
\newbox\Sbox % Saved box preceding the index
 
1804
\newbox\Lbox % Lefthand column in the index
 
1805
 
 
1806
\ifLaTeXisloaded
 
1807
        \def\startindex{\ifx\multicols\undefined
 
1808
                                \medskip
 
1809
                        \else
 
1810
                                \begin{multicols}{2}%
 
1811
                        \fi
 
1812
                        }
 
1813
\else
 
1814
        \def\startindex{\par\vskip6pt plus 1fil}
 
1815
\fi
 
1816
 
 
1817
 
 
1818
\def\Winx{\startindex
 
1819
\ifLaTeXisloaded
 
1820
\else
 
1821
        \write\W@cont{ }% Ensure that the contents file isn't empty
 
1822
        \closeout\W@cont % The contents information has been fully gathered
 
1823
        \output{\ifpagesaved\normaloutput{\box\Sbox}\lheader\rheader\fi
 
1824
                \global\setbox\Sbox=\page \global\pagesavedtrue}
 
1825
        \pagesavedfalse \eject % Eject the page-so-far and predecessors
 
1826
        \setbox\Sbox\vbox{\unvbox\Sbox}% Take it out of its box
 
1827
        \vsize=\pageheight \advance\vsize by -\ht\Sbox % The remaining height
 
1828
        \hsize=.5\pagewidth \advance\hsize by -10pt
 
1829
                % Column width for the index (20pt between cols)
 
1830
        \parfillskip 0pt plus .6\hsize % Try to avoid almost empty lines
 
1831
        \def\lr{L}% This tells whether the left or right column is next
 
1832
        \output{\if L\lr\global\setbox\Lbox=\page \gdef\lr{R}
 
1833
                \else\normaloutput{\vbox to\pageheight{\box\Sbox\vss
 
1834
                \hbox to\pagewidth{\box\Lbox\hfil\page}}}\lheader\rheader
 
1835
                \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
 
1836
\fi
 
1837
        \outer\def\:##1, {\par\hangindent2em\noindent##1\textcolon\kern1em}% Index 
 
1838
%entry
 
1839
        \def\[##1]{$\underline{##1}$}% Underlined index item
 
1840
        \def\(##1){$^{\rm ##1}$}% Language marker
 
1841
        \let\Windexspace\medskip % Spacing between letter groups in index.
 
1842
        \rm
 
1843
        {\ifFWEBstandalone\let\glbl\global\else\let\glbl\empty\fi
 
1844
        \glbl\parskip 0pt plus .5pt
 
1845
        \glbl\rightskip0pt plus 2.5em
 
1846
        \glbl\tolerance 10000
 
1847
        \glbl\let\*=\W@lapstar
 
1848
        \glbl\hyphenpenalty 10000
 
1849
        \glbl\parindent0pt
 
1850
        }
 
1851
        }
 
1852
 
 
1853
 
 
1854
\ifLaTeXisloaded
 
1855
        \def\Wfin{\ifx\multicols\undefined\else\end{multicols}\fi}
 
1856
\else
 
1857
        \let\Wfin\relax
 
1858
\fi
 
1859
 
 
1860
 
 
1861
\def\W@onecolumn{%
 
1862
        \ifx\multicols\undefined
 
1863
                \onecolumn% In case of insertions & no module list.
 
1864
        \fi
 
1865
        }
 
1866
 
 
1867
 
 
1868
\def\pgfmt#1{\uppercase\expandafter{\romannumeral#1}}
 
1869
 
 
1870
\def\pg#1#2#3{\def\temp{#1}%
 
1871
\ifx\temp\empty% For the case where \.{idxmerge} hasn't been run.
 
1872
\else
 
1873
        \pgfmt{#1}.%
 
1874
\fi
 
1875
#2{#3}%
 
1876
}
 
1877
 
 
1878
 
 
1879
\def\topofindex{}
 
1880
\def\botofindex{}
 
1881
 
 
1882
 
 
1883
 
 
1884
\def\Wmods{%
 
1885
        \def\W@name{Names of the Modules}%
 
1886
\ifLaTeXisloaded
 
1887
        \W@outlsmax{1}% The `1' is because sec. # hasn't been incremented
 
1888
        \edef\next{\noexpand\W@mark{{0}{\INDEX}}
 
1889
                {{0}{\W@name}}}\next
 
1890
        \onecolumn% This also starts a new page.
 
1891
        \edef\next{\noexpand\W@mark{{0}{\W@name}}{{0}{\W@name}}}\next
 
1892
        \parfillskip 0pt plus 1fil
 
1893
\else
 
1894
        \par\vfill\eject
 
1895
        \ifpagesaved\null\vfill\eject\fi % Output a null index column
 
1896
        \if L\lr\else\null\vfill\eject\fi % Finish the current page
 
1897
        \parfillskip 0pt plus 1fil
 
1898
        \edef\rhead{\W@name}%
 
1899
        \output{\normaloutput\page\lheader\rheader}
 
1900
        \setpage
 
1901
\fi
 
1902
        \def\note##1##2.{\quad{\footnotesize##1 ##2.}}
 
1903
        \def\WU{\note{Used in}}% Cross-reference for uses of sections. English!
 
1904
        \def\:{\par\hangindent 2em}\let\*=*%
 
1905
        }
 
1906
 
 
1907
 
 
1908
 
 
1909
\def\Winfo#1#2#3#4{%
 
1910
        \bigskip
 
1911
        \:{{\bf COMMAND LINE\textcolon}\ \ \Wtypewriter{#1}.}\smallskip
 
1912
        \:{{\bf WEB FILE\textcolon}\ \ \Wtypewriter{#2}.}\smallskip
 
1913
        \:{{\bf CHANGE FILE\textcolon}\ \ \Wtypewriter{#3}.}\smallskip
 
1914
        \:{{\bf GLOBAL LANGUAGE\textcolon}\ \ {\rm #4}.}\bigskip
 
1915
        }
 
1916
 
 
1917
\def\Wkwds{\:{\leavevmode{\bf Global RCS-like keywords\textcolon}}\medskip}
 
1918
\def\Wkwd#1#2{\:{\leavevmode\quad{\bf \dollar#1\textcolon}\ \ %
 
1919
\Wtypewriter{"#2"}}}
 
1920
 
 
1921
 
 
1922
\ifLaTeXisloaded
 
1923
        \def\W@settoc#1{}%
 
1924
 
 
1925
        \def\Wtoc#1{\begingroup
 
1926
                \W@settoc{#1}%
 
1927
                \def\Newlabel##1##2##3{}%
 
1928
                \setcounter{tocdepth}{\W@depth}%
 
1929
                \thispagestyle{empty}%
 
1930
                \def\W@name{Table of Contents}% English!
 
1931
                \edef\next{\noexpand\W@mark{{0}{\W@name}}{{0}{\W@name}}}%
 
1932
                \next%
 
1933
                \pagenumbering{roman}%
 
1934
                \maketitle
 
1935
                \topofcontents
 
1936
                \tableofcontents
 
1937
                \botofcontents
 
1938
                \edef\next{\noexpand\W@mark{{1}{\W@name}}{{1}{}}}\next
 
1939
                \gdef\W@name{}%
 
1940
                \newpage% Break after TOC.
 
1941
                \endgroup
 
1942
                \pagenumbering{arabic}%
 
1943
                \pageno=1
 
1944
                }
 
1945
 
 
1946
        \def\Wcon#1{\newpage
 
1947
                \let\WIM\WIN % Restore the proper definition.
 
1948
                \pageno=\contentspageno
 
1949
                \Wtoc{#1}%
 
1950
                }
 
1951
 
 
1952
        \def\FWEBtoc{%
 
1953
                \ifFWEBstandalone
 
1954
                        \Wtoc{}% No toc for insertions.
 
1955
                \fi
 
1956
                \gdef\Wcon##1{% Redefinition!
 
1957
                        \W@onecolumn
 
1958
                        }%
 
1959
                }
 
1960
\else
 
1961
\def\Wcon#1{\par\vfill\eject
 
1962
        \rightskip 0pt \hyphenpenalty 50 \tolerance 200
 
1963
        \setpage
 
1964
        \output{\normaloutput\page\lheader\rheader}
 
1965
        \titletrue % Prepare to output the table of contents
 
1966
        \pageno=\contentspageno
 
1967
        \def\rhead{Table of Contents}% English!
 
1968
        \topofcontents
 
1969
        \catcode`\@=11
 
1970
        \hbox to\hsize{\hfil Section\hbox to3em{\hss Page}}
 
1971
        \def\WZ##1##2##3##4{\hbox to\hsize{\kern##1em\ignorespaces##2
 
1972
                \leaders\hbox to .5em{.\hfil}\hfil\ ##3\hbox to3em{\hss##4}}}
 
1973
        \let\WIM\WIN % Restore the proper definition.
 
1974
        \readcontents\relax % Read the contents info.
 
1975
        \botofcontents
 
1976
        }
 
1977
 
 
1978
\def\FWEBtoc{\message{! Front Table of Contents is only supported with LaTeX.}}
 
1979
\fi
 
1980
 
 
1981
 
 
1982
 
 
1983
\newskip\ttglue
 
1984
 
 
1985
\ttglue=0.5em plus 0.25em minus 0.15em
 
1986
 
 
1987
\def\ttother{\catcode`\\=\other \catcode`\{=\other \catcode`\}=\other
 
1988
        \catcode`\$=\other \catcode`\&=\other \catcode`\#=\other
 
1989
        \catcode`\%=\other \catcode`\~=\other \catcode`\_=\other
 
1990
        \catcode`\^=\other}
 
1991
 
 
1992
\def\ttverbatim{\begingroup \ttother \obeyspaces \obeylines \tt}
 
1993
 
 
1994
{\obeyspaces\gdef {\ }}
 
1995
 
 
1996
\def\begintt{$$\let\par=\endgraf
 
1997
        \ttverbatim
 
1998
        \parskip=0pt
 
1999
        \rightskip=-\parindent
 
2000
        \ttfinish}
 
2001
 
 
2002
\def\Begintt{\bgroup
 
2003
        \let\par=\endgraf
 
2004
        \ttverbatim
 
2005
        \parskip=0pt
 
2006
        \rightskip=-\parindent
 
2007
        \ttFinish}
 
2008
 
 
2009
{\catcode`\|=0
 
2010
        |catcode`|\=\other
 
2011
        |obeylines%
 
2012
        |gdef|ttfinish#1^^M#2\endtt{#1|vbox{#2}|endgroup$$}%
 
2013
        |gdef|ttFinish#1\Endtt{#1|endgroup|egroup}}
 
2014
 
 
2015
\let\verticalbar|
 
2016
 
 
2017
\def\activebar{\catcode`\|=\active}
 
2018
 
 
2019
{\activebar
 
2020
\gdef\normalbar{\activebar
 
2021
        \let|\verticalbar}}
 
2022
 
 
2023
 
 
2024
{\obeylines%
 
2025
\gdef\ttbar{\activebar%
 
2026
        {\obeylines\gdef|{\ttverbatim%
 
2027
                \spaceskip=\ttglue%
 
2028
                \let^^M=\ \let|=\endgroup}}}}
 
2029
 
 
2030
\let\WCX\Begintt
 
2031
 
 
2032
 
 
2033
\catcode`\@=12
 
2034
 
 
2035