~ubuntu-branches/debian/sid/tex4ht/sid

« back to all changes in this revision

Viewing changes to texmf/tex/generic/tex4ht/tex4ht.sty

  • Committer: Bazaar Package Importer
  • Author(s): Kapil Hari Paranjape
  • Date: 2005-04-05 14:14:41 UTC
  • mfrom: (1.2.1 upstream) (2.1.2 hoary)
  • Revision ID: james.westby@ubuntu.com-20050405141441-x4dojdgz3frkfyet
Tags: 20050402.1817-1
* New upstream release (2005-04-02-18:17). Closes: #299934.
* See README.src, README.validate, README.Debian and copyright
  for information on minor changes.
* This upload fixes a some .htf files. Closes: #295109.
* Updated the description to reflect recent changes.
* Fixed some typos in src/tex4ht-mkht.tex and consequently
  in the mk4ht script.
* Updated the man page to include mk4ht. 
* Updated the description of options for the scripts in the man page.
  Put more information in the man page about the way the system works.
  Closes: #219348, #219347.
* Added debian/watch file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
\ifnum\the\catcode`\%=14\else\expandafter\edef\csname
 
2
  \string:RestoreCatcodes\endcsname{\catcode`\%\the
 
3
  \catcode`\%}\catcode`\%14\fi
 
4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
5
% tex4ht.sty                           2005-03-25-09:49  %
 
6
% Copyright (C) 1996--2005      Eitan M. Gurari          %
 
7
%                                                        %
 
8
% This work may be distributed and/or modified under the %
 
9
% conditions of the LaTeX Project Public License, either %
 
10
% version 1.3 of this license or (at your option) any    %
 
11
% later version. The latest version of this license is   %
 
12
% in                                                     %
 
13
%   http://www.latex-project.org/lppl.txt                %
 
14
% and version 1.3 or later is part of all distributions  %
 
15
% of LaTeX version 2003/12/01 or later.                  %
 
16
%                                                        %
 
17
% This work has the LPPL maintenance status "maintained".%
 
18
%                                                        %
 
19
% This Current Maintainer of this work                   %
 
20
% is Eitan M. Gurari.                                    %
 
21
%                                                        %
 
22
% If you modify this program your changing its signature %
 
23
% with a directive of the following form will be         %
 
24
% appreciated.                                           %
 
25
%            \message{signature}                         %
 
26
%                                                        %
 
27
%                             gurari@cse.ohio-state.edu  %
 
28
%                 http://www.cse.ohio-state.edu/~gurari  %
 
29
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
30
\immediate\write-1{version 2005-03-25-09:49}
 
31
 
 
32
\ifx  \Preamble\UnDef  \else
 
33
   \csname expand:after\endcsname{\csname
 
34
       BeforeTeXIVht\endcsname\let\BeforeTeXIVht\UnDef}
 
35
\fi
 
36
\expandafter\edef\csname :RestoreCatcodes\endcsname{%
 
37
   \expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else
 
38
      \csname :RestoreCatcodes\endcsname \fi
 
39
   \ifnum \the\catcode`\ =10 \else
 
40
      \catcode`\noexpand\ =\the\catcode`\ \fi
 
41
   \ifnum \the\catcode`<=12 \else
 
42
      \catcode`\noexpand <\the\catcode`<\fi
 
43
   \ifnum \the\catcode`>=12 \else
 
44
      \catcode`\noexpand >\the\catcode`>\fi
 
45
   \ifnum \the\catcode`\?=12 \else
 
46
      \catcode`\noexpand \?\the\catcode`\?\fi
 
47
   \ifnum \the\catcode`+=12 \else
 
48
      \catcode`\noexpand +\the\catcode`+\fi
 
49
   \ifnum \the\catcode`*=12 \else
 
50
      \catcode`\noexpand *\the\catcode`*\fi
 
51
   \ifnum \the\catcode`;=12 \else
 
52
      \catcode`\noexpand ;\the\catcode`;\fi
 
53
   \ifnum \the\catcode`~=13 \else
 
54
      \catcode`\noexpand ~\the\catcode`~\fi
 
55
   \ifnum \the\catcode`$=3 \else
 
56
      \catcode`\noexpand $\the\catcode`$\fi
 
57
   \ifnum \the\catcode`&=4 \else
 
58
      \catcode`\noexpand &\the\catcode`&\fi
 
59
   \ifnum \the\catcode`\#=6 \else
 
60
      \catcode`\noexpand \#\the\catcode`\#\fi
 
61
   \catcode`\noexpand :\the\catcode`:%
 
62
   \catcode`\noexpand "\the\catcode`"%
 
63
   \catcode`\noexpand @\the\catcode`@%
 
64
   \catcode`\noexpand _\the\catcode`_%
 
65
   \catcode`\noexpand ^\the\catcode`^%
 
66
   \catcode`\noexpand |\the\catcode`|%
 
67
   \csname no:restore\endcsname
 
68
   \ifnum \the\catcode`^=13
 
69
   \let\expandafter\noexpand
 
70
                     \csname x:SUPOff\endcsname\noexpand\empty
 
71
   \let\expandafter\noexpand
 
72
                     \csname x:SUPOn\endcsname\noexpand\empty
 
73
   \catcode`\noexpand ^\the\catcode`^\fi
 
74
\ifnum \the\catcode`_=13
 
75
   \let\expandafter\noexpand
 
76
                     \csname x:SUBOff\endcsname\noexpand\empty
 
77
   \let\expandafter\noexpand
 
78
                     \csname x:SUBOn\endcsname\noexpand\empty
 
79
   \catcode`\noexpand _\the\catcode`_\fi
 
80
%
 
81
   \let\expandafter\noexpand\csname :RestoreCatcodes\endcsname
 
82
                                   \noexpand\UnDefcS}
 
83
\catcode`~13  \catcode`$3   \catcode`&4  \catcode`\#6
 
84
\catcode`\:11 \catcode`\@11 \catcode`;12 \catcode`\ 10
 
85
\catcode`\<12 \catcode`\>12 \catcode`+12 \catcode`*12
 
86
\catcode`\?12
 
87
\edef\SUPOff{%
 
88
   \catcode`\noexpand ^\the\catcode`^\relax
 
89
}
 
90
\edef\SUBOff{%
 
91
   \catcode`\noexpand _\the\catcode`_\relax
 
92
}
 
93
\bgroup
 
94
   \catcode`\^13   \global\let\sys:sp^
 
95
   \catcode`\_13   \global\let\sys:sb_
 
96
\egroup
 
97
 
 
98
\catcode`\^7 \catcode`\|=12  \catcode`"12
 
99
 
 
100
    \def\:temp{\csname newif\endcsname}
 
101
    \def\:tempa#1{%
 
102
       \expandafter\ifx \csname #1\endcsname\relax
 
103
          \expandafter\:temp   \csname #1\endcsname
 
104
       \fi}
 
105
\:tempa{if:Option}
 
106
\:tempa{if:latex}
 
107
\:tempa{if:removeindent}
 
108
\:tempa{if:nopar}
 
109
\ifx \Htmltrue\:UnDef
 
110
   \def\:temp{\csname newif\endcsname}
 
111
   \expandafter\:temp \csname ifHtml\endcsname  \Htmlfalse
 
112
\fi
 
113
 
 
114
    \def\:tempa#1{%
 
115
       \expandafter\ifx \csname #1\endcsname\relax
 
116
          \expandafter\:temp   \csname #1\endcsname
 
117
          \expandafter\expandafter\expandafter\expandafter\expandafter
 
118
             \def\expandafter\expandafter\expandafter
 
119
             \rmv:ifs\expandafter{\rmv:ifs
 
120
             \expandafter\let \csname #1\endcsname  \:UnDef}
 
121
       \fi}
 
122
    \let\rmv:ifs\empty
 
123
 
 
124
 
 
125
\expandafter\ifx \csname @latex@error\endcsname\relax
 
126
    \:latexfalse  \tracingstats1
 
127
\else
 
128
   \if:latex\else \ifx \@currname\empty
 
129
   \def\:temp{\ifx \HCode\:UnDef
 
130
   \:warning{Missing \string\Preamble...\string\EndPreamble?}\fi}
 
131
\edef\:tempa{%
 
132
  \noexpand\expandafter
 
133
  \noexpand\expandafter
 
134
  \noexpand\expandafter
 
135
  \noexpand            \def
 
136
  \noexpand\expandafter
 
137
  \noexpand\expandafter
 
138
  \noexpand\expandafter
 
139
  \expandafter\noexpand\csname enddocument\endcsname
 
140
  \noexpand\expandafter
 
141
  \noexpand\expandafter
 
142
  \noexpand\expandafter
 
143
                      {\noexpand        \expandafter
 
144
                       \noexpand        \:temp
 
145
           \expandafter\noexpand \csname enddocument\endcsname
 
146
                      }%
 
147
}  \:tempa
 
148
 
 
149
\else
 
150
   \ProvidesPackage{tex4ht}
 
151
\let\config:file\empty
 
152
\def\load:cfg{\def\load:cfg{\let\config:opt\CurrentOption
 
153
   \def\load:cfg{\edef\config:opt{\config:opt,\CurrentOption}}%
 
154
}%
 
155
%
 
156
   \def\:temp{\expandafter\cfg:fl\CurrentOption.!*?: }%
 
157
   \def\:tempa{html}\ifx \:tempa\CurrentOption \let\:temp\load:cfg \fi
 
158
   \def\:tempa{xhtml}\ifx \:tempa\CurrentOption \let\:temp\load:cfg \fi
 
159
   \def\:tempa{htm}\ifx \:tempa\CurrentOption \let\:temp\load:cfg \fi
 
160
   \def\:tempa{htm3}\ifx \:tempa\CurrentOption \let\:temp\load:cfg \fi
 
161
   \def\:tempa{htm4}\ifx \:tempa\CurrentOption \let\:temp\load:cfg \fi
 
162
   \def\:tempa{htm5}\ifx \:tempa\CurrentOption \let\:temp\load:cfg \fi
 
163
   \:temp
 
164
}
 
165
\def\cfg:fl#1.#2!*?: {\edef\:tempa{#2}\edef\config:file{%
 
166
   \CurrentOption \ifx \:tempa\empty  .cfg\fi}}
 
167
 
 
168
\DeclareOption*{\load:cfg}
 
169
\ProcessOptions
 
170
\let\o:document\document
 
171
\def\document{%
 
172
   \let\ht:empty\:UnDef
 
173
\def\:temp{}\ifx \:temp\empty \else
 
174
  \gdef\:temp{}\ifx \:temp\empty \else
 
175
     \:warning{Redefined \string\empty?}
 
176
     \global\let\ht:empty\empty \gdef\empty{}%
 
177
\fi\fi
 
178
%
 
179
   \expandafter\let\csname enddocument\endcsname\empty
 
180
   \end{document}%
 
181
   \let\:begindocumenthook\@begindocumenthook
 
182
\def\@begindocumenthook{\csname a:AtBeginDocument\endcsname
 
183
\:begindocumenthook \csname b:AtBeginDocument\endcsname }%
 
184
%
 
185
   \let\document\o:document
 
186
   \let\:latex@error\@latex@error
 
187
   \def\@latex@error##1{\:latex@error{##1 in `\config:file'}}%
 
188
   \csname recall:sub\endcsname
 
189
\csname recall:sup\endcsname
 
190
%
 
191
\ifx \config:file\empty
 
192
   \def\:temp{\ifx \config:opt\:UnDef
 
193
   \edef\config:opt{\ifx \config:file\empty html\fi}\fi
 
194
\expandafter\Preamble\expandafter{\config:opt
 
195
   }\csname begin\endcsname{document}\EndPreamble
 
196
}%
 
197
\else
 
198
   \def\:temp{\input \config:file\relax
 
199
}%
 
200
\fi \:temp
 
201
%
 
202
   \let\@latex@error\:latex@error
 
203
}
 
204
 
 
205
\fi
 
206
\fi
 
207
   \:latextrue
 
208
   \ifx \:providesfile \:UnDef
 
209
      \let\:providesfile\@providesfile
 
210
      \def\@providesfile#1{%
 
211
         \expandafter\ifx\csname @filelist\endcsname\relax
 
212
               \let\@providesfile\:providesfile
 
213
         \else \xdef\@filelist{\@filelist,#1}%
 
214
         \fi
 
215
         \:providesfile{#1}%
 
216
      }
 
217
   \fi
 
218
\fi
 
219
 
 
220
\ifx  \Preamble\UnDef
 
221
    \ifx \PLATFORM\:UnDef \else
 
222
        \message{ [\PLATFORM] }\let\PLATFORM\:UnDef\fi
 
223
    \def\Configure#1{%
 
224
  \expandafter\ifx \csname c:#1:\endcsname\relax
 
225
     \:warning{\string\Configure{#1}?}
 
226
  \fi
 
227
  \csname c:#1:\endcsname}
 
228
\let\c:def\def
 
229
\let\d:def\def
 
230
\def\NewConfigure#1{\def\:tempa{#1}\futurelet\:temp\Nw:cnf}
 
231
\def\Nw:cnf{\ifx [\:temp \edef\:tempa{\noexpand\N:wCnfga{\:tempa}}\else
 
232
   \edef\:tempa{\noexpand\N:wCnfgb{\:tempa}}\fi \:tempa}
 
233
\def\N:wCnfga#1[#2]{%
 
234
  \edef\:temp{\long\def\expandafter
 
235
    \noexpand\csname c:#1:\endcsname####1%
 
236
    \ifnum #2>1 ####2\fi    \ifnum #2>2 ####3\fi
 
237
    \ifnum #2>3 ####4\fi    \ifnum #2>4 ####5\fi
 
238
    \ifnum #2>5 ####6\fi    \ifnum #2>6 ####7\fi
 
239
    \ifnum #2>7 ####8\fi    \ifnum #2>8 ####9\fi
 
240
}\:temp }
 
241
\def\N:wCnfgb#1#2{%
 
242
  \edef\:temp{\long\def\expandafter
 
243
    \noexpand\csname c:#1:\endcsname####1%
 
244
    \ifnum #2>1 ####2\fi    \ifnum #2>2 ####3\fi
 
245
    \ifnum #2>3 ####4\fi    \ifnum #2>4 ####5\fi
 
246
    \ifnum #2>5 ####6\fi    \ifnum #2>6 ####7\fi
 
247
    \ifnum #2>7 ####8\fi    \ifnum #2>8 ####9\fi
 
248
{\New:Conf{\aNew:Conf#1}{####1}%
 
249
      \ifnum #2>1 \New:Conf{\bNew:Conf#1}{####2}\fi
 
250
      \ifnum #2>2 \New:Conf{\cNew:Conf#1}{####3}\fi
 
251
      \ifnum #2>3 \New:Conf{\dNew:Conf#1}{####4}\fi
 
252
      \ifnum #2>4 \New:Conf{\eNew:Conf#1}{####5}\fi
 
253
      \ifnum #2>5 \New:Conf{\fNew:Conf#1}{####6}\fi
 
254
      \ifnum #2>6 \New:Conf{\gNew:Conf#1}{####7}\fi
 
255
      \ifnum #2>7 \New:Conf{\hNew:Conf#1}{####8}\fi
 
256
      \ifnum #2>8 \New:Conf{\iNew:Conf#1}{####9}\fi
 
257
     }}\:temp}
 
258
\def\New:Conf#1{\noexpand\c:def
 
259
   \expandafter\noexpand\csname#1\endcsname}%
 
260
\def\c:NewConfigure:#1#2#3#4#5#6#7#8#9{%
 
261
   \def\aNew:Conf{#1}\def\bNew:Conf{#2}\def\cNew:Conf{#3}%
 
262
   \def\dNew:Conf{#4}\def\eNew:Conf{#5}\def\fNew:Conf{#6}%
 
263
   \def\gNew:Conf{#7}\def\hNew:Conf{#8}\def\iNew:Conf{#9}}
 
264
\Configure{NewConfigure}{a:}{b:}{c:}{d:}{e:}{f:}{g:}{h:}{i:}%
 
265
 
 
266
\long\def\ConfigureToc#1#2#3#4#5{%
 
267
   \expandafter\def\csname toc#1\endcsname##1##2##3{#5}%
 
268
   \def\:temp{#4}\ifx \:temp\empty \else
 
269
   \expandafter\pend:defIII\csname toc#1\endcsname{#4####3}%
 
270
\fi
 
271
\def\:temp{#3}\ifx \:temp\empty \else
 
272
   \expandafter\pend:defIII\csname toc#1\endcsname{#3####2}%
 
273
\fi
 
274
\def\:temp{#2}\ifx \:temp\empty \else
 
275
   \expandafter\pend:defIII\csname toc#1\endcsname{#2####1}%
 
276
\fi
 
277
 
 
278
}
 
279
 
 
280
\long\def\concat:config#1#2{\def\:temp{#2}%
 
281
   \ifx \:temp\empty  \let#1\empty
 
282
   \else \ifx #1\relax  \let#1\empty\fi
 
283
       \append:def#1{#2}\fi
 
284
}
 
285
\def\:prolog#1#2,#3!*?: {%
 
286
   \if ,#2,\else
 
287
      \edef\:tempc{\if*#2\fi}%
 
288
      \ifx \:tempc\empty
 
289
         \expandafter\append:def
 
290
            \csname a:#1\endcsname{\csname a:#2\endcsname}%
 
291
         \expandafter\ifx \csname c:#2:\endcsname\relax
 
292
            \NewConfigure{#2}{1}%
 
293
         \fi
 
294
      \else
 
295
         \expand:after{\pro:log{#1}}\expandafter{\:tempc}%
 
296
   \fi\fi
 
297
   \if ,#3,\else \expand:after{\:prolog{#1}#3!*?: }\fi
 
298
}
 
299
\def\pro:log#1#2{%
 
300
   \expandafter\append:def
 
301
       \csname a:#1\endcsname{\csname a:#2\endcsname}%
 
302
   \expandafter\ifx \csname c:#2:\endcsname\relax
 
303
       \NewConfigure{#2}[1]{\expandafter
 
304
            \concat:config\csname a:#2\endcsname{##1}}%
 
305
       \expandafter\let\csname a:#2\endcsname\relax
 
306
   \fi
 
307
}
 
308
\def\seq:config#1#2{%
 
309
   \expandafter\let\csname a:#1\endcsname=\empty
 
310
   \:prolog {#1}#2,!*?: }
 
311
 
 
312
\NewConfigure{AtBeginDocument}[2]{%
 
313
   \def\:temp{#1#2}\ifx \:temp\empty
 
314
     \concat:config\a:AtBeginDocument{}
 
315
     \concat:config\b:AtBeginDocument{}%
 
316
   \else
 
317
     \concat:config\a:AtBeginDocument{#1\relax}%
 
318
     \concat:config\b:AtBeginDocument{#2\relax}%
 
319
   \fi
 
320
   \global\let\a:AtBeginDocument=\a:AtBeginDocument
 
321
   \global\let\b:AtBeginDocument=\b:AtBeginDocument
 
322
}
 
323
\Configure{AtBeginDocument}{}{}
 
324
\NewConfigure{Css}[1]{\def\aa:Css{#1}}
 
325
 
 
326
\catcode`\#=12   \def\#{#}   \catcode`\#=6
 
327
\NewConfigure{special}[1]{\def\ht:special{#1}}
 
328
\Configure{special}{\special
 
329
}
 
330
\long\def\expand:after#1{\def\e:tmp{#1}\expandafter\e:tmp}
 
331
\def\Log:Note#1{%
 
332
   \immediate\write-1{--------------------------------------}%
 
333
   \immediate\write-1{--- Note --- #1}%
 
334
   \immediate\write-1{--------------------------------------}%
 
335
}
 
336
\NewConfigure{CutAt-filename}[1]{%
 
337
   \expandafter\def\csname a:CutAt-filename\endcsname##1##2{#1}}
 
338
\Configure{CutAt-filename}{}
 
339
\long\def\append:def#1#2{%
 
340
   \def\:temp{\def#1}%
 
341
   \expandafter\expandafter\expandafter\:temp\expandafter{#1#2}}
 
342
\long\def\pend:def#1#2{%
 
343
   \def\:temp{#2}%
 
344
   \def\:tempa{\def#1}%
 
345
   \expandafter\expandafter\expandafter\expandafter
 
346
       \expandafter\expandafter\expandafter\:tempa
 
347
   \expandafter\expandafter\expandafter{\expandafter\:temp #1}}
 
348
 
 
349
    \NewConfigure{ProTex}[1]{\def\a:ProTex{#1}}
 
350
\ifx \Log:Needs\:UnDef \else
 
351
   \:warning{Again `\noexpand\input tex4ht.sty'?}\fi
 
352
\def\:warning#1{\immediate\write16{l.\the\inputlineno\space
 
353
            --- TeX4ht warning --- #1 ---}}
 
354
\ifx \:ShowCode\:UnDeF \else
 
355
   \:warning{tex4ht.sty loaded after ProTeX?}
 
356
\fi
 
357
  
 
358
\def\set:Preamble#1,#2!*?: {%
 
359
   \def\:temp{#1}\ifx \:temp\empty \else
 
360
      \:CheckOption{#1}\if:Option \else
 
361
          \ifx \Preamble\empty \def\Preamble{#1}%
 
362
          \else                \append:def\Preamble{,#1}%
 
363
   \fi \fi \fi
 
364
   \def\:temp{#2}\ifx \:temp\empty \let\set:Preamble\:UnDef
 
365
   \else  \expand:after{\set:Preamble#2!*?: }\fi
 
366
}
 
367
\def\xtrct:hin#1,{\def\:temp{#1}\ifx \:temp\empty
 
368
   \def\xtrct:hin##1!*?: {\let\xtrct:hin\:UnDef}\else
 
369
      \def\:tempa##1.4ht##2!*?: {%
 
370
         \def\:temp{\Hinclude[*]{##1.4ht}}\def\:tempa{##2}}%
 
371
      \expandafter\:tempa\:temp .4ht!*?: %
 
372
      \ifx \:tempa\empty \else \:temp   \fi
 
373
   \fi  \xtrct:hin}
 
374
\def\Use:N{0}
 
375
\let\:USE\empty
 
376
\def\:Use#1{\:USe #1,,\HAdvance\Use:N  1 }
 
377
\def\:USe#1,{\def\:temp{#1}\ifx\:temp\empty
 
378
     \edef\:temp{\noexpand\append:def\noexpand\:USE{\let\expandafter
 
379
      \noexpand\csname Use:\Use:N\endcsname\noexpand\:UnDef}}\:temp
 
380
   \else
 
381
     \edef\:temp{\noexpand\append:def\noexpand\:USE{\expandafter
 
382
      \noexpand\csname Use:\Use:N\endcsname}}\:temp
 
383
   \append:def\:USE{{#1}}%
 
384
   \expandafter\:USe\fi}
 
385
\def\:Hinclude{%
 
386
   \def\Hinclude{\afterassignment\:Use
 
387
      \expandafter\def\csname Use:\Use:N\endcsname ####1}%
 
388
   \def\:Hinclude{\ifx \:USE \empty
 
389
       \let\Hinclude\:UnDef
 
390
       \let\:Hinclude\:UnDef
 
391
       \let\:Use\:UnDef
 
392
       \let\:USe\:UnDef
 
393
       \let\:USE\:UnDef
 
394
     \else
 
395
      \pend:def\:USE{\let\:USE\empty}%
 
396
      \expand:after{\:USE \:Hinclude}\fi}%
 
397
}
 
398
 
 
399
\def\:Preamble{\ifx \:next[%
 
400
  \def\Preamble[##1]##2{\egroup
 
401
    \def\:CheckOption####1{\def\:temp{####1}%
 
402
   \:Optionfalse
 
403
   \expandafter\:ScanOptions\Preamble,,//}
 
404
\def\:ScanOptions####1,####2//{\def\:next{####1}%
 
405
   \ifx        \:next\empty
 
406
   \else \ifx  \:temp\:next   \:Optiontrue   \let\:next\relax
 
407
   \else \def\:next{\:ScanOptions####2//}%
 
408
   \fi  \fi  \:next }
 
409
%
 
410
\ifHtml  \Htmlfalse
 
411
     \def\Preamble{html,##2}\else \def\Preamble{##2}\fi
 
412
\ifx \config:opt\:UnDef
 
413
   \let\:temp\Preamble
 
414
\else
 
415
   \expandafter\expandafter\expandafter\def
 
416
   \expandafter\expandafter\expandafter\:temp
 
417
   \expandafter\expandafter\expandafter{%
 
418
   \expandafter\config:opt\expandafter,\Preamble}%
 
419
\fi
 
420
\let\Preamble\empty
 
421
\expandafter\set:Preamble\:temp,!*?: %
 
422
%
 
423
\def\:temp####1.4ht####2!*?: {\def\:temp{####2}%
 
424
  \ifx \:temp\empty
 
425
    \def\:temp{th4}\ifx \:temp\Preamble \else
 
426
      \ht:special{t4ht@[}%
 
427
      \input tex4ht.4ht   \ht:special{t4ht@]}%
 
428
  \fi \fi}%
 
429
\expandafter\:temp\Preamble.4ht!*?: %
 
430
\expandafter\xtrct:hin\Preamble,,!*?: %
 
431
\:Hinclude
 
432
%
 
433
%
 
434
\input ##1
 
435
    }
 
436
  \else
 
437
  \def\Preamble##1{\egroup \def\:CheckOption####1{\def\:temp{####1}%
 
438
   \:Optionfalse
 
439
   \expandafter\:ScanOptions\Preamble,,//}
 
440
\def\:ScanOptions####1,####2//{\def\:next{####1}%
 
441
   \ifx        \:next\empty
 
442
   \else \ifx  \:temp\:next   \:Optiontrue   \let\:next\relax
 
443
   \else \def\:next{\:ScanOptions####2//}%
 
444
   \fi  \fi  \:next }
 
445
%
 
446
\ifHtml  \Htmlfalse
 
447
     \def\Preamble{html,##1}\else \def\Preamble{##1}\fi
 
448
\ifx \config:opt\:UnDef
 
449
   \let\:temp\Preamble
 
450
\else
 
451
   \expandafter\expandafter\expandafter\def
 
452
   \expandafter\expandafter\expandafter\:temp
 
453
   \expandafter\expandafter\expandafter{%
 
454
   \expandafter\config:opt\expandafter,\Preamble}%
 
455
\fi
 
456
\let\Preamble\empty
 
457
\expandafter\set:Preamble\:temp,!*?: %
 
458
%
 
459
\def\:temp####1.4ht####2!*?: {\def\:temp{####2}%
 
460
  \ifx \:temp\empty
 
461
    \def\:temp{th4}\ifx \:temp\Preamble \else
 
462
      \ht:special{t4ht@[}%
 
463
      \input tex4ht.4ht   \ht:special{t4ht@]}%
 
464
  \fi \fi}%
 
465
\expandafter\:temp\Preamble.4ht!*?: %
 
466
\expandafter\xtrct:hin\Preamble,,!*?: %
 
467
\:Hinclude
 
468
%
 
469
%
 
470
%
 
471
                  \input tex4ht.sty }
 
472
  \fi        \let\:Preamble\:UnDef     \Preamble  }
 
473
\def\Preamble{\bgroup  \catcode`\@12   \catcode`\_8  \catcode`\^7
 
474
  \futurelet\:next\:Preamble}
 
475
\def\EndPreamble{\b:Preamble
 
476
  \csname Lv \file:id\endcsname \B:DY}
 
477
\def\B:DY{\def\HtmlPar{\HtmlPar:Off{%
 
478
   \if:nopar \ShowPar \ShowIndent
 
479
      \ifx \skip:Par\empty\else \hskip -\parindent \skip:Par\fi
 
480
   \else
 
481
     \if:removeindent \ShowIndent \hskip -\parindent \a:Par
 
482
     \else
 
483
        \ifdim \parindent>\z@ \hskip -\parindent \fi
 
484
        \html:par
 
485
        \ifdim \parindent>\z@ \hskip  \parindent \fi
 
486
   \fi\fi \relax
 
487
}}%
 
488
%
 
489
  \HtmlEnv \IgnorePar \IgnoreIndent {\ht:everypar{}\leavevmode}\a:BODY
 
490
  \csname a:@BODY\endcsname}
 
491
\NewConfigure{@HTML}[1]{\concat:config\a:@HTML{#1}}
 
492
\let\a:@HTML\empty
 
493
\NewConfigure{PROLOG}[1]{\seq:config{PROLOG}{#1}}
 
494
 
 
495
\let\:Hincl\empty
 
496
\def\Hinclude[#1]#2{\xdef\:Hincl{\:Hincl{#1}{#2}}}
 
497
\NewConfigure{html}[1]{\edef\:html{#1}}
 
498
\Configure{html}{html}
 
499
\def\c:HtmlPar:#1#2#3#4{%
 
500
   \def\:temp{#3}\ifx \:temp\empty \c:def\a:Par{#1}\else
 
501
     \c:def\a:Par{#1\Next:EndP{#3}}\fi
 
502
   \def\:temp{#4}\ifx \:temp\empty \c:def\html:par{#2}\else
 
503
     \c:def\html:par{#2\Next:EndP{#4}}\fi
 
504
}
 
505
\def\EndP{\Protect\par:end}
 
506
\let\par:end\empty
 
507
\def\Next:EndP{\Protect\next:endp}
 
508
\def\next:endp#1{\gdef\par:end{#1\global\let\par:end\empty}}
 
509
\def\SaveHtmlPar{\PushMacro\a:Par \PushMacro\html:par}
 
510
\def\RecallHtmlPar{\PopMacro\a:Par \PopMacro\html:par}
 
511
\def\gl:let{\global\let}
 
512
\def\EndP:cnt{0}
 
513
\def\SaveEndP{%
 
514
   \expandafter\gl:let\csname \EndP:cnt :sv\endcsname \par:end
 
515
   \gl:let\par:end\empty
 
516
   \gHAdvance \EndP:cnt  1 }
 
517
\def\RecallEndP{%
 
518
   \ifnum \EndP:cnt>0
 
519
   \gHAdvance \EndP:cnt  -1
 
520
   \expand:after{\gl:let\par:end}\csname\EndP:cnt :sv\endcsname\fi}
 
521
\NewConfigure{HTML}[2]{\c:def\a:HTML{#1}\c:def\b:HTML{#2}}
 
522
\NewConfigure{HEAD}[2]{\c:def\a:HEAD{#1}\c:def\b:HEAD{#2}}
 
523
\NewConfigure{BODY}[2]{\c:def\a:BODY{#1}%
 
524
   \c:def\b:BODY{\csname a:@/BODY\endcsname#2}}
 
525
\NewConfigure{TITLE}[2]{\c:def\a:TITLE{#1}\c:def\b:TITLE{#2}}
 
526
\NewConfigure{TITLE+}[1]{\c:def\c:TITLE{#1}}
 
527
\NewConfigure{@TITLE}[1]{\concat:config\:TITLE:{#1}}
 
528
\NewConfigure{@HEAD}[1]{\concat:config\a:@HEAD{#1}}
 
529
\let\a:@HEAD\relax
 
530
\NewConfigure{@BODY}[1]{\concat:config\a:@BODY{#1}}
 
531
\let\a:@BODY\relax
 
532
\NewConfigure{@/BODY}[1]{\expandafter
 
533
   \concat:config\csname a:@/BODY\endcsname{#1}}
 
534
\expandafter\let\csname a:@/BODY\endcsname\relax
 
535
 
 
536
    \if:latex
 
537
   \expandafter\def\csname opt@hyperref.sty\endcsname{tex4ht}
 
538
 
 
539
   \ifx \config:opt\:UnDef \else
 
540
  \append:def\:RestoreCatcodes{\early:sub\early:sup}
 
541
\let\:IfFileExists\IfFileExists
 
542
\def\IfFileExists#1#2#3{%
 
543
   \csname recall:sub\endcsname
 
544
   \csname recall:sup\endcsname
 
545
   \expandafter\let\csname #1:sub\endcsname=\early:sub
 
546
   \expandafter\let\csname #1:sup\endcsname=\early:sup
 
547
   \let\early:sub=\relax     \let\recall:sub\relax
 
548
   \let\early:sup=\relax     \let\recall:sup\relax
 
549
   \:IfFileExists{#1}{#2}{#3}%
 
550
   \expandafter\let\expandafter\early:sub\csname #1:sub\endcsname
 
551
   \expandafter\let\expandafter\early:sup\csname #1:sup\endcsname
 
552
   \early:sub \early:sup
 
553
}
 
554
\ifx \o:document\:UnDef
 
555
   \pend:def\Preamble{%
 
556
     \csname recall:sub\endcsname
 
557
     \csname recall:sup\endcsname}
 
558
\fi
 
559
\def\:CheckOption#1{\def\:temp{#1}%
 
560
   \:Optionfalse
 
561
   \expandafter\:ScanOptions\config:opt,,//}
 
562
\def\:ScanOptions#1,#2//{\def\:next{#1}%
 
563
   \ifx        \:next\empty
 
564
   \else \ifx  \:temp\:next   \:Optiontrue   \let\:next\relax
 
565
   \else \def\:next{\:ScanOptions#2//}%
 
566
   \fi  \fi  \:next }
 
567
\let\early:sub=\empty
 
568
\:CheckOption{early_} \if:Option
 
569
   \:CheckOption{no_} \if:Option  \else
 
570
      \:CheckOption{_13} \if:Option
 
571
           \def\early:sub{%
 
572
               \xdef\recall:sub{%
 
573
                  \mathcode`\noexpand\_=\the\mathcode`\_
 
574
                  \catcode`\noexpand\_=\the\catcode`\_
 
575
               }
 
576
              \mathcode`\_="8000 \catcode`\_=13
 
577
          }
 
578
      \else
 
579
           \def\early:sub{%
 
580
               \xdef\recall:sub{%
 
581
                  \mathcode`\noexpand\_=\the\mathcode`\_
 
582
                  \catcode`\noexpand\_=\the\catcode`\_
 
583
   % \immediate\write16{.....sub \the\catcode`\_}%
 
584
               }%
 
585
              \mathcode`\_="8000 \catcode`\_=12
 
586
   % \immediate\write16{.....sub 12}
 
587
          }
 
588
      \fi
 
589
   \fi
 
590
\else
 
591
   \Log:Note{for \string_ at preamble,
 
592
          use the command line option `early\string_'}%
 
593
\fi
 
594
\let\early:sup=\empty
 
595
\:CheckOption{early^} \if:Option
 
596
   \:CheckOption{no^} \if:Option \else
 
597
      \:CheckOption{^13} \if:Option
 
598
           \def\early:sup{%
 
599
               \xdef\recall:sup{%
 
600
                  \mathcode`\noexpand\^=\the\mathcode`\^
 
601
                  \catcode`\noexpand\^=\the\catcode`\^
 
602
               }
 
603
              \mathcode`\^="8000 \catcode`\^=13
 
604
          }
 
605
      \else
 
606
           \def\early:sup{%
 
607
               \xdef\recall:sup{%
 
608
                  \mathcode`\noexpand\^=\the\mathcode`\^
 
609
                  \catcode`\noexpand\^=\the\catcode`\^
 
610
   % \immediate\write16{.....sup \the\catcode`\^}%
 
611
               }%
 
612
              \mathcode`\^="8000 \catcode`\^=12
 
613
   % \immediate\write16{.....sup 12}%
 
614
          }
 
615
      \fi
 
616
   \fi
 
617
\else
 
618
   \Log:Note{for \string^ at preamble,
 
619
          use the command line option `early\string^'}%
 
620
\fi
 
621
 
 
622
\let\:CheckOption\:UnDef
 
623
\let\:ScanOptions\:UnDef
 
624
 
 
625
\fi
 
626
 
 
627
\fi
 
628
\let\:onefilewithoptions\@onefilewithoptions
 
629
\def\@onefilewithoptions#1[{%
 
630
   \let\:temp\@reset@ptions
 
631
   \def\@reset@ptions{%
 
632
      \let\@reset@ptions\:temp
 
633
      \edef\TivhTcats{%
 
634
   \catcode`:=\the\catcode`:%
 
635
   \catcode`@=\the\catcode`@}%
 
636
\catcode`\:=11 \catcode`\@=11
 
637
\a:usepackage
 
638
      \TivhTcats
 
639
}%
 
640
   \:onefilewithoptions#1[}
 
641
\def\a:usepackage{\input usepackage.4ht }
 
642
 
 
643
 
 
644
    \expandafter\ifx \csname tex4ht\endcsname\relax
 
645
       \let\:temp\empty
 
646
    \else
 
647
       \def\:tempc#1#2.#3!*?: {\edef\:tempa{#3}\edef\:temp{%
 
648
   #1\ifx \:tempa\empty  .cfg\fi}}
 
649
\def\config:opt#1,#2!*?: {\def\:temp{#1}\ifx \:temp\empty
 
650
   \else \ifx \:tempc\empty
 
651
         \def\:tempc{#1}%
 
652
      \else
 
653
         \append:def\:tempc{,#1}
 
654
   \fi\fi
 
655
   \def\:temp{#2}\ifx \:temp\empty
 
656
   \else \def\:temp{\config:opt #2!*?: }\fi
 
657
   \:temp}
 
658
 
 
659
\def\:temp#1,#2!*?: {%
 
660
   \def\:temp{\:tempc{#1}#1.!*?: }%
 
661
   \def\:tempb{#1}\ifx   \:tempb\empty  \let\:temp\relax \fi
 
662
   \def\:tempa{html}\ifx \:tempa\:tempb \let\:temp\relax \fi
 
663
   \def\:tempa{xhtml}\ifx\:tempa\:tempb \let\:temp\relax \fi
 
664
   \def\:tempa{htm}\ifx  \:tempa\:tempb \let\:temp\relax \fi
 
665
   \def\:tempa{htm3}\ifx \:tempa\:tempb \let\:temp\relax \fi
 
666
   \def\:tempa{htm4}\ifx \:tempa\:tempb \let\:temp\relax \fi
 
667
   \def\:tempa{htm5}\ifx \:tempa\:tempb \let\:temp\relax \fi
 
668
   \ifx \:temp\relax
 
669
   \let\:tempd\:temp
 
670
   \let\:tempc\empty \config:opt #1,#2,!*?: %
 
671
\else     \:temp
 
672
   \let\:tempd\:temp
 
673
   \let\:tempc\empty \config:opt #2,!*?: %
 
674
\fi
 
675
\let\config:opt\:tempc
 
676
\let\:temp\:tempd
 
677
%
 
678
}
 
679
 
 
680
\expandafter\expandafter\expandafter
 
681
   \:temp\csname tex4ht\endcsname !*?: %
 
682
\ifx \:temp\relax
 
683
   \ifx \config:opt\:UnDef
 
684
   \edef\config:opt{\ifx \config:file\empty html\fi}\fi
 
685
\def\:temp{\expandafter\expandafter\expandafter
 
686
   \Preamble\expandafter{\config:opt}\EndPreamble}
 
687
 
 
688
   \if:latex \let\:temp\empty \fi
 
689
\else
 
690
   \if:latex
 
691
      \let\config:file\:temp  \let\:temp\empty
 
692
   \else
 
693
      \edef\:temp{\noexpand\input \:temp\space}
 
694
\fi \fi
 
695
 
 
696
    \fi
 
697
    \let\:tempc\:temp
 
698
    \pend:def\:tempc{\:RestoreCatcodes }
 
699
    \append:def\:tempc{\endinput}
 
700
    \let\:temp\:tempc
 
701
    \expandafter\:temp
 
702
\fi
 
703
\def\:tempa#1#2#3#4!*?: {#1#2#3}
 
704
\:CheckOption{htm}     \if:Option
 
705
   \edef\:html{\expandafter\:tempa\:html\empty\empty!*?: }
 
706
   \def\:temp#1#2#3!*?: {\def\j:bname{#1\ifx ?#2\else #2\fi}}
 
707
\expandafter\:temp \jobname ?!*?: 
 
708
 
 
709
\else \:CheckOption{htm5}     \if:Option
 
710
   \edef\:html{\expandafter\:tempa\:html\empty\empty!*?: }
 
711
   \def\:temp#1#2#3#4#5#6!*?: {\def\j:bname{#1\ifx ?#2\else
 
712
   #2\ifx ?#3\else #3\ifx ?#4\else #4\ifx ?#5\else #5\fi\fi\fi\fi}}
 
713
\expandafter\:temp \jobname ????!*?: 
 
714
 
 
715
\else \:CheckOption{htm4}     \if:Option
 
716
   \edef\:html{\expandafter\:tempa\:html\empty\empty!*?: }
 
717
   \def\:temp#1#2#3#4#5!*?: {\def\j:bname{#1\ifx ?#2\else
 
718
   #2\ifx ?#3\else #3\ifx ?#4\else #4\fi\fi\fi}}
 
719
\expandafter\:temp \jobname ???!*?: 
 
720
 
 
721
\else \:CheckOption{htm3}     \if:Option
 
722
   \edef\:html{\expandafter\:tempa\:html\empty\empty!*?: }
 
723
   \def\:temp#1#2#3#4!*?: {\def\j:bname{#1\ifx ?#2\else
 
724
   #2\ifx ?#3\else #3\fi\fi}}
 
725
\expandafter\:temp \jobname ??!*?: 
 
726
 
 
727
\else   \:CheckOption{xhtml} \if:Option
 
728
   \let\j:bname\jobname
 
729
\else   \:CheckOption{html}
 
730
   \if:Option  \let\j:bname\jobname \fi
 
731
\fi \fi \fi \fi \fi
 
732
\if:Option
 
733
   
 
734
   \def\html:rightskip{\rightskip\z@ plus 0.5\hsize  minus0.5\hsize }
 
735
\def\HtmlEnv{%
 
736
   \html:rightskip  \frenchspacing        
 
737
\let\nonfrenchspacing\relax
 
738
\spaceskip\z@        
 
739
\xspaceskip\z@       
 
740
\linepenalty0        
 
741
\adjdemerits0        
 
742
\pretolerance10000   
 
743
\hyphenpenalty10000  
 
744
\exhyphenpenalty10000
 
745
\clubpenalty0        
 
746
\widowpenalty0       
 
747
\interlinepenalty50  
 
748
\displaywidowpenalty0
 
749
\predisplaypenalty-10
 
750
\postdisplaypenalty1000
 
751
\abovedisplayskip30pt plus 10pt
 
752
\belowdisplayskip\abovedisplayskip
 
753
\abovedisplayshortskip\abovedisplayskip
 
754
\belowdisplayshortskip\abovedisplayskip
 
755
%
 
756
   \def\magnification{%
 
757
      \def\:temp{\:warning{Insert \string\magnification
 
758
                           =\the\tmp:cnt\space before tex4ht}}%
 
759
      \afterassignment\:temp\tmp:cnt}%
 
760
   \ht:everypar{\HtmlPar}}
 
761
\let\HtmlPar\empty
 
762
\edef\:temp{%
 
763
   \output={\noexpand\SaveEverypar \noexpand\ht:everypar{}\the\output
 
764
         \noexpand\RecallEverypar}}
 
765
\:temp
 
766
 
 
767
\edef\:temp{\meaning\everypar}
 
768
\edef\:tempa{\string\everypar}
 
769
\ifx \:temp\:tempa
 
770
   \let\ht:everypar\everypar
 
771
\else
 
772
   \:warning{nonprimitive \string\everypar}
 
773
\fi
 
774
\edef\NoHtmlEnv{%
 
775
   \sfcode `\noexpand\noexpand\noexpand\.3000  
 
776
   \sfcode `\noexpand\noexpand\noexpand\?3000
 
777
   \sfcode `\noexpand\noexpand\noexpand\!3000
 
778
   \sfcode `\noexpand\noexpand\noexpand\:2000
 
779
   \sfcode `\noexpand\noexpand\noexpand\;1500
 
780
   \sfcode `\noexpand\noexpand\noexpand\,1250
 
781
   \rightskip\the\rightskip
 
782
   \spaceskip\the\spaceskip
 
783
   \xspaceskip\the\xspaceskip
 
784
   \linepenalty\the\linepenalty
 
785
   \adjdemerits\the\adjdemerits
 
786
   \pretolerance\the\pretolerance
 
787
   \hyphenpenalty\the\hyphenpenalty
 
788
   \exhyphenpenalty\the\exhyphenpenalty
 
789
   \clubpenalty\the\clubpenalty
 
790
   \widowpenalty\the\widowpenalty
 
791
   \interlinepenalty\the\interlinepenalty
 
792
   \displaywidowpenalty\the\displaywidowpenalty
 
793
   \predisplaypenalty\the\predisplaypenalty
 
794
   \postdisplaypenalty\the\postdisplaypenalty
 
795
   \abovedisplayskip\the\abovedisplayskip
 
796
   \belowdisplayskip\the\belowdisplayskip
 
797
   \abovedisplayshortskip\the\abovedisplayshortskip
 
798
   \belowdisplayshortskip\the\belowdisplayshortskip
 
799
   \noexpand\ht:everypar{\noexpand\the\noexpand\ht:everypar}}
 
800
 
 
801
   \ifx \html:par\:UnDef \let\html:par\empty \fi
 
802
 
 
803
   \ifx\html:addr\:UnDeF
 
804
   \immediate\write16{--- needs --- tex4ht \jobname\space ---}%
 
805
\ifx\tmp:cnt\:UnDeF    \csname newcount\endcsname\tmp:cnt \fi
 
806
\def\g:advance#1{\bgroup \def\:temp{#1}%
 
807
                 \tmp:cnt=#1\afterassignment\:gplus \advance\tmp:cnt}
 
808
\def\:gplus{\expandafter\xdef\:temp{\the\tmp:cnt}\egroup}
 
809
\def\html:lbl{1}
 
810
\def\html:addr{\xdef\last:haddr{\file:id-\html:lbl}%
 
811
     \g:advance\html:lbl by 1\relax }
 
812
\ifx  \file:id\:UnDef
 
813
   \gdef\file:id{1}
 
814
   \global\let\maxfile:id=\file:id
 
815
\fi
 
816
\hbadness=10000      \vbadness=10000
 
817
\:CheckOption{fussy}  \if:Option  \else
 
818
   \hfuzz=99in          \vfuzz=\hfuzz
 
819
\fi
 
820
\hyphenpenalty=1000  \exhyphenpenalty=1000
 
821
\def\html:rightskip{\rightskip = 0pt plus 0.5\hsize  minus0.5\hsize }
 
822
\html:rightskip
 
823
\ifx \ht:special\:UnDef
 
824
   \let\ht:special=\special
 
825
\fi
 
826
\def\HCode#1{\ifx \EndPicture\:UnDef
 
827
   \relax\ifvmode\leavevmode\fi\ht:special{t4ht=#1}\fi}
 
828
\let\:HCode=\HCode
 
829
\def\NewLineChar{\bgroup \catcode`\^=7 \:NewLineChar}
 
830
\def\:NewLineChar#1{\egroup \def\:newlnch{ #1}}
 
831
\NewLineChar{^^J}
 
832
\def\::HRef[#1]{\get:attr{#1}\::hRef\:::HRef}
 
833
\def\::HRefTag[#1]{\get:attr{#1}\::hRefTag\:::HRefTag}
 
834
\def\get:attr#1{\edef\:attr{\noexpand\get:atr #1 !*?: }\:attr}
 
835
\def\get:atr#1 #2!*?: #3#4{\def\:attr{\space#2}%
 
836
   \def\:te:mpa{#1}\ifx \:te:mpa\empty \let\:te:mpa#4\else
 
837
   \def\:te:mpa{#3[#1]}\fi \:te:mpa}
 
838
\def\H:Tag#1#2{\:TagHTag{#2}\HCode{<\tag:A\:newlnch
 
839
   \NAME:"#2"\empty:lnk>}}
 
840
\def\::hRef[#1]#2{%
 
841
   \HCode{<\tag:A\:newlnch \if\relax#1#2\relax \NOHREF:{}\else
 
842
             \HREF:"#1\if\relax#1\relax \else\:sharp #2\fi"\fi
 
843
           \:attr \empty:lnk>}}
 
844
\def\:::HRef#1{%
 
845
   \HCode{<\tag:A\:newlnch \if\relax#1\relax \NOHREF:{}\else
 
846
               \HREF:"\get:hfile{#1}\:sharp #1"\fi \:attr \empty:lnk>}}
 
847
\def\::hRefTag[#1]#2#3{%
 
848
   \if\relax#3\relax\else\:TagHTag{#3}\fi
 
849
   \HCode{<\tag:A\:newlnch \if\relax#1#2\relax \NOHREF:{#3}\else
 
850
                 \HREF:"#1\if\relax#2\relax \else\:sharp #2\fi"\fi
 
851
               \if\relax#3\relax\else\space \NAME:"#3"\fi
 
852
             \:attr \empty:lnk>}}
 
853
\def\:::HRefTag#1#2{%
 
854
   \if\relax#2\relax\else\:TagHTag{#2}\fi
 
855
   \HCode{<\tag:A\:newlnch \if\relax#1\relax \NOHREF:{#2}%
 
856
                 \else\HREF:"\get:hfile{#1}\:sharp #1"\fi
 
857
               \if\relax#2\relax\else\space  \NAME:"#2"\fi
 
858
             \:attr \empty:lnk>}}
 
859
\let\empty:lnk=\empty
 
860
\def\NOHREF#1{\space}
 
861
\def\:TagHTag#1{\ifx -\let:val\else \Tag{)Q\aXrefFile #1}{\file:id}\fi}
 
862
\def\get:href{\expandafter\get::href}
 
863
\def\get::href#1-#2-{\ifnum #1=\file:id\space         \else
 
864
      \:LikeRef{)F\aXrefFile #1\empty F-}\fi
 
865
   \:sharp \make:addr{#2}}
 
866
\def\get:htag{\expandafter\get::htag}
 
867
\def\get::htag#1-#2-{\make:addr{#2}}
 
868
\ifx \aXrefFile\:UnDef \let\aXrefFile=\empty \fi
 
869
 
 
870
\def\get:hfile#1{%
 
871
   \expandafter\ifx\csname
 
872
                cw:)Q\aXrefFile #1\endcsname\relax
 
873
      \get@hfile{#1}%
 
874
   \else
 
875
      \expandafter\expandafter\expandafter\get::hfile
 
876
          \csname  cw:)Q\aXrefFile #1\endcsname,//%
 
877
   \fi  }
 
878
\def\get::hfile#1,#2//{%
 
879
   \ifnum \file:id=0#1  \else
 
880
       \expandafter\ifx
 
881
   \csname  cw:)F\aXrefFile #1%
 
882
                 \empty F-\endcsname\relax \else
 
883
      \:LikeRef{)F\aXrefFile #1\empty F-}%
 
884
\fi %
 
885
   \fi }
 
886
\ifx\get@hfile\:Undef \let\get@hfile=\:gobble \fi
 
887
      \let\html:src=\empty
 
888
\catcode`\#=12   \def\:sharp{#}   \catcode`\#=6
 
889
 
 
890
   \Htmltrue
 
891
\fi
 
892
 
 
893
\fi
 
894
                  
 
895
\def\EndLink{\ifx \empty:lnk\empty \HCode{</\tag:A>}\fi}
 
896
\def\:HRef{\ifx [\:temp \expandafter\::HRef
 
897
           \else \expandafter\:::HRef \fi }
 
898
\def\HT:tag{\ifx -\let:val   \expandafter\H:Tag
 
899
            \else            \expandafter\HTa:g\fi }
 
900
\def\HTa:g{\H:Tag-}
 
901
\def\Link{\let\:attr\empty \futurelet\let:val\HRefT:ag}
 
902
\def\HRefT:ag{\ifx -\let:val \expandafter\H:RefTag
 
903
              \else          \expandafter\HRefTa:g\fi   }
 
904
\def\HRefTa:g{\H:RefTag-}
 
905
\def\H:RefTag#1{\futurelet\:temp\:HRefTag}
 
906
\def\:HRefTag{\ifx [\:temp \expandafter\::HRefTag
 
907
              \else \expandafter\:::HRefTag \fi }
 
908
 
 
909
\def\HLet#1{%
 
910
   \expandafter\ifx
 
911
      \csname o:\expandafter\:gobble\string#1:\endcsname\relax
 
912
      \expandafter\let
 
913
   \csname o:\expandafter\:gobble\string#1:\endcsname#1%
 
914
%
 
915
   \fi
 
916
   \edef#1{\noexpand\ifx \noexpand\EndPicture\noexpand\:UnDef
 
917
   \noexpand\expandafter \expandafter\noexpand
 
918
      \csname n:\expandafter\:gobble\string#1:\endcsname
 
919
   \noexpand\else \noexpand\expandafter \expandafter\noexpand
 
920
      \csname o:\expandafter\:gobble\string#1:\endcsname
 
921
 \noexpand\fi}%
 
922
%
 
923
   \expandafter\let
 
924
   \csname n:\expandafter\:gobble\string#1:\endcsname}
 
925
\def\HRestore#1{\relax
 
926
   \expandafter\ifx
 
927
      \csname o:\expandafter\:gobble\string#1:\endcsname\relax
 
928
        \:warning{\string\HRestore\noexpand#1?}%
 
929
   \else
 
930
      \expand:after{\let#1}\csname o:\expandafter
 
931
          \:gobble\string#1:\endcsname
 
932
   \fi}%
 
933
          \immediate\openout15=\jobname.tmp
 
934
\bgroup \escapechar=`\\
 
935
   \immediate\write15{\def\string\Jobname{\jobname}}
 
936
\egroup
 
937
\immediate\closeout15
 
938
\input \jobname.tmp
 
939
 
 
940
\def\get:input#1{%
 
941
   \openin15=#1
 
942
   \ifeof15  \closein15  \:warning{No file #1}%
 
943
   \else     \closein15  \expand:after{\input #1 }%
 
944
   \fi}
 
945
\def\if:notempty#1#2{%
 
946
   \def\:temp{#1}\ifx \:temp\empty \else \expand:after{#2}\fi }
 
947
\def\IgnorePar{\ifx \EndPicture\:UnDef \Protect\gl:nopartrue \fi}
 
948
\def\ShowPar{\ifx \EndPicture\:UnDef \Protect\gl:noparfalse \fi}
 
949
\def\IgnoreIndent{\ifx \EndPicture\:UnDef
 
950
   \Protect\gl:removeindenttrue \fi}
 
951
\def\ShowIndent{\ifx \EndPicture\:UnDef
 
952
   \Protect\gl:removeindentfalse \fi}
 
953
\def\gl:nopartrue{\global\:nopartrue}
 
954
\def\gl:noparfalse{\global\:noparfalse}
 
955
\def\gl:removeindenttrue{\global\:removeindenttrue}
 
956
\def\gl:removeindentfalse{\global\:removeindentfalse}
 
957
\def\HtmlParOff{\global\let\HtmlPar:Off\:gobble}
 
958
\def\HtmlParOn{\gdef\HtmlPar:Off##1{##1}}
 
959
\HtmlParOn
 
960
\def\SaveEverypar{%
 
961
   \expand:after{\expandafter\gdef\csname \n:list L\endcsname }%
 
962
           \expandafter{\expandafter\ht:everypar
 
963
                        \expandafter{\the\ht:everypar}}%
 
964
   \expandafter\xdef\csname \n:list X\endcsname{%
 
965
      \if:removeindent  \global\noexpand\:removeindenttrue
 
966
      \else             \global\noexpand\:removeindentfalse \fi
 
967
      \if:nopar         \global\noexpand\:nopartrue
 
968
      \else             \global\noexpand\:noparfalse \fi}%
 
969
   \HtmlEnv     \csname \n:list X\endcsname
 
970
                \csname \n:list L\endcsname
 
971
   \gHAdvance\n:list   1
 
972
}
 
973
\def\RecallEverypar{\ifnum \n:list<1
 
974
      \:warning{\noexpand\RecallEverypar without \noexpand\SaveEverypar}%
 
975
   \else
 
976
      \HtmlEnv
 
977
      \gHAdvance\n:list  -1
 
978
      \csname \n:list X\endcsname
 
979
      \csname \n:list L\endcsname
 
980
   \fi
 
981
}
 
982
\def\n:list{0}
 
983
\def\ifTag#1#2#3{\expandafter\ifx
 
984
   \csname  cw:#1\endcsname \relax #3\else #2\fi}
 
985
\catcode`\%12 \def\prcnt:ch{%} \catcode`\%14
 
986
\ifx \clearpage\:UnDef  \def\:clearpage{\vfil\penalty-20000}
 
987
\else
 
988
  \let\real:par\par  \def\eq:par{\par\real:par}
 
989
  \def\:clearpage{\expandafter\ifx\eq:par\clearpage\fi}
 
990
\fi
 
991
 
 
992
\ifx \folio\:UnDef
 
993
   \def\folio{\ifx \pageno\:UnDef \z@ \else
 
994
      \ifnum \pageno <0 \romannumeral -\pageno
 
995
      \else             \the           \pageno \fi\fi}
 
996
\fi
 
997
\def\cond:cs#1#2{%
 
998
   \expandafter\ifx  \csname #1\endcsname\relax  \else
 
999
      \csname #1\endcsname{#2}%
 
1000
   \fi
 
1001
}
 
1002
\def\do:list#1,#2,{%
 
1003
   \def\:temp{#2}\ifx \:temp\empty  \expandafter\stop:do
 
1004
   \else   #1{#2}\fi
 
1005
   \do:list#1,}
 
1006
\def\stop:do#1!*?: {}
 
1007
\def\BI:gbl{\ifx [\:temp \expandafter\bi:gbl\else
 
1008
                        \expand:after{\bi:gbl[]}\fi}
 
1009
\def\bi:gbl[#1]#2{}
 
1010
\ifx \newpage\:UnDef
 
1011
\def\newpage{\vfil\penalty-10000 }
 
1012
\fi
 
1013
\ifx\tmp:toks\:UnDeF    \csname newtoks\endcsname\tmp:toks\fi
 
1014
\ifx\tmp:cnt\:UnDeF    \csname newcount\endcsname\tmp:cnt\fi
 
1015
\def\Advance:{\ip:op\advance\:Advance}
 
1016
\def\Multiply:{\ip:op\multiply\:Advance}
 
1017
\def\Divide:{\ip:op\divide\:Advance}
 
1018
\def\gHAdvance{\ip:op\advance\g:Advance}
 
1019
\def\gHMultiply{\ip:op\multiply\g:Advance}
 
1020
\def\gHDivide{\ip:op\divide\g:Advance}
 
1021
\def\DefOp#1#2{
 
1022
   \ifx #1\:UnDef
 
1023
      \expandafter \ifx  \csname #2:\endcsname\relax
 
1024
            \:warning{\string\DefOp...\string{#2\string}?}%
 
1025
      \else \expand:after{\let#1}\csname #2:\endcsname
 
1026
      \fi
 
1027
   \else \:warning{\string\DefOp\string#1\string{#2\string}
 
1028
                 can't redefine \string#1}%
 
1029
   \fi
 
1030
}
 
1031
\DefOp\HAdvance{Advance}
 
1032
\DefOp\HMultiply{Multiply}
 
1033
\DefOp\HDivide{Divide}
 
1034
\def\ip:op#1#2{\let\mth:op#1\let\adv:c#2\adv:}
 
1035
 
 
1036
\def\adv:#1{\def\:var{#1}\futurelet\:temp\Advanc:}
 
1037
\def\Advanc:{\ifx [\:temp \expandafter\Advanc:e
 
1038
              \else \expand:after{\expandafter\adv:c\:var}\fi}
 
1039
\def\Advanc:e[#1]{\expandafter\adv:c\csname
 
1040
                  \expandafter\string\:var[#1]\endcsname}
 
1041
 
 
1042
\def\g:Advance#1{\bgroup \def\:temp{#1}%
 
1043
                 \tmp:cnt#1\afterassignment\:gplus \mth:op\tmp:cnt}
 
1044
\def\:gplus{\expandafter\xdef\:temp{\the\tmp:cnt}\egroup}
 
1045
\def\:Advance#1{\bgroup \def\:temp{#1}%
 
1046
                \tmp:cnt#1\afterassignment\:aplus \mth:op\tmp:cnt}
 
1047
\def\:aplus{\xdef\:temp{\def\expandafter\noexpand\:temp{\the\tmp:cnt}}%
 
1048
            \egroup \:temp}
 
1049
\def\HAssign{\:ssg\edef}
 
1050
\def\gHAssign{\:ssg\xdef}
 
1051
 
 
1052
\def\:ssg#1#2{\let\d:fn#1\def\:var{#2}\futurelet\:temp\:Assgn}
 
1053
\def\:Assgn{%
 
1054
   \ifx [\:temp
 
1055
         \expandafter\d:fn\:var[##1]{%
 
1056
              \noexpand\csname  \expandafter
 
1057
                                  \string\:var[##1]\noexpand\endcsname}%
 
1058
         \expandafter\assg:m
 
1059
   \else \afterassignment\assg:v \expandafter \tmp:cnt \fi }
 
1060
 
 
1061
\def\assg:v{\expandafter\d:fn\:var{\the\tmp:cnt}}
 
1062
\def\assg:m[#1]{%
 
1063
   \def\:temp{\expandafter\d:fn
 
1064
      \csname \expandafter\string\:var[#1]\endcsname{\the\tmp:cnt}}%
 
1065
   \afterassignment\:temp  \tmp:cnt}
 
1066
\def\no:catcodes#1#2#3{%
 
1067
   \tmp:cnt#1
 
1068
   \def\no::catcodes{%
 
1069
      \catcode\tmp:cnt#3
 
1070
      \ifnum\tmp:cnt<#2
 
1071
          \advance\tmp:cnt  1  \expandafter\no::catcodes
 
1072
      \fi }%
 
1073
   \no::catcodes }
 
1074
\HAssign\def:cnt=0
 
1075
\def\Odef#1{\gHAdvance\def:cnt  1
 
1076
   \edef#1{\noexpand\with:op
 
1077
             \expandafter\noexpand\csname \def:cnt \string#1\endcsname }%
 
1078
  \expandafter\gdef\csname\def:cnt\string#1\endcsname}
 
1079
\def\with:op#1{\let\n:xt#1\futurelet\:temp\wth:opt}
 
1080
\def\wth:opt{\ifx [\:temp
 
1081
   \expandafter\n:xt\else \expand:after{\n:xt[]}\fi}
 
1082
\def\Log:Needs#1{{\escapechar=`\\\immediate\write-1{\:Neds{#1}}}}
 
1083
\def\g:delete#1{%
 
1084
   \expandafter\expandafter\expandafter\global
 
1085
      \expandafter\let\csname #1\endcsname\:UnDef
 
1086
}
 
1087
\def\xdef:cs#1{\expandafter\xdef \csname #1\endcsname}%
 
1088
\def\:csname{\expandafter\noexpand\csname}
 
1089
\long\def\:gobble#1{}
 
1090
\long\def\:gobbleII#1#2{}
 
1091
\long\def\:gobbleIII#1#2#3{}
 
1092
\long\def\:gobbleIV#1#2#3#4{}
 
1093
\long\def\:gobbleV#1#2#3#4#5{}
 
1094
\long\def\:gobbleVI#1#2#3#4#5#6{}
 
1095
\long\def\:gobbleVIII#1#2#3#4#5#6#7#8{}
 
1096
 
 
1097
\ifHtml \def\exit:ifnot#1{%
 
1098
   \edef\:temp{\def\noexpand\:temp####1,\:Hin,####2..//{%
 
1099
      \noexpand\if !####2!\noexpand\else
 
1100
      \noexpand\expandafter\noexpand\:gobble\noexpand\fi
 
1101
      }\noexpand\:temp,#1,\:Hin,..//}\:temp\endinput }
 
1102
   \catcode`\@0
 
1103
   \catcode`\\12
 
1104
@def@ConfigureHinput{%
 
1105
   @def@:temp##1{%
 
1106
      @def@:temp{##1}@ifx@:temp@:Hin @else @:tempb @fi }%
 
1107
   @def@:tempb{@fi@bgroup @no:catcodes0{255}{12}%
 
1108
      @no:catcodes{101}{101}{11}%
 
1109
      @no:catcodes{109}{109}{11}%
 
1110
      @no:catcodes{112}{112}{11}%
 
1111
      @no:catcodes{116}{116}{11}%
 
1112
      @no:catcodes{121}{121}{11}%
 
1113
      @:tempa}
 
1114
   @def@:tempa##1\empty\empty\empty\empty\empty\empty{@egroup}%
 
1115
   @:temp
 
1116
}
 
1117
   @catcode`@\=0
 
1118
   \catcode`\@=11
 
1119
\let\:noindent\noindent
 
1120
\def\noindent{\ifx \EndPicture\:UnDef
 
1121
     \ifvmode  \IgnoreIndent\leavevmode\fi
 
1122
   \else \:noindent \fi}
 
1123
\let\skip:Par\empty
 
1124
\catcode`\%12 \def\%{%} \catcode`\%14
 
1125
\def\hidden:anchor{}
 
1126
\def\sv:btns#1{\ifx #1\space\global\let#1\empty \fi  \PushStack\prv:fl#1}
 
1127
\def\ro:nd#1#2{%
 
1128
   \gHAdvance#1  #2
 
1129
   \gHDivide#1  #2
 
1130
   \gHMultiply#1  #2 }
 
1131
\def\fx:pt#1#2#3!*?: {%
 
1132
   \expandafter\ifx \csname big:#1:#2\endcsname\relax
 
1133
         \expandafter\gHAssign\csname big:#1:#2\endcsname  0  \fi
 
1134
   \expandafter\gHAdvance\csname big:#1:#2\endcsname  1
 
1135
   \edef\big:fn{#1#2\csname big:#1:#2\endcsname}}
 
1136
\def\Hnewline{\:newlnch}
 
1137
\csname newskip\endcsname\tmp:dim
 
1138
\def\Needs{\bgroup\catcode`\"=12 \cat:Needs}
 
1139
\def\cat:Needs#1{\def\:temp{-}\def\:tempa{#1}\ifx \:temp\:tempa
 
1140
   \aftergroup\Log:Needs \else \ht:special{t4ht+@\:Needs{#1}}\fi
 
1141
   \egroup}
 
1142
\def\LinkCommand#1#2{\L:Com#1#2,,,,,,!*?: {#1}}
 
1143
\let\:Link\Link
 
1144
\def\L:Com#1#2,#3,#4,#5,#6,#7,#8!*?: #9{\def\:tempe{#7}%
 
1145
   \def\:tempa{#2}\def\:tempb{#3}\def\:tempc{#4}\def\:tempd{#6}%
 
1146
   \expandafter\edef\csname
 
1147
           End\expandafter\:gobble\string #9\endcsname{%
 
1148
      \ifx\:tempd\empty \noexpand\HCode
 
1149
         {</\ifx\:tempa\empty \tag:A\else#2\fi>}\fi }%
 
1150
   \edef\:temp{%
 
1151
      \noexpand\Odef\noexpand#1[####1]####2####3{{%
 
1152
         \def\noexpand\tag:A{\ifx\:tempa\empty\tag:A\else#2\fi}%
 
1153
         \def\noexpand\HREF:{ \ifx\:tempb\empty\HREF:\else#3=\fi}%
 
1154
         \def\noexpand\NAME:{ \ifx\:tempc\empty\NAME:\else#4=\fi}%
 
1155
         \def\noexpand\empty:lnk{\ifx\:tempd\empty\else#6\fi}%
 
1156
         \def\noexpand\:sharp{\ifx\:tempe\empty\:sharp\else#7\fi}%
 
1157
         \noexpand\M:link[####1 #5]{####2}{####3}}}}\:temp
 
1158
   \expandafter\let\csname \string#1 :\endcsname#1
 
1159
\def#1{\bgroup\LD:Link{#1}\futurelet#1\M:link}
 
1160
%
 
1161
  }
 
1162
\def\LD:Link#1{%
 
1163
   \def\M:link{\ifx -#1\egroup \def\M:link{\:Link-}\expandafter\gob:lnk
 
1164
               \else   \egroup \let\M:link\:Link \fi
 
1165
     \csname \string#1 :\endcsname }}
 
1166
\def\gob:lnk#1-{#1}
 
1167
\ifx\tmp:dim\:UnDeF    \csname newdimen\endcsname\tmp:dim\fi
 
1168
\def\pr:tc{\relax}
 
1169
\let\prOteCt\relax
 
1170
\def\Protect{%
 
1171
   \let\prOteCt\pr:tc
 
1172
   \ifx \prOteCt\pr:tc    \let\prOteCt\relax
 
1173
   \else \noexpand\Protect\expandafter\noexpand\fi
 
1174
}
 
1175
\def\NewHaddr#1{\html:addr \let#1\last:haddr}
 
1176
\def\GetHref#1{\expandafter\get:href#1-}
 
1177
\def\GetHname#1{\expandafter\get:htag#1-}
 
1178
\ifx \make:addr\:UnDeF
 
1179
   \def\make:addr#1{#1} \fi
 
1180
\def\FileNumber{\file:id}
 
1181
\def\c:XrefFile:#1{\def\aXrefFile{#1}}
 
1182
 \fi
 
1183
\:CheckOption{hshow} \if:Option
 
1184
   \def\hshow#1{\immediate\write16
 
1185
     {..#1.......\expandafter\meaning\csname #1\endcsname}}
 
1186
   \def\ShowConfigure#1{%
 
1187
   \edef\:tempb{\expandafter \meaning\csname c:#1:\endcsname}%
 
1188
   \expandafter\par:N  \:tempb////%
 
1189
   \immediate\write16{\string\Configure{#1}}%
 
1190
   {\show:Arg{1}{a:#1}%
 
1191
   \show:Arg{2}{b:#1}%
 
1192
   \show:Arg{3}{c:#1}%
 
1193
   \show:Arg{4}{d:#1}%
 
1194
   \show:Arg{5}{e:#1}%
 
1195
   \show:Arg{6}{f:#1}%
 
1196
   \show:Arg{7}{g:#1}%
 
1197
   \show:Arg{8}{h:#1}%
 
1198
   \show:Arg{9}{i:#1}}%
 
1199
}
 
1200
\edef\:temp{\def\noexpand
 
1201
  \par:N##1\string :##2->##3////{\noexpand\par:NN?##2//}}
 
1202
\:temp
 
1203
\def\par:NN#1#2//{\def\:tempb{#2}\ifx\:tempb\empty
 
1204
  \def\:tempb{#1}\else \def\:tempb{\par:NN#2//}\expandafter\:tempb\fi}
 
1205
\def\show:Arg#1#2{%
 
1206
   \ifnum \:tempb=#1 \let\show:Arg=\:gobbleII \fi
 
1207
   \expandafter\let\expandafter\:temp \csname #2\endcsname
 
1208
   \immediate\write16{ {\ifx \:temp\relax ???\else
 
1209
      \expandafter\:gobbleM \meaning \:temp\fi}}}
 
1210
\def\:gobbleM#1->{}
 
1211
 
 
1212
\fi
 
1213
\ifx \xml:empty\:UnDef
 
1214
   \:CheckOption{xhtml}
 
1215
   \if:Option \else \:CheckOption{xml}\fi
 
1216
   \if:Option
 
1217
      \def\xml:empty{ /}
 
1218
      \long\def\:xhtml#1{#1}
 
1219
   \else
 
1220
      \Log:Note{for XML code, use the command line option
 
1221
                `xml' or `xhtml'}%
 
1222
 
 
1223
      \let\:xhtml\:gobble
 
1224
      \let\xml:empty\empty
 
1225
\fi \fi
 
1226
\NewConfigure{afterSUB}[2]{\expandafter
 
1227
   \def \csname \meaning#1sb\endcsname{#2}}
 
1228
\NewConfigure{putSUB}[1]{\def\a:putSUB{#1}}
 
1229
\NewConfigure{putSUP}[1]{\def\a:putSUP{#1}}
 
1230
\:CheckOption{no^} \if:Option \else
 
1231
   \:CheckOption{^13} \if:Option \catcode`\^13
 
1232
   \else \catcode`\^12 \fi
 
1233
      \Configure{afterSUB}^{\SUB:SUP}
 
1234
   \catcode`\^7
 
1235
\fi
 
1236
\def\PushStack#1#2{%
 
1237
   \ifx #1\:UnDef \global\let#1\empty\fi
 
1238
   {\let\Picture\relax \xdef#1{{#2}{#1}}}}
 
1239
\def\PopStack#1#2{%
 
1240
   \ifx #1\empty    \:warning{empty \string\PopStack\string#1\string#2?}%
 
1241
                    \global\let#2\empty
 
1242
   \else  \def\:temp{\:recall#1#2}\expandafter\:temp#1\fi}
 
1243
\def\:recall#1#2#3#4{\gdef#1{#4}\gdef#2{#3}}
 
1244
\def\PushMacro#1{%
 
1245
   \expandafter\ifx \csname c:\string#1\endcsname\relax
 
1246
      \expandafter\gHAssign \csname c:\string#1\endcsname  0
 
1247
   \fi
 
1248
   \HAssign\:temp  \csname c:\string#1\endcsname
 
1249
   \let\:tempa#1%
 
1250
   \ifx \:tempa\:UnDef  \let\:tempa\like:unDef\fi
 
1251
   \global\expandafter\let\csname \:temp\string#1\endcsname  \:tempa
 
1252
   \expandafter\gHAdvance \csname c:\string#1\endcsname  1 }
 
1253
\def\PopMacro#1{%
 
1254
   \expandafter\gHAdvance \csname c:\string#1\endcsname  -1
 
1255
   \HAssign\:temp  \csname c:\string#1\endcsname\relax
 
1256
   \ifnum \:temp < 0
 
1257
      \expandafter\gHAssign \csname c:\string#1\endcsname  0
 
1258
      \:warning{ignored \string\PopCs\string#1 on empty stack}%
 
1259
   \else
 
1260
      \expand:after{\let#1}\csname \:temp\string#1\endcsname
 
1261
      \ifx #1\like:unDef  \let#1\:UnDef\fi
 
1262
   \fi
 
1263
   }
 
1264
\def\like:unDef{\:UnDef\:CS}
 
1265
\def\PushConfigure#1{\def\cf:name{#1}\expandafter
 
1266
   \expandafter\expandafter\Push:Configure\expandafter
 
1267
   \meaning\csname c:#1:\endcsname!*?: }
 
1268
\def\PopConfigure#1{\def\cf:name{#1}\expandafter
 
1269
   \expandafter\expandafter\Pop:Configure\expandafter
 
1270
   \meaning\csname c:#1:\endcsname!*?: }
 
1271
\def\do:undef#1->#2!*?: {%
 
1272
   \if :#2:\:warning{\string\PushConfigure{\cf:name}?}\fi
 
1273
}
 
1274
\catcode`\@=6
 
1275
\catcode`\#=12
 
1276
\def\Push:Configure@1!*?: {%
 
1277
   \do:undef@1->!*?: %
 
1278
   \do:para@1#1!*?: \push:config
 
1279
   \do:parb@1#2!*?: \push:config
 
1280
   \do:parc@1#3!*?: \push:config
 
1281
   \do:pard@1#4!*?: \push:config
 
1282
   \do:pare@1#5!*?: \push:config
 
1283
   \do:parf@1#6!*?: \push:config
 
1284
   \do:parg@1#7!*?: \push:config
 
1285
   \do:parh@1#8!*?: \push:config
 
1286
   \do:pari@1#9!*?: \push:config
 
1287
}
 
1288
\def\Pop:Configure@1!*?: {%
 
1289
   \do:pari@1#9!*?: \pop:config
 
1290
   \do:parh@1#8!*?: \pop:config
 
1291
   \do:parg@1#7!*?: \pop:config
 
1292
   \do:parf@1#6!*?: \pop:config
 
1293
   \do:pare@1#5!*?: \pop:config
 
1294
   \do:pard@1#4!*?: \pop:config
 
1295
   \do:parc@1#3!*?: \pop:config
 
1296
   \do:parb@1#2!*?: \pop:config
 
1297
   \do:para@1#1!*?: \pop:config
 
1298
}
 
1299
\def\do:para@1#1@2!*?: @3{@3{a}{@2}}
 
1300
\def\do:parb@1#2@2!*?: @3{@3{b}{@2}}
 
1301
\def\do:parc@1#3@2!*?: @3{@3{c}{@2}}
 
1302
\def\do:pard@1#4@2!*?: @3{@3{d}{@2}}
 
1303
\def\do:pare@1#5@2!*?: @3{@3{e}{@2}}
 
1304
\def\do:parf@1#6@2!*?: @3{@3{f}{@2}}
 
1305
\def\do:parg@1#7@2!*?: @3{@3{g}{@2}}
 
1306
\def\do:parh@1#8@2!*?: @3{@3{h}{@2}}
 
1307
\def\do:pari@1#9@2!*?: @3{@3{i}{@2}}
 
1308
\catcode`\@=11
 
1309
\catcode`\#=6
 
1310
\def\push:config#1#2{%
 
1311
   \if :#2:\else
 
1312
      \expandafter\expandafter\expandafter\ifx \expandafter
 
1313
              \csname \csname#1New:Conf\endcsname\cf:name\endcsname\relax
 
1314
         \:warning{\string\PushConfigure{\cf:name} Failed}%
 
1315
      \else
 
1316
         \expandafter\expandafter\expandafter\PushMacro \expandafter
 
1317
             \csname \csname#1New:Conf\endcsname\cf:name\endcsname
 
1318
      \fi
 
1319
   \fi }
 
1320
\def\pop:config#1#2{%
 
1321
   \if :#2:\else
 
1322
      \expandafter\expandafter\expandafter\ifx \expandafter
 
1323
           \csname \csname#1New:Conf\endcsname\cf:name\endcsname\relax \else
 
1324
         \expandafter\expandafter\expandafter\PopMacro \expandafter
 
1325
             \csname \csname#1New:Conf\endcsname\cf:name\endcsname
 
1326
      \fi
 
1327
   \fi }
 
1328
\long\def\append:defI#1#2{%
 
1329
   \def\:temp{\def#1####1}%
 
1330
   \expandafter\expandafter\expandafter\:temp\expandafter{#1{##1}#2}}
 
1331
\long\def\pend:defI#1#2{%
 
1332
   \def\:tempa{\def#1####1}%
 
1333
   \ex:pend{#2}{\expandafter\:temp #1{##1}}}
 
1334
\long\def\pend:defII#1#2{%
 
1335
   \def\:tempa{\def#1####1####2}%
 
1336
   \ex:pend{#2}{\expandafter\:temp #1{##1}{##2}}}
 
1337
\long\def\append:defII#1#2{%
 
1338
   \def\:temp{\def#1####1####2}%
 
1339
   \expandafter\expandafter\expandafter\:temp\expandafter{#1{##1}{##2}#2}}
 
1340
\long\def\pend:defIII#1#2{%
 
1341
   \def\:tempa{\def#1####1####2####3}%
 
1342
   \ex:pend{#2}{\expandafter\:temp #1{##1}{##2}{##3}}}
 
1343
\long\def\ex:pend#1{\def\:temp{#1}%
 
1344
  \expandafter\expandafter\expandafter\expandafter
 
1345
       \expandafter\expandafter\expandafter\:tempa
 
1346
   \expandafter\expandafter\expandafter}
 
1347
\long\def\append:defIII#1#2{%
 
1348
   \def\:temp{\def#1####1####2####3}%
 
1349
   \expandafter\expandafter\expandafter
 
1350
      \:temp\expandafter{#1{##1}{##2}{##3}#2}}
 
1351
 
 
1352
\def\Ref#1{\expandafter\ifx
 
1353
                 \csname  cw:#1\endcsname \relax \:NoTag{#1}%
 
1354
           \else \csname  cw:#1\endcsname    \fi}
 
1355
\def\LikeRef#1{\expandafter\ifx
 
1356
                 \csname  cw:#1\endcsname \relax \space%
 
1357
          \else  \csname  cw:#1\endcsname    \fi}
 
1358
\def\:LikeRef#1{\csname   cw:#1\endcsname}
 
1359
\let\:SUPOff\empty \let\:SUBOff\empty
 
1360
\def\Tag#1#2{\begingroup   \:SUPOff  \:SUBOff \a:xref \escapechar=`\\%
 
1361
   \edef\:head{\string\:CrossWord{#1}{#2}}%
 
1362
   \expandafter \expandafter \expandafter
 
1363
   \:writeref\expandafter{\:head{\folio}\prcnt:ch}%
 
1364
\endgroup}
 
1365
\NewConfigure{xref}{1}
 
1366
\def\:writeref{\write\:refout}%
 
1367
\def\load:ref#1{%
 
1368
   \edef\re:call{\catcode`\noexpand\:\the\catcode`\: }%
 
1369
\catcode`\:11
 
1370
\let\sv:crs\:CrossWord
 
1371
\def\:CrossWord{\bgroup  \catcode`\:12  \catcode`\@11
 
1372
   \catcode`\^^M11    \:CrsWrd}%
 
1373
\def\:CrsWrd##1##2##3{\egroup \sv:crs{##1}{##2}{##3}}%
 
1374
%
 
1375
   \get:input{#1}%
 
1376
   \re:call   \let\:CrossWord\sv:crs  }
 
1377
\def\:CrossWord#1#2#3{\Cross:Word{}{#1}{#2}{#3}}
 
1378
\def\Cross:Word#1#2#3#4{%
 
1379
   \def\:temp{#3}\tmp:toks{#3}%
 
1380
   \expandafter\edef\csname  cw:\cw:format{#1#2}\endcsname{%
 
1381
      \expandafter\ifx\csname  cw:\cw:format{#1#2}\endcsname\relax
 
1382
      \else \csname  cw:\cw:format{#1#2}\endcsname ,  \fi
 
1383
      \ifx \:temp\empty #4\else  \the\tmp:toks\fi}}
 
1384
\def\cw:format#1{#1}%
 
1385
 
 
1386
\ifx \:refout\:UnDef
 
1387
   \openin15=\jobname.xref
 
1388
\ifeof15  \def\:NoTag#1{\hbox{$???$}}
 
1389
\else     \def\:NoTag#1{\hbox{$???$}
 
1390
              \:warning{\string\Ref\string{\string#1\string}?}}
 
1391
  \ifx \:::HRefTag\:UnDef\else
 
1392
  \pend:defII\:::HRefTag{%
 
1393
    \if \relax##1\relax\else
 
1394
      \expandafter\ifx\csname cw:)Q\aXrefFile ##1\endcsname\relax
 
1395
         \:warning{\string\Link{##1}?}\csname a:?Link\endcsname
 
1396
    \fi\fi }
 
1397
\fi
 
1398
 
 
1399
\fi
 
1400
\closein15
 
1401
 
 
1402
   \load:ref{\jobname.xref}
 
1403
   \csname newwrite\endcsname\:refout
 
1404
   \if:latex \expandafter\immediate\fi
 
1405
\openout\:refout=\jobname.xref
 
1406
\fi
 
1407
\def\LoadRef{\futurelet\:tempa\:LoadRef}
 
1408
\def\:LoadRef{{%
 
1409
   \if \bgroup\:tempa
 
1410
      \aftergroup\loadr:ef
 
1411
   \else
 
1412
      \aftergroup\Load:Ref    \if -\:tempa \else
 
1413
                                  \aftergroup-\fi
 
1414
   \fi
 
1415
}}
 
1416
\def\Load:Ref#1{\futurelet\:tempb\LoadRef:}
 
1417
\def\LoadRef:{{%
 
1418
   \aftergroup\:loadref    \ifx [\:tempb \else
 
1419
                              \aftergroup[\aftergroup]\fi}}
 
1420
\def\:loadref[#1]{%
 
1421
   \let\sv:cros\:CrossWord
 
1422
   \edef\:tempd{#1}\ifx \:tempd\empty \let\:tempb N\fi
 
1423
   \futurelet\:tempc\l:oadref }
 
1424
\def\l:oadref{%
 
1425
   {\aftergroup\lo:adref \if +\:tempc \else \aftergroup+\fi  }}
 
1426
\def\lo:adref#1#2#3{%
 
1427
   \def\cw:format##1{#3}%
 
1428
   \edef\:temp{#2}\expandafter \get:ext\:temp .!*?: %
 
1429
   \ifx \:temp\empty
 
1430
         \set:CrossWord#2.!*?: {\:tempd}\load:ref{#2.xref}%
 
1431
   \else \set:CrossWord#2!*?: {\:tempd}\load:ref{#2}\fi
 
1432
   \let\:CrossWord\sv:cros }
 
1433
\def\get:ext#1.#2!*?: {\def\:temp{#2}}
 
1434
\def\loadr:ef#1{\let\:tempc=x \let\:tempd\empty \lo:adref{}{#1}{##1}}
 
1435
\def\set:CrossWord#1!*?: #2{%
 
1436
   \edef\:temp{\noexpand\:setCrossWord#1!*?: {#2}}\:temp}
 
1437
\def\:setCrossWord#1.#2!*?: #3{%
 
1438
   \ifx [\:tempb
 
1439
      \def\:CrossWord##1##2##3{%
 
1440
         \cond:CrossWord##1#3!*?: {##1}{##2}{##3}}%
 
1441
      \def\:tail#3##1#3{##1}%
 
1442
      \if +\:tempc   \if -\:tempa
 
1443
   \def\cond:CrossWord##1#3##2!*?: ##3##4##5{%
 
1444
      \def\:temp{##1}\ifx \:temp\empty
 
1445
         \Cross:Word{#1::}%
 
1446
                    {\:tail##3#3}{##4}{##5}\fi   }%
 
1447
\else
 
1448
   \def\cond:CrossWord##1#3##2!*?: ##3##4##5{%
 
1449
      \def\:temp{##1}\ifx \:temp\empty
 
1450
         \Cross:Word{#1::}{##3}{##4}{##5}\fi   }%
 
1451
\fi
 
1452
%
 
1453
      \else         \if -\:tempa
 
1454
   \def\cond:CrossWord##1#3##2!*?: ##3##4##5{%
 
1455
      \def\:temp{##1}\ifx \:temp\empty
 
1456
         \Cross:Word{}{\:tail##3#3}{##4}{##5}\fi  }%
 
1457
\else
 
1458
   \def\cond:CrossWord##1#3##2!*?: ##3##4##5{%
 
1459
      \def\:temp{##1}\ifx \:temp\empty
 
1460
         \Cross:Word{}{##3}{##4}{##5}\fi  }%
 
1461
\fi
 
1462
\fi
 
1463
   \else
 
1464
      \if +\:tempc   \def\:CrossWord{\Cross:Word{#1::}}%
 
1465
\fi
 
1466
   \fi              
 
1467
}
 
1468
 
 
1469
\ifHtml  \catcode`\:=12
 
1470
 
 
1471
\def\get@hfile#1{\get@hfil@ #1:::://}
 
1472
 
 
1473
\def\get@hfil@#1::#2::#3//{%
 
1474
   \expandafter\ifx \csname
 
1475
       cw:#1::)Q\aXrefFile #2\endcsname \relax \else
 
1476
      \expandafter\expandafter\expandafter\get@@hfile
 
1477
          \csname  cw:#1::)Q\aXrefFile #2\endcsname,//{#1}%
 
1478
   \fi}
 
1479
\def\get@@hfile#1,#2//#3{%
 
1480
    \expandafter\ifx
 
1481
       \csname  cw:#3::)F\aXrefFile #1%
 
1482
               \empty F-\endcsname \relax
 
1483
    \else
 
1484
       \csname  cw:#3::)F\aXrefFile #1%
 
1485
               \empty F-\endcsname
 
1486
       \expandafter  \expandafter  \expandafter  \expandafter
 
1487
       \expandafter  \expandafter  \expandafter  \remove@fn
 
1488
    \fi }
 
1489
 
 
1490
\def\remove@fn#1#2::{#1}
 
1491
 
 
1492
\catcode`\:=11
 
1493
 
 
1494
\fi
 
1495
\NewConfigure{?Link}{1}
 
1496
 
 
1497
\ifHtml
 
1498
   \def\:temp{\def\ifOption##1}
 
1499
\expandafter\expandafter\expandafter\:temp
 
1500
   \expandafter{\Preamble,,//\if:Option
 
1501
   \def\:temp{\the\tmp:toks
 
1502
   \def\:temp{\tmp:toks={}}%
 
1503
   \afterassignment\:temp \tmp:toks=}%
 
1504
\afterassignment\:temp
 
1505
\else \def\:temp{%
 
1506
   \def\:temp{\the\tmp:toks}%
 
1507
   \afterassignment\:temp \tmp:toks=}%
 
1508
\afterassignment\:temp
 
1509
\fi  \tmp:toks=}
 
1510
\pend:defI\ifOption{\def\:temp{##1}\:Optionfalse\:ScanOptions}
 
1511
\let\:Hin\empty
 
1512
\def\Hinput#1{\PushStack\:Hinputs\:Hin \def\:Hin{#1}%
 
1513
   \expandafter\:Hinput\:Hincl{}{}\PopStack\:Hinputs\:Hin}
 
1514
\def\:Hinput#1#2{\def\:temp{#2}\ifx \:temp\empty \else
 
1515
     \let\:temp\empty   \def\:tempa{*}\def\:tempb{#1}%
 
1516
     \ifx \:tempa\:tempb \def\:temp{\input #2}%
 
1517
     \else \ifx \:Hin\:tempb  \def\:temp{\input #2}%
 
1518
     \else \def\:tempb{#1.4ht}\ifx \:Hin\:tempb \def\:temp{\input #2}%
 
1519
     \fi\fi\fi
 
1520
   \expand:after{\:temp
 
1521
     \Configure{NewConfigure}{a:}{b:}{c:}{d:}{e:}{f:}{g:}{h:}{i:}%
 
1522
\:Hinput}\fi}
 
1523
 
 
1524
   \Hinput{Preamble}  \ht:special{t4ht.\:html}
 
1525
   \def\ScriptCommand{\begingroup \catcode`\\12
 
1526
   \:DefScript}
 
1527
\def\:DefScript#1{\endgroup \Def:Script#1!*?: }
 
1528
\def\Def:Script#1#2!*?: {%
 
1529
   \expandafter\let\csname :#2:\endcsname\empty
 
1530
   \edef\:temp{\long\def\expandafter\noexpand\csname a:#2\endcsname
 
1531
                 ####1\expandafter\noexpand\csname End#2\endcsname
 
1532
                 {####1\noexpand\:EndVerbatim}}\:temp
 
1533
   \long\expandafter\def\csname
 
1534
       b:#2\endcsname##1#1End#2{##1\:EndVerbatim}%
 
1535
   \edef\:temp{\noexpand\DefScript:
 
1536
      \expandafter\noexpand\csname #2\endcsname
 
1537
      {\expandafter\noexpand\csname a:#2\endcsname}%
 
1538
      {\expandafter\noexpand\csname b:#2\endcsname}}\:temp
 
1539
}
 
1540
\def\DefScript:#1#2#3#4#5{\def#1{\call:script{#2}{#3}{#4}{#5}}}
 
1541
\def\call:script#1#2#3#4{\begingroup \vrb:tt
 
1542
   \leftskip\z@  \parindent\z@
 
1543
   \Configure{HVerbatim}{\empty}{\empty}{\empty}{\empty}%
 
1544
   \Configure{HVerbatim+}{\z@}{\hbox{ }}%
 
1545
   #3\ht:special{t4ht@@}%
 
1546
   \let\Verb:atim#1\let\Ver:batim#2%
 
1547
   \def\:EndVerbatim{\ht:special{t4ht@@}%
 
1548
   #4\endgroup\ignorespaces}\Verb:env}
 
1549
\def\a:rootfont:{-}
 
1550
\:CheckOption{fonts+} \if:Option \def\a:rootfont:{+}
 
1551
\else
 
1552
   \Log:Note{for marking of the base font,
 
1553
       use the command line option `fonts+'}%
 
1554
\fi
 
1555
 
 
1556
   \:CheckOption{verify} \if:Option
 
1557
   \let\:chk:trc\:gobble
 
1558
 
 
1559
\else  \:CheckOption{verify+} \if:Option
 
1560
   \def\:chk:trc#1{\immediate
 
1561
   \write16{\the\inputlineno\space(\:ChkLevel) #1}}
 
1562
 
 
1563
\fi \fi
 
1564
\if:Option
 
1565
    \HAssign\:ChkLevel0
 
1566
\let\:CurrentChk\empty
 
1567
\PushStack\:CHK\empty
 
1568
\def\VerifyOpen#1{\Protect\trace:chk#1 !*?: }
 
1569
\def\trace:chk#1 #2!*?: {%
 
1570
   \gHAdvance\:ChkLevel  1 \:chk:trc{Open......#1}%
 
1571
   \expandafter\ifx \csname #1Level:\endcsname\relax
 
1572
      \expandafter\gHAssign\csname #1Level:\endcsname0
 
1573
   \fi
 
1574
   \expandafter\gHAdvance\csname #1Level:\endcsname  1
 
1575
   \PushStack\:CHK{#1}%
 
1576
   \expandafter\ifx \csname \:CurrentChk +#1\endcsname\relax
 
1577
      \expandafter\gdef  \csname \:CurrentChk +#1\endcsname{}%
 
1578
         \immediate\write16{\the\inputlineno.
 
1579
            --- warning --- \:CurrentChk\space --> #1 ?}%
 
1580
   \fi
 
1581
   \xdef\:CurrentChk{#1}%
 
1582
}
 
1583
\def\VerifyClose#1{\Protect\trace:endchk#1 !*?: }
 
1584
\def\trace:endchk#1 #2!*?: {%
 
1585
   \:chk:trc{Close......#1}%
 
1586
   \expandafter\ifx \csname #1Level:\endcsname\relax
 
1587
      \immediate\write16{\the\inputlineno.
 
1588
         --- warning --- </#1> witout <#1>}%
 
1589
      \expandafter\gHAssign\csname #1Level:\endcsname0
 
1590
   \else
 
1591
      \expandafter\gHAdvance\csname #1Level:\endcsname  -1
 
1592
      \gHAdvance\:ChkLevel  -1
 
1593
      \PopStack\:CHK\:temp
 
1594
      \edef\:tempa{#1}%
 
1595
      \ifx \:temp\:tempa
 
1596
         \PopStack\:CHK\:CurrentChk
 
1597
         \PushStack\:CHK\:CurrentChk
 
1598
     \else
 
1599
         \immediate\write16{\the\inputlineno.
 
1600
            --- warning --- </\:temp> instead of </#1>}%
 
1601
      \fi
 
1602
   \fi
 
1603
}
 
1604
\def\VerifyEmpty#1{\Protect\trace:emptychk#1 !*?: }
 
1605
\def\trace:emptychk#1 #2!*?: {%
 
1606
   \:chk:trc{Empty......#1}%
 
1607
   \expandafter \ifx \csname \:CurrentChk +#1\endcsname\relax
 
1608
      \expandafter\gdef  \csname \:CurrentChk +#1\endcsname{}%
 
1609
         \immediate\write16{\the\inputlineno.
 
1610
         --- warning --- \:CurrentChk\space --> #1 ?}%
 
1611
   \fi
 
1612
}
 
1613
\begingroup
 
1614
   \catcode`\^7
 
1615
   \gdef\Verify{\bgroup \catcode`\ 9 \catcode`\^^M9 \:dtd}
 
1616
\endgroup
 
1617
\def\:dtd#1\EndVerify{\egroup\dtd:rule#1,-->,}
 
1618
\def\dtd:rule#1-->#2,{\def\:temp{#1#2}\ifx \:temp\empty\else
 
1619
     \expandafter\gdef  \csname #1+#2\endcsname{}%
 
1620
  \expandafter\dtd:rule
 
1621
  \fi}
 
1622
 
 
1623
\else
 
1624
   \let\VerifyOpen\:gobble
 
1625
   \let\VerifyClose\:gobble
 
1626
   \let\VerifyEmpty\:gobble
 
1627
   \long\def\Verify#1\EndVerify{}
 
1628
   \def\trace:chk#1 #2!*?: {}
 
1629
\fi
 
1630
\def\Goto:Configure{\long\def
 
1631
   \Goto:Configure##1\:Configure{\let\Goto:Configure
 
1632
              \:UnDef}\expandafter\Goto:Configure}
 
1633
\:CheckOption{hooks++} \if:Option
 
1634
      \pend:defI\Configure{\tmp:cnt0
 
1635
      \long\def\c:def####1####2{\advance\tmp:cnt 1
 
1636
        \edef\:tempb{\expandafter \meaning\csname c:##1:\endcsname}%
 
1637
\expandafter\par:N  \:tempb////%
 
1638
 
 
1639
        \def####1{####2}%
 
1640
        \edef\:temp{\noexpand\pend:def\noexpand####1{\noexpand\ifx
 
1641
           \noexpand\EndPicture\noexpand\:UnDef \hbox{\noexpand\a:trc
 
1642
           ##1\the\tmp:cnt :\:tempb\noexpand\b:trc}\noexpand\fi}}\:temp
 
1643
        \edef\:temp{\noexpand\append:def\noexpand####1{\noexpand\ifx
 
1644
           \noexpand\EndPicture\noexpand\:UnDef\hbox{\noexpand\c:trc
 
1645
           ##1\the\tmp:cnt :\:tempb\noexpand\d:trc}\noexpand\fi}}\:temp
 
1646
   }}
 
1647
 
 
1648
   \def\edit:p#1#2{\let#2\empty \:gobble}%
 
1649
\else \:CheckOption{hooks+}  \if:Option
 
1650
       \def\trc:wrt{\immediate\write16}
 
1651
    \else \:CheckOption{hooks}  \if:Option
 
1652
       \let\trc:wrt\:gobble
 
1653
    \fi\fi
 
1654
 \if:Option
 
1655
   \pend:defI\Configure{\tmp:cnt0
 
1656
   \long\def\c:def####1####2{\advance\tmp:cnt 1
 
1657
     \edef\:tempb{\expandafter \meaning\csname c:##1:\endcsname}%
 
1658
\expandafter\par:N  \:tempb////%
 
1659
 
 
1660
     \def####1{####2}%
 
1661
     \ifx ####1\empty
 
1662
        \edef\:temp{\noexpand\pend:def\noexpand####1{\hbox{\noexpand
 
1663
          \a:trc ##1\the\tmp:cnt :\:tempb\noexpand\b:trc}}}\:temp
 
1664
        \edef\:temp{\noexpand\append:def\noexpand####1{\hbox{\noexpand
 
1665
          \c:trc ##1\the\tmp:cnt :\:tempb\noexpand\d:trc}}}\:temp
 
1666
     \else
 
1667
        \trc:wrt{...##1\the\tmp:cnt....\meaning####1}%
 
1668
     \fi
 
1669
}}
 
1670
\long\def\ConfigureToc#1#2#3#4#5{%
 
1671
   \expandafter\def\csname toc#1\endcsname##1##2##3{#5}%
 
1672
   \edit:p\def\:temp{#2#3#4#5}\ifx \:temp\empty
 
1673
      \expandafter\pend:defIII\csname toc#1\endcsname{\hbox
 
1674
        {\a:trc Toc(#1)1\b:trc}####1\hbox{\a:trc Toc(#1)2\b:trc}####2\hbox
 
1675
        {\a:trc Toc(#1)3\b:trc}####3\hbox{\a:trc Toc(#1)4\b:trc}}%
 
1676
   \else
 
1677
     \def\:temp{#4}\ifx \:temp\empty \else
 
1678
   \expandafter\pend:defIII\csname toc#1\endcsname{#4####3}%
 
1679
\fi
 
1680
\def\:temp{#3}\ifx \:temp\empty \else
 
1681
   \expandafter\pend:defIII\csname toc#1\endcsname{#3####2}%
 
1682
\fi
 
1683
\def\:temp{#2}\ifx \:temp\empty \else
 
1684
   \expandafter\pend:defIII\csname toc#1\endcsname{#2####1}%
 
1685
\fi
 
1686
 
 
1687
   \fi
 
1688
}
 
1689
 
 
1690
   \let\edit:p\empty
 
1691
\fi \fi
 
1692
\if:Option
 
1693
   \edef\:tempb{\def\noexpand
 
1694
   \par:N##1\string :##2->##3////{\noexpand\par:NN?##2//}}
 
1695
\:tempb
 
1696
\def\par:NN#1#2//{\def\:tempb{#2}\ifx\:tempb\empty
 
1697
   \def\:tempb{#1}\else \def\:tempb{\par:NN#2//}\expandafter\:tempb\fi}
 
1698
 
 
1699
   \NewConfigure{hooks}[4]{\def\a:trc{#1}\def\b:trc{#2}%
 
1700
      \def\c:trc{#3}\def\d:trc{#4}%
 
1701
      \ifx \a:trc\empty \def\a:trc##1\b:trc{\b:trc}\fi
 
1702
      \ifx \c:trc\empty \def\c:trc##1\d:trc{\d:trc}\fi
 
1703
   }
 
1704
   \def\d:def{\advance\tmp:cnt 1\def}
 
1705
   \Configure{hooks}{}{}{}{}
 
1706
\else
 
1707
   \let\c:hooks:\:gobbleIV
 
1708
   
 
1709
\fi
 
1710
\def\Tg<#1>{%
 
1711
   \expandafter\ifx
 
1712
      \csname\try:tagend <#1</!*?: \endcsname\is:empty
 
1713
      \:tagend#1!*?: \else
 
1714
   \expandafter\ifx
 
1715
      \csname\try:tagempty #1>/>!*?: \endcsname\is:empty
 
1716
      \:tag{#1}\else  \:tagempty #1>\fi\fi}
 
1717
\def\try:tagend#1</#2!*?: {#1is:empty}
 
1718
\def\try:tagempty#1/>#2!*?: {#2is:empty}
 
1719
\def\is:empty{\empty\empty}
 
1720
\:CheckOption{edit} \if:Option
 
1721
  % \def\tg<#1>{\c:edit#1\d:edit}
 
1722
\def\TG<#1>{\a:edit#1\b:edit}
 
1723
 
 
1724
  \def\tag:of#1 #2!*?: {#1}
 
1725
\def\mn:s{-}
 
1726
\def\:tag#1{\VerifyOpen{#1}\expandafter\ifx
 
1727
   \csname A:\tag:of#1 !*?: \endcsname\mn:s\else
 
1728
     \csname A:\tag:of#1 !*?: \endcsname
 
1729
     \hbox{\a:edit\HCode{#1}\b:edit}%
 
1730
   \fi \csname B:\tag:of#1 !*?: \endcsname
 
1731
  }
 
1732
\def\:tagend#1#2!*?: {\VerifyClose{#2}\expandafter\ifx
 
1733
   \csname A:/\tag:of#2 !*?: \endcsname\mn:s\else
 
1734
     \csname A:/\tag:of#2 !*?: \endcsname
 
1735
     \hbox{\a:edit\HCode{/#2}\b:edit}%
 
1736
   \fi \csname B:/\tag:of#2 !*?: \endcsname
 
1737
  }
 
1738
\def\:tagempty#1/>{\VerifyEmpty{#1}\expandafter\ifx
 
1739
   \csname A:\tag:of#1 !*?: /\endcsname\mn:s\else
 
1740
     \csname A:\tag:of#1 !*?: /\endcsname
 
1741
     \hbox{\a:edit\HCode{#1/}\b:edit}%
 
1742
   \fi \csname B:\tag:of#1 !*?: /\endcsname
 
1743
  }
 
1744
\expandafter\def\csname c:<:\endcsname#1>{\edef\:temp{#1}\:gat}
 
1745
\long\def\:gat#1#2{\expandafter
 
1746
   \def\csname A:\:temp\endcsname{#1}%
 
1747
   \expandafter\def\csname B:\:temp\endcsname{#2}}
 
1748
\NewConfigure{edit}{4}
 
1749
 
 
1750
\else
 
1751
  % \def\tg<#1>{<#1>}
 
1752
\def\TG<#1>{\HCode{<#1>}}
 
1753
 
 
1754
  \:CheckOption{verify}\if:Option\else \:CheckOption{verify+}\fi
 
1755
  \if:Option
 
1756
     \def\:tag#1{\VerifyOpen{#1}\hbox{\HCode{<#1>}}}
 
1757
\def\:tagend#1#2!*?: {\VerifyClose{#2}\hbox{\HCode{</#2>}}}
 
1758
\def\:tagempty#1/>{\VerifyEmpty{#1}\hbox{\HCode{<#1/>}}}
 
1759
\expandafter\def\csname c:<:\endcsname#1>{\:gobbleII}
 
1760
 
 
1761
  \else
 
1762
     \def\:tag#1{\hbox{\HCode{<#1>}}}
 
1763
\def\:tagend#1#2!*?: {\hbox{\HCode{</#2>}}}
 
1764
\def\:tagempty#1/>{\hbox{\HCode{<#1/>}}}
 
1765
\expandafter\def\csname c:<:\endcsname#1>{\:gobbleII}
 
1766
 
 
1767
  \fi
 
1768
\fi
 
1769
 
 
1770
\NewConfigure{Preamble}{2}
 
1771
\NewConfigure{CutAtTITLE+}[1]{\def\a:CutAtTITLE{#1}}
 
1772
\NewConfigure{HPageTITLE+}[1]{\def\a:HPageTITLE{#1}}
 
1773
\NewConfigure{crosslinks}[8]{%
 
1774
   \def\default:bts##1##2{%
 
1775
      \let\sv:cond:bt\cond:bt
 
1776
%
 
1777
      \def\:temp{##1}\ifx \:temp\empty
 
1778
         \ifx\a:crsbt\empty\ifx \aa:crsbt\empty \let\cond:bt\:gobbleIII
 
1779
\fi\fi
 
1780
         \a:crsbt
 
1781
      \else
 
1782
         \ifx\b:crsbt\empty\ifx \bb:crsbt\empty \let\cond:bt\:gobbleIII
 
1783
\fi\fi
 
1784
         \b:crsbt
 
1785
      \fi
 
1786
      \def\CLB:next{\expandafter\cond:bt\next:bt{}{#3}}%
 
1787
      \ifx \prevCut\empty
 
1788
   \def\:temp{\prevCut}\ifx \:temp\prev:bt
 
1789
      \Recall:HPageTag\HP:file  \Save:HPageTag\HP:file
 
1790
      \def\:temp{#4}\ifx \:temp\empty \else
 
1791
         \def\CLB:prevup{%
 
1792
            \expandafter\cond:bt\prev:bt{}{%
 
1793
            #1\Link[\RefFile{)B\HP:file}]{}{}#4\EndLink #2}}%
 
1794
      \fi
 
1795
      \def\:temp{#5}\ifx \:temp\empty \else
 
1796
         \def\CLB:prevtailup{%
 
1797
               #1\Link[\RefFile{)B\HP:file}]{tail\Jobname
 
1798
                                                }{}#5\EndLink #2}%
 
1799
      \fi
 
1800
      \long\def\:tempb####1####2{\gdef\root:next{%
 
1801
  \def\:temp{####2}\edef\HP:file{\RefFileNumber\file:id}%
 
1802
  \ifx \:temp\HP:file
 
1803
      \global\let\root:next\empty
 
1804
      \def\:temp{#3}\ifx \:temp\empty
 
1805
         \Link{}{tail\Jobname}\EndLink
 
1806
      \else
 
1807
         \expandafter\ifx \csname a:next\endcsname\relax #1\else
 
1808
         \a:next \fi \Link[####1]{}{tail\Jobname}#3\EndLink
 
1809
         \expandafter\ifx \csname b:next\endcsname\relax #2\else
 
1810
         \b:next \fi
 
1811
   \fi \fi}}%
 
1812
\edef\:temp{\noexpand\:tempb
 
1813
   {\RefFileNumber\file:id}{\RefFile{)B\HP:file}}}%
 
1814
\:temp
 
1815
%
 
1816
\fi \fi
 
1817
%
 
1818
      \def\CLB:prev{\expandafter\cond:bt\prev:bt{}{#4}}%
 
1819
      \def\CLB:prevtail{\expandafter\cond:bt\prev:bt{tail\prev:bt}{#5}}%
 
1820
      \def\:temp{##2}%
 
1821
\ifx \:temp\empty
 
1822
   \def\:temp{#6}%
 
1823
   \ifx \:temp\empty \else
 
1824
       \def\CLB:tail{#1\Link[\RefFileNumber\file:id]{}{}#6\EndLink #2}\fi
 
1825
\else
 
1826
   \def\:temp{#7}%
 
1827
   \ifx \:temp\empty \else
 
1828
       \def\CLB:front{#1\Link{##2\RefFileNumber\file:id}{}#7\EndLink #2}\fi
 
1829
\fi
 
1830
%
 
1831
      \def\:temp{#8}\ifx \:temp\empty \else
 
1832
         \ifx \cond:bt\:gobbleIII
 
1833
         \else \def\CLB:up{#1\ExitHPage{#8}#2}\fi\fi
 
1834
      \CLB:menu
 
1835
%
 
1836
      \let\cond:bt\sv:cond:bt
 
1837
%
 
1838
      \def\:temp{##1}\ifx \:temp\empty \aa:crsbt\else \bb:crsbt\fi
 
1839
      \def\:temp{##1}\ifx \:temp\empty  \else
 
1840
   \Link{}{##1\RefFileNumber\file:id}\EndLink\fi
 
1841
}%
 
1842
   \def\cond:bt##1##2##3{\ifx ##1\empty \else
 
1843
      \def\:temp{##3}\ifx \:temp\empty \else
 
1844
                        #1\Link[##1]{##2}{}##3\EndLink #2\fi \fi }%
 
1845
}
 
1846
\NewConfigure{crosslinks+}[4]{%
 
1847
   \def\a:crsbt{#1}\def\aa:crsbt{#2}\def\b:crsbt{#3}\def\bb:crsbt{#4}}
 
1848
\expandafter\def\csname c:crosslinks*:\endcsname{%
 
1849
   \let\CLB:menu\empty \CLB:menuitem }
 
1850
\def\CLB:menuitem#1{%
 
1851
   \def\:tempa{#1}\ifx \:tempa\empty \else
 
1852
      \append:def\CLB:menu{\csname CLB:#1\endcsname}%
 
1853
      \def\:temp{prev}\ifx \:temp\:tempa
 
1854
         \append:def\CLB:menu{\csname CLB:prevup\endcsname}%
 
1855
      \else
 
1856
         \def\:temp{prevtail}\ifx \:temp\:tempa
 
1857
            \append:def\CLB:menu{\csname CLB:prevtailup\endcsname}%
 
1858
      \fi \fi
 
1859
      \expandafter\CLB:menuitem
 
1860
   \fi
 
1861
}
 
1862
\Configure{crosslinks*}
 
1863
   {next}
 
1864
   {prev}
 
1865
   {prevtail}
 
1866
   {tail} {front}
 
1867
   {up}
 
1868
   {}
 
1869
\NewConfigure{next}[2]{\def\a:next{#1}\def\b:next{#2}}
 
1870
\NewConfigure{writetoc}[1]{\concat:config\a:writetoc{#1}}
 
1871
\let\a:writetoc\empty
 
1872
\NewConfigure{TocAt*}[2]{%
 
1873
    \c:def\a:dTocAt{#1}\c:def\b:dTocAt{#2}}
 
1874
\NewConfigure{TocAt}[2]{%
 
1875
    \c:def\a:TocAt{#1}\c:def\b:TocAt{#2}}
 
1876
\Configure{TocAt*}{}{}
 
1877
\Configure{TocAt}{}{}
 
1878
\def\halignTD{\ifx \:mALIGN\empty \hT:D \else \:mALIGN \fi}
 
1879
\def\halignTB#1{\global\expandafter\let\expandafter\:MkHalign:
 
1880
   \csname :#1:\endcsname \a:halignTB \expandafter\expandafter
 
1881
   \expandafter\halign:TB \csname :#1:\endcsname!*?: \b:halignTB}
 
1882
\NewConfigure{halignTB}{2}
 
1883
\NewConfigure{halignTB<>}[2]{%
 
1884
   \expandafter\def\csname :#1:\endcsname{#2}}
 
1885
\Configure{halignTB<>}{MkHalign}{<>}%
 
1886
 
 
1887
\NewConfigure{MkHalign}[6]{%
 
1888
   \def\T:halign{\PushMacro\:MkHalign:\Configure{halignTB<>}{MkHalign}{<>}%
 
1889
#1}%
 
1890
   \def\t:halign{#2\PopMacro\:MkHalign:
 
1891
                 \global\let\:MkHalign:\:MkHalign:}%
 
1892
   \def\R:halign{\TT:halign \gHAdvance\HRow  1 \gHAssign\HCol1
 
1893
      #3}%
 
1894
   \def\r:halign{\end:omit#4}%
 
1895
   \def\D:halign{\:nopartrue
 
1896
      \gHAdvance\dH:cnt by 1
 
1897
\edef\:tempa{\global\let\expandafter\noexpand\csname xc\dH:cnt\endcsname
 
1898
       \expandafter\noexpand\csname dH\MkHalign:d\endcsname}%
 
1899
\:tempa
 
1900
\expandafter\xdef\csname \dH:cnt :tempa\endcsname{%
 
1901
   \global\let \expandafter\noexpand\csname dH\MkHalign:d\endcsname
 
1902
       \expandafter\noexpand\csname xc\dH:cnt\endcsname}%
 
1903
%
 
1904
      \gHAdvance\MS:count  -1
 
1905
\ifnum \MS:count > 0  \else
 
1906
   \end:omit  \relax:shrp     \derive:TD
 
1907
   \HAssign\:MULTISPAN1  \let\:mALIGN\empty
 
1908
   \expandafter\add:span\old:span \gHAssign\MS:count\:MULTISPAN
 
1909
   \relax #5%
 
1910
\fi
 
1911
\xdef\Step:Col{\ifx \HMultispan\:UnDef 1 \else \HMultispan\fi}%
 
1912
%
 
1913
      \ifnum\MS:count=\ifx \:MULTISPAN\:UnDef \MS:count
 
1914
                      \else                  \:MULTISPAN\fi
 
1915
         \expandafter\gdef\csname dH\MkHalign:d\endcsname
 
1916
            {\ifnum \MS:count<2 #6\relax
 
1917
 \gHAdvance\HCol  \Step:Col\relax \fi
 
1918
}\fi}%
 
1919
   \def\d:halign{\csname dH\ifnum \MkHalign:d<1 1\else \MkHalign:d\fi
 
1920
                 \endcsname \csname \dH:cnt :tempa\endcsname
 
1921
\gHAdvance\dH:cnt by -1
 
1922
}}
 
1923
\Configure{MkHalign}{}{}{}{}{}{}
 
1924
\HAssign\dH:cnt0
 
1925
\NewConfigure{halignTD}[2]{\c:def\TD:CLASS{#1}%
 
1926
   \c:def\EndTD:CLASS{#2}\scan:halignTD}
 
1927
\def\scan:halignTD#1{\def\:temp{#1}\ifx \:temp\empty\else
 
1928
    \expandafter \sc:halignTD\fi{#1}}
 
1929
\def\sc:halignTD#1#2{\expandafter\def\csname
 
1930
   \string#1:T:D\endcsname{#2}\scan:halignTD}
 
1931
\NewConfigure{halignTR}[1]{\def\halignTR{#1}}
 
1932
\Configure{halignTR}{}
 
1933
\def\halignTBL{\expandafter\ifx \csname v:TBL\endcsname\relax
 
1934
   \else \expandafter\ifx \csname \v:TBL :T:BL\endcsname\relax\else
 
1935
       \csname \v:TBL :T:BL\endcsname
 
1936
   \fi\fi}
 
1937
\NewConfigure{halignTBL}[1]{\scan:halignTBL{#1}}
 
1938
\def\scan:halignTBL#1{\def\:temp{#1}\ifx \:temp\empty\else
 
1939
    \expandafter \sc:halignTBL\fi{#1}}
 
1940
\def\sc:halignTBL#1#2{\expandafter\def\csname
 
1941
   \string#1:T:BL\endcsname{#2}\scan:halignTBL}
 
1942
\NewConfigure{halign}[6]{\c:def\hlg:a{#1}%
 
1943
   \c:def\hlg:b{#2}\c:def\hlg:c{#3}\c:def\hlg:d{#4}%
 
1944
   \c:def\hlg:e{#5}\c:def\hlg:f{#6}}
 
1945
\NewConfigure{pic-halign}[1]{\def\pic:hlng{#1}}
 
1946
\NewConfigure{tt}[1]{\let\vrb:tt#1}
 
1947
\let\vrb:tt\tt
 
1948
\NewConfigure{HVerbatim}[4]{\c:def\bef:Verb{#1\Verb:eoln}%
 
1949
   \c:def\aft:Verb{\ht:everypar{}#2}%
 
1950
   \c:def\Verb:eoln{#3}\c:def\Verb:boln{#4}}
 
1951
\NewConfigure{HVerbatim+}[2]{\d:def\Verb:Left{#1}%
 
1952
   \def\Verb:sp{#2}}
 
1953
\NewConfigure{Picture-alt}{1}
 
1954
\Configure{Picture-alt}{}
 
1955
\NewConfigure{PictureAlt}{2}
 
1956
\NewConfigure{PictureAttr}[1]{\def\a:PictureAttr##1{#1}}
 
1957
\Configure{PictureAlt} {\NoFonts} {\EndNoFonts}
 
1958
\Configure{PictureAttr} {\HCode{\Hnewline #1}}
 
1959
\NewConfigure{IMG}{5}
 
1960
\NewConfigure{Picture}[1]{\def\PictExt{#1}}
 
1961
\Configure{Picture}{.png}
 
1962
\NewConfigure{Picture+}{2}
 
1963
\NewConfigure{Picture*}{2}
 
1964
\expandafter\def\csname c:string-encoder:\endcsname#1{%
 
1965
   \expandafter\def\csname c:#1:\endcsname{%
 
1966
      \csname #1:String\endcsname
 
1967
      \expandafter\let\csname #1:String\endcsname=\empty
 
1968
      \expandafter\let\expandafter\Char:dic
 
1969
                             \csname #1Char:dic\endcsname
 
1970
      \cnf:transString}
 
1971
   \expandafter\def\csname #1\endcsname##1##2!*?: {%
 
1972
      \if :##1:\expandafter\gob:par
 
1973
      \else
 
1974
         \expandafter\ifx \csname \string##1:#1EnCoDe\endcsname\relax
 
1975
            \string ##1\else
 
1976
            \csname \string##1:#1EnCoDe\endcsname
 
1977
         \fi
 
1978
         \if :##2:\expandafter\expandafter\expandafter\gob:par
 
1979
         \else
 
1980
             \expandafter\expandafter\expandafter
 
1981
             \expandafter\expandafter\expandafter
 
1982
                    \csname #1\endcsname
 
1983
         \fi
 
1984
       \fi
 
1985
       ##2!*?: %
 
1986
   }
 
1987
   \expandafter\def\csname #1Char:dic\endcsname##1##2{%
 
1988
      \def\:temp{##1}\ifx \:temp\empty \egroup
 
1989
      \else  \egroup
 
1990
          \expandafter\append:def\csname #1:String\endcsname
 
1991
               {\expandafter\let
 
1992
                        \csname \string##1:#1EnCoDe\endcsname=\:UnDef}%
 
1993
          \expandafter\def\csname \string##1:#1EnCoDe\endcsname{##2}%
 
1994
          \expandafter \cnf:transString
 
1995
      \fi
 
1996
   }
 
1997
}
 
1998
\def\cnf:transString{\bgroup
 
1999
   \catcode`\%=12
 
2000
   \catcode`\~=12
 
2001
   \catcode`\$=12
 
2002
   \catcode`\&=12
 
2003
   \catcode`\#=12
 
2004
   \catcode`\^=12
 
2005
   \catcode`\_=12
 
2006
   \catcode`\?=12 \Char:dic }
 
2007
\def\gob:par#1!*?: {}
 
2008
\def\c:Needs:{\def\:Needs##1}
 
2009
\expandafter\def\csname c:Needs-:\endcsname{\def\:Neds##1}
 
2010
 
 
2011
\NewConfigure{HtmlPar*}[2]{%
 
2012
   \def\:temp{#2}\ifx \:temp\empty \c:def\skip:Par{#1}\else
 
2013
     \c:def\skip:Par{#1\Next:EndP{#2}}\fi}
 
2014
\NewConfigure{ExitHPage}{3}
 
2015
\NewConfigure{UndefinedSec}[1]{%
 
2016
   \ifx \ltx:like\:UnDef  \let\ltx:like\empty \let\ltx:nolike\empty \fi
 
2017
   \append:def\ltx:like{\expandafter\let\csname #1\endcsname\empty}%
 
2018
   \append:def\ltx:nolike{\expandafter\let\csname #1\endcsname\:UnDef}%
 
2019
}
 
2020
\NewConfigure{+CutAt}[3]{%
 
2021
  \expandafter\def\csname Before#1Button\endcsname##1{#2}%
 
2022
  \expandafter\def\csname After#1Button\endcsname##1{#3}}
 
2023
\NewConfigure{NoSection}{2}
 
2024
\NewConfigure{toTocLink}[2]{\def\scp:Link{#1}\def\scp:EndLink{#2}}
 
2025
\Configure{toTocLink}{\Title:Link}{\EndLink}
 
2026
\NewConfigure{TocLink}[1]{\def\a:TocLink##1##2##3##4{#1}}
 
2027
\NewConfigure{PauseMkHalign}{4}
 
2028
\NewConfigure{MiniHalign}{6}
 
2029
\NewConfigure{noalign-}[2]{\c:def\a:noalign{#1}\c:def\b:noalign{#1}}
 
2030
\:CheckOption{no-halign} \if:Option \else
 
2031
    \NewConfigure{noalign}{2}
 
2032
\fi
 
2033
\NewConfigure{Canvas}[3]{}
 
2034
\NewConfigure{PictureAlt*+}{2}
 
2035
\NewConfigure{PictureAttr*+}[1]{%
 
2036
   \expandafter\def\csname a:PictureAttr*+\endcsname##1{#1}%
 
2037
}
 
2038
\Configure{PictureAttr*+}{\ht:special{t4ht=#1}}
 
2039
\NewConfigure{PictureAlt*+[]}{2}
 
2040
\NewConfigure{PictureAttr*+[]}[1]{%
 
2041
   \expandafter\def\csname a:PictureAttr*+[]\endcsname##1{#1}%
 
2042
}
 
2043
\Configure{PictureAlt*+[]} {\NoFonts} {\EndNoFonts}
 
2044
\Configure{PictureAttr*+[]} {\ht:special{t4ht=#1}}
 
2045
\def\HChar#1{{\leavevmode\ht:special{t4ht@#1}\ifnum #1>-1 \a:HChar\fi}}
 
2046
\NewConfigure{HChar}{1}
 
2047
\Configure{HChar}{x}
 
2048
\NewConfigure{@Picture}[1]{\def\a:@Picture{#1}}
 
2049
\let\a:@Picture\:gobble
 
2050
\NewConfigure{RULE}[5]{\ht:special{t4ht@\%\%R#1#2#1#3}
 
2051
  \ht:special{t4ht@\%\%r#1#4#1#5}}
 
2052
\NewConfigure{GROUP}[5]{\ht:special{t4ht@\%\%P#1#2#1#3}
 
2053
  \ht:special{t4ht@\%\%p#1#4#1#5}}
 
2054
\NewConfigure{CHAR}[5]{\ht:special{t4ht@\%\%C#1#2#1#3}
 
2055
  \ht:special{t4ht@\%\%c#1#4#1#5}}
 
2056
\NewConfigure{HSPACE}[3]{\ht:special{t4ht@\%\%H#1#2#1#3}}
 
2057
\NewConfigure{VSPACE}[3]{\ht:special{t4ht@\%\%V#1#2#1#3}}
 
2058
\let\send:special=\:gobble
 
2059
\NewConfigure{Send:GROUP}[2]{\send:special{t4ht\string~<#1#2}}
 
2060
\NewConfigure{Send:EndGROUP}[2]{\send:special{t4ht\string~>#1#2}}
 
2061
\NewConfigure{Send:BACK}[1]{\send:special{t4ht\string~<*#1}}
 
2062
\def\:temp{\a:moveright \o:moveright:}
 
2063
\HLet\moveright\:temp
 
2064
\NewConfigure{moveright}{1}
 
2065
 
 
2066
\NewConfigure{htf}[9]{{%
 
2067
  \tmp:cnt#1 \ifnum \tmp:cnt>255  \:warning{Code larger than
 
2068
              255 in \string\Configure{htf}}\else
 
2069
  \ht:special{t4ht;|\ifnum \tmp:cnt<10 00\else
 
2070
    \ifnum \tmp:cnt<100 0\fi\fi
 
2071
    \the\tmp:cnt#2#3#2#4#2#5#2#6#2#7#2#8#2#9#2\the\tmp:cnt}%
 
2072
  \fi}}
 
2073
\def\NoFonts{\ht:special{t4ht;8}}
 
2074
\def\EndNoFonts{\ht:special{t4ht;9}}
 
2075
\NewConfigure{FontCss}[2]{\def\a:FontCss:{#1}\def\a:FontCssPlus:{#2}}
 
2076
\NewConfigure{htf-css}[2]{{%
 
2077
   \def\:temp##1!*?: {\def\:tempa{##1}}%
 
2078
   \afterassignment\:temp\tmp:cnt0#1!*?: %
 
2079
   \def\:temp{\Configure{Needs}}%
 
2080
   \ifx  \:tempa\empty
 
2081
       \expandafter\:temp\expandafter{\a:FontCss:}\Needs{("#1"): #2}%
 
2082
   \else
 
2083
       \expandafter\:temp\expandafter{\a:FontCssPlus:}\Needs{#1 #2}%
 
2084
   \fi}}
 
2085
\NewConfigure{htf-attr}[2]{{%
 
2086
   \Configure{Needs}{##1}%
 
2087
   \Needs{Font\string_css\string_base: #1Font\string_css\string_mag: #2}}}
 
2088
 
 
2089
\:CheckOption{new-accents}     \if:Option
 
2090
   \def\:temp{\leavevmode\ifx \d:mathaccent\empty
 
2091
    \else \ht:special{t4ht\string~>1\d:mathaccent}\fi
 
2092
    \ht:special{t4ht*\string^m}\o:mathaccent:}
 
2093
\HLet\mathaccent\:temp
 
2094
\def\:temp{\leavevmode\ht:special{t4ht*\string^t}\o:accent:}
 
2095
\HLet\accent\:temp
 
2096
\NewConfigure{accent}[6]{\ht:special{t4ht*\string^t#1#2#1#3#1#4#1#5#1#6}}
 
2097
\NewConfigure{mathaccent}[6]{\ht:special{t4ht#1\string
 
2098
  ^m#1#2#1#3#1#4#1#5#1}\edef\d:mathaccent{#6}}
 
2099
\let\d:mathaccent\empty
 
2100
\NewConfigure{accented}[6]{\ht:special
 
2101
     {t4ht*\string^a#1#2#1#3#1#4#1#5#1#6}}
 
2102
\NewConfigure{accenting}[3]{\ht:special{t4ht*\string^i#1#2#1#3#1#1}}
 
2103
\NewConfigure{HAccent}[1]{\pic:Accent#1}
 
2104
\def\pic:Accent#1#2#3#4{\edef\:tempb##1{{\expandafter\:gobble\string#1}}%
 
2105
   \pend:defI\:tempb{\choose:accent{####1}#2\relax!*?: }%
 
2106
   \append:defI\:tempb{{#3}{#4}}%
 
2107
   \expandafter\let\csname \string#1:\endcsname\:tempb
 
2108
   \edef\:tempb{\noexpand\Protect\noexpand\acc:nm{\string#1}}%
 
2109
   \HLet#1\:tempb}
 
2110
\def\acc:nm#1{\csname \string#1:\endcsname}
 
2111
\def\choose:accent#1{\def\:accented{#1}\cs:accent}
 
2112
\def\realx:par{\relax}
 
2113
\def\cs:accent#1{\def\:tempa{#1}%
 
2114
   \ifx \:tempa\realx:par \expandafter\pic:accent
 
2115
   \else
 
2116
       \ifx \:tempa\:accented
 
2117
            \expandafter\expandafter\expandafter\nopic:accent
 
2118
       \else \expandafter\expandafter\expandafter\cs:accent\fi
 
2119
   \fi}
 
2120
\def\pic:accent#1!*?: #2#3#4{%
 
2121
   #3\nopic:accent!*?: {#2}{}{}#4}
 
2122
\def\nopic:accent#1!*?: #2#3#4{\expandafter\expandafter
 
2123
   \csname o:#2:\endcsname\expandafter{\:accented}}
 
2124
 
 
2125
\else
 
2126
   \NewConfigure{accent}[5]{%
 
2127
   \expandafter\ifx \csname x:\string#2\endcsname\relax
 
2128
      \expandafter\edef
 
2129
         \csname x:\string#2\endcsname{\accent:cnt}%
 
2130
      \expandafter\let\csname t:\accent:cnt\endcsname#1%
 
2131
\expandafter\let\csname m:\accent:cnt\endcsname#2%
 
2132
%
 
2133
      \edef\:temp{\ifx \accent:def\:UnDef \noexpand\def \else
 
2134
     \noexpand\accent:def \fi
 
2135
   \noexpand\:temp{\noexpand\ac:pc{\accent:cnt}}%
 
2136
   \noexpand\HLet\noexpand#1\noexpand\:temp
 
2137
   \noexpand\pend:defI
 
2138
  \noexpand\:accnts{\noexpand\ifnum ########1=\accent:cnt
 
2139
  \noexpand\expandafter \noexpand\acpc:
 
2140
  \expandafter\noexpand\csname\accent:cnt :ac\endcsname
 
2141
  \noexpand\expandafter \noexpand\end:accent \noexpand\fi}%
 
2142
}%
 
2143
\:temp
 
2144
\def\:temp{#1}\def\:tempa{#2}\ifx \:temp\:tempa \else \HLet#2#1\fi
 
2145
%
 
2146
      \Advance:\accent:cnt by 1
 
2147
   \fi
 
2148
   \edef\:tempa{\csname x:\string#2\endcsname}%
 
2149
   \def\:temp{#3}\ifx \:temp\empty \else
 
2150
  \expandafter\def\csname \:tempa :ac\endcsname{#3}
 
2151
\fi
 
2152
\long\def\:temp##1##2{#4#5}\ifx \:temp\:gobbleII \else
 
2153
  \expandafter\def\csname C:\:tempa\endcsname##1{#4}%
 
2154
  \expandafter\def\csname MT:\:tempa\endcsname##1##2{#5}%
 
2155
\fi
 
2156
%
 
2157
   }
 
2158
\def\accent:cnt{0}
 
2159
\def\end:accent#1\empty{}
 
2160
\def\:accnts#1{}
 
2161
 
 
2162
   \def\ac:pc{\Protect\csname acp:c\endcsname}
 
2163
\def\acp:c#1#2{{\def\acn:no{#1}\def\:temp{#2}\ifx \:temp\empty
 
2164
      \ac:nt{}%
 
2165
%
 
2166
   \else \let\@tabacckludge\:tabacckludge
 
2167
%
 
2168
      \def\ac:pc{\ac:nt{#2}}\a:cpc{#1}\fi }}
 
2169
\def\ac:nt{\csname \ifmmode m\else t\fi :\acn:no\endcsname}
 
2170
\def\Ac:nt{\edef\:temp{\ifx \EndPicture\:UnDef
 
2171
      \def\noexpand\ac:pc{\noexpand\Protect \noexpand\acp:c}%
 
2172
      \expandafter\noexpand \csname MT:\acn:no\endcsname
 
2173
  \fi
 
2174
  \expandafter\noexpand
 
2175
  \csname\ifmmode m\else t\fi :\acn:no\endcsname}\:temp
 
2176
}
 
2177
\def\a:cpc#1{%
 
2178
  \ifx \EndPicture\:UnDef
 
2179
     \def\AC:PC{{\let\AC:PC\ACP:C  \let\ac:nt\Ac:nt \ac:pc}%
 
2180
%
 
2181
     }%
 
2182
     \:accnts{#1}\empty
 
2183
  \else   \ac:pc  \fi  }
 
2184
\def\acpc:#1#2{%
 
2185
   \def\:tempa{#1}\ifx \:tempa\empty
 
2186
      \ifx \:temp\empty
 
2187
   \def\:tempa{#2}\ifx \:tempa\empty  \AC:PC
 
2188
   \else \csname \ifmmode m\else t\fi :\acn:no\endcsname{#2}%
 
2189
\fi
 
2190
\else \AC:PC \fi
 
2191
%
 
2192
   \else \ifx \:tempa\:temp  \let\AC:PC\empty
 
2193
             \csname C:\acn:no\endcsname{#2}%
 
2194
\fi
 
2195
         \expandafter\acpc:
 
2196
   \fi}
 
2197
 
 
2198
\fi
 
2199
 
 
2200
 
 
2201
\def\:halign:{<>}
 
2202
\:CheckOption{base}
 
2203
\if:Option  \else
 
2204
      \NewConfigure{$}[3]{%
 
2205
      \def\a:mth{\bgroup#1}\def\b:mth{#2\egroup}%
 
2206
      \def\c:mth{{\csname HCode\endcsname{}}%
 
2207
#3}%
 
2208
      \everymath{\ifx \EndPicture\:UnDef
 
2209
          $\a:mth\everymath{}\everydisplay{}$
 
2210
                 \aftergroup\b:mth \c:mth \fi}}
 
2211
   \NewConfigure{$$}[3]{%
 
2212
      \def\a:display{\bgroup#1}%
 
2213
      \def\b:display{#2\egroup}%
 
2214
      \def\c:display{#3}%
 
2215
      \everydisplay{\ifx \EndPicture\:UnDef
 
2216
           $$\a:display\everymath{}\everydisplay{}$$
 
2217
                 \aftergroup\b:display \c:display\fi}}
 
2218
 
 
2219
\def\PicDisplay{\pic:gobble\env:PD
 
2220
   \def\:temp{$$}\pic:cond\Pic:math\:temp}
 
2221
\def\EndPicDisplay{\end:condpic\pic:gobble\endenv:PD}
 
2222
\def\Pic:math{\hfil\break
 
2223
   \expand:after{\Picture*}\alt:Mth{ \c:Math}}
 
2224
\def\PicMath{\leavevmode\pic:gobble\env:PM\hbox\bgroup
 
2225
   \everymath{}\everydisplay{}\pic:cond\pic:math$}
 
2226
\def\EndPicMath{\end:condpic\egroup\pic:gobble\endenv:PM}
 
2227
\def\pic:math{\expand:after{\Picture+}\alt:mth{ \c:math}}
 
2228
\NewConfigure{PicDisplay}[4]{\def\alt:Mth{#3}%
 
2229
   \ifx \alt:Mth\empty\else \def\alt:Mth{[#3]}\fi\def\c:Math{#4}%
 
2230
   \c:def\env:PD{#1}\c:def\endenv:PD{#2}}
 
2231
\NewConfigure{PicMath}[4]{\def\alt:mth{#3}%
 
2232
   \ifx \alt:mth\empty\else \def\alt:mth{[#3]}\fi\def\c:math{#4}%
 
2233
   \c:def\env:PM{#1}\c:def\endenv:PM{#2}}
 
2234
\def\DviMath{\a:DviMath\leavevmode \MathClass \ht:special{t4ht@(}\vbox
 
2235
   \bgroup{\ht:everypar{}\leavevmode\ht:special{t4ht@)}}%
 
2236
 \DviSend}
 
2237
\def\EndDviMath{\EndDviSend \ht:special{t4ht@(}\egroup\ht:special{t4ht@)}%
 
2238
\EndMathClass \b:DviMath}
 
2239
\NewConfigure{DviMath}{2}
 
2240
\def\PMath{\bgroup\Canvas \x:SUBOff  \x:SUPOff
 
2241
   \let\Picture\empty \everymath{}\everydisplay{}}
 
2242
\def\EndPMath{\EndCanvas\egroup}
 
2243
\:CheckOption{PMath} \if:Option
 
2244
   \def\:Pmath{$\PMath$\aftergroup\EndPMath}
 
2245
   \def\:Pdisp{$$\PMath$$\aftergroup\EndPMath}
 
2246
   \everymath{\:Pmath}
 
2247
   \everydisplay{\:Pdisp}
 
2248
\fi
 
2249
 
 
2250
   \let\s:b\sb
 
2251
\let\:sbb\sb                 
 
2252
\def\sb{\m:op\:sbb{SUB}}
 
2253
\catcode`\_8
 
2254
\:CheckOption{no_} \if:Option
 
2255
   \let\s:b\:UndFi
 
2256
   \let\x:SUBOff\empty  \let\x:SUBOn\empty
 
2257
 
 
2258
   \let\SUBOff\empty  \let\SUBOn\empty
 
2259
 
 
2260
   \def\no:restore{\let\no:restore\:UnDef}
 
2261
\else
 
2262
   \Log:Note{for non active \string_,
 
2263
       use the command line option `no\string_'}%
 
2264
   \ifx \sys:sb\:UnDef \def\:tempaa{_}
 
2265
\else               \def\:tempaa{\noexpand\sys:sb}\fi
 
2266
 
 
2267
   \ifx \sys:sb\:UnDef \def\:tempa#1{\append:def\SUBOff{\let#1_}}
 
2268
\else               \def\:tempa#1{\append:def\SUBOff{\def#1{%
 
2269
  \ifmmode \expandafter\s:b \else \expandafter\sys:sb \fi
 
2270
}%
 
2271
}}\fi
 
2272
 
 
2273
   \catcode`\_13
 
2274
      \if:Option
 
2275
   \def\S:b{\m:op\s:b{SUB}}
 
2276
\else
 
2277
   \def\S:b#1{\def\SuB:{#1}\futurelet\:temp\sub:sup}
 
2278
   \def\blank:space{
 
2279
   }
 
2280
   \def\sub:sup{\expandafter
 
2281
      \ifx \blank:space\:temp \expandafter\sub:supA
 
2282
       \else   \expandafter\after:sub\fi}
 
2283
   \expandafter\def
 
2284
      \expandafter\sub:supA\blank:space{\futurelet\:temp\sub:sup}
 
2285
   \def\after:sub{\futurelet\:temp\choose:sub}
 
2286
\def\choose:sub{\expandafter
 
2287
   \ifx \csname \meaning\:temp sb\endcsname\relax
 
2288
       \expandafter \a:putSUB
 
2289
   \else
 
2290
       \expandafter\expandafter\csname \meaning\:temp sb\endcsname
 
2291
   \fi
 
2292
}
 
2293
 
 
2294
   \def\a:putSUB{\sub:I \SuB:}
 
2295
   \def\sub:I{\m:op\s:b{SUB}}
 
2296
\fi
 
2297
 
 
2298
      \def\x:SUBOff{\let_\s:b}
 
2299
      \def\pr:sb{\ifx \EndPicture\:UnDef
 
2300
                     \expandafter\Protect\expandafter\S:b
 
2301
                 \else \expandafter\s:b \fi}
 
2302
      \edef\:SUBOff{\def\noexpand_{\:tempaa}}
 
2303
 
 
2304
      \:tempa_
 
2305
 
 
2306
      \def\x:SUBOn{\def_{\ifmmode \expandafter\pr:sb
 
2307
                 \else    \expandafter\sys:sb\fi}\let\sb=_
 
2308
}
 
2309
\x:SUBOn
 
2310
 
 
2311
      \def\SUBOn{\catcode`\_8
 
2312
   \def_{\ifmmode \expandafter\pr:sb
 
2313
         \else    \expandafter\sys:sb\fi}}
 
2314
\SUBOn
 
2315
 
 
2316
   \catcode`\_8
 
2317
   \:CheckOption{_13} \if:Option
 
2318
      \def\no:restore{\let\no:restore\:UnDef
 
2319
                \mathcode`\_"8000 \catcode`\_13 }
 
2320
      \append:def\SUBOn{\mathcode`\_"8000 \catcode`\_13 \let\sb=_
 
2321
}
 
2322
   \else
 
2323
      \Log:Note{for \string_ of catcode 13,
 
2324
          use the command line option `\string_13'}
 
2325
      \def\no:restore{\let\no:restore\:UnDef
 
2326
                \mathcode`\_"8000 \catcode`\_12 }
 
2327
      \append:def\SUBOn{\mathcode`\_"8000 \catcode`\_12 \let\sb=_
 
2328
}
 
2329
   \fi
 
2330
   \bgroup
 
2331
      \SUBOn  \def\:temp{\let\sb=_
 
2332
}
 
2333
   \expandafter \egroup \:temp
 
2334
\fi
 
2335
\let\s:p\sp
 
2336
\let\:spp\sp
 
2337
\def\sp{\m:op\:spp{SUP}}
 
2338
\catcode`\^7
 
2339
\NewConfigure{\string^\string^}[2]{%
 
2340
   \def\:tempa##1>{}\def\:temp{#1}\:warning{\string
 
2341
       \Configure{\string\string\string ^\string\string
 
2342
       \string^}{\expandafter\:tempa\meaning \:temp}{...}
 
2343
       ignored; option \string^13 is not on}}
 
2344
 
 
2345
\:CheckOption{no^} \if:Option
 
2346
   \let\s:p\:UndFi
 
2347
   \let\x:SUPOff\empty  \let\x:SUPOn\empty
 
2348
 
 
2349
   \let\SUPOff\empty \let\SUPOn\empty
 
2350
 
 
2351
\else
 
2352
   \Log:Note{for non active \string^,
 
2353
       use the command line option `no\string^'}%
 
2354
   \ifx \sys:sp\:UnDef \def\:tempbb{^}
 
2355
\else               \def\:tempbb{\noexpand\sys:sp}\fi
 
2356
%
 
2357
   \ifx \sys:sp\:UnDef \def\:tempb#1{\append:def\SUPOff{\let#1^}}
 
2358
\else               \def\:tempb#1{\append:def\SUPOff{\def#1{%
 
2359
  \ifmmode \expandafter\s:p \else \expandafter\sys:sp \fi
 
2360
}%
 
2361
}}\fi
 
2362
%
 
2363
   \catcode`\^13
 
2364
      \if:Option
 
2365
   \def\S:p{\m:op\s:p{SUP}}
 
2366
\else
 
2367
   \def\S:p#1{\def\SuP:{#1}\futurelet\:temp\sup:sub}
 
2368
   \:CheckOption{^13} \if:Option \catcode`\_13
 
2369
   \else \catcode`\_12\fi
 
2370
   \def\blank:space{
 
2371
   }
 
2372
   \def\sup:sub{\expandafter
 
2373
      \ifx \blank:space\:temp \expandafter\sup:subA
 
2374
       \else   \expandafter\sup:subB\fi}
 
2375
   \expandafter\def
 
2376
      \expandafter\sup:subA\blank:space{\futurelet\:temp\sup:sub}
 
2377
   \def\sup:subB{\ifx _\:temp \expandafter\SUP:SUB
 
2378
      \else \expandafter\a:putSUP \fi }
 
2379
   \catcode`\_8
 
2380
   \def\a:putSUP{\sup:I \SuP:}
 
2381
   \def\sup:I{\m:op\s:p{SUP}}
 
2382
\fi
 
2383
 
 
2384
      \def\x:SUPOff{\let^\s:p }
 
2385
      \def\pr:sp{\ifx \EndPicture\:UnDef
 
2386
                     \expandafter\Protect\expandafter\S:p
 
2387
                 \else \expandafter\s:p \fi}
 
2388
      \edef\:SUPOff{\def\noexpand^{\:tempbb}}
 
2389
 
 
2390
      \:tempb^
 
2391
 
 
2392
      \def\x:SUPOn{\def^{\ifmmode \expandafter\pr:sp
 
2393
                 \else    \expandafter\sys:sp\fi}\let\sp=^
 
2394
}
 
2395
\x:SUPOn
 
2396
 
 
2397
      \def\SUPOn{%
 
2398
   \def^{\ifmmode \expandafter\pr:sp
 
2399
         \else    \expandafter\sys:sp\fi}}
 
2400
\SUPOn
 
2401
 
 
2402
      \def\:sUp{%
 
2403
   \let\:sUp^%
 
2404
   \def^{\futurelet\:temp\next:hat}
 
2405
   \def\next:hat{\ifx ^\:temp \expandafter\:dblhat\else
 
2406
      \expandafter\:sUp\fi}%
 
2407
}
 
2408
 
 
2409
   \catcode`\^7
 
2410
   \:CheckOption{^13} \if:Option
 
2411
      \:sUp
 
2412
\def\:dblhat#1#2{\def\:temp{#2}%
 
2413
   \def\:tempc{\def\:tempa####1>{}\:warning{\string^\string
 
2414
       ^\expandafter\:tempa\meaning\:temp? \string\Configure{\string
 
2415
       \string\string ^\string\string\string^}{\expandafter\:tempa
 
2416
       \meaning \:temp}{...} or use option no\string^}}%
 
2417
   \ext:chr \:tempc}
 
2418
\let\ext:chr\empty
 
2419
\NewConfigure{\string^\string^}[2]{%
 
2420
   \NewConfigure{\string^\string^}{2}%
 
2421
   \append:def\ext:chr{\def\:tempa{#1}\ifx \:temp\:tempa
 
2422
      \def\:tempc{#2}\fi}}
 
2423
 
 
2424
      \append:def\no:restore{\mathcode`\^"8000 \catcode`\^13 }
 
2425
      \append:def\SUPOn{\mathcode`\^"8000 \catcode`\^13 \let\sp=^
 
2426
}
 
2427
   \else
 
2428
      \Log:Note{for \string^ of catcode 13,
 
2429
          use the command line option `\string^13'}%
 
2430
      \append:def\no:restore{\mathcode`\^"8000 \catcode`\^12 }
 
2431
      \append:def\SUPOn{\mathcode`\^"8000 \catcode`\^12 \let\sp=^
 
2432
}
 
2433
   \fi
 
2434
   \bgroup
 
2435
      \SUPOn  \def\:temp{\let\sp=^
 
2436
}
 
2437
   \expandafter \egroup \:temp
 
2438
\fi
 
2439
\def\m:op{\ifx \EndPicture\:UnDef  \expandafter\:mop
 
2440
          \else                    \expandafter\:m:p\fi}
 
2441
\def\:mop{\relax\ifmmode \expandafter \mo:p \else \expandafter\mop:\fi}
 
2442
\def\mo:p#1#2#3{{\csname a:#2\endcsname
 
2443
   #1{#3}\csname b:#2\endcsname}}
 
2444
\def\mop:#1#2#3{#1}
 
2445
\def\:m:p#1#2{#1}
 
2446
\NewConfigure{SUB}{2}
 
2447
\NewConfigure{SUP}{2}
 
2448
\:CheckOption{no^} \if:Option \else \:CheckOption{no_}\fi
 
2449
\if:Option
 
2450
   \NewConfigure{SUBSUP}[3]{}
 
2451
   \NewConfigure{SUPSUB}[3]{}
 
2452
   \NewConfigure{SUB/SUP}[6]{}
 
2453
\else
 
2454
   \def\SUP:SUB#1#2{\let\chs:sbsp\:gobble\def\SuB:{#2}\SUBSUP:}
 
2455
   \def\SUB:SUP#1#2{\def\chs:sbsp##1##2{##1}\def\SuP:{#2}\SUBSUP:}
 
2456
   \let\SUBSUP:\empty
 
2457
   \NewConfigure{SUBSUP}[3]{%
 
2458
      \def\:temp{#1#2#3}\ifx \:temp\empty
 
2459
        \def\SUBSUP:{\sub:I\SuB:\sup:I\SuP:}%
 
2460
      \else   \def\SUBSUP:{#1\s:b{\SuB:}#2\s:p{\SuP:}#3}\fi}
 
2461
   \NewConfigure{SUPSUB}[3]{%
 
2462
      \def\:temp{#1#2#3}\ifx \:temp\empty
 
2463
        \def\SUBSUP:{\sup:I\SuP:\sub:I\SuB:}%
 
2464
      \else   \def\SUBSUP:{#1\s:p{\SuP:}#2\s:b{\SuB:}#3}\fi}
 
2465
   \NewConfigure{SUB/SUP}[6]{%
 
2466
      \def\:temp{#1#2#3#4#5#6}\ifx \:temp\empty
 
2467
        \def\SUBSUP:{\sub:I\SuB:\sup:I\SuP:}%
 
2468
      \else   \def\SUBSUP:{\chs:sbsp
 
2469
                 {#1\s:b{\SuB:}#2\s:p{\SuP:}#3}%
 
2470
                 {#4\s:p{\SuP:}#5\s:b{\SuB:}#6}}\fi}
 
2471
\fi
 
2472
 
 
2473
   \def\MathClass{\ht:special{t4ht\string^}}
 
2474
\let\EndMathClass\MathClass
 
2475
\def\PauseMathClass{\ht:special{t4ht\string^-}}
 
2476
\def\EndPauseMathClass{\ht:special{t4ht\string^+}}
 
2477
\catcode`\^=7
 
2478
\NewConfigure{MathClass}[5]{\NoFonts \ht:special{t4ht@[}%
 
2479
   \def\:temp{#2}\ifx \:temp\empty \else
 
2480
      \ht:special{t4ht\string^#1#2#3#2#4}\fi
 
2481
   \def\:temp{#5}\ifx \:temp\empty \else
 
2482
      \bgroup \everypar{}\everymath{}\everydisplay{}%
 
2483
      \hbox{${\ht:special{t4ht\string^#1}%
 
2484
         {#5}^{{#5}^{#5}}\ht:special{t4ht\string^}}$}%
 
2485
      \vbox{$${\ht:special
 
2486
         {t4ht\string^#1}{#5}^{{#5}^{#5}}\ht:special{t4ht\string^}}$$}\egroup
 
2487
   \fi
 
2488
   {\everypar{}\noindent\vfill\break}%
 
2489
   \ht:special{t4ht@]}\EndNoFonts
 
2490
}
 
2491
\NewConfigure{MathDelimiters}[2]{\NoFonts \ht:special{t4ht@[}%
 
2492
  \bgroup \everypar{}\everymath{}\everydisplay{}%
 
2493
  \hbox{${\ht:special
 
2494
                     {t4ht\string^4}#1\ht:special{t4ht\string^5}#2%
 
2495
    \ht:special{t4ht\string^4}{}^{#1}\ht:special{t4ht\string^5}{}^{#2}%
 
2496
    \ht:special{t4ht\string^4}{}^{{}^{#1}}\ht:special
 
2497
                                         {t4ht\string^5}{}^{{}^{#2}}%
 
2498
    \ht:special{t4ht\string^}}$}%
 
2499
  \vbox{$${\ht:special
 
2500
                     {t4ht\string^4}#1\ht:special{t4ht\string^5}#2%
 
2501
    \ht:special{t4ht\string^4}{}^{#1}\ht:special{t4ht\string^5}{}^{#2}%
 
2502
    \ht:special{t4ht\string^4}{}^{{}^{#1}}\ht:special
 
2503
                                         {t4ht\string^5}{}^{{}^{#2}}%
 
2504
    \ht:special{t4ht\string^}}$$}%
 
2505
    {\everypar{}\noindent\vfill\break}%
 
2506
    \ht:special{t4ht@]}\egroup
 
2507
  \EndNoFonts}
 
2508
\catcode`\^=12
 
2509
\HAssign\New:MathClass7
 
2510
\catcode`\/=0
 
2511
\catcode`\\=12
 
2512
/def/NewMathClass#1{/relax
 
2513
  /expandafter/ifx /csname /expandafter/:gobble/string#1/endcsname/relax
 
2514
    /gHAdvance/New:MathClass by 1/relax
 
2515
    /ifnum /New:MathClass>78
 
2516
       /:warning{Too many math classes}
 
2517
    /else
 
2518
       /HAssign#1/New:MathClass /def/:tempc{#1}/:NewMC
 
2519
       0123456789:;<=>?%
 
2520
       @ABCDEFGHIJKLMNO%
 
2521
       PQRSTUVWXYZ[\]{/string^}{/string_}%
 
2522
       `abcdefghijklmno%
 
2523
       pqrstuvwxyz{/string{}|{/string}}{/string~}!*?: %
 
2524
    /fi
 
2525
  /else
 
2526
     /:warning{/string#1 is already defined}
 
2527
  /fi}
 
2528
/catcode`/\=0
 
2529
\catcode`\/=12
 
2530
\def\:NewMC#1{%
 
2531
   \ifnum \:tempc=0 \expandafter\xdef\:tempc{#1}\expandafter\stop:do
 
2532
   \else
 
2533
      \expandafter\HAdvance\:tempc  -1\relax
 
2534
      \expandafter\:NewMC
 
2535
   \fi
 
2536
}
 
2537
\NewConfigure{nolimits}[1]{\def\:temp{#1}\ifx \:temp\empty
 
2538
   \let\nolimits\o:nolimits: \else
 
2539
   \def\:temp{\o:nolimits:\futurelet\:temp\:nolimits}%
 
2540
   \def\:nolimits{\ifx \:temp\limits \else
 
2541
                  \ifx \:temp\nolimits \else #1\fi\fi}%
 
2542
   \HLet\nolimits\:temp \fi}
 
2543
\let\o:nolimits:\nolimits
 
2544
\NewConfigure{limits}[1]{\def\:temp{#1}\ifx \:temp\empty
 
2545
   \let\limits\o:limits: \else
 
2546
   \def\:limits{\ifx \:temp\nolimits \else#1\fi}%
 
2547
   \def\:temp{\o:limits:\:l:mits}%
 
2548
   \HLet\limits\:temp \fi}
 
2549
\let\o:limits:\limits
 
2550
 
 
2551
\def\::limits{\expandafter\ifx \blank:spc\:temp
 
2552
     \afterassignment\:l:mits \tmp:cnt0%
 
2553
  \else\expandafter\:limits \fi}
 
2554
\def\:l:mits{\futurelet\:temp\::limits}
 
2555
\catcode`\ =13\relax\def\blank:spc{\let\blank:spc= }\blank:spc%
 
2556
\catcode`\ =10\relax
 
2557
 
 
2558
   \def\:temp{\a:mathord \o:mathord:}      \HLet\mathord\:temp
 
2559
\let\a:mathord\empty
 
2560
\def\:temp{\a:mathop \o:mathop:}        \HLet\mathop\:temp
 
2561
\let\a:mathop\empty
 
2562
\def\:temp{\a:mathbin \o:mathbin:}      \HLet\mathbin\:temp
 
2563
\let\a:mathbin\empty
 
2564
\def\:temp{\a:mathrel \o:mathrel:}      \HLet\mathrel\:temp
 
2565
\let\a:mathrel\empty
 
2566
\def\:temp{\a:mathopen \o:mathopen:}    \HLet\mathopen\:temp
 
2567
\let\a:mathopen\empty
 
2568
\def\:temp{\a:mathclose \o:mathclose:}  \HLet\mathclose\:temp
 
2569
\let\a:mathclose\empty
 
2570
\def\:temp{\a:mathpunct \o:mathpunct:}  \HLet\mathpunct\:temp
 
2571
\let\a:mathpunct\empty
 
2572
\NewConfigure{FormulaClass}[4]{%
 
2573
   \def\:temp{#2}%
 
2574
   \expandafter\edef\csname a:\ifcase #1 mathord\or mathop\or
 
2575
      mathbin\or mathrel\or mathopen\or mathclose\else
 
2576
      mathpunc\fi\endcsname{\noexpand\ht:special
 
2577
      {t4ht\string^\ifx\:temp\empty#1)\else )#2#3#2#4\fi}}}
 
2578
\NewConfigure{FormulaClass*}[4]{%
 
2579
   \def\:temp{#2}%
 
2580
   \expandafter\edef\csname a:\ifcase #1 mathord\or mathop\or
 
2581
      mathbin\or mathrel\or mathopen\or mathclose\else
 
2582
      mathpunc\fi\endcsname{\ht:special
 
2583
      {t4ht\string^\ifx\:temp\empty#1(\else (#2#3#2#4\fi}}}
 
2584
\NewConfigure{mathord}[4]{\Configure{FormulaClass}{0}{#1}{#2}{#3}%
 
2585
   \pend:def\a:mathord{#4}}
 
2586
\NewConfigure{mathop}[4]{\Configure{FormulaClass}{1}{#1}{#2}{#3}%
 
2587
   \pend:def\a:mathop{#4}}
 
2588
\NewConfigure{mathbin}[4]{\Configure{FormulaClass}{2}{#1}{#2}{#3}%
 
2589
   \pend:def\a:mathbin{#4}}
 
2590
\NewConfigure{mathrel}[4]{\Configure{FormulaClass}{3}{#1}{#2}{#3}%
 
2591
   \pend:def\a:mathrel{#4}}
 
2592
\NewConfigure{mathopen}[4]{\Configure{FormulaClass}{4}{#1}{#2}{#3}%
 
2593
   \pend:def\a:mathopen{#4}}
 
2594
\NewConfigure{mathclose}[4]{\Configure{FormulaClass}{5}{#1}{#2}{#3}%
 
2595
   \pend:def\a:mathclose{#4}}
 
2596
\NewConfigure{mathpunct}[4]{\Configure{FormulaClass}{6}{#1}{#2}{#3}%
 
2597
   \pend:def\a:mathpunct{#4}}
 
2598
\NewConfigure{mathord*}[4]{\Configure{FormulaClass*}{0}{#1}{#2}{#3}%
 
2599
   \pend:def\a:mathord{#4}}
 
2600
\NewConfigure{mathop*}[4]{\Configure{FormulaClass*}{1}{#1}{#2}{#3}%
 
2601
   \pend:def\a:mathop{#4}}
 
2602
\NewConfigure{mathbin*}[4]{\Configure{FormulaClass*}{2}{#1}{#2}{#3}%
 
2603
   \pend:def\a:mathbin{#4}}
 
2604
\NewConfigure{mathrel*}[4]{\Configure{FormulaClass*}{3}{#1}{#2}{#3}%
 
2605
   \pend:def\a:mathrel{#4}}
 
2606
\NewConfigure{mathopen*}[4]{\Configure{FormulaClass*}{4}{#1}{#2}{#3}%
 
2607
   \pend:def\a:mathopen{#4}}
 
2608
\NewConfigure{mathclose*}[4]{\Configure{FormulaClass*}{5}{#1}{#2}{#3}%
 
2609
   \pend:def\a:mathclose{#4}}
 
2610
\NewConfigure{mathpunct*}[4]{\Configure{FormulaClass*}{6}{#1}{#2}{#3}%
 
2611
   \pend:def\a:mathpunct{#4}}
 
2612
 
 
2613
   \def\MathSymbol#1#2{%
 
2614
   \def\:tempb##1"##2///{##1}%
 
2615
   \edef\:tempa{\expandafter\expandafter\expandafter\:tempb
 
2616
       \expandafter\meaning\csname#2\endcsname"///}%
 
2617
   \edef\:tempc{\string\mathchar}%
 
2618
   \ifx \:tempa\:tempc \else
 
2619
      \def\:temp{{\math:sym#1{#2}}}%
 
2620
      \expandafter\HLet\csname #2\endcsname\:temp
 
2621
   \fi
 
2622
   \NewConfigure{#2}{1}\Configure{#2}{\csname o:#2:\endcsname}}
 
2623
\def\math:sym#1#2{{\relax\ifmmode \expandafter#1\fi
 
2624
   {\csname a:#2\endcsname}}}
 
2625
\def\:temp#1{\a:left{#1}\o:left:#1\b:left{#1}}
 
2626
\HLet\left\:temp
 
2627
\def\:temp#1{\a:right{#1}\o:right:#1\b:right{#1}}
 
2628
\HLet\right\:temp
 
2629
\NewConfigure{left}[2]{\def\a:left##1{#1}\def\b:left##1{#2}}
 
2630
\NewConfigure{right}[2]{\def\a:right##1{#1}\def\b:right##1{#2}}
 
2631
\Configure{left}{}{}
 
2632
\Configure{right}{}{}
 
2633
\def\:tempc{\pic:gobble\a:over \o:over: \pic:gobble\b:over}
 
2634
\HLet\over\:tempc
 
2635
\NewConfigure{over}{2}
 
2636
\def\:tempc{\pic:gobble\a:atop \o:atop: \pic:gobble\b:atop}
 
2637
\HLet\atop\:tempc
 
2638
\NewConfigure{atop}{2}
 
2639
\def\::above{\pic:gobble\a:above \o:above:\tmp:dim
 
2640
            \pic:gobble\b:above }
 
2641
\def\:above{\afterassignment\::above}
 
2642
\def\:tempc{\Protect\:above \tmp:dim}
 
2643
\HLet\above\:tempc
 
2644
\NewConfigure{above}{2}
 
2645
\def\::abovewithdelims#1#2{\pic:gobble\a:abovewithdelims
 
2646
   \o:abovewithdelims:#1#2\tmp:dim\pic:gobble\b:abovewithdelims}
 
2647
\def\:abovewithdelims#1#2{\def\:temp{\::abovewithdelims#1#2}%
 
2648
   \afterassignment\:temp\tmp:dim=}
 
2649
\def\:tempc{\Protect\:abovewithdelims }
 
2650
\HLet\abovewithdelims\:tempc
 
2651
                            \NewConfigure{abovewithdelims}{2}
 
2652
\def\:overwithdelims#1#2{\pic:gobble\a:overwithdelims
 
2653
   \o:overwithdelims:#1#2\pic:gobble\b:overwithdelims}
 
2654
\def\:tempc{\Protect\:overwithdelims}
 
2655
\HLet\overwithdelims\:tempc
 
2656
                            \NewConfigure{overwithdelims}{2}
 
2657
\def\:atopwithdelims#1#2{\pic:gobble\a:atopwithdelims
 
2658
   \o:atopwithdelims:#1#2\pic:gobble\b:atopwithdelims}
 
2659
\def\:tempc{\Protect\:atopwithdelims}
 
2660
\HLet\atopwithdelims\:tempc
 
2661
                            \NewConfigure{atopwithdelims}{2}
 
2662
\def\:temp{\pic:gobble\a:radical\o:radical:}
 
2663
\HLet\radical\:temp
 
2664
\NewConfigure{radical}{1}
 
2665
\def\:temp#1#2#3#4{\a:mathchoice
 
2666
   \o:mathchoice:{#1}{#2}{#3}{#4}\b:mathchoice }
 
2667
\HLet\mathchoice\:temp
 
2668
\NewConfigure{mathchoice}{2}
 
2669
\def\:temp{\o:eqno:\a:eqno}
 
2670
\HLet\eqno\:temp
 
2671
\def\:temp{\o:leqno:\a:leqno}
 
2672
\HLet\leqno\:temp
 
2673
\NewConfigure{eqno}{1}
 
2674
\NewConfigure{leqno}{1}
 
2675
 
 
2676
\fi
 
2677
 
 
2678
\edef\:temp{\string\special}
 
2679
\edef\:tempa{\meaning\special}
 
2680
\ifx \:temp\:tempa \else
 
2681
   \def\:temp{\special
 
2682
}
 
2683
   \ifx \:temp\ht:special
 
2684
     \:warning{Redefined \string\special. Might
 
2685
                need \string\Configure{special}{<system-special>}}
 
2686
\fi\fi
 
2687
\NewConfigure{Link}[4]{%
 
2688
   \def\empty:lnk{#4}\ifx\empty:lnk\empty\else \def\:sharp{#4}\fi
 
2689
   \let\empty:lnk\empty     \def\tag:A{#1}%
 
2690
   \def\HREF:{#2}\def\NAME:{#3}}
 
2691
\Configure{Link}{}{}{}{}
 
2692
\let\NOHREF:\:gobble
 
2693
 
 
2694
   \Hinput{tex4ht}
 
2695
   \def\at:docend{\ifnum \HPageDepth> 0 \EndHPage[1]{}\fi
 
2696
\Close:UntilEnd
 
2697
%
 
2698
%
 
2699
\HAssign\op:fl\maxfile:id\space  \close:files
 
2700
\root:next
 
2701
\ifx \nsrt:chlnks\:UnDef
 
2702
\else \nsrt:chlnks{tail}{}{BackChild}\fi
 
2703
%
 
2704
{\b:BODY \b:HTML}%
 
2705
%
 
2706
\global\let\at:docend=\empty}
 
2707
\expand:after{\let\o:end}\csname end\endcsname
 
2708
\expandafter\def\csname end\endcsname{\HtmlEnv
 
2709
   \at:docend
 
2710
   \csname export:hook\endcsname   \csname o:end\endcsname}
 
2711
 
 
2712
\fi
 
2713
\long\def\NewSection#1#2{%
 
2714
   \Def:Section#1{#2}{##1}%
 
2715
   \edef\:temp{\expandafter\:gobble\string#1}%
 
2716
   \Configure:Sec\:temp{}{}{}{}%
 
2717
   \ConfigureToc{\expandafter\:gobble\string#1}{\empty}{\empty}{}{}}
 
2718
\def\Def:Section#1{%
 
2719
   \edef\:tempc{{\expandafter\:gobble \string#1}}%
 
2720
   \edef\:temp{\long\def\expandafter\noexpand \csname
 
2721
    c:\expandafter\:gobble \string#1:\endcsname
 
2722
      ####1####2####3####4{\noexpand
 
2723
      \Configure:Sec\:tempc{####3}{####4}{####1}{####2}}%
 
2724
   \noexpand\NewConfigure{CutAt\expandafter\:gobble \string#1}2%
 
2725
   \noexpand\NewConfigure{+CutAt\expandafter\:gobble \string#1}2%
 
2726
   }\:temp  \expandafter\Configure\:tempc{\empty}{}{\empty}{}%
 
2727
%
 
2728
   \futurelet\:temp\ch:NewSec}
 
2729
\def\ch:NewSec{\if *\:temp\let\if:toc\:gobble\expandafter\op:NewSec
 
2730
               \else  \let\if:toc\empty  \expand:after{\op:NewSec+}\fi}
 
2731
\def\op:NewSec#1{\expandafter\:NewSec\:tempc}
 
2732
\def\:Every#1{%
 
2733
   \expandafter\edef\csname Every#1\endcsname{%
 
2734
      \def\expandafter\noexpand \csname :Every#1\endcsname####1}%
 
2735
   \expandafter\edef\csname BeforeEvery#1\endcsname{%
 
2736
      \def\expandafter\noexpand\csname :BeforeEvery#1\endcsname####1}%
 
2737
}
 
2738
%
 
2739
\def\:NewSec#1#2{%
 
2740
   \NewConfigure{end#1}[1]{\expandafter
 
2741
   \def\csname a:end#1\endcsname{##1}}%
 
2742
\Configure{end#1}{}
 
2743
%
 
2744
   \expandafter\def\csname #1\endcsname{%
 
2745
      \expand:after{\let\if:toc}\csname if:#1toc\endcsname
 
2746
      \:StartSec{#1}{#2}}%
 
2747
   \expandafter\def\csname c:#1TITLE+:\endcsname{%
 
2748
   \expandafter\def\csname a:#1TITLE\endcsname####1}%
 
2749
%
 
2750
   \expandafter\let\csname if:#1toc\endcsname\if:toc
 
2751
   \:Every{#1}%
 
2752
\csname Every#1\endcsname{%
 
2753
   \expandafter\ifx\csname Toc:#1\endcsname \relax\else
 
2754
       \a:TocAt  \csname Toc:#1\endcsname \b:TocAt
 
2755
   \fi
 
2756
   \ignorespaces}%
 
2757
%
 
2758
   \expandafter\def\csname #1:ttl\endcsname##1}
 
2759
\def\:Ttle#1#2#3{%
 
2760
   \html:addr
 
2761
   \Get:SecAnchor{#1}{#2}{#3}%
 
2762
%
 
2763
   {\escapechar=`\\%
 
2764
\protect:wrtoc
 
2765
\csname Modify#1ToToc\endcsname
 
2766
\edef\:writetoc{\csname if:toc\endcsname{\the\:tokwrite
 
2767
   {\string\doTocEntry
 
2768
    \string\toc \expandafter\ifx\csname toToc:#1\endcsname\relax #1\else
 
2769
       \csname toToc:#1\endcsname\fi
 
2770
       {#2}{\html:tocsec{\ifx \TocTitle\:UnDef #3\else
 
2771
       \TocTitle\fi}}{\the\:tokpage}\relax}}}%
 
2772
\:writetoc   \global\let\TocTitle\:UnDef
 
2773
}%
 
2774
   {\csname #1:Href-\endcsname
 
2775
%
 
2776
\no:lbl:idx \csname Modify#1Title\endcsname
 
2777
\html:sectoc{#3}%
 
2778
}%
 
2779
}
 
2780
\gHAssign\TitleCount0   \global\let\mu:span\TitleCount
 
2781
\NewConfigure{toToc}[2]{%
 
2782
   \if !#2!\expandafter\let\csname toToc:#1\endcsname\:UnDef
 
2783
   \else \if !#1!%
 
2784
        \expandafter\let\csname IF:#2toc\expandafter\endcsname
 
2785
             \csname if:#2toc\endcsname
 
2786
        \expandafter\let\csname if:#2toc\endcsname\:gobble
 
2787
   \else \edef\:temp{@}\edef\:tempa{#1}%
 
2788
   \ifx \:temp\:tempa
 
2789
         \expandafter\let\csname if:#2toc\endcsname\empty
 
2790
   \else \edef\:temp{?}%
 
2791
   \ifx \:temp\:tempa
 
2792
        \expandafter\let\csname if:#2toc\expandafter\endcsname
 
2793
             \csname IF:#2toc\endcsname
 
2794
   \else
 
2795
     \expandafter\def\csname toToc:#1\endcsname{#2}%
 
2796
   \fi\fi\fi\fi}
 
2797
\ifx \:tokwrite\:UnDef
 
2798
   \csname newtoks\endcsname\:tokwrite
 
2799
\fi
 
2800
\ifx \:tokpage\:UnDef
 
2801
   \csname newtoks\endcsname\:tokpage
 
2802
\fi
 
2803
\:tokpage={\folio}
 
2804
\:tokwrite{\write\:tocout}
 
2805
\def\Get:SecAnchor#1#2#3{}
 
2806
 
 
2807
\long\def\Configure:Sec#1#2#3#4#5{%
 
2808
  \expandafter\ifx\csname c:#1\endcsname\relax \let\:tempa\relax \else
 
2809
  \def\:tempa{#4#5}\fi  \ifx\:tempa\empty \else
 
2810
     \expandafter\c:def\csname c:#1\endcsname{#4}%
 
2811
\expandafter\c:def\csname d:#1\endcsname{#5}%
 
2812
\fi
 
2813
  \expandafter\ifx\csname a:#1\endcsname\relax \let\:tempa\relax \else
 
2814
  \def\:tempa{#2#3}\fi  \ifx\:tempa\empty \else
 
2815
     \expandafter\def\csname a:#1\endcsname##1{#2}%
 
2816
     \expandafter\def\csname b:#1\endcsname##1{#3}%
 
2817
  \fi
 
2818
}
 
2819
 
 
2820
\ifHtml  \def\noct:Close:Until{%
 
2821
   \let\:tempA\sec:typ  \let\found:\empty
 
2822
   \let\:tempd\:Sections    \noct:Check:Until
 
2823
   \ifx \:tempb\sec:typ \expandafter\Do:Close  \fi
 
2824
   \let\sec:typ\:tempA
 
2825
}
 
2826
\def\noct:Check:Until{%
 
2827
   \ifx \:tempd\empty  \ifx \found:\empty  \let\:tempb\empty
 
2828
\else  \let\:tempb\found: \let\sec:typ\found:\fi
 
2829
\else
 
2830
      \PopStack\:tempd\:tempb
 
2831
      \edef\:tempe{\:tempb,%
 
2832
   \expandafter\ifx \csname a:end\:tempb\endcsname\relax \else
 
2833
     \csname a:end\:tempb\endcsname \fi,,}%
 
2834
\expandafter\mod:typ\:tempe!*?: %
 
2835
%
 
2836
      \ifx \:tempb\sec:typ \else
 
2837
         \expandafter\expandafter\expandafter\noct:Check:Until
 
2838
   \fi\fi }
 
2839
\def\mod:typ#1,#2!*?: {%
 
2840
   \def\:temp{#1}\ifx \:temp\empty\else
 
2841
      \edef\:temp{\expandafter\expandafter\expandafter
 
2842
         \:gobble\expandafter\string \csname #1\endcsname}%
 
2843
      \ifx \sec:typ\:temp
 
2844
           \let\found:\:tempb  \let\:temp\empty
 
2845
      \else \def\:temp{\mod:typ#2!*?: }\fi
 
2846
   \fi \:temp
 
2847
}
 
2848
\def\Close:Until{%
 
2849
   \let\:tempd\:Sections    \Check:Until
 
2850
   \ifx \:tempb\sec:typ \expandafter\Do:Close  \fi
 
2851
}
 
2852
\def\Check:Until{
 
2853
   \ifx \:tempd\empty  \let\:tempb\empty \else
 
2854
        \PopStack\:tempd\:tempb
 
2855
       \ifx \:tempb\sec:typ \else
 
2856
      \expandafter\expandafter\expandafter\Check:Until
 
2857
   \fi\fi }
 
2858
\PushStack\:Sections{}%
 
2859
\PopStack\:Sections\:temp
 
2860
\def\Do:Close{%
 
2861
   \PopStack\:Sections\:tempb
 
2862
   \ifx \sec:typ\:tempb \else
 
2863
      \csname d:\:tempb\endcsname
 
2864
      \expandafter\Do:Close
 
2865
   \fi
 
2866
}
 
2867
\def\Close:UntilEnd{%
 
2868
   \ifx \:Sections\empty  \let\:tempb\empty
 
2869
   \else  \PopStack\:Sections\:tempb  \fi
 
2870
   \ifx \:tempb\empty \else
 
2871
      \csname d:\:tempb\endcsname
 
2872
      \expandafter\Close:UntilEnd
 
2873
   \fi
 
2874
}
 
2875
\def\:StartSec#1#2#3{%
 
2876
   \def\title:chs##1##2{##2}%
 
2877
   \def\sec:typ{#1}%
 
2878
   \a:dTocAt  \csname TocAt*\endcsname   \b:dTocAt
 
2879
\expand:after{\global\let}\csname TocAt*\endcsname\empty
 
2880
%
 
2881
   \a:NoSection
 
2882
   \ro:nd\html:lbl{1000}%
 
2883
%
 
2884
   \expandafter
 
2885
   \let\expandafter\TitleMark\csname #1HMark\endcsname
 
2886
%
 
2887
\expandafter\ifx  \csname Cut:#1\endcsname\relax
 
2888
  \def\:tempa{#1}\noct:Close:Until
 
2889
\ifx \:tempb \empty \else
 
2890
   \csname d:\ifx \found:\empty #1\else \found:\fi\endcsname \fi
 
2891
\gHAdvance
 
2892
   \TitleCount  1 \global\let\mu:span\TitleCount
 
2893
\expandafter\expandafter\expandafter\global \expandafter
 
2894
                         \let\csname #1:Count\endcsname\TitleCount
 
2895
\csname c:#1\endcsname
 
2896
%
 
2897
\else
 
2898
   \Configure{CutAt#1}{\gHAdvance
 
2899
   \TitleCount  1 \global\let\mu:span\TitleCount
 
2900
\expandafter\expandafter\expandafter\global \expandafter
 
2901
                         \let\csname #1:Count\endcsname\TitleCount
 
2902
\csname c:#1\endcsname
 
2903
      }{\def\sec:typ{#1}\Close:Until \csname d:#1\endcsname}%
 
2904
%
 
2905
   \expandafter\ifx \csname a:\sec:typ TITLE\endcsname\relax\else
 
2906
   \expandafter\let\expandafter\a:CutAtTITLE
 
2907
             \csname a:\sec:typ TITLE\endcsname\fi
 
2908
%
 
2909
   \csname Cut:#1\endcsname{#3}%
 
2910
\fi
 
2911
\global\let\sec:lvl\HPageDepth
 
2912
\PushStack\:Sections{#1}%
 
2913
%
 
2914
%
 
2915
   \expandafter\ifx \csname :BeforeEvery#1\endcsname\relax \else
 
2916
   \csname :BeforeEvery#1\endcsname{#3}%
 
2917
\fi
 
2918
%
 
2919
   \expandafter\ifx \csname a:#1\endcsname\relax  \else
 
2920
      \csname a:#1\endcsname{#3}%
 
2921
   \fi
 
2922
   \b:NoSection \:Ttle{#1}{#2}{\csname #1:ttl\endcsname{#3}}%
 
2923
   \a:NoSection
 
2924
   \expandafter\ifx \csname b:#1\endcsname\relax   \else
 
2925
      \csname b:#1\endcsname{#3}%
 
2926
   \fi
 
2927
   \expandafter\ifx \csname :Every#1\endcsname\relax \else
 
2928
   \csname :Every#1\endcsname{#3}%
 
2929
\fi
 
2930
%
 
2931
   \csname a:AfterTitle\endcsname   \b:NoSection
 
2932
   \def\title:chs##1##2{##1}%
 
2933
}
 
2934
\def\title:chs#1#2{#1}
 
2935
\def\protect:wrtoc{%
 
2936
   \let\:newlnch\space
 
2937
\PictureOff
 
2938
   \def\%{\string\%}\a:writetoc}
 
2939
\def\html:sectoc#1{\csname if:toc\endcsname{%
 
2940
   \xdef\CurSecHaddr{\ifx \:SecAnchor\:UnDef
 
2941
   QQ1-\file:id-\TitleCount
 
2942
\else \:SecAnchor \fi  }%
 
2943
   \edef\:attr{\noexpand\scp:Link{%
 
2944
     \ifTag{)Q\aXrefFile QQ2-\file:id-\TitleCount }%
 
2945
            {QQ2-\file:id-\TitleCount }%
 
2946
            {\ifx \:SecAnchor\:UnDef
 
2947
   QQ1-\file:id-\TitleCount
 
2948
\else \:SecAnchor \fi  }%
 
2949
     }}%
 
2950
   \:attr{\ifx \:SecAnchor\:UnDef
 
2951
   QQ1-\file:id-\TitleCount
 
2952
\else \:SecAnchor \fi  }}%
 
2953
   \ifx \EndTitle:Link\:gobble \if:toc{\scp:EndLink}\fi
 
2954
   \csname a:InsertTitle\endcsname
 
2955
\csname InsertTitle\endcsname{#1}%
 
2956
\EndTitle:Link{\if:toc{\scp:EndLink}}}
 
2957
\def\html:tocsec#1{\string\csname\space a:TocLink\string\endcsname
 
2958
   {\FileNumber
 
2959
   }{\ifx \:SecAnchor\:UnDef
 
2960
   QQ1-\file:id-\TitleCount
 
2961
\else \:SecAnchor \fi  }{QQ2-\file:id-\TitleCount }{#1}}
 
2962
\let\CurSecHaddr\empty
 
2963
\:CheckOption{sections+}\if:Option
 
2964
     \def\Title:Link{\Link}
 
2965
     \def\EndTitle:Link#1{#1}
 
2966
\else
 
2967
     \def\Title:Link#1{\Link{}}
 
2968
     \let\EndTitle:Link\:gobble
 
2969
   \Log:Note{for back links to toc,
 
2970
       use the command line option `sections+'}%
 
2971
\fi
 
2972
\def\NoLink#1{\expandafter
 
2973
  \gdef\csname #1:Href-\endcsname{\let\EndTitle:Link\:gobble}}%
 
2974
\HAssign\sec:lvl0
 
2975
 
 
2976
   \:CheckOption{hooks+}  \if:Option
 
2977
      \else \:CheckOption{hooks} \fi
 
2978
   \if:Option  \long\def\Configure:Sec#1#2#3#4#5{%
 
2979
  \expandafter\ifx\csname c:#1\endcsname\relax \let\:tempa\relax \else
 
2980
  \def\:tempa{#4#5}\fi  \ifx\:tempa\empty \else
 
2981
     \expandafter\c:def\csname c:#1\endcsname{#4}%
 
2982
\expandafter\c:def\csname d:#1\endcsname{#5}%
 
2983
\fi
 
2984
  \expandafter\ifx\csname a:#1\endcsname\relax \let\:tempa\relax \else
 
2985
  \def\:tempa{#2#3}\fi  \ifx\:tempa\empty \else
 
2986
       \def\:tempa{#2}\ifx \:tempa\empty
 
2987
     \expandafter\def\csname a:#1\endcsname
 
2988
         ##1{\hbox{\a:trc #13:4\b:trc}#2\hbox{\c:trc #14:4\d:trc}}%
 
2989
  \else
 
2990
     \expandafter\def\csname a:#1\endcsname##1{#2}%
 
2991
  \fi
 
2992
  \def\:tempa{#3}\ifx \:tempa\empty
 
2993
     \expandafter\def\csname b:#1\endcsname
 
2994
         ##1{\hbox{\a:trc #13:4\b:trc}#3\hbox{\c:trc #14:4\d:trc}}%
 
2995
  \else
 
2996
     \expandafter\def\csname b:#1\endcsname##1{#3}%
 
2997
\fi
 
2998
\fi
 
2999
}
 
3000
\fi
 
3001
\fi
 
3002
\def\ConfigureMark#1#2{\long\expandafter
 
3003
   \def\csname #1HMark\endcsname{#2}}
 
3004
\let\no:lbl:idx\empty
 
3005
\let\toc:lbl:idx\empty
 
3006
 
 
3007
 
 
3008
\ifx \FileStream\:UnDef \else
 
3009
   \errmessage{--- TeX4ht error ---
 
3010
       \noexpand\FileStream is defined outside of TeX4ht}\endinput
 
3011
\fi
 
3012
\def\FileStream{\IgnorePar
 
3013
   \let\:tempb
 
3014
-\futurelet\:temp\F:le}
 
3015
\def\F:le{\if +\:temp \let\:tempb
 
3016
+\expandafter\Fl:e
 
3017
   \else \expand:after{\Fl:e-}\fi}
 
3018
\def\Fl:e#1{\futurelet\:temp\::File}
 
3019
\def\::File{\ifx [\:temp \expandafter\:File
 
3020
            \else  \expand:after{\:File[]}\fi }
 
3021
\def\:File[#1]#2{}
 
3022
 
 
3023
\ifHtml \def\:File[#1]#2{%
 
3024
   \no:pic\edef\file:name{#2}\yes:pic
 
3025
   \expandafter\ifx\csname
 
3026
           FN \file:name\endcsname\relax
 
3027
                \ht:special{t4ht>\file:name}%
 
3028
\immediate\write-1{--- file \file:name\space ---}%
 
3029
%
 
3030
\gHAdvance\maxfile:id  1
 
3031
\global\let\file:id\maxfile:id
 
3032
\Tag{)F\aXrefFile \file:id
 
3033
   \empty F-}{\file:name}%
 
3034
\expandafter\xdef\csname
 
3035
    FN \file:name\endcsname{\file:id}%
 
3036
\no:pic
 
3037
\edef\:temp{\noexpand\yes:pic \def\noexpand\:temp{#1}}\:temp
 
3038
\begingroup
 
3039
  \def\gobble:font##1##2{##2}%
 
3040
\:TITLE:
 
3041
\:HPageTITLE:
 
3042
  \no:pic
 
3043
  \edef\:tempa{\noexpand\yes:pic \def\noexpand\:tempa{#1}}\:tempa
 
3044
  \xdef\:temp{\cut:TTL{\noexpand\Configure{TITLE+}{\a:HPageTITLE{\ifx
 
3045
   \:temp\empty \file:name\else \:tempa\fi}}}}%
 
3046
\endgroup \:temp
 
3047
%
 
3048
\ht:special{t4ht@[}{\ht:everypar{}\leavevmode}\ht:special{t4ht@]}%
 
3049
%
 
3050
\a:PROLOG \a:HTML \a:HEAD
 
3051
\ifx +\:tempb
 
3052
%
 
3053
   %
 
3054
   \xdef:cs{Lv \file:id}{\noexpand\a:TITLE
 
3055
      \bgroup \noexpand\:TITLE: \noexpand\c:TITLE \egroup
 
3056
%
 
3057
      \noexpand\b:TITLE\noexpand\a:@HEAD\noexpand\b:HEAD}%
 
3058
\else
 
3059
   \xdef:cs{Lv \file:id}{}%
 
3060
      \a:TITLE\bgroup \:TITLE: \c:TITLE \egroup
 
3061
\b:TITLE \a:@HEAD\b:HEAD\B:DY
 
3062
\fi
 
3063
%
 
3064
   \else        \xdef\file:id{\csname
 
3065
             FN \file:name\endcsname}%
 
3066
\ht:special{t4ht>\ifnum \file:id>\bs:fileid\space \file:name\fi }%
 
3067
%
 
3068
   \fi}
 
3069
\HAssign\bs:fileid  1
 
3070
\def\EndFileStream#1{%
 
3071
   \expandafter\ifx
 
3072
            \csname  FN #1\endcsname\relax
 
3073
      \:warning{\string\EndFileStream{#1}?}%
 
3074
   \else
 
3075
      \ifnum\csname  FN #1\endcsname=\bs:fileid
 
3076
         \:warning{\string\EndFileStream{\jobname .\:html}?}%
 
3077
      \else \expandafter\ifnum  \csname  FN #1\endcsname > \bs:fileid
 
3078
%
 
3079
         {\let\inputlineno\tmp:cnt \tmp:cnt1   \root:next }%
 
3080
{\b:BODY \b:HTML}%
 
3081
%
 
3082
\ht:special{t4ht<#1}%
 
3083
\g:delete{\empty  FN #1}%
 
3084
%
 
3085
\expandafter\expandafter\expandafter\global \expandafter
 
3086
                     \let\csname  Lv \file:id\endcsname\:UnDef
 
3087
\global\let\file:id\maxfile:id
 
3088
\find:fileid
 
3089
%
 
3090
   \fi\fi\fi }
 
3091
\def\find:fileid{%
 
3092
  \expandafter\ifx \csname  Lv \file:id\endcsname \relax
 
3093
      \gHAdvance\file:id  -1  \expandafter\find:fileid
 
3094
  \fi
 
3095
}
 
3096
\def\TagFile#1{%
 
3097
   \expandafter\ifx \csname
 
3098
          cw:)F\aXrefFile \file:id \empty F-%
 
3099
\endcsname \relax \else
 
3100
      \Tag{#1(L }{\LikeRef{)F\aXrefFile \file:id \empty F-%
 
3101
}}%
 
3102
   \fi
 
3103
}
 
3104
\def\RefFile#1{\LikeRef{#1(L }}
 
3105
\def\FileName{\LikeRef
 
3106
   {)F\aXrefFile \file:id \empty F-}}
 
3107
\def\RefFileNumber#1{%
 
3108
   \expandafter\ifx  \csname
 
3109
          cw:)F\aXrefFile #1%
 
3110
                  \empty F-\endcsname\relax
 
3111
   \else
 
3112
      \:LikeRef{)F\aXrefFile #1\empty F-}%
 
3113
   \fi  }
 
3114
\xdef:cs{\empty  FN \jobname .\:html}{\file:id}
 
3115
\xdef:cs{\empty  FN }{\file:id}
 
3116
\Tag{)F\aXrefFile \file:id
 
3117
                \empty F-}{\jobname .\:html}
 
3118
\bgroup
 
3119
  \let\special\relax
 
3120
%
 
3121
  \xdef:cs{Lv \file:id}{\noexpand\a:TITLE
 
3122
     \bgroup \noexpand\:TITLE: \noexpand\c:TITLE \egroup
 
3123
%
 
3124
     \noexpand\b:TITLE \noexpand\a:@HEAD\noexpand\b:HEAD}%
 
3125
\egroup
 
3126
\def\close:files{%
 
3127
   \ifnum \op:fl<\bs:fileid \else
 
3128
      \def\:warning##1{}%
 
3129
      \EndFileStream{\RefFileNumber\op:fl}%
 
3130
      \Advance:\op:fl  -1
 
3131
      \expandafter\close:files
 
3132
   \fi}
 
3133
  \fi
 
3134
 
 
3135
\:CheckOption{next}     \if:Option   \else
 
3136
   \let\c:next:\:gobbleII
 
3137
\fi
 
3138
 
 
3139
\ifHtml  \def\HPage{\strt:bt\ch:HPage}
 
3140
\def\ch:HPage{%
 
3141
   \ifx -\:temp \expandafter\m:HPage
 
3142
   \else \expand:after{\ifx [\:temp \expandafter\op:HPage
 
3143
                       \else        \expandafter\:HPage   \fi}%
 
3144
   \fi}
 
3145
\def\strt:bt#1{%
 
3146
   \def\:bgtr<##1>{\expand:after{\bt:fn##1.}\:html!*?: %
 
3147
%
 
3148
      \ifx #1\ch:bbtf \else \PushStack\:btid{##1}\fi
 
3149
%
 
3150
      \futurelet\:temp#1}%
 
3151
   \futurelet\:temp\ch:btgr}
 
3152
\def\ch:btgr{\ifx  <\:temp  \expandafter\:bgtr
 
3153
             \else          \expand:after{\:bgtr<>}\fi}%
 
3154
\def\HP:Link{\Link[\HP:file
 
3155
   \a:LinkHPage]{}{\HP:file}\global\let\a:LinkHPage\empty}
 
3156
\NewConfigure{LinkHPage}[1]{\def\a:LinkHPage{ #1}}
 
3157
\let\a:LinkHPage=\empty
 
3158
\def\op:HPage[#1]#2{%
 
3159
   %\chk:hpfl
 
3160
%
 
3161
   \:hookI{BeforeHPageButton}{}{#2}%
 
3162
   \hpg:wrn{#1}{#2}\HPage    \TagFile{)B\:temp}%
 
3163
                             \Save:HPageTag\:temp
 
3164
                             \Save:HPage{#2}%
 
3165
   \NewFileName\HP:file   \Save:Link\HP:file
 
3166
   \if:notempty{#2}{\HP:Link#2\EndLink}%
 
3167
   \:hookI{AfterHPageButton}{}{#2}%
 
3168
   \:btfile{#2}%
 
3169
   \:buttrc\HPage{[#1]{#2}}%
 
3170
   \PushStack\:afterbt{x}%
 
3171
   \edef\:temp{#1}\ifx \:temp\empty \no:pic
 
3172
       \edef\:temp{\noexpand\yes:pic
 
3173
           \def\noexpand\:temp{#2}}\:temp \fi
 
3174
%
 
3175
   \TagFile{\:temp}}
 
3176
\def\:HPage#1{%
 
3177
   %\chk:hpfl
 
3178
%
 
3179
  \:hookI{BeforeHPageButton}{}{#1}%
 
3180
   \NewFileName\HP:file   \Save:Link\HP:file  \Save:Temp\HP:file
 
3181
                      \TagFile{)B\HP:file}%
 
3182
                             \Save:HPageTag\HP:file
 
3183
                             \Save:HPage{#1}%
 
3184
   \def\:temp{#1}\ifx \:temp\empty
 
3185
   \else \HP:Link#1\EndLink
 
3186
   \fi
 
3187
   \:hookI{AfterHPageButton}{}{#1}%
 
3188
   \:btfile{#1}%
 
3189
   \:buttrc\HPage{{#1}}%
 
3190
   \PushStack\:afterbt{x}%
 
3191
   \Recall:Temp\:tempa    \TagFile{\:tempa}}
 
3192
\def\hpg:wrn#1#2#3{%
 
3193
   \edef\:temp{#1}\ifx \:temp\empty \no:pic
 
3194
       \edef\:temp{\noexpand\yes:pic
 
3195
           \def\noexpand\:temp{#2}}\:temp \fi
 
3196
%
 
3197
   \ifx \:temp\empty \:warning{\string#3[]{}?}\fi}
 
3198
\def\Save:Temp{\PushStack\sv:Temp}
 
3199
\def\Recall:Temp{\PopStack\sv:Temp}
 
3200
\def\m:HPage#1{\futurelet\:temp\ch:mbut}
 
3201
\def\ch:mbut{\ifx [\:temp \expandafter\op:mbut
 
3202
             \else        \expandafter\:mbut   \fi}
 
3203
\def\op:mbut[#1]{%
 
3204
   %\chk:hpfl
 
3205
%
 
3206
  \:hookI{BeforeHPageButton}{}{}%
 
3207
   \edef\:temp{#1}%
 
3208
   \ifx \:temp\empty \:warning{\string\HPage-[]?}\fi
 
3209
                      \TagFile{)B\:temp}%
 
3210
                             \Save:HPageTag\:temp
 
3211
                             \Save:HPage{}%
 
3212
   \NewFileName\HP:file   \Save:Link\HP:file
 
3213
   \HP:Link%
 
3214
   \def\ContHPage{\:ContHPage{x}{#1}}}
 
3215
\def\:mbut{%
 
3216
   %\chk:hpfl
 
3217
%
 
3218
    \:hookI{BeforeHPageButton}{}{}%
 
3219
   \NewFileName\HP:file   \Save:Link\HP:file
 
3220
                      \TagFile{)B\HP:file}%
 
3221
                             \Save:HPageTag\HP:file
 
3222
                             \Save:HPage{}%
 
3223
   \HP:Link%
 
3224
   \def\ContHPage{\:ContHPage{x}{\HP:file}}}
 
3225
\def\:ContHPage#1#2{\EndLink
 
3226
   \Recall:Link\HP:file  \Save:Link\HP:file
 
3227
   \:hookI{AfterHPageButton}{}{}%
 
3228
   \:btfile{}%
 
3229
   \:buttrc\HPage{...\string\ContHPage}%
 
3230
   \PushStack\:afterbt{#1}%
 
3231
   \TagFile{#2}}
 
3232
\def\:hookI#1#2#3{%
 
3233
   \expandafter\ifx \csname #1\endcsname\relax  #2\else
 
3234
      \csname #1\endcsname{#3}\fi
 
3235
}
 
3236
\def\NewFileName#1{%
 
3237
   \HAssign#1\maxfile:id
 
3238
   \Advance:#1  1
 
3239
   \ifx \:NxtNwFN\:Undef
 
3240
      \edef#1{\j:bname \ifx \big:fn\:UnDef#1%
 
3241
                    \else \big:fn\fi  .\:html}%
 
3242
   \else  \let#1\:NxtNwFN  \global\let\:NxtNwFN\:UnDef  \fi
 
3243
   \global\let\big:fn\:UnDef
 
3244
}
 
3245
\def\NextFile#1{\xdef\:NxtNwFN{#1}}
 
3246
\def\:btfile#1{%
 
3247
   \SaveEverypar \FileStream[#1]{\HP:file}  \IgnorePar
 
3248
   \gHAdvance\HPageDepth  1
 
3249
   \AtEndHPage{\csname HPageFooter\endcsname}%
 
3250
   \:hookI{HPageHeader}{}{#1}%
 
3251
}
 
3252
\def\HPageButton{\strt:bt\ch:bbtf}
 
3253
\def\ch:bbtf{\ifx -\:temp \expandafter\op:bbft
 
3254
             \else \expandafter\:bbtf \fi}
 
3255
\def\:bbtf[#1]#2{%
 
3256
   \:hookI{BeforeHPageButton}{}{#2}%
 
3257
   \hpg:wrn{#1}{#2}\HPageButton
 
3258
   \TagFile{)B\:temp}%
 
3259
   \edef\HP:file{\RefFile\:temp}%
 
3260
   \def\:temp{#2}\ifx \:temp\empty
 
3261
   \else  \HP:Link#2\EndLink  \fi
 
3262
   \:hookI{AfterHPageButton}{}{#2}%
 
3263
   \csname AfterHPage\endcsname  }
 
3264
 
 
3265
\def\op:bbft#1[#2]{%
 
3266
   \:hookI{BeforeHPageButton}{}{}%
 
3267
   \edef\:temp{#2}%
 
3268
   \ifx \:temp\empty \:warning{\string\HPageButton-[]?}\fi
 
3269
   \TagFile{)B\:temp}%
 
3270
   \edef\HP:file{\RefFile\:temp}%
 
3271
   \HP:Link%
 
3272
   \def\ContHPage{\EndLink
 
3273
      \:hookI{AfterHPageButton}{}{}%
 
3274
      \csname AfterHPage\endcsname  }}
 
3275
\def\BeginHPage{\futurelet\:temp\ch:bbbt}
 
3276
\def\ch:bbbt{%
 
3277
   %\chk:hpfl
 
3278
%
 
3279
   \NewFileName\HP:file   \Save:Link\HP:file
 
3280
   \ifx -\:temp  \expandafter\op:bbbt
 
3281
   \else         \expandafter\:bbbt   \fi}
 
3282
\def\:bbbt[#1]#2{%
 
3283
   \PushStack\:btid{#1}%                      
 
3284
   \:btfile{#2}%
 
3285
   \:buttrc\BeginHPage{[#1]{#2}}%
 
3286
   \PushStack\:afterbt\empty
 
3287
   \hpg:wrn{#1}{#2}\BeginHPage    \Save:HPageTag\:temp
 
3288
   \Save:HPage{#2}%
 
3289
   \TagFile{\:temp}}
 
3290
\def\op:bbbt#1[#2]{%
 
3291
   \PushStack\:btid{#2}%                     
 
3292
   \:hookI{AfterHPageButton}{}{}%
 
3293
   \:btfile{}%
 
3294
   \:buttrc\BeginHPage{[#2]}%
 
3295
   \PushStack\:afterbt\empty    \edef\:temp{#2}%
 
3296
   \ifx \:temp\empty \:warning{\string\BeginHPage-[]?}\fi
 
3297
   \Save:HPageTag\:temp   \Save:HPage{}%
 
3298
   \TagFile{\:temp}}
 
3299
\def\EndHPage{\futurelet\:temp\chEnd:HPage}
 
3300
\def\chEnd:HPage{\ifx  [\:temp  \expandafter\opEnd:HPage
 
3301
              \else          \expandafter\End:HPage   \fi}
 
3302
\def\opEnd:HPage[#1]{%
 
3303
   \ifnum  #1>\HPageDepth\space
 
3304
      \:warning{\string\EndHPage[#1]?}%
 
3305
      \let\:temp\:gobble
 
3306
   \else \ifnum  #1<\HPageDepth\space
 
3307
      \def\:temp{\:EndHPage\EndHPage[#1]{}}%
 
3308
   \else \let\:temp\End:HPage \fi \fi
 
3309
   \:temp }
 
3310
 
 
3311
\def\End:HPage#1{%
 
3312
   \ifnum \HPageDepth<1 \:warning{\string\EndHPage{#1}?}\let\:temp\:gobble
 
3313
   \else  \ifinner\else\:clearpage\fi   \PopStack\:btid\:tempa
 
3314
      \def\:tempb{#1}\ifx  \:tempb\empty\let\:temp\:EndHPage
 
3315
      \else  \ifx  \:tempb\:tempa       \let\:temp\:EndHPage
 
3316
      \else  \Recall:HPageTag\:tempa
 
3317
             \Save:HPageTag\:tempa
 
3318
             \ifx  \:tempb\:tempa       \let\:temp\:EndHPage
 
3319
      \else                    \def\:temp{\:EndHPage\End:HPage{#1}}%
 
3320
   \fi\fi\fi\fi
 
3321
   \:temp }
 
3322
 
 
3323
\def\:EndHPage{%
 
3324
   \csname EndHPage\HPageDepth \endcsname
 
3325
   \global\expandafter\let\csname EndHPage\HPageDepth\endcsname\:UnDef
 
3326
   \Recall:Link\HP:file   \Recall:Link\:tempd   \Save:Link\:tempd
 
3327
   \Recall:HPage\:tempb
 
3328
   \Recall:HPageTag\:tempc
 
3329
   \:buttrc\EndHPage{{\:tempb}}%
 
3330
   \EndFileStream{\HP:file}%
 
3331
   %\Recall:FileHPg\:tempd
 
3332
%
 
3333
   \FileStream{\:tempd}%
 
3334
   \RecallEverypar  \gHAdvance\HPageDepth  -1
 
3335
   \PopStack\:afterbt\:temp
 
3336
   \ifx \:temp\empty \else \csname AfterHPage\endcsname \fi }
 
3337
\def\AtEndHPage{%
 
3338
   \expandafter\gdef\csname EndHPage\HPageDepth\endcsname}
 
3339
\HAssign\HPageDepth0
 
3340
\PushStack\:btid{}
 
3341
\def\Save:FileHPg{\PushStack\HPage:FlHg}
 
3342
\def\Recall:FileHPg{\PopStack\HPage:FlHg}
 
3343
\def\chk:hpfl{\Save:FileHPg\FileName \:FlHpg}
 
3344
\def\No:FlHpg{{\Recall:Link\HP:file  \Save:Link\HP:file
 
3345
   \edef\HP:file{\HP:file}\edef\FileName{\FileName}%
 
3346
   \edef\HP:file{\expandafter\string\csname \HP:file\endcsname}%
 
3347
   \edef\FileName{\expandafter\string\csname \FileName\endcsname}%
 
3348
   \ifx \HP:file\FileName \else
 
3349
      \:warning{HPage in a non-HPage file
 
3350
                          `\expandafter\:gobble\FileName'}%
 
3351
   \fi}}
 
3352
\def\HPageInFile{\global\let\:FlHpg\empty}
 
3353
\def\NoHPageInFile{\global\let\:FlHpg\No:FlHpg}
 
3354
\NoHPageInFile
 
3355
\expand:after{\def\bt:fn##1.}\:html#2!*?: {%
 
3356
   \def\:temp{#2}\ifx \:temp\empty
 
3357
   \else \NextFile{#1.\:html}\fi }
 
3358
\Odef\ExitHPage[#1]#2{%
 
3359
   \Recall:HPageTag\HP:file  \Save:HPageTag\HP:file
 
3360
   \Link[\RefFile{)B\HP:file}]{\RefFile{\HP:file}}{#1}%
 
3361
      \def\:temp{#2}\ifx \:temp\empty
 
3362
         \Recall:HPage\:temp  \Save:HPage\:temp
 
3363
         \ifx \:temp\empty \a:ExitHPage
 
3364
         \else \b:ExitHPage \:temp \c:ExitHPage \fi
 
3365
      \else #2\fi
 
3366
   \EndLink
 
3367
}
 
3368
\def\RefHPage{\RefFile}
 
3369
\def\Save:Link{\PushStack\HPageFiles}
 
3370
\def\Recall:Link{\PopStack\HPageFiles}
 
3371
\Save:Link{\jobname.\:html}
 
3372
\def\Save:HPage{\PushStack\HPageAnchors}
 
3373
\def\Recall:HPage{\PopStack\HPageAnchors}
 
3374
\def\Save:HPageTag{\PushStack\HPage:Tags}
 
3375
\def\Recall:HPageTag{\PopStack\HPage:Tags}
 
3376
\def\CutAt#1{%
 
3377
  \if           +\:firstch#1 //\:CutAt#1,//\else
 
3378
  \if -\:firstch#1 //\:CutAt#1,//\else
 
3379
                               \:CutAt=#1,//\fi\fi
 
3380
}
 
3381
\def\PauseCutAt#1{%
 
3382
   \expandafter\ifx\csname Cut:#1\endcsname\relax\else
 
3383
      \expandafter\ifx  \csname NoCut:#1\endcsname\relax
 
3384
          \expand:after{\expandafter\let\csname NoCut:#1\endcsname=}%
 
3385
             \csname Cut:#1\endcsname
 
3386
      \fi
 
3387
      \expandafter\let\csname Cut:#1\endcsname=\null
 
3388
\expandafter\def\csname Cut:#1\endcsname{%
 
3389
   \gHAdvance \TitleCount  1
 
3390
   \null \:gobble
 
3391
}%
 
3392
%
 
3393
    \fi  }
 
3394
\def\ContCutAt#1{%
 
3395
   \expandafter\ifx  \csname NoCut:#1\endcsname\relax\else
 
3396
       \expand:after{\expandafter\let\csname Cut:#1\endcsname=}%
 
3397
          \csname NoCut:#1\endcsname
 
3398
   \fi}
 
3399
\def\:CutAt#1#2,#3//{%
 
3400
   \csname ltx:like\endcsname
 
3401
   \expandafter\ifx  \csname #2\endcsname \relax
 
3402
      \:warning{\string\CutAt\space at undefined
 
3403
                    `\expandafter\string\csname#2\endcsname'}%
 
3404
   \fi
 
3405
   \csname ltx:nolike\endcsname
 
3406
   \expandafter\ifx \csname #2:\endcsname\relax
 
3407
   \expand:after{\expandafter\let \csname #2:\endcsname }%
 
3408
                                  \csname #2\endcsname
 
3409
\else \:warning{Again \string\CutAt{#2}?}%
 
3410
\fi
 
3411
\expandafter\def \csname #2\endcsname{%
 
3412
   \csname UnCut:#2\endcsname
 
3413
   \csname #2:\endcsname}%
 
3414
%
 
3415
   \:UnCutAt#2,#3,//%
 
3416
%
 
3417
   \expandafter\edef \csname Cut:#2\endcsname##1{%
 
3418
     \noexpand\cut:at{#2}{##1}#1}%
 
3419
%
 
3420
}
 
3421
\def\:UnCutAt#1,#2,#3//{%
 
3422
   \def\:temp{#2}\ifx \:temp\empty \else
 
3423
      \def\:tempa{#1}\ifx \:tempa\:temp  \else
 
3424
         \expandafter\ifx \csname#2:#1\endcsname\relax
 
3425
            \expand:after{\expandafter\let \csname #2:#1\endcsname }%
 
3426
                                      \csname #2\endcsname
 
3427
\expandafter\def \csname #2\endcsname{%
 
3428
   \csname UnCut:#1\endcsname
 
3429
   \csname #2:#1\endcsname}%
 
3430
%
 
3431
         \else \:warning{#2 already assumed in \string\CutAt{#1,...}}\fi
 
3432
      \fi
 
3433
      \def\:temp{\:UnCutAt#1,#3//}%
 
3434
      \expandafter\:temp
 
3435
   \fi
 
3436
}
 
3437
\def\cut:at#1#2#3{{%
 
3438
   \def\BeforeHPageButton{\if #3+%
 
3439
   \def\:temp{\:hookI{Before#1Button}{\csname a:+CutAt#1\endcsname}}%
 
3440
                              \expandafter\:temp\fi}%
 
3441
\edef\prev:File{\ifnum \sec:lvl>\HPageDepth\space
 
3442
                               \RefFileNumber\lastsec:id \fi}%
 
3443
\def\AfterHPageButton{\if #3+%
 
3444
   \def\:temp{\:hookI{After#1Button}{\csname b:+CutAt#1\endcsname}}%
 
3445
                             \expandafter\:temp\fi}%
 
3446
\def\HPageHeader##1{%
 
3447
   \ct:btn
 
3448
\gHAdvance\C:tAtN  1
 
3449
\Tag{fileidcut \file:id}{\C:tAtN}%
 
3450
\TagFile{cutfile \C:tAtN}%
 
3451
%
 
3452
   \xdef\nextCutAt{\RefFile{)N \file:id}}%
 
3453
   \global\let\prevCutAt\prev:File
 
3454
   \sv:btns\nextCutAt
 
3455
\sv:btns\prevCutAt
 
3456
%
 
3457
   \PushStack\prv:fl{#3}\csname a:CutAt#1\endcsname
 
3458
   \:hookI{Front#1}{\default:bts{}{tail}}{##1}}%
 
3459
\csname a:CutAt-filename\endcsname{#1}{#2}%
 
3460
%
 
3461
   \fx:pt #1xxx!*?: %
 
3462
%
 
3463
   \if #3+\HPage<#1>{#2}%
 
3464
   \else
 
3465
      \if #3-\else
 
3466
   \let\cut:TTL\:gobble
 
3467
   \begingroup
 
3468
     \csname no:fonts\endcsname\def\gobble:font##1##2{##2}%
 
3469
\:TITLE:
 
3470
\:CutAtTITLE:
 
3471
     \xdef\:temp{\noexpand\Configure{TITLE+}{\a:CutAtTITLE{#2}}}%
 
3472
   \endgroup \:temp
 
3473
\fi
 
3474
%
 
3475
      \HPage<#1>{}\fi
 
3476
   \ifx \prevCutAt\empty  \else \TagFile{)N \lastsec:id}\fi
 
3477
   \AtEndHPage{\ct:btn
 
3478
\UnCut:{#1}}%
 
3479
   \expandafter\xdef\csname UnCut:#1\endcsname{%
 
3480
                                 \noexpand\EndHPage[\HPageDepth]{}}%
 
3481
}}
 
3482
\HAssign\lastsec:id0
 
3483
\def\cut:TTL#1{#1}
 
3484
\let\:TITLE:\empty
 
3485
\let\:CutAtTITLE:\empty
 
3486
\let\:HPageTITLE:\empty
 
3487
\def\UnCut:#1{%
 
3488
   \global\expandafter\let\csname TocAt*\endcsname\empty
 
3489
%
 
3490
   \global\expandafter\let\csname UnCut:#1\endcsname\:UnDef
 
3491
   \xdef\lastsec:id{\file:id}%
 
3492
   \PopStack\prv:fl\:temp
 
3493
   \bgroup
 
3494
      \:hookI{Back#1}{\default:bts{tail}{}}{}%
 
3495
      \csname b:CutAt#1\endcsname \let\after:endfl\EndFileStream
 
3496
      \def\EndFileStream##1{\after:endfl{##1}\egroup
 
3497
                      \PopStack\:afterbt\:temp
 
3498
\ifx\:temp\empty\else\:hookI{After#1}{}{}\fi
 
3499
\PushStack\:afterbt{}%
 
3500
%
 
3501
                      \PopStack\prv:fl\prevCutAt
 
3502
\PopStack\prv:fl\nextCutAt
 
3503
\ifx \prv:fl\empty
 
3504
      \let\prevCutAt\:UndDef
 
3505
      \let\nextCutAt\:UndDef
 
3506
\else
 
3507
      \PopStack\prv:fl\:tempb
 
3508
      \PopStack\prv:fl\prevCutAt
 
3509
      \PopStack\prv:fl\nextCutAt
 
3510
   \PushStack\prv:fl\nextCutAt
 
3511
   \PushStack\prv:fl\prevCutAt
 
3512
   \PushStack\prv:fl\:tempb
 
3513
\fi
 
3514
%
 
3515
   }}
 
3516
\let\prevCutAt\empty
 
3517
\:CheckOption{next}     \if:Option
 
3518
   \def\next:bt{\nextCut}
 
3519
   \def\prev:bt{\prevCut}
 
3520
\else
 
3521
   \Log:Note{for linear crosslinks of pages,
 
3522
       use the command line option `next'}%
 
3523
   \def\next:bt{\nextCutAt}
 
3524
   \def\prev:bt{\prevCutAt}
 
3525
\fi
 
3526
\HAssign\C:tAtN  0
 
3527
\def\ct:btn{{%
 
3528
  \HAssign\C:tAtN  0\LikeRef{fileidcut \file:id}%
 
3529
  \Advance:\C:tAtN  -1
 
3530
  \xdef\prevCut{\RefFile{cutfile \C:tAtN}}%
 
3531
  \ifx \prevCut\space \global\let\prevCut\empty \fi
 
3532
  \Advance:\C:tAtN   2
 
3533
  \xdef\nextCut{\RefFile{cutfile \C:tAtN}}%
 
3534
  \ifx \nextCut\space \global\let\nextCut\empty \fi
 
3535
}}
 
3536
\let\root:next\empty
 
3537
\def\CutGroup#1{\Cut:Group#1,,!*?: }
 
3538
\def\Cut:Group#1,{%
 
3539
   \expandafter\ifx \csname #1\endcsname\relax
 
3540
      \expandafter\let\csname #1\endcsname\:gobble\fi
 
3541
   \def\HP:file{#1}%
 
3542
   \do:list \cut:gr,}
 
3543
 
 
3544
       \def\cut:gr#1{%
 
3545
   \edef\:temp{%
 
3546
      \let\:csname \HP:file :#1\endcsname \:csname #1\endcsname
 
3547
      \let\:csname \HP:file :Cut:#1\endcsname \:csname Cut:#1\endcsname
 
3548
      \def\:csname #1\endcsname####1{%
 
3549
         \noexpand\cond:cs{\HP:file}{####1}%
 
3550
         \:csname \HP:file :#1\endcsname{####1}}%
 
3551
      \def\:csname Cut:#1\endcsname####1{%
 
3552
         \noexpand\cond:cs{Cut:\HP:file}{####1}%
 
3553
         \noexpand\cond:cs{\HP:file :Cut:#1}{####1}}%
 
3554
   }\:temp }
 
3555
 
 
3556
\fi
 
3557
 
 
3558
\def\ParentOf{\gHAdvance\TitleCount  1
 
3559
   \global\let\mu:span\TitleCount \futurelet\:temp\:mprt}
 
3560
\def\ChildOf{\futurelet\:temp\:xprt}
 
3561
 
 
3562
\:CheckOption{family} \if:Option
 
3563
   \def\:mprt{\fm:call\:Imprt}
 
3564
 
 
3565
\def\:Imprt[#1]#2#3{%
 
3566
   \def\:temp{#2}\ifx \:temp\Jobname
 
3567
                    \:warning{#2 \string\ParentOf\space#2?}\fi
 
3568
   \Needs-{child `#2'}%
 
3569
   \LoadRef[#2-\Jobname]{#3}{##1}%
 
3570
   \imp:var{#2}fstf:id,#1!*?: %
 
3571
   \Tag{\Jobname-#2-up}{\RefFileNumber\FileNumber}%
 
3572
\Tag{\Jobname-#2-prev}{\childFile}%
 
3573
\xdef\childFile{\LikeRef{#2-\Jobname-down}}%
 
3574
\ifx \cld:n\:UnDef  \else  \Tag{\cld:n}{\childFile}\fi
 
3575
\xdef\cld:n{\Jobname-#2-next}%
 
3576
%
 
3577
   \the\:tokwrite{\string\doTocEntry
 
3578
                          \string\tocParentOf{#2}{}{}\relax}}
 
3579
 
 
3580
\HAssign\fstf:id0
 
3581
\def\:xprt{\fm:call\:Exprt}
 
3582
 
 
3583
\def\:Exprt[#1]#2#3{%
 
3584
   \ifnum \maxfile:id>1
 
3585
       \:warning{\string\ChildOf{#2} not at root file}\fi
 
3586
   \Needs-{parent `#2'}%
 
3587
   \ld:flxrf{#3}{QQ}%
 
3588
   \LoadRef[#2-\Jobname]{#3}{##1}%
 
3589
   \xp:var{#2}fstf:id,#1!*?: %
 
3590
   \closeout\:refout
 
3591
\openout\:refout\jobname.xref     \:clearpage
 
3592
\gHAdvance\fstf:id  10000
 
3593
%
 
3594
\gHAssign\maxfile:id  \fstf:id
 
3595
\gHAssign\bs:fileid  \maxfile:id
 
3596
\global\let\file:id\maxfile:id
 
3597
\Tag{)F\aXrefFile \file:id \empty F-}%
 
3598
                                                {\jobname.\:html}%
 
3599
\expandafter\xdef\csname
 
3600
    FN \jobname.\:html\endcsname{\file:id}%
 
3601
\xdef:cs{Lv \file:id}{}%
 
3602
%
 
3603
   \def\export:hook{\exprt:tag{#2}fstf:id,#1!*?: }%
 
3604
   \Tag{\Jobname-#2-down}{\RefFileNumber\FileNumber}%
 
3605
\ch:lnk\parentFile{#2}{up}%
 
3606
\ch:lnk\prevChildFile{#2}{prev}%
 
3607
\ch:lnk\nextChildFile{#2}{next}%
 
3608
\global\let\nsrt:chlnks\nsrt:cldnks
 
3609
\nsrt:chlnks{}{tail}{FrontChild}%
 
3610
%
 
3611
   \gdef\:Export[##1]##2{\:warning{\string\ChildOf
 
3612
               \string{##2\string}\space ignored (not 1st)}}%
 
3613
}
 
3614
\def\rmv:ext#1.#2!*?: {#1}
 
3615
 
 
3616
\def\fm:call#1{\ifx [\:temp \expand:after{\fm:cll#1}\else
 
3617
                            \expand:after{\fm:cll#1[]}\fi}
 
3618
\def\fm:cll#1[#2]#3{\edef\:temp{\noexpand\noexpand\noexpand
 
3619
   #1[#2]{\noexpand\rmv:ext#3.!*?: }{#3}}%
 
3620
   \edef\:temp{\:temp}\:temp}
 
3621
\let\childFile\space
 
3622
\def\ch:lnk#1#2#3{%
 
3623
   \xdef#1{\LikeRef{#2-\Jobname-#3}}%
 
3624
   \ifx #1\space \let#1\empty\fi}
 
3625
\def\nsrt:cldnks#1#2#3{{%
 
3626
   \let\prevCutAt\prevChildFile
 
3627
   \let\nextCutAt\nextChildFile
 
3628
   \def\ExitHPage##1{\Link[\parentFile]{}{}##1\EndLink}
 
3629
   \:hookI{#3}{\default:bts{#1}{#2}}{}}}
 
3630
\def\imp:var#1#2,#3!*?: {%
 
3631
   \gt:ops{#2}%
 
3632
   \Tag{\Jobname-#1-#2}{\:tempd\csname #2\endcsname}%
 
3633
   \edef\:tempc{0\LikeRef{#1-\Jobname-#2}}%
 
3634
   \expand:after{\expandafter\:tempb\csname
 
3635
                                       #2\endcsname  }\:tempc%
 
3636
   \if:notempty{#3}{\imp:var{#1}#3,!*?: }}
 
3637
\def\xp:var#1#2,#3!*?: {%
 
3638
   \gt:ops{#2}%
 
3639
   \edef\:tempc{0\LikeRef{#1-\Jobname-#2}}%
 
3640
   \expandafter\:tempa\csname #2\endcsname\:tempc
 
3641
   \expandafter\HAssign\csname :#2:\endcsname\:tempc
 
3642
   \if:notempty{#3}{\xp:var{#1}#3,!*?: }}
 
3643
\def\exprt:tag#1#2,#3!*?: {%
 
3644
   \tmp:cnt  \csname #2\endcsname
 
3645
   \advance\tmp:cnt  -\csname :#2:\endcsname
 
3646
   \Tag{\Jobname-#1-#2}{\the\tmp:cnt}%
 
3647
   \if:notempty{#3}{\exprt:tag{#1}#3,!*?: }}
 
3648
 
 
3649
   \def\gt:vi#1#2#3#4#5#6#7!*?: {#1#2#3#4#5#6}
 
3650
\def\gt:vr#1#2{\edef#1{\expandafter
 
3651
   \gt:vi\meaning#2 .......!*?: }}
 
3652
\gt:vr\c:unt\tmp:cnt
 
3653
\def\chk:vr#1#2{\expand:after{\gt:vr\:temp#2 #1\:temp\c:unt}}
 
3654
 
 
3655
\def\gt:ops#1{%
 
3656
   \expand:after{\chk:vr\ifx}\csname#1\endcsname  \let\:tempd\the
 
3657
            \let\:tempa\empty   \let\:tempb\advance
 
3658
  \else                             \let\:tempd\empty
 
3659
            \let\:tempa\HAssign  \let\:tempb\Advance:
 
3660
  \fi }
 
3661
 
 
3662
\else
 
3663
   \let\:mprt\BI:gbl
 
3664
\Odef\ChildOf[#1]#2{\:warning{\string\ChildOf{#2}
 
3665
   without \string\Preamble{...,family,...}}}
 
3666
\let\:xprt\BI:gbl
 
3667
 
 
3668
\fi
 
3669
\def\tocParentOf#1{{%
 
3670
   \def\:temp{#1}\ifx \:temp\Jobname
 
3671
      \:warning{#1 \string\ParentOf\space#1?}
 
3672
   \else  \expand:after{\ld:flxrf{#1}{QQ}\get:input{#1.4tc}}\fi}}
 
3673
\def\ld:flxrf#1#2{%
 
3674
   \let\:CrsWd\Cross:Word
 
3675
   \def\Cross:Word##1##2{%
 
3676
      \expandafter\let\csname  cw:##2\endcsname\:UnDef
 
3677
      \:CrsWd{##1}{##2}}%
 
3678
   \LoadRef[)F\aXrefFile ]{#1}{##1}%
 
3679
   \LoadRef[)Q\aXrefFile #2]{#1}{##1}%
 
3680
   \let\Cross:Word\:CrsWd
 
3681
}
 
3682
 
 
3683
 
 
3684
\openin15=\jobname.4tc
 
3685
\ifeof15  \closein15
 
3686
   \def\:TableOfContents[#1]{\immediate\write16{No file \jobname.4tc}}
 
3687
   \ifx \TableOfContents\:UnDef
 
3688
   \def\TableOfContents{\futurelet\:temp\:TOC}
 
3689
   \def\:TOC{\ifx [\:temp \expandafter\:TableOfContents\fi}
 
3690
\fi
 
3691
 
 
3692
\else
 
3693
   \ifHtml  \ifx \TableOfContents\:UnDef
 
3694
   \def\TableOfContents{\futurelet\:temp\:TOC}
 
3695
   \def\:TOC{\ifx [\:temp \expandafter\:TableOfContents\fi}
 
3696
\fi
 
3697
 
 
3698
\def\:TableOfContents[#1]{\SaveEverypar{%
 
3699
   \def\TocCount{0}%
 
3700
   \:tocPreamble#1,,%
 
3701
\let\doTocEntry\:doTocEntry
 
3702
\def\contentsline##1##2##3{##2}%
 
3703
\no:lbl:idx
 
3704
%
 
3705
   \def\InsertTitle##1##2##3{}%
 
3706
   \hsize4.5in  \rightskip  \z@ minus 1in  \linepenalty1000
 
3707
   \catcode`\#12  \catcode`\@11   \catcode`\:11
 
3708
   \Configure{HtmlPar}{\ifx \e:tableofcontents\:UnDef
 
3709
      \csname e:TableOfContents\endcsname
 
3710
\else \e:tableofcontents \fi
 
3711
}{\ifx \d:tableofcontents\:UnDef \csname d:TableOfContents\endcsname
 
3712
\else \d:tableofcontents \fi
 
3713
}{}{}%
 
3714
\everypar{\HtmlPar}%
 
3715
   \ifx \a:tableofcontents\:UnDef \csname a:TableOfContents\endcsname
 
3716
\else \a:tableofcontents \fi
 
3717
\input \jobname.4ct
 
3718
   {\ht:everypar{}\leavevmode}\ifx \b:tableofcontents\:UnDef
 
3719
      \csname b:TableOfContents\endcsname
 
3720
\else \b:tableofcontents \fi
 
3721
%
 
3722
   \par  }\RecallEverypar \ifx \c:tableofcontents\:UnDef
 
3723
   \csname c:TableOfContents\endcsname
 
3724
\else \c:tableofcontents \fi
 
3725
}
 
3726
 
 
3727
   \fi
 
3728
   \begingroup
 
3729
  \catcode`^7
 
3730
  \def\:copytoc{%
 
3731
   \ifeof15   \else
 
3732
      \read15 to \:temp
 
3733
      {\escapechar=`\\\immediate\write15{\:temp}}%
 
3734
      \expandafter\:copytoc
 
3735
   \fi}
 
3736
   \ifHtml \catcode`\#12\relax \fi
 
3737
  \def\:next{\catcode\tmp:cnt12
 
3738
    \ifnum \tmp:cnt=0
 
3739
       \def\:next{%
 
3740
          \catcode`\^^M5
 
3741
          \immediate\openout15=\jobname.4ct     \:copytoc
 
3742
          \immediate\closeout15
 
3743
          \endgroup \closein15
 
3744
       }%
 
3745
    \fi
 
3746
    \advance\tmp:cnt  -1 \:next
 
3747
  }
 
3748
  \tmp:cnt255   \:next
 
3749
 
 
3750
\fi
 
3751
\def\:doTocEntry#1#2#3#4{%
 
3752
   \Advance:\TocCount  1
 
3753
   \expandafter\ifx \csname \string#1 \endcsname \relax \else
 
3754
     #1{#2}{#3}{#4}\fi
 
3755
}
 
3756
\def\:tocPreamble#1,{%
 
3757
  \def\:temp{#1}\ifx \:temp\empty     \else
 
3758
     \edef\:temp{\expandafter\string\csname toc#1 \endcsname}%
 
3759
     \expandafter\expandafter\expandafter\let
 
3760
        \expandafter\csname\:temp\endcsname\empty
 
3761
     \expandafter\:tocPreamble\fi}
 
3762
\ifx \:tocout\:UnDef
 
3763
   \csname newwrite\endcsname\:tocout
 
3764
\fi
 
3765
\def\:temp{%
 
3766
\if:latex \expandafter\immediate\fi
 
3767
\openout\:tocout\jobname.4tc
 
3768
   {\escapechar=`\\\if:latex \expandafter\immediate\fi
 
3769
\write
 
3770
   \:tocout{\string\expandafter\string\ifx
 
3771
   \noexpand\csname doTocEntry\string\endcsname\relax
 
3772
      \string\expandafter\string\endinput
 
3773
   \string\fi}%
 
3774
}%
 
3775
}
 
3776
\:temp
 
3777
\def\TocAt#1{%
 
3778
   \def\:next##1{\:TocAt##1,//}%
 
3779
   \def\:tempa{#1}\def\:temp{-}\ifx \:tempa\:temp  \let\:temp-%
 
3780
   \else \def\:temp{*}\ifx \:tempa\:temp           \let\:temp*%
 
3781
   \else    \def\:next{\:TocAt#1,//}%
 
3782
   \fi \fi  \:next }
 
3783
\def\:TocAt#1,#2//{%
 
3784
   \ifx -\:temp \else \ifx *\:temp
 
3785
           \expandafter\edef\csname Toc:#1\endcsname{%
 
3786
   \gdef\expandafter\noexpand\csname TocAt*\endcsname{%
 
3787
      \noexpand \csname Toc#1\noexpand\endcsname }}%
 
3788
%
 
3789
   \else   \expandafter\edef\csname Toc:#1\endcsname{%
 
3790
    \noexpand\csname Toc#1\noexpand\endcsname }%
 
3791
\fi \fi
 
3792
   \def\:temp{#2}\ifx  \:temp\empty
 
3793
      \expandafter\let\csname Toc#1\endcsname\:UnDef
 
3794
   \else \let\:include\empty
 
3795
\::TocAt#1,/#1,#2,,//%
 
3796
\edef\:include{\expandafter\:removecomma\:include}%
 
3797
\expandafter\edef\csname Toc#1\endcsname{{%
 
3798
   \let\noexpand\TitleCount\expandafter\noexpand
 
3799
                                \csname #1:Count\endcsname
 
3800
   \noexpand\:assgtoc\:include,//{#1}%
 
3801
   \:tocs[\:include]}}%
 
3802
\fi }
 
3803
\def\:tocs{\noexpand\TableOfContents}
 
3804
\def\:removecomma#1{}
 
3805
\def\:assgtoc#1,#2//#3{%
 
3806
   \expand:after{\expandafter\let\csname toc#1\endcsname }%
 
3807
                                 \csname #3::toc#1\endcsname
 
3808
   \if:notempty{#2}{\:assgtoc#2//{#3}}}
 
3809
\def\::TocAt#1,#2,#3//{\def\:temp{#2}%
 
3810
   \ifx  \:temp\empty \else
 
3811
      \if /\:firstch#2 //%
 
3812
               \edef\:include{\:include,\:temp}%
 
3813
\expandafter\def\csname #1::toc\:temp\endcsname##1##2##3{%
 
3814
   \ifnum \TitleCount<\TocCount
 
3815
       \Advance:\TocCount  -100000   \endinput
 
3816
   \fi}%
 
3817
%
 
3818
      \else    \edef\:include{\:include,#2}%
 
3819
\expand:after{\expandafter\let\csname svtoc::#2\endcsname}%
 
3820
                                     \csname toc#2\endcsname
 
3821
\expandafter\edef\csname #1::toc#2\endcsname##1##2##3{%
 
3822
   \noexpand\ifnum  \noexpand\TitleCount<\noexpand\TocCount
 
3823
                                                        \noexpand\space
 
3824
      \expandafter\noexpand \csname svtoc::#2\endcsname{##1}{##2}{##3}%
 
3825
   \noexpand\fi}%
 
3826
\fi
 
3827
      \expand:after{\::TocAt#1,#3//}%
 
3828
   \fi
 
3829
}
 
3830
\def\:firstch#1#2 //{#1\def\:temp{#2}}
 
3831
 
 
3832
\ifHtml
 
3833
   \let\TeXhalign\halign
 
3834
\def\RecallTeXcr{\iffalse{\fi
 
3835
   \expand:after{\let\cr}\csname 0cr\endcsname
 
3836
   \expand:after{\let\crcr}\csname 0crcr\endcsname
 
3837
   \iffalse}\fi}
 
3838
\expandafter\let\csname 0cr\endcsname\cr
 
3839
\expandafter\let\csname 0crcr\endcsname\crcr
 
3840
\def\TeXhalign:cr{%
 
3841
   \ifx \EndPicture\:UnDef \else \iffalse{\fi
 
3842
      \expandafter\let\expandafter\cr\csname \MkHalign:d cr\endcsname
 
3843
      \expandafter\let\expandafter\crcr\csname \MkHalign:d crcr\endcsname
 
3844
   \iffalse}\fi \fi  \TeXhalign}
 
3845
 
 
3846
\def\MkHalign#1#2{%
 
3847
  \iffalse{\fi   \let\sv:new:row\new:row
 
3848
  \def\relax:shrp{\let#1\relax}%
 
3849
  \def\new:halign{\TeXhalign \bgroup}%
 
3850
  \add:halign#2&!*?: \cr
 
3851
  \let#1\:shrp  \global\let\new:row\R:halign
 
3852
\Advance:\MkHalign:d  1
 
3853
\expandafter\let\csname \MkHalign:d cr\endcsname\cr
 
3854
\expandafter\let\csname \MkHalign:d crcr\endcsname\crcr
 
3855
\edef\cr{\noexpand\rR:halign
 
3856
   \expandafter\noexpand \csname \MkHalign:d cr\endcsname}%
 
3857
\edef\crcr{\noexpand\rR:halign
 
3858
   \expandafter\noexpand \csname \MkHalign:d crcr\endcsname}%
 
3859
\let\omit\om:t \def\TT:halign{\T:halign \global\let\TT:halign\empty}%
 
3860
\let\sv:end:omit\end:omit  \let\end:omit\empty
 
3861
\let\ms:count\MS:count \HAssign\MS:count0
 
3862
\let\lgn:r\HRow \let\lgn:c\HCol  \HAssign\HRow0
 
3863
\def\span{\xdef\new:span{\new:span\HRow.\HCol;}\:span}%
 
3864
\let\sv:new:span\new:span  \let\new:span\empty
 
3865
\gHAdvance\Halgn:cnt  1 \edef\halign:id{\Halgn:cnt}%
 
3866
\edef\old:span{\LikeRef{)M\halign:id x\mu:span}}%
 
3867
\ifx \old:span\space \def\old:span{;}\fi
 
3868
%
 
3869
  \iffalse}\fi      \begingroup
 
3870
\ifmmode  \def\end:m{$$\egroup}\vtop\bgroup$$\else
 
3871
\let \end:m\empty\fi
 
3872
%
 
3873
  \a:PauseMkHalign \new:halign\ext:cr}
 
3874
\def\EndMkHalign{\egroup
 
3875
   \d:PauseMkHalign \end:m\endgroup
 
3876
%
 
3877
   \iffalse{\fi \expand:after{\let\cr}\csname \MkHalign:d cr\endcsname
 
3878
\expand:after{\let\crcr}\csname \MkHalign:d crcr\endcsname
 
3879
\let\omit\:omit
 
3880
{\ht:everypar{}\r:halign}\t:halign
 
3881
\Advance:\MkHalign:d  -1
 
3882
\Tag{)M\halign:id x\mu:span}{\new:span;}%
 
3883
\global\let\new:span\sv:new:span
 
3884
\iffalse{\fi \let\span\:span \iffalse}\fi
 
3885
\global\let\HRow\lgn:r   \global\let\HCol\lgn:c
 
3886
\global\let\MS:count\ms:count
 
3887
\global\let\new:row\sv:new:row
 
3888
\global\let\end:omit\sv:end:omit
 
3889
\relax:shrp \iffalse}\fi }
 
3890
\def\PauseMkHalign#1{\cr\egroup
 
3891
   \hbox{\r:halign \global\let\new:row\R:halign}\b:PauseMkHalign
 
3892
   #1\c:PauseMkHalign\new:halign\ext:cr}
 
3893
                            \catcode`\#13 \catcode`\@6
 
3894
\def\MiniHalign{\begingroup  \catcode`\#13 \let#\relax
 
3895
   \:MHalign}
 
3896
\def\:MHalign@1\cr{\endgroup  \SaveMkHalignConfig
 
3897
   \Configure{MkHalign}{\a:MiniHalign}{\b:MiniHalign}\c:MiniHalign
 
3898
   \d:MiniHalign{\e:MiniHalign\RecallMkHalignConfig}\f:MiniHalign
 
3899
   \MkHalign#{@1}}
 
3900
                             \catcode`\#6 \catcode`\@11
 
3901
\def\EndMiniHalign{\EndMkHalign  \RecallMkHalignConfig }
 
3902
\def\add:halign#1&#2\cr{%
 
3903
   \def\:temp{#2}\def\:tempb{!*?: }%
 
3904
   \ifx \:temp\:tempb
 
3905
      \append:def\new:halign{\b:halign#1\c:halign}%
 
3906
   \else
 
3907
      \def\:temp{#1}\ifx\:temp\empty \append:def\new:halign{&}%
 
3908
      \else  \append:def\new:halign{\b:halign#1\c:halign&}\fi
 
3909
      \add:halign#2\cr
 
3910
   \fi}
 
3911
\def\rR:halign{\gdef\new:row{\r:halign \R:halign}}
 
3912
\HAssign\MkHalign:d  0
 
3913
\def\b:halign{\BB:halign \bgroup}
 
3914
\def\c:halign{\egroup\d:halign}
 
3915
\def\BB:halign{\expand:after{\global\let\new:row\empty }\new:row
 
3916
   \D:halign}
 
3917
\def\SaveMkHalignConfig{\let\sT:halign\T:halign
 
3918
   \let\st:halign\t:halign
 
3919
   \let\sR:halign\R:halign
 
3920
   \let\sr:halign\r:halign
 
3921
   \let\sD:halign\D:halign
 
3922
   \let\sd:halign\d:halign}
 
3923
\def\RecallMkHalignConfig{\let\T:halign\sT:halign
 
3924
   \let\t:halign\st:halign
 
3925
   \let\R:halign\sR:halign
 
3926
   \let\r:halign\sr:halign
 
3927
   \let\D:halign\sD:halign
 
3928
   \let\d:halign\sd:halign}
 
3929
\let\:omit\omit
 
3930
\def\om:t{\:omit \BB:halign
 
3931
   \gdef\end:omit{\gdef\end:omit{}\d:halign}}
 
3932
\let\end:omit\empty
 
3933
\let\ext:cr\cr  \let\ext:crcr\crcr
 
3934
\let\:span\span
 
3935
\def\add:span#1;{\def\:tempa{#1}\edef\:temp{\HRow .\HCol}%
 
3936
   \ifx \:temp\:tempa \Advance:\:MULTISPAN  1 \fi
 
3937
   \ifx \:tempa\empty \let\HMultispan\:MULTISPAN
 
3938
   \else
 
3939
      \let\:temp\relax
 
3940
\def\:temp##1.{\def\:temp####1!*?: {\def\:temp{####1}}%
 
3941
   \afterassignment\:temp\tmp:cnt}%
 
3942
\expandafter\expandafter\expandafter\:temp\expandafter\:tempa!*?: %
 
3943
\edef\:tempb{\HRow.\HCol\:temp}\ifx\:tempa\:tempb
 
3944
   \expandafter\ifx \csname \expandafter\string\:temp :T:D\endcsname\relax
 
3945
   \else \edef\:mALIGN{\expandafter\noexpand
 
3946
          \csname \expandafter\string\:temp :T:D\endcsname}%
 
3947
\fi\fi
 
3948
%
 
3949
      \expandafter\add:span
 
3950
   \fi }
 
3951
\HAssign\Halgn:cnt0
 
3952
\def\derive:TD{%
 
3953
   \bgroup \no:actv
 
3954
       \xdef\:temp{\noexpand\expandafter\noexpand\:temp
 
3955
               \noexpand\halign:TD\:MkHalign: -0 0 1 !*?: }%
 
3956
   \egroup
 
3957
   \let\hT:D\:temp
 
3958
   \def\:temp##1 ##2 ##3 {\ifnum -1=##1##2##3 \else
 
3959
      \ifnum \HRow=##1 \ifnum \HCol=##2 \:TDcode ##3\fi\fi
 
3960
\ifnum \HRow=##1 \ifnum    0=##2 \:TDcode ##3\fi\fi
 
3961
\ifnum     0=##1 \ifnum \HCol=##2 \:TDcode ##3\fi\fi
 
3962
\ifnum     0=##1 \ifnum    0=##2 \:TDcode ##3\fi\fi
 
3963
 \expandafter\:temp \fi}%
 
3964
   \def\:tempa##1\empty{}%
 
3965
   \edef\hT:D{\hT:D}}
 
3966
\def\:TDcode#1{\expandafter
 
3967
   \ifx \csname \string#1:T:D\endcsname\relax \else
 
3968
     \csname \string#1:T:D\endcsname \expandafter\:tempa \fi
 
3969
\expandafter#1\empty
 
3970
\EndTD:CLASS}
 
3971
                             \catcode`\_=13  \catcode`\^=13
 
3972
\pend:defI\:TDcode{\TD:CLASS}%
 
3973
\let\:temp\relax \let\:tempa\relax
 
3974
\edef\no:actv{\let\noexpand\noexpand\noexpand^\:temp
 
3975
   \let\noexpand\noexpand\noexpand_\:tempa}
 
3976
                              \catcode`\_=8  \catcode`\^=7
 
3977
\def\:temp{^}  \def\:tempa{_}
 
3978
\edef\no:actv{\no:actv}
 
3979
\def\halign:TB#1<>#2!*?: {#1}
 
3980
\def\halign:TD#1<>#2!*?: {#2}
 
3981
 
 
3982
\:CheckOption{no-halign} \if:Option \else
 
3983
   \def\h:halign{\ifx \EndPicture\:Undef
 
3984
                \let\to:dim\empty  \expandafter\:halign
 
3985
            \else                    \expandafter\TeXhalign:cr\fi}
 
3986
\:CheckOption{base}  \if:Option  \else
 
3987
    \def\:temp{\Protect\h:halign}
 
3988
    \HLet\halign\:temp
 
3989
\fi
 
3990
\let\r:lax\relax
 
3991
\def\r:relax{\r:lax}
 
3992
\let\rl:x\relax
 
3993
\def\:halign{%
 
3994
   \let\rl:x\r:relax
 
3995
   \ifx \rl:x\r:relax  \expandafter\nodim:hlgn: 
 
3996
   \else               \expandafter\TeXhalign:cr   
 
3997
   \fi
 
3998
}
 
3999
\def\nodim:hlgn:{\futurelet\:temp\hl:gn}
 
4000
\def\hl:gn{\ifx   \:temp\bgroup      \let\:tempa\hlg:n
 
4001
   \else \def\:tempa##1{\append:def\to:dim{##1}\nodim:hlgn:}\fi
 
4002
   \:tempa}
 
4003
                              \catcode`\#13  \catcode`\~6
 
4004
\def\hlg:n{\begingroup  \catcode`\#13 \let#\relax \hal:gn}%
 
4005
 
 
4006
\long\def\hal:gn~1{\p:lgn~1#!*?: %
 
4007
   \ifx \:temp\empty
 
4008
       \expandafter\chs:halgn\string ~1!*?: %
 
4009
\:tempb{%
 
4010
   \expand:after{\Picture+}\pic:hlng{ \a:@Picture{pic-halign}}\ifmmode
 
4011
        \vbox{\Rc:sharp
 
4012
$$\TeXhalign:cr \to:dim{~1}$$}%
 
4013
      \else \vbox{\Rc:sharp
 
4014
\TeXhalign:cr \to:dim{~1}}\fi
 
4015
      \:nopartrue
 
4016
   \EndPicture
 
4017
 }%
 
4018
\let\:temp\endgroup
 
4019
\:tempb!*?: %
 
4020
\:tempb\:temp{\endgroup
 
4021
   \:warning{\noexpand\halign translated into linear text}%
 
4022
%
 
4023
   \HRestore\noalign  \TeXhalign:cr~1}\:tempa!*?: %
 
4024
%
 
4025
   \else \def\:temp{\endgroup\:hlign{~1}}\fi   \:temp}
 
4026
\long\def\p:lgn~1#~2!*?: {\def\:temp{~2}}
 
4027
 
 
4028
                              \catcode`\#6  \catcode`\~13
 
4029
\long\def\:hlign#1{%
 
4030
    \def\:temp{#1}\def\:tempa{\bgroup}\ifx \:temp\:tempa
 
4031
       \endgroup  \:warning{\noexpand\halign translated into linear text}%
 
4032
%
 
4033
         \expand:after{\HRestore\noalign \TeXhalign:cr\bgroup}%
 
4034
    \else \let\tabskip\tmp:dim    \let\hrulefill\empty
 
4035
\let\hidewidth\empty
 
4036
\expand:after{\h:align#1\cr!*?: #1!*?: }%
 
4037
%
 
4038
    \fi}
 
4039
\catcode`\#=13
 
4040
\def\Rc:sharp{\let#=\sv:sharp}
 
4041
\catcode`\#=6
 
4042
\def\:temp{\let\sv:sharp=##}\:temp
 
4043
\def\chs:halgn#1{\def\:temp{#1}%
 
4044
   \def\:tempa##1##2##3##4##5{\def\:tempa{##1}\def\:tempb{##2}%
 
4045
      \def\:tempc{##3}\def\:tempd{##4}\def\:tempe{##5}}%
 
4046
   \expandafter\:tempa\string\bgro
 
4047
   \ifx \:temp\:tempa \expand:after{\expandafter\try:b\string}%
 
4048
   \else              \expandafter\brc:halign \fi}
 
4049
\def\try:b{\try:ch\:tempb\try:g}
 
4050
\def\try:g{\try:ch\:tempc\try:r}
 
4051
\def\try:r{\try:ch\:tempd\try:o}
 
4052
\def\try:o#1{\def\:temp{#1}%
 
4053
   \ifx \:temp\:tempe \def\:tempb{\let\:tempb\def\:tempa
 
4054
}%
 
4055
   \else  \let\:temp\empty
 
4056
          \def\:tempb{\let\:tempb\:tempa
 
4057
}\fi
 
4058
   \long\def\:tempa##1!*?: {}%
 
4059
\:tempa}
 
4060
\def\try:ch#1#2#3{\def\:temp{#3}%
 
4061
   \ifx \:temp#1 \expand:after{\expandafter#2\string}%
 
4062
   \else              \expandafter\brc:halign \fi}
 
4063
\def\brc:halign{%
 
4064
   \let\:temp\empty   \def\:tempb{\let\:tempb\:tempa
 
4065
}%
 
4066
   \long\def\:tempa##1!*?: {}%
 
4067
\:tempa}
 
4068
\catcode`\#13 \catcode`\@6
 
4069
\long\def\h:align@1\cr@2!*?: {\def\:temp{@2}\ifx \:temp\empty
 
4070
   \expandafter\h:alignII \else \crcr:align@1\crcr!*?: \fi}
 
4071
\def\crcr:align@1\crcr@2!*?: {\def\:temp{@2}\ifx \:temp\empty
 
4072
   \expandafter\expandafter\expandafter\h:alignI \else
 
4073
   \expandafter\expandafter\expandafter\h:alignII \fi}
 
4074
\long\def\h:alignI@1\cr@2!*?: {%
 
4075
   \SaveMkHalignConfig \Configure{MkHalign}{\hlg:a}{\hlg:b}
 
4076
   \hlg:c\hlg:d{\hlg:e\RecallMkHalignConfig}\hlg:f
 
4077
%
 
4078
   \MkHalign#{@1}@2\EndMkHalign \RecallMkHalignConfig}
 
4079
\def\h:alignII@1\crcr{\h:alignI@1\cr}
 
4080
\catcode`\#6 \catcode`\@11
 
4081
\HAssign\noalign:N0
 
4082
\def\:tempc#1{\gHAdvance\noalign:N by 1
 
4083
   \ifnum \noalign:N>100
 
4084
      \global\let\noalign\o:noalign:
 
4085
      \:warning{TeX4ht can't handle
 
4086
                  \string\everycr{...\string\noalign...}}%
 
4087
   \fi
 
4088
%
 
4089
   \vtop{\IgnorePar\a:noalign\vtop{\IgnorePar#1}\b:noalign}\cr
 
4090
   \global\tmp:toks\everycr \global\everycr{}\cr
 
4091
   \o:noalign:{\global\everycr\tmp:toks \gHAssign\noalign:N0 }%
 
4092
 }
 
4093
\HLet\noalign\:tempc
 
4094
 
 
4095
 
 
4096
 
 
4097
\fi
 
4098
 
 
4099
\def\:temp{\let\:shrp##} \:temp
 
4100
 
 
4101
\fi
 
4102
 
 
4103
\ifHtml \def\Canvas{\ht:special{t4ht"}}
 
4104
\let\EndCanvas\Canvas
 
4105
\def\:img{%
 
4106
   \ifx       *\:temp  \let\:temp\i:mgif \let\:next\:GIf
 
4107
   \else \ifx +\:temp  \let\:temp\i:mgif \let\:next\:Gif
 
4108
   \else \ifx [\:temp  \let\:temp\im:g
 
4109
   \else               \def\:temp{\im:g[{\csname
 
4110
                                        a:Picture-alt\endcsname}]}%
 
4111
   \fi \fi \fi  \:temp}
 
4112
\def\xim:g[#1]#2{{\cond:pic{%
 
4113
   \def\gif:nm{\edef\gif:nm}\gif:name{#2}%
 
4114
   \expandafter\get:ext\gif:nm.!*?: %
 
4115
   \edef\PictureFile{\gif:nm\ifx\:temp\empty \PictExt\fi}%
 
4116
   \Needs-\PictureFile \ht:special{t4ht@-}%
 
4117
   \a:IMG\ht:special{t4ht=\PictureFile}\b:IMG
 
4118
   \a:PictureAlt{#1}\b:PictureAlt \d:IMG
 
4119
   \a:PictureAttr{\at:IMG}\e:IMG}}\After:Picture}
 
4120
\def\noim:g[#1]#2{}
 
4121
\let\im:g\xim:g
 
4122
\def\strt:gf#1#2{#2%
 
4123
   \csname a:PictureAlt*+\endcsname
 
4124
   \if #1!\ht:special{t4ht!\:AltPicture:}%
 
4125
          \global\let\:AltPicture:\empty  \fi 
 
4126
   \ht:special{t4ht|}%
 
4127
   \ht:special{t4ht++\PictureFile}%
 
4128
   \iprt:special
 
4129
}
 
4130
\def\nd:gf#1#2{%
 
4131
   \let\ht:special\tex:special
 
4132
   \ht:special{t4ht+}%
 
4133
   \if #1!\ht:special{t4ht!}\fi    
 
4134
   \ht:special{t4ht|}%
 
4135
   \csname b:PictureAlt*+\endcsname
 
4136
   \ifx #2\relax \else \csname a:PictureAttr*+\endcsname{#2}\e:IMG\fi
 
4137
}
 
4138
\def\img:alt{\ht:special{t4ht@-}%
 
4139
   \a:IMG\ht:special{t4ht=\PictureFile}\b:IMG}
 
4140
\def\:Gif#1{\cond:pic{%
 
4141
   \gif:name{#1}\csname a:Picture+\endcsname
 
4142
   \strt:gf!\img:alt
 
4143
   \def\EndPicture{\nd:gf!{\c:IMG\Pic:Img}%
 
4144
      \let\EndPicture\:UnDef \csname b:Picture+\endcsname
 
4145
      \After:Picture}}}
 
4146
\def\:GIf#1{\cond:pic{\ifvmode\vfill\break\else
 
4147
      \ht:special{t4ht@[}\hfill\break.\ht:special{t4ht@]}\fi
 
4148
   \gif:name{#1}\csname a:Picture*\endcsname
 
4149
   \strt:gf!\img:alt
 
4150
      \ifmmode \expandafter\vcenter\else \expandafter\vtop\fi
 
4151
        \bgroup   \let\EndPicture\:EndGIf  \NoHtmlEnv }}
 
4152
\def\:EndGIf{%
 
4153
        \egroup \nd:gf!{\c:IMG \Pic:Img}\csname b:Picture*\endcsname
 
4154
        \After:Picture}
 
4155
\def\After:Picture{\After:EndPicture
 
4156
   \global\let\After:EndPicture\empty}
 
4157
\let\After:EndPicture\empty
 
4158
\def\AfterPicture#1{\append:def\After:EndPicture{#1}%
 
4159
   \global\let\After:EndPicture\After:EndPicture}
 
4160
\def\iprt:special{%
 
4161
   \def\ht:special##1{\tex:special{t4ht+##1}}}
 
4162
\let\tex:special\ht:special
 
4163
\def\x:GifText[#1]#2{\cond:pic{%
 
4164
   \ifx \:next\:GIf
 
4165
      \def\gif:box{\vtop\bgroup \NoHtmlEnv \let\gif:box\egroup}%
 
4166
   \else  \let\gif:box\empty  \fi
 
4167
   \gif:name{#2}%
 
4168
   \img:alt  \def\:temp{#1}%
 
4169
   \ifx \:temp\empty \else
 
4170
       \csname a:PictureAlt*+[]\endcsname
 
4171
           {#1}\csname b:PictureAlt*+[]\endcsname\fi
 
4172
   \ht:special{t4ht>\jobname.tmp}%                    
 
4173
   \strt:gf-\empty  \gif:box
 
4174
   \def\EndPicture{%
 
4175
     \gif:box  \nd:gf-\relax  \ht:special{t4ht<\jobname.tmp}%
 
4176
     \csname a:PictureAttr*+[]\endcsname{\c:IMG\Pic:Img}\e:IMG
 
4177
     \After:Picture}%
 
4178
}}
 
4179
\let\:GifText\x:GifText
 
4180
\def\no:GifText[#1]{\:gobble}
 
4181
\ifx \:DraCatCodes\:UnDef
 
4182
   \def\Pic:Img{\at:IMG}
 
4183
 
 
4184
\fi
 
4185
\def\gif:name#1{\edef\at:IMG{\noexpand\get:gfnm#1 !*?: }\at:IMG}
 
4186
\def\get:gfnm#1 #2!*?: {\def\at:IMG{#2}%
 
4187
   \ifx \at:IMG\empty\else
 
4188
      \expandafter\aT:IMG\at:IMG!*?: %
 
4189
   \fi
 
4190
   \gif:nm{#1}}
 
4191
\def\aT:IMG#1 !*?: {\def\at:IMG{#1}}
 
4192
\def\NextPictureFile{\def\Next:PictureFile}
 
4193
\NextPictureFile{}
 
4194
\def\gif:nm#1{%
 
4195
   \gHAdvance\P:ctureCount  1
 
4196
   \xdef\PictureFile{#1}\ifx  \PictureFile\empty
 
4197
      \xdef\PictureFile{\Next:PictureFile}\fi
 
4198
   \global\let\Next:PictureFile\empty
 
4199
   \ifx  \PictureFile\empty
 
4200
      \bgroup  \Advance:\P:ctureCount  -\Pic:Cnt
 
4201
      \xdef\PictureFile{\j:bname\P:ctureCount
 
4202
                        x\Pic:Dm\PictExt}%
 
4203
      \egroup
 
4204
   \else
 
4205
      \expandafter\get:ext\PictureFile.!*?: %
 
4206
      \ifx\:temp\empty \xdef\PictureFile{\PictureFile\PictExt}\fi
 
4207
   \fi
 
4208
   \immediate\write-1{l. \the\inputlineno\space Writing
 
4209
                 \jobname.idv[\P:ctureCount] (\PictureFile)}%
 
4210
   }%
 
4211
\def\SavePicture#1{\def\:tempa{#1}\SaveP:cture}
 
4212
\Odef\SaveP:cture[#1]{%
 
4213
   \edef\:tempb{\noexpand\Odef\expandafter\noexpand\:tempa[####1]{{%
 
4214
      \let\noexpand\Log:Needs\noexpand\:gobble
 
4215
      \noexpand\Picture[\HCode{#1}]{\PictureFile\space####1}}}}%
 
4216
   \:tempb \expand:after{\global\expandafter\let\:tempa}\:tempa }
 
4217
\def\NewPictureDomain#1{%
 
4218
   \global\let\Pic:Cnt\P:ctureCount
 
4219
   \def\Pic:Dm{#1} \ifx \Pic:Dm\empty
 
4220
      \xdef\Pic:Dm{\P:c:Dm}%
 
4221
      \gHAdvance\P:c:Dm    1
 
4222
   \fi }
 
4223
\HAssign\P:c:Dm  0
 
4224
\let\Pic:Dm\empty
 
4225
\HAssign\Pic:Cnt1
 
4226
\HAssign\P:ctureCount0
 
4227
\let\:AltPicture:\empty        
 
4228
\def\pic:gobble{\ifx \EndPicture\:UnDef \else \expandafter\:gobble\fi}
 
4229
\def\pic:gobbleII{\ifx \EndPicture\:UnDef \else \expandafter\:gobbleII\fi}
 
4230
\def\nopic:gobble#1{\ifx \EndPicture\:UnDef \else #1\fi}
 
4231
\def\pic:cond#1#2{%
 
4232
   \ifx\EndPicture\:UnDef \def\end:condpic{\EndPicture}\expandafter#1%
 
4233
   \else                  \let\end:condpic\empty  \expandafter#2%
 
4234
   \fi }
 
4235
\def\cond:pic#1{%
 
4236
   \ifx \EndPicture\:UnDef #1\else
 
4237
      \let\E:pic\EndPicture \PushMacro\E:pic
 
4238
      \def\EndPicture{\PopMacro\E:pic \let\EndPicture\E:pic}\fi}
 
4239
\def\PictureOff{%
 
4240
   \expandafter\let\csname Pic:\Pic:On\endcsname\EndPicture
 
4241
   \ifx \EndPicture\:UnDef   \let\EndPicture\empty \fi
 
4242
   \let\im:g\noim:g
 
4243
\let\:GifText\no:GifText
 
4244
%
 
4245
   \Advance:\Pic:On  1 }
 
4246
\def\PictureOn{%
 
4247
   \ifnum \Pic:On>0
 
4248
     \Advance:\Pic:On  -1
 
4249
     \ifnum \Pic:On=0  \let\im:g\xim:g
 
4250
\let\:GifText\x:GifText
 
4251
%
 
4252
     \fi
 
4253
     \expand:after{\let\EndPicture}\csname Pic:\Pic:On\endcsname
 
4254
     \ifx \EndPicture\relax \let\EndPicture\:UnDef\fi
 
4255
   \else
 
4256
     \:warning{\string\PictureOn\space without \string\PictureOff}%
 
4257
   \fi }
 
4258
\HAssign\Pic:On  0
 
4259
\def\:temp#1{\ifx \EndPicture\:Undef
 
4260
      \relax\ifmmode\hbox{$#1$}\else \hbox{#1}\fi
 
4261
   \else \o:smash:{#1}\fi}
 
4262
\HLet\smash\:temp
 
4263
 
 
4264
\fi
 
4265
\def\P:ct{\leavevmode  \futurelet\:temp\:img}
 
4266
\let\Picture\P:ct
 
4267
\def\yes:pic{\PictureOn}
 
4268
\def\no:pic{\PictureOff}
 
4269
\def\i:mgif#1{\futurelet\:temp\:gif}
 
4270
 
 
4271
\def\:gif{%
 
4272
   \ifx \:temp[\expandafter\:GifText
 
4273
   \else       \expandafter\:next       \fi }
 
4274
 
 
4275
 
 
4276
 
 
4277
\def\at:startdoc{%
 
4278
    \let\:startdoc\:UnDef    \let\at:startdoc\:UnDef
 
4279
    \edef\NoHtmlEnv{\NoHtmlEnv}%
 
4280
\append:def\NoHtmlEnv{\SUBOff \SUPOff}\HtmlEnv
 
4281
%
 
4282
    \a:Preamble
 
4283
    \a:PROLOG \a:HTML \a:HEAD
 
4284
%
 
4285
\ht:special{t4ht>\jobname.tmp}{\everyhbox{}\hbox
 
4286
   {x\ht:special{t4ht;\a:rootfont:}x}}%
 
4287
\ht:special{t4ht<\jobname.tmp}%
 
4288
}
 
4289
\def\:startdoc{%
 
4290
    \at:startdoc
 
4291
    \edef\:temp{\pageno\the\pageno}%
 
4292
    {\let\HCode\:gobble \par\newpage}\:temp}
 
4293
  
 
4294
\ifHtml
 
4295
   \def\HTrace#1{\csname #1:T\endcsname}
 
4296
\def\EndHTrace#1{\csname #1:t\endcsname}
 
4297
\def\RULE:T{\ht:special{t4ht@\%R}}  \def\RULE:t{\ht:special{t4ht@\%r}}
 
4298
\def\GROUP:T{\ht:special{t4ht@\%P}}  \def\GROUP:t{\ht:special{t4ht@\%p}}
 
4299
\def\CHAR:T{\ht:special{t4ht@\%C}}  \def\CHAR:t{\ht:special{t4ht@\%c}}
 
4300
\def\HSPACE:T{\ht:special{t4ht@\%H}}  \def\HSPACE:t{\ht:special{t4ht@\%h}}
 
4301
\def\VSPACE:T{\ht:special{t4ht@\%V}}  \def\VSPACE:t{\ht:special{t4ht@\%v}}
 
4302
 
 
4303
\def\Send#1{\Configure{Send:#1}}
 
4304
\def\DviSend{\let\send:special\ht:special
 
4305
   \ht:special{t4ht\string~}\EndPauseBACK\ht:special{t4ht\string~}%
 
4306
   \ht:special{t4ht\string~}}
 
4307
\def\EndDviSend{\send:special{t4ht\string~}%
 
4308
   \send:special{t4ht\string~}\PauseBACK\send:special{t4ht\string~}%
 
4309
   \let\send:special\:gobble}
 
4310
\def\PauseBACK{\send:special{t4ht\string~<(}}
 
4311
\def\EndPauseBACK{\send:special{t4ht\string~<)}}
 
4312
\def\HideBACK{\send:special{t4ht\string~<[}}
 
4313
\def\EndHideBACK{\send:special{t4ht\string~<]}}
 
4314
\def\MiniBACK{\send:special{t4ht\string~<-}}
 
4315
\def\EndMiniBACK{\send:special{t4ht\string~<+}}
 
4316
 
 
4317
 
 
4318
   
 
4319
\fi
 
4320
 
 
4321
\ifHtml  
 
4322
\fi
 
4323
\def\V:rbatim{\begingroup \begin:Verb \Verb:env }
 
4324
\def\:EndVerbatim{\end:Verb \endgroup }
 
4325
\def\Verb:env{\no:catcodes0{64}{12}\no:catcodes{65}{90}{11}%
 
4326
   \no:catcodes{91}{96}{12}\no:catcodes{97}{122}{11}%
 
4327
   \no:catcodes{123}{255}{12}%
 
4328
   \catcode`\^^M13    \catcode`\ 13    \catcode`\^^I13
 
4329
   \:Verbatim      \::Verbatim }%
 
4330
\def\::Verbatim{\futurelet\:temp\V:erbatim}
 
4331
\def\V:erbatim{%
 
4332
   \ifx -\:temp  \expandafter\Ve:rbatim
 
4333
   \else  \let\start:verb\Ver:batim  \expandafter\Ver:sp \fi }
 
4334
\def\Ver:sp{%
 
4335
   \ifx \ver:sp\:temp  \expandafter\Ver:assg
 
4336
   \else         \expandafter\Ver:ln \fi }
 
4337
\def\Ver:ln{%
 
4338
   \ifx \ver:ln\:temp  \expandafter\Ver:assg
 
4339
   \else         \expandafter\start:verb \fi }
 
4340
\def\Ver:assg{\afterassignment\start:verb\let\:temp}
 
4341
{
 
4342
\catcode`\/0
 
4343
/catcode`/\12
 
4344
/gdef/Ve:rbatim#1#2{/catcode`#20
 
4345
   /ifx  #2\/let/start:verb/Verb:atim
 
4346
   /else    /let/start:verb/Ver:batim /fi
 
4347
   /futurelet/:temp/Ver:sp}
 
4348
}
 
4349
 
 
4350
{
 
4351
\catcode`\^^I13  \catcode`\/0   \catcode`\\12
 
4352
/catcode`/.10  /catcode`/^^M13      /catcode`/ 13%
 
4353
/gdef/:Verbatim{%
 
4354
.../def^^M{/ht:everypar{/Verb:eoln}/Verb:boln/par/leavevmode}%
 
4355
.../def {/Verb:sp}%
 
4356
.../let/ver:sp %
 
4357
.../let/ver:ln^^M%
 
4358
.../def^^I{/leavevmode  }}}
 
4359
 
 
4360
{
 
4361
\xdef\Verb:atim#1\EndVerbatim{\noexpand\vrb:tt
 
4362
   \leavevmode#1\noexpand\:EndVerbatim}
 
4363
\catcode`\/0   /catcode`/\12
 
4364
/xdef/Ver:batim#1\EndVerbatim{/noexpand/vrb:tt
 
4365
   /leavevmode#1/noexpand/:EndVerbatim}
 
4366
}
 
4367
 
 
4368
\NewConfigure{VerbatimEnv}[2]{\def\begin:Verb{#1}\def\end:Verb{#2}}
 
4369
\Configure{VerbatimEnv}
 
4370
   {\par  \edef\leftsk:p{\hskip\Verb:Left}%
 
4371
    \leftskip\z@ \parindent\z@ \ht:everypar{\verb:config}}
 
4372
   {\aft:Verb\par}
 
4373
\def\verb:config{\bef:Verb\csname leftsk:p\endcsname
 
4374
   \def\verb:config{\Verb:boln \def\Verb:eoln{\leavevmode\par}\leftsk:p}}
 
4375
 
 
4376
                    
 
4377
\ifx\beginL\@undefined \else
 
4378
   \def\:temp{\o:beginL:\a:Lregion}
 
4379
\HLet\beginL=\:temp
 
4380
\def\:temp{\b:Lregion\o:endL:}
 
4381
\HLet\endL=\:temp
 
4382
\NewConfigure{Lregion}{2}
 
4383
\def\:temp{\o:beginR:\a:Rregion}
 
4384
\HLet\beginR=\:temp
 
4385
\def\:temp{\b:Rregion\o:endR:}
 
4386
\HLet\endR=\:temp
 
4387
\NewConfigure{Rregion}{2}
 
4388
 
 
4389
   \Hinput{etex4ht}
 
4390
\fi
 
4391
\ifHtml      \def\:tempa{\:Hinclude}
 
4392
\else
 
4393
    \:CheckOption{th4}\if:Option  \def\:tempa{\input th4.4ht}
 
4394
    \else  \let\:tempa\empty \fi
 
4395
\fi
 
4396
\:CheckOption{core} \if:Option  \let\:tempa\empty \fi
 
4397
\:CheckOption{base} \if:Option  \let\:tempa\empty \fi
 
4398
\:tempa
 
4399
 
 
4400
\:CheckOption{debug}
 
4401
\if:Option \def\HTraceHPageOn{%
 
4402
   \def\:buttrc##1##2{\no:pic  \immediate\write16{%
 
4403
       l.\the\inputlineno -[\HPageDepth]- \string##1##2}\yes:pic
 
4404
   }}
 
4405
\def\HTraceHPageOff{\def\:buttrc##1##2{}}
 
4406
\HTraceHPageOn
 
4407
 
 
4408
\else      \def\:buttrc#1#2{}
 
4409
\let\HTraceHPageOn\empty
 
4410
\let\HTraceHPageOff\empty
 
4411
 \fi
 
4412
 
 
4413
\ifHtml \else \let\EndPreamble\empty \fi
 
4414
 
 
4415
\ifHtml \:startdoc
 
4416
\let\:shipout\shipout
 
4417
\def\shipout{\vfil\break\let\shipout\:shipout \shipout}
 
4418
 \fi   
 
4419
 
 
4420
\ifx \Hinput\:UnDef \else
 
4421
  \Hinput{tex4ht2}
 
4422
  \ifx \a:ProTex\:UnDef
 
4423
\else \input ProTex.4ht \fi
 
4424
 
 
4425
\fi
 
4426
\def\:usersty#1,#2!*?: {\def\:temp{#1}%
 
4427
   \ifx \:temp\empty \else
 
4428
      \expandafter\ifx \csname #1\endcsname\relax
 
4429
         \expandafter\let \csname #1\endcsname=\empty
 
4430
         \input #1
 
4431
      \fi
 
4432
      \def\:temp{#2}\expandafter\:temp
 
4433
   \fi}
 
4434
\edef\TeXivht{\expandafter\ifx \csname TeXivht\endcsname\relax
 
4435
  \else \noexpand\:usersty\TeXivht,!*?: \fi
 
4436
  \let\noexpand\TeXivht\noexpand\:UnDef
 
4437
  \let\noexpand\:usersty\noexpand\:UnDef  }
 
4438
 
 
4439
 
 
4440
\rmv:ifs  \let\rmv:ifs\:UnDef
 
4441
\:RestoreCatcodes    \TeXivht
 
4442
\endinput
 
4443