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 %
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 %
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. %
17
% This work has the LPPL maintenance status "maintained".%
19
% This Current Maintainer of this work %
20
% is Eitan M. Gurari. %
22
% If you modify this program your changing its signature %
23
% with a directive of the following form will be %
25
% \message{signature} %
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}
32
\ifx \Preamble\UnDef \else
33
\csname expand:after\endcsname{\csname
34
BeforeTeXIVht\endcsname\let\BeforeTeXIVht\UnDef}
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
81
\let\expandafter\noexpand\csname :RestoreCatcodes\endcsname
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
88
\catcode`\noexpand ^\the\catcode`^\relax
91
\catcode`\noexpand _\the\catcode`_\relax
94
\catcode`\^13 \global\let\sys:sp^
95
\catcode`\_13 \global\let\sys:sb_
98
\catcode`\^7 \catcode`\|=12 \catcode`"12
100
\def\:temp{\csname newif\endcsname}
102
\expandafter\ifx \csname #1\endcsname\relax
103
\expandafter\:temp \csname #1\endcsname
107
\:tempa{if:removeindent}
109
\ifx \Htmltrue\:UnDef
110
\def\:temp{\csname newif\endcsname}
111
\expandafter\:temp \csname ifHtml\endcsname \Htmlfalse
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}
125
\expandafter\ifx \csname @latex@error\endcsname\relax
126
\:latexfalse \tracingstats1
128
\if:latex\else \ifx \@currname\empty
129
\def\:temp{\ifx \HCode\:UnDef
130
\:warning{Missing \string\Preamble...\string\EndPreamble?}\fi}
132
\noexpand\expandafter
133
\noexpand\expandafter
134
\noexpand\expandafter
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
145
\expandafter\noexpand \csname enddocument\endcsname
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}}%
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
165
\def\cfg:fl#1.#2!*?: {\edef\:tempa{#2}\edef\config:file{%
166
\CurrentOption \ifx \:tempa\empty .cfg\fi}}
168
\DeclareOption*{\load:cfg}
170
\let\o:document\document
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{}%
179
\expandafter\let\csname enddocument\endcsname\empty
181
\let\:begindocumenthook\@begindocumenthook
182
\def\@begindocumenthook{\csname a:AtBeginDocument\endcsname
183
\:begindocumenthook \csname b:AtBeginDocument\endcsname }%
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
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
198
\def\:temp{\input \config:file\relax
202
\let\@latex@error\:latex@error
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}%
221
\ifx \PLATFORM\:UnDef \else
222
\message{ [\PLATFORM] }\let\PLATFORM\:UnDef\fi
224
\expandafter\ifx \csname c:#1:\endcsname\relax
225
\:warning{\string\Configure{#1}?}
227
\csname c:#1:\endcsname}
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
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
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:}%
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}%
271
\def\:temp{#3}\ifx \:temp\empty \else
272
\expandafter\pend:defIII\csname toc#1\endcsname{#3####2}%
274
\def\:temp{#2}\ifx \:temp\empty \else
275
\expandafter\pend:defIII\csname toc#1\endcsname{#2####1}%
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
285
\def\:prolog#1#2,#3!*?: {%
287
\edef\:tempc{\if*#2\fi}%
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}%
295
\expand:after{\pro:log{#1}}\expandafter{\:tempc}%
297
\if ,#3,\else \expand:after{\:prolog{#1}#3!*?: }\fi
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
308
\def\seq:config#1#2{%
309
\expandafter\let\csname a:#1\endcsname=\empty
310
\:prolog {#1}#2,!*?: }
312
\NewConfigure{AtBeginDocument}[2]{%
313
\def\:temp{#1#2}\ifx \:temp\empty
314
\concat:config\a:AtBeginDocument{}
315
\concat:config\b:AtBeginDocument{}%
317
\concat:config\a:AtBeginDocument{#1\relax}%
318
\concat:config\b:AtBeginDocument{#2\relax}%
320
\global\let\a:AtBeginDocument=\a:AtBeginDocument
321
\global\let\b:AtBeginDocument=\b:AtBeginDocument
323
\Configure{AtBeginDocument}{}{}
324
\NewConfigure{Css}[1]{\def\aa:Css{#1}}
326
\catcode`\#=12 \def\#{#} \catcode`\#=6
327
\NewConfigure{special}[1]{\def\ht:special{#1}}
328
\Configure{special}{\special
330
\long\def\expand:after#1{\def\e:tmp{#1}\expandafter\e:tmp}
332
\immediate\write-1{--------------------------------------}%
333
\immediate\write-1{--- Note --- #1}%
334
\immediate\write-1{--------------------------------------}%
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{%
341
\expandafter\expandafter\expandafter\:temp\expandafter{#1#2}}
342
\long\def\pend:def#1#2{%
345
\expandafter\expandafter\expandafter\expandafter
346
\expandafter\expandafter\expandafter\:tempa
347
\expandafter\expandafter\expandafter{\expandafter\:temp #1}}
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?}
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}%
364
\def\:temp{#2}\ifx \:temp\empty \let\set:Preamble\:UnDef
365
\else \expand:after{\set:Preamble#2!*?: }\fi
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
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
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}
386
\def\Hinclude{\afterassignment\:Use
387
\expandafter\def\csname Use:\Use:N\endcsname ####1}%
388
\def\:Hinclude{\ifx \:USE \empty
390
\let\:Hinclude\:UnDef
395
\pend:def\:USE{\let\:USE\empty}%
396
\expand:after{\:USE \:Hinclude}\fi}%
399
\def\:Preamble{\ifx \:next[%
400
\def\Preamble[##1]##2{\egroup
401
\def\:CheckOption####1{\def\:temp{####1}%
403
\expandafter\:ScanOptions\Preamble,,//}
404
\def\:ScanOptions####1,####2//{\def\:next{####1}%
406
\else \ifx \:temp\:next \:Optiontrue \let\:next\relax
407
\else \def\:next{\:ScanOptions####2//}%
411
\def\Preamble{html,##2}\else \def\Preamble{##2}\fi
412
\ifx \config:opt\:UnDef
415
\expandafter\expandafter\expandafter\def
416
\expandafter\expandafter\expandafter\:temp
417
\expandafter\expandafter\expandafter{%
418
\expandafter\config:opt\expandafter,\Preamble}%
421
\expandafter\set:Preamble\:temp,!*?: %
423
\def\:temp####1.4ht####2!*?: {\def\:temp{####2}%
425
\def\:temp{th4}\ifx \:temp\Preamble \else
427
\input tex4ht.4ht \ht:special{t4ht@]}%
429
\expandafter\:temp\Preamble.4ht!*?: %
430
\expandafter\xtrct:hin\Preamble,,!*?: %
437
\def\Preamble##1{\egroup \def\:CheckOption####1{\def\:temp{####1}%
439
\expandafter\:ScanOptions\Preamble,,//}
440
\def\:ScanOptions####1,####2//{\def\:next{####1}%
442
\else \ifx \:temp\:next \:Optiontrue \let\:next\relax
443
\else \def\:next{\:ScanOptions####2//}%
447
\def\Preamble{html,##1}\else \def\Preamble{##1}\fi
448
\ifx \config:opt\:UnDef
451
\expandafter\expandafter\expandafter\def
452
\expandafter\expandafter\expandafter\:temp
453
\expandafter\expandafter\expandafter{%
454
\expandafter\config:opt\expandafter,\Preamble}%
457
\expandafter\set:Preamble\:temp,!*?: %
459
\def\:temp####1.4ht####2!*?: {\def\:temp{####2}%
461
\def\:temp{th4}\ifx \:temp\Preamble \else
463
\input tex4ht.4ht \ht:special{t4ht@]}%
465
\expandafter\:temp\Preamble.4ht!*?: %
466
\expandafter\xtrct:hin\Preamble,,!*?: %
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
481
\if:removeindent \ShowIndent \hskip -\parindent \a:Par
483
\ifdim \parindent>\z@ \hskip -\parindent \fi
485
\ifdim \parindent>\z@ \hskip \parindent \fi
489
\HtmlEnv \IgnorePar \IgnoreIndent {\ht:everypar{}\leavevmode}\a:BODY
490
\csname a:@BODY\endcsname}
491
\NewConfigure{@HTML}[1]{\concat:config\a:@HTML{#1}}
493
\NewConfigure{PROLOG}[1]{\seq:config{PROLOG}{#1}}
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
505
\def\EndP{\Protect\par:end}
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}
514
\expandafter\gl:let\csname \EndP:cnt :sv\endcsname \par:end
515
\gl:let\par:end\empty
516
\gHAdvance \EndP:cnt 1 }
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}}
530
\NewConfigure{@BODY}[1]{\concat:config\a:@BODY{#1}}
532
\NewConfigure{@/BODY}[1]{\expandafter
533
\concat:config\csname a:@/BODY\endcsname{#1}}
534
\expandafter\let\csname a:@/BODY\endcsname\relax
537
\expandafter\def\csname opt@hyperref.sty\endcsname{tex4ht}
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
554
\ifx \o:document\:UnDef
556
\csname recall:sub\endcsname
557
\csname recall:sup\endcsname}
559
\def\:CheckOption#1{\def\:temp{#1}%
561
\expandafter\:ScanOptions\config:opt,,//}
562
\def\:ScanOptions#1,#2//{\def\:next{#1}%
564
\else \ifx \:temp\:next \:Optiontrue \let\:next\relax
565
\else \def\:next{\:ScanOptions#2//}%
567
\let\early:sub=\empty
568
\:CheckOption{early_} \if:Option
569
\:CheckOption{no_} \if:Option \else
570
\:CheckOption{_13} \if:Option
573
\mathcode`\noexpand\_=\the\mathcode`\_
574
\catcode`\noexpand\_=\the\catcode`\_
576
\mathcode`\_="8000 \catcode`\_=13
581
\mathcode`\noexpand\_=\the\mathcode`\_
582
\catcode`\noexpand\_=\the\catcode`\_
583
% \immediate\write16{.....sub \the\catcode`\_}%
585
\mathcode`\_="8000 \catcode`\_=12
586
% \immediate\write16{.....sub 12}
591
\Log:Note{for \string_ at preamble,
592
use the command line option `early\string_'}%
594
\let\early:sup=\empty
595
\:CheckOption{early^} \if:Option
596
\:CheckOption{no^} \if:Option \else
597
\:CheckOption{^13} \if:Option
600
\mathcode`\noexpand\^=\the\mathcode`\^
601
\catcode`\noexpand\^=\the\catcode`\^
603
\mathcode`\^="8000 \catcode`\^=13
608
\mathcode`\noexpand\^=\the\mathcode`\^
609
\catcode`\noexpand\^=\the\catcode`\^
610
% \immediate\write16{.....sup \the\catcode`\^}%
612
\mathcode`\^="8000 \catcode`\^=12
613
% \immediate\write16{.....sup 12}%
618
\Log:Note{for \string^ at preamble,
619
use the command line option `early\string^'}%
622
\let\:CheckOption\:UnDef
623
\let\:ScanOptions\:UnDef
628
\let\:onefilewithoptions\@onefilewithoptions
629
\def\@onefilewithoptions#1[{%
630
\let\:temp\@reset@ptions
632
\let\@reset@ptions\:temp
634
\catcode`:=\the\catcode`:%
635
\catcode`@=\the\catcode`@}%
636
\catcode`\:=11 \catcode`\@=11
640
\:onefilewithoptions#1[}
641
\def\a:usepackage{\input usepackage.4ht }
644
\expandafter\ifx \csname tex4ht\endcsname\relax
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
653
\append:def\:tempc{,#1}
655
\def\:temp{#2}\ifx \:temp\empty
656
\else \def\:temp{\config:opt #2!*?: }\fi
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
670
\let\:tempc\empty \config:opt #1,#2,!*?: %
673
\let\:tempc\empty \config:opt #2,!*?: %
675
\let\config:opt\:tempc
680
\expandafter\expandafter\expandafter
681
\:temp\csname tex4ht\endcsname !*?: %
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}
688
\if:latex \let\:temp\empty \fi
691
\let\config:file\:temp \let\:temp\empty
693
\edef\:temp{\noexpand\input \:temp\space}
698
\pend:def\:tempc{\:RestoreCatcodes }
699
\append:def\:tempc{\endinput}
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 ?!*?:
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 ????!*?:
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 ???!*?:
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 ??!*?:
727
\else \:CheckOption{xhtml} \if:Option
729
\else \:CheckOption{html}
730
\if:Option \let\j:bname\jobname \fi
734
\def\html:rightskip{\rightskip\z@ plus 0.5\hsize minus0.5\hsize }
736
\html:rightskip \frenchspacing
737
\let\nonfrenchspacing\relax
744
\exhyphenpenalty10000
748
\displaywidowpenalty0
749
\predisplaypenalty-10
750
\postdisplaypenalty1000
751
\abovedisplayskip30pt plus 10pt
752
\belowdisplayskip\abovedisplayskip
753
\abovedisplayshortskip\abovedisplayskip
754
\belowdisplayshortskip\abovedisplayskip
757
\def\:temp{\:warning{Insert \string\magnification
758
=\the\tmp:cnt\space before tex4ht}}%
759
\afterassignment\:temp\tmp:cnt}%
760
\ht:everypar{\HtmlPar}}
763
\output={\noexpand\SaveEverypar \noexpand\ht:everypar{}\the\output
764
\noexpand\RecallEverypar}}
767
\edef\:temp{\meaning\everypar}
768
\edef\:tempa{\string\everypar}
770
\let\ht:everypar\everypar
772
\:warning{nonprimitive \string\everypar}
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}}
801
\ifx \html:par\:UnDef \let\html:par\empty \fi
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}
810
\def\html:addr{\xdef\last:haddr{\file:id-\html:lbl}%
811
\g:advance\html:lbl by 1\relax }
814
\global\let\maxfile:id=\file:id
816
\hbadness=10000 \vbadness=10000
817
\:CheckOption{fussy} \if:Option \else
818
\hfuzz=99in \vfuzz=\hfuzz
820
\hyphenpenalty=1000 \exhyphenpenalty=1000
821
\def\html:rightskip{\rightskip = 0pt plus 0.5\hsize minus0.5\hsize }
823
\ifx \ht:special\:UnDef
824
\let\ht:special=\special
826
\def\HCode#1{\ifx \EndPicture\:UnDef
827
\relax\ifvmode\leavevmode\fi\ht:special{t4ht=#1}\fi}
829
\def\NewLineChar{\bgroup \catcode`\^=7 \:NewLineChar}
830
\def\:NewLineChar#1{\egroup \def\:newlnch{ #1}}
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>}}
841
\HCode{<\tag:A\:newlnch \if\relax#1#2\relax \NOHREF:{}\else
842
\HREF:"#1\if\relax#1\relax \else\:sharp #2\fi"\fi
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
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
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
871
\expandafter\ifx\csname
872
cw:)Q\aXrefFile #1\endcsname\relax
875
\expandafter\expandafter\expandafter\get::hfile
876
\csname cw:)Q\aXrefFile #1\endcsname,//%
878
\def\get::hfile#1,#2//{%
879
\ifnum \file:id=0#1 \else
881
\csname cw:)F\aXrefFile #1%
882
\empty F-\endcsname\relax \else
883
\:LikeRef{)F\aXrefFile #1\empty F-}%
886
\ifx\get@hfile\:Undef \let\get@hfile=\:gobble \fi
888
\catcode`\#=12 \def\:sharp{#} \catcode`\#=6
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 }
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 }
911
\csname o:\expandafter\:gobble\string#1:\endcsname\relax
913
\csname o:\expandafter\:gobble\string#1:\endcsname#1%
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
924
\csname n:\expandafter\:gobble\string#1:\endcsname}
925
\def\HRestore#1{\relax
927
\csname o:\expandafter\:gobble\string#1:\endcsname\relax
928
\:warning{\string\HRestore\noexpand#1?}%
930
\expand:after{\let#1}\csname o:\expandafter
931
\:gobble\string#1:\endcsname
933
\immediate\openout15=\jobname.tmp
934
\bgroup \escapechar=`\\
935
\immediate\write15{\def\string\Jobname{\jobname}}
937
\immediate\closeout15
942
\ifeof15 \closein15 \:warning{No file #1}%
943
\else \closein15 \expand:after{\input #1 }%
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}}
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
973
\def\RecallEverypar{\ifnum \n:list<1
974
\:warning{\noexpand\RecallEverypar without \noexpand\SaveEverypar}%
978
\csname \n:list X\endcsname
979
\csname \n:list L\endcsname
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}
988
\let\real:par\par \def\eq:par{\par\real:par}
989
\def\:clearpage{\expandafter\ifx\eq:par\clearpage\fi}
993
\def\folio{\ifx \pageno\:UnDef \z@ \else
994
\ifnum \pageno <0 \romannumeral -\pageno
995
\else \the \pageno \fi\fi}
998
\expandafter\ifx \csname #1\endcsname\relax \else
999
\csname #1\endcsname{#2}%
1002
\def\do:list#1,#2,{%
1003
\def\:temp{#2}\ifx \:temp\empty \expandafter\stop:do
1006
\def\stop:do#1!*?: {}
1007
\def\BI:gbl{\ifx [\:temp \expandafter\bi:gbl\else
1008
\expand:after{\bi:gbl[]}\fi}
1010
\ifx \newpage\:UnDef
1011
\def\newpage{\vfil\penalty-10000 }
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}
1023
\expandafter \ifx \csname #2:\endcsname\relax
1024
\:warning{\string\DefOp...\string{#2\string}?}%
1025
\else \expand:after{\let#1}\csname #2:\endcsname
1027
\else \:warning{\string\DefOp\string#1\string{#2\string}
1028
can't redefine \string#1}%
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:}
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}
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}}%
1049
\def\HAssign{\:ssg\edef}
1050
\def\gHAssign{\:ssg\xdef}
1052
\def\:ssg#1#2{\let\d:fn#1\def\:var{#2}\futurelet\:temp\:Assgn}
1055
\expandafter\d:fn\:var[##1]{%
1056
\noexpand\csname \expandafter
1057
\string\:var[##1]\noexpand\endcsname}%
1059
\else \afterassignment\assg:v \expandafter \tmp:cnt \fi }
1061
\def\assg:v{\expandafter\d:fn\:var{\the\tmp:cnt}}
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{%
1071
\advance\tmp:cnt 1 \expandafter\no::catcodes
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}}}}
1084
\expandafter\expandafter\expandafter\global
1085
\expandafter\let\csname #1\endcsname\:UnDef
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{}
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 }
1104
@def@ConfigureHinput{%
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}%
1114
@def@:tempa##1\empty\empty\empty\empty\empty\empty{@egroup}%
1119
\let\:noindent\noindent
1120
\def\noindent{\ifx \EndPicture\:UnDef
1121
\ifvmode \IgnoreIndent\leavevmode\fi
1122
\else \:noindent \fi}
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}
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
1142
\def\LinkCommand#1#2{\L:Com#1#2,,,,,,!*?: {#1}}
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 }%
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}
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 }}
1167
\ifx\tmp:dim\:UnDeF \csname newdimen\endcsname\tmp:dim\fi
1172
\ifx \prOteCt\pr:tc \let\prOteCt\relax
1173
\else \noexpand\Protect\expandafter\noexpand\fi
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}}
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}%
1198
\show:Arg{9}{i:#1}}%
1200
\edef\:temp{\def\noexpand
1201
\par:N##1\string :##2->##3////{\noexpand\par:NN?##2//}}
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}
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}}}
1213
\ifx \xml:empty\:UnDef
1214
\:CheckOption{xhtml}
1215
\if:Option \else \:CheckOption{xml}\fi
1218
\long\def\:xhtml#1{#1}
1220
\Log:Note{for XML code, use the command line option
1224
\let\xml:empty\empty
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}
1236
\def\PushStack#1#2{%
1237
\ifx #1\:UnDef \global\let#1\empty\fi
1238
{\let\Picture\relax \xdef#1{{#2}{#1}}}}
1240
\ifx #1\empty \:warning{empty \string\PopStack\string#1\string#2?}%
1242
\else \def\:temp{\:recall#1#2}\expandafter\:temp#1\fi}
1243
\def\:recall#1#2#3#4{\gdef#1{#4}\gdef#2{#3}}
1245
\expandafter\ifx \csname c:\string#1\endcsname\relax
1246
\expandafter\gHAssign \csname c:\string#1\endcsname 0
1248
\HAssign\:temp \csname c:\string#1\endcsname
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 }
1254
\expandafter\gHAdvance \csname c:\string#1\endcsname -1
1255
\HAssign\:temp \csname c:\string#1\endcsname\relax
1257
\expandafter\gHAssign \csname c:\string#1\endcsname 0
1258
\:warning{ignored \string\PopCs\string#1 on empty stack}%
1260
\expand:after{\let#1}\csname \:temp\string#1\endcsname
1261
\ifx #1\like:unDef \let#1\:UnDef\fi
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
1276
\def\Push:Configure@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
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
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}}
1310
\def\push:config#1#2{%
1312
\expandafter\expandafter\expandafter\ifx \expandafter
1313
\csname \csname#1New:Conf\endcsname\cf:name\endcsname\relax
1314
\:warning{\string\PushConfigure{\cf:name} Failed}%
1316
\expandafter\expandafter\expandafter\PushMacro \expandafter
1317
\csname \csname#1New:Conf\endcsname\cf:name\endcsname
1320
\def\pop:config#1#2{%
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
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}}
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}%
1365
\NewConfigure{xref}{1}
1366
\def\:writeref{\write\:refout}%
1368
\edef\re:call{\catcode`\noexpand\:\the\catcode`\: }%
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}}%
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}%
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
1402
\load:ref{\jobname.xref}
1403
\csname newwrite\endcsname\:refout
1404
\if:latex \expandafter\immediate\fi
1405
\openout\:refout=\jobname.xref
1407
\def\LoadRef{\futurelet\:tempa\:LoadRef}
1410
\aftergroup\loadr:ef
1412
\aftergroup\Load:Ref \if -\:tempa \else
1416
\def\Load:Ref#1{\futurelet\:tempb\LoadRef:}
1418
\aftergroup\:loadref \ifx [\:tempb \else
1419
\aftergroup[\aftergroup]\fi}}
1421
\let\sv:cros\:CrossWord
1422
\edef\:tempd{#1}\ifx \:tempd\empty \let\:tempb N\fi
1423
\futurelet\:tempc\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 .!*?: %
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{%
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
1446
{\:tail##3#3}{##4}{##5}\fi }%
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 }%
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 }%
1458
\def\cond:CrossWord##1#3##2!*?: ##3##4##5{%
1459
\def\:temp{##1}\ifx \:temp\empty
1460
\Cross:Word{}{##3}{##4}{##5}\fi }%
1464
\if +\:tempc \def\:CrossWord{\Cross:Word{#1::}}%
1469
\ifHtml \catcode`\:=12
1471
\def\get@hfile#1{\get@hfil@ #1:::://}
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}%
1479
\def\get@@hfile#1,#2//#3{%
1481
\csname cw:#3::)F\aXrefFile #1%
1482
\empty F-\endcsname \relax
1484
\csname cw:#3::)F\aXrefFile #1%
1486
\expandafter \expandafter \expandafter \expandafter
1487
\expandafter \expandafter \expandafter \remove@fn
1490
\def\remove@fn#1#2::{#1}
1495
\NewConfigure{?Link}{1}
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
1506
\def\:temp{\the\tmp:toks}%
1507
\afterassignment\:temp \tmp:toks=}%
1508
\afterassignment\:temp
1510
\pend:defI\ifOption{\def\:temp{##1}\:Optionfalse\:ScanOptions}
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}%
1520
\expand:after{\:temp
1521
\Configure{NewConfigure}{a:}{b:}{c:}{d:}{e:}{f:}{g:}{h:}{i:}%
1524
\Hinput{Preamble} \ht:special{t4ht.\:html}
1525
\def\ScriptCommand{\begingroup \catcode`\\12
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
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}
1550
\:CheckOption{fonts+} \if:Option \def\a:rootfont:{+}
1552
\Log:Note{for marking of the base font,
1553
use the command line option `fonts+'}%
1556
\:CheckOption{verify} \if:Option
1557
\let\:chk:trc\:gobble
1559
\else \:CheckOption{verify+} \if:Option
1560
\def\:chk:trc#1{\immediate
1561
\write16{\the\inputlineno\space(\:ChkLevel) #1}}
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
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 ?}%
1581
\xdef\:CurrentChk{#1}%
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
1591
\expandafter\gHAdvance\csname #1Level:\endcsname -1
1592
\gHAdvance\:ChkLevel -1
1593
\PopStack\:CHK\:temp
1596
\PopStack\:CHK\:CurrentChk
1597
\PushStack\:CHK\:CurrentChk
1599
\immediate\write16{\the\inputlineno.
1600
--- warning --- </\:temp> instead of </#1>}%
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 ?}%
1615
\gdef\Verify{\bgroup \catcode`\ 9 \catcode`\^^M9 \:dtd}
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
1624
\let\VerifyOpen\:gobble
1625
\let\VerifyClose\:gobble
1626
\let\VerifyEmpty\:gobble
1627
\long\def\Verify#1\EndVerify{}
1628
\def\trace:chk#1 #2!*?: {}
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////%
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
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
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////%
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
1667
\trc:wrt{...##1\the\tmp:cnt....\meaning####1}%
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}}%
1677
\def\:temp{#4}\ifx \:temp\empty \else
1678
\expandafter\pend:defIII\csname toc#1\endcsname{#4####3}%
1680
\def\:temp{#3}\ifx \:temp\empty \else
1681
\expandafter\pend:defIII\csname toc#1\endcsname{#3####2}%
1683
\def\:temp{#2}\ifx \:temp\empty \else
1684
\expandafter\pend:defIII\csname toc#1\endcsname{#2####1}%
1693
\edef\:tempb{\def\noexpand
1694
\par:N##1\string :##2->##3////{\noexpand\par:NN?##2//}}
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}
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
1704
\def\d:def{\advance\tmp:cnt 1\def}
1705
\Configure{hooks}{}{}{}{}
1707
\let\c:hooks:\:gobbleIV
1712
\csname\try:tagend <#1</!*?: \endcsname\is:empty
1713
\:tagend#1!*?: \else
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}
1724
\def\tag:of#1 #2!*?: {#1}
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
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
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
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}
1752
\def\TG<#1>{\HCode{<#1>}}
1754
\:CheckOption{verify}\if:Option\else \:CheckOption{verify+}\fi
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}
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}
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
1777
\def\:temp{##1}\ifx \:temp\empty
1778
\ifx\a:crsbt\empty\ifx \aa:crsbt\empty \let\cond:bt\:gobbleIII
1782
\ifx\b:crsbt\empty\ifx \bb:crsbt\empty \let\cond:bt\:gobbleIII
1786
\def\CLB:next{\expandafter\cond:bt\next:bt{}{#3}}%
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
1792
\expandafter\cond:bt\prev:bt{}{%
1793
#1\Link[\RefFile{)B\HP:file}]{}{}#4\EndLink #2}}%
1795
\def\:temp{#5}\ifx \:temp\empty \else
1796
\def\CLB:prevtailup{%
1797
#1\Link[\RefFile{)B\HP:file}]{tail\Jobname
1800
\long\def\:tempb####1####2{\gdef\root:next{%
1801
\def\:temp{####2}\edef\HP:file{\RefFileNumber\file:id}%
1803
\global\let\root:next\empty
1804
\def\:temp{#3}\ifx \:temp\empty
1805
\Link{}{tail\Jobname}\EndLink
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
1812
\edef\:temp{\noexpand\:tempb
1813
{\RefFileNumber\file:id}{\RefFile{)B\HP:file}}}%
1818
\def\CLB:prev{\expandafter\cond:bt\prev:bt{}{#4}}%
1819
\def\CLB:prevtail{\expandafter\cond:bt\prev:bt{tail\prev:bt}{#5}}%
1823
\ifx \:temp\empty \else
1824
\def\CLB:tail{#1\Link[\RefFileNumber\file:id]{}{}#6\EndLink #2}\fi
1827
\ifx \:temp\empty \else
1828
\def\CLB:front{#1\Link{##2\RefFileNumber\file:id}{}#7\EndLink #2}\fi
1831
\def\:temp{#8}\ifx \:temp\empty \else
1832
\ifx \cond:bt\:gobbleIII
1833
\else \def\CLB:up{#1\ExitHPage{#8}#2}\fi\fi
1836
\let\cond:bt\sv:cond:bt
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
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 }%
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}%
1856
\def\:temp{prevtail}\ifx \:temp\:tempa
1857
\append:def\CLB:menu{\csname CLB:prevtailup\endcsname}%
1859
\expandafter\CLB:menuitem
1862
\Configure{crosslinks*}
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}{<>}%
1887
\NewConfigure{MkHalign}[6]{%
1888
\def\T:halign{\PushMacro\:MkHalign:\Configure{halignTB<>}{MkHalign}{<>}%
1890
\def\t:halign{#2\PopMacro\:MkHalign:
1891
\global\let\:MkHalign:\:MkHalign:}%
1892
\def\R:halign{\TT:halign \gHAdvance\HRow 1 \gHAssign\HCol1
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}%
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}%
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
1911
\xdef\Step:Col{\ifx \HMultispan\:UnDef 1 \else \HMultispan\fi}%
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
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
1923
\Configure{MkHalign}{}{}{}{}{}{}
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
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}
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}%
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
1971
\expandafter\def\csname #1\endcsname##1##2!*?: {%
1972
\if :##1:\expandafter\gob:par
1974
\expandafter\ifx \csname \string##1:#1EnCoDe\endcsname\relax
1976
\csname \string##1:#1EnCoDe\endcsname
1978
\if :##2:\expandafter\expandafter\expandafter\gob:par
1980
\expandafter\expandafter\expandafter
1981
\expandafter\expandafter\expandafter
1982
\csname #1\endcsname
1987
\expandafter\def\csname #1Char:dic\endcsname##1##2{%
1988
\def\:temp{##1}\ifx \:temp\empty \egroup
1990
\expandafter\append:def\csname #1:String\endcsname
1992
\csname \string##1:#1EnCoDe\endcsname=\:UnDef}%
1993
\expandafter\def\csname \string##1:#1EnCoDe\endcsname{##2}%
1994
\expandafter \cnf:transString
1998
\def\cnf:transString{\bgroup
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}
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}%
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}
2033
\NewConfigure{Canvas}[3]{}
2034
\NewConfigure{PictureAlt*+}{2}
2035
\NewConfigure{PictureAttr*+}[1]{%
2036
\expandafter\def\csname a:PictureAttr*+\endcsname##1{#1}%
2038
\Configure{PictureAttr*+}{\ht:special{t4ht=#1}}
2039
\NewConfigure{PictureAlt*+[]}{2}
2040
\NewConfigure{PictureAttr*+[]}[1]{%
2041
\expandafter\def\csname a:PictureAttr*+[]\endcsname##1{#1}%
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}
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}%
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}}%
2081
\expandafter\:temp\expandafter{\a:FontCss:}\Needs{("#1"): #2}%
2083
\expandafter\:temp\expandafter{\a:FontCssPlus:}\Needs{#1 #2}%
2085
\NewConfigure{htf-attr}[2]{{%
2086
\Configure{Needs}{##1}%
2087
\Needs{Font\string_css\string_base: #1Font\string_css\string_mag: #2}}}
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:}
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}}%
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
2116
\ifx \:tempa\:accented
2117
\expandafter\expandafter\expandafter\nopic:accent
2118
\else \expandafter\expandafter\expandafter\cs:accent\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}}
2126
\NewConfigure{accent}[5]{%
2127
\expandafter\ifx \csname x:\string#2\endcsname\relax
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%
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
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}%
2144
\def\:temp{#1}\def\:tempa{#2}\ifx \:temp\:tempa \else \HLet#2#1\fi
2146
\Advance:\accent:cnt by 1
2148
\edef\:tempa{\csname x:\string#2\endcsname}%
2149
\def\:temp{#3}\ifx \:temp\empty \else
2150
\expandafter\def\csname \:tempa :ac\endcsname{#3}
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}%
2159
\def\end:accent#1\empty{}
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
2166
\else \let\@tabacckludge\:tabacckludge
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
2174
\expandafter\noexpand
2175
\csname\ifmmode m\else t\fi :\acn:no\endcsname}\:temp
2178
\ifx \EndPicture\:UnDef
2179
\def\AC:PC{{\let\AC:PC\ACP:C \let\ac:nt\Ac:nt \ac:pc}%
2185
\def\:tempa{#1}\ifx \:tempa\empty
2187
\def\:tempa{#2}\ifx \:tempa\empty \AC:PC
2188
\else \csname \ifmmode m\else t\fi :\acn:no\endcsname{#2}%
2192
\else \ifx \:tempa\:temp \let\AC:PC\empty
2193
\csname C:\acn:no\endcsname{#2}%
2204
\NewConfigure{$}[3]{%
2205
\def\a:mth{\bgroup#1}\def\b:mth{#2\egroup}%
2206
\def\c:mth{{\csname HCode\endcsname{}}%
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}%
2215
\everydisplay{\ifx \EndPicture\:UnDef
2216
$$\a:display\everymath{}\everydisplay{}$$
2217
\aftergroup\b:display \c:display\fi}}
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@)}}%
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}
2247
\everydisplay{\:Pdisp}
2252
\def\sb{\m:op\:sbb{SUB}}
2254
\:CheckOption{no_} \if:Option
2256
\let\x:SUBOff\empty \let\x:SUBOn\empty
2258
\let\SUBOff\empty \let\SUBOn\empty
2260
\def\no:restore{\let\no:restore\:UnDef}
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
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
2275
\def\S:b{\m:op\s:b{SUB}}
2277
\def\S:b#1{\def\SuB:{#1}\futurelet\:temp\sub:sup}
2280
\def\sub:sup{\expandafter
2281
\ifx \blank:space\:temp \expandafter\sub:supA
2282
\else \expandafter\after:sub\fi}
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
2290
\expandafter\expandafter\csname \meaning\:temp sb\endcsname
2294
\def\a:putSUB{\sub:I \SuB:}
2295
\def\sub:I{\m:op\s:b{SUB}}
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}}
2306
\def\x:SUBOn{\def_{\ifmmode \expandafter\pr:sb
2307
\else \expandafter\sys:sb\fi}\let\sb=_
2311
\def\SUBOn{\catcode`\_8
2312
\def_{\ifmmode \expandafter\pr:sb
2313
\else \expandafter\sys:sb\fi}}
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=_
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=_
2331
\SUBOn \def\:temp{\let\sb=_
2333
\expandafter \egroup \:temp
2337
\def\sp{\m:op\:spp{SUP}}
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}}
2345
\:CheckOption{no^} \if:Option
2347
\let\x:SUPOff\empty \let\x:SUPOn\empty
2349
\let\SUPOff\empty \let\SUPOn\empty
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
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
2365
\def\S:p{\m:op\s:p{SUP}}
2367
\def\S:p#1{\def\SuP:{#1}\futurelet\:temp\sup:sub}
2368
\:CheckOption{^13} \if:Option \catcode`\_13
2369
\else \catcode`\_12\fi
2372
\def\sup:sub{\expandafter
2373
\ifx \blank:space\:temp \expandafter\sup:subA
2374
\else \expandafter\sup:subB\fi}
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 }
2380
\def\a:putSUP{\sup:I \SuP:}
2381
\def\sup:I{\m:op\s:p{SUP}}
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}}
2392
\def\x:SUPOn{\def^{\ifmmode \expandafter\pr:sp
2393
\else \expandafter\sys:sp\fi}\let\sp=^
2398
\def^{\ifmmode \expandafter\pr:sp
2399
\else \expandafter\sys:sp\fi}}
2404
\def^{\futurelet\:temp\next:hat}
2405
\def\next:hat{\ifx ^\:temp \expandafter\:dblhat\else
2406
\expandafter\:sUp\fi}%
2410
\:CheckOption{^13} \if:Option
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^}}%
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}}
2424
\append:def\no:restore{\mathcode`\^"8000 \catcode`\^13 }
2425
\append:def\SUPOn{\mathcode`\^"8000 \catcode`\^13 \let\sp=^
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=^
2435
\SUPOn \def\:temp{\let\sp=^
2437
\expandafter \egroup \:temp
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}}
2446
\NewConfigure{SUB}{2}
2447
\NewConfigure{SUP}{2}
2448
\:CheckOption{no^} \if:Option \else \:CheckOption{no_}\fi
2450
\NewConfigure{SUBSUP}[3]{}
2451
\NewConfigure{SUPSUB}[3]{}
2452
\NewConfigure{SUB/SUP}[6]{}
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:}
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}
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^+}}
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
2488
{\everypar{}\noindent\vfill\break}%
2489
\ht:special{t4ht@]}\EndNoFonts
2491
\NewConfigure{MathDelimiters}[2]{\NoFonts \ht:special{t4ht@[}%
2492
\bgroup \everypar{}\everymath{}\everydisplay{}%
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
2509
\HAssign\New:MathClass7
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}
2518
/HAssign#1/New:MathClass /def/:tempc{#1}/:NewMC
2521
PQRSTUVWXYZ[\]{/string^}{/string_}%
2523
pqrstuvwxyz{/string{}|{/string}}{/string~}!*?: %
2526
/:warning{/string#1 is already defined}
2531
\ifnum \:tempc=0 \expandafter\xdef\:tempc{#1}\expandafter\stop:do
2533
\expandafter\HAdvance\:tempc -1\relax
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
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
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
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]{%
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]{%
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}}
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
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}}
2627
\def\:temp#1{\a:right{#1}\o:right:#1\b:right{#1}}
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}
2635
\NewConfigure{over}{2}
2636
\def\:tempc{\pic:gobble\a:atop \o:atop: \pic:gobble\b:atop}
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}
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:}
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}
2671
\def\:temp{\o:leqno:\a:leqno}
2673
\NewConfigure{eqno}{1}
2674
\NewConfigure{leqno}{1}
2678
\edef\:temp{\string\special}
2679
\edef\:tempa{\meaning\special}
2680
\ifx \:temp\:tempa \else
2683
\ifx \:temp\ht:special
2684
\:warning{Redefined \string\special. Might
2685
need \string\Configure{special}{<system-special>}}
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
2695
\def\at:docend{\ifnum \HPageDepth> 0 \EndHPage[1]{}\fi
2699
\HAssign\op:fl\maxfile:id\space \close:files
2701
\ifx \nsrt:chlnks\:UnDef
2702
\else \nsrt:chlnks{tail}{}{BackChild}\fi
2706
\global\let\at:docend=\empty}
2707
\expand:after{\let\o:end}\csname end\endcsname
2708
\expandafter\def\csname end\endcsname{\HtmlEnv
2710
\csname export:hook\endcsname \csname o:end\endcsname}
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}{}%
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}
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}%
2740
\NewConfigure{end#1}[1]{\expandafter
2741
\def\csname a:end#1\endcsname{##1}}%
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}%
2750
\expandafter\let\csname if:#1toc\endcsname\if:toc
2752
\csname Every#1\endcsname{%
2753
\expandafter\ifx\csname Toc:#1\endcsname \relax\else
2754
\a:TocAt \csname Toc:#1\endcsname \b:TocAt
2758
\expandafter\def\csname #1:ttl\endcsname##1}
2761
\Get:SecAnchor{#1}{#2}{#3}%
2765
\csname Modify#1ToToc\endcsname
2766
\edef\:writetoc{\csname if:toc\endcsname{\the\:tokwrite
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
2774
{\csname #1:Href-\endcsname
2776
\no:lbl:idx \csname Modify#1Title\endcsname
2780
\gHAssign\TitleCount0 \global\let\mu:span\TitleCount
2781
\NewConfigure{toToc}[2]{%
2782
\if !#2!\expandafter\let\csname toToc:#1\endcsname\:UnDef
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}%
2789
\expandafter\let\csname if:#2toc\endcsname\empty
2790
\else \edef\:temp{?}%
2792
\expandafter\let\csname if:#2toc\expandafter\endcsname
2793
\csname IF:#2toc\endcsname
2795
\expandafter\def\csname toToc:#1\endcsname{#2}%
2797
\ifx \:tokwrite\:UnDef
2798
\csname newtoks\endcsname\:tokwrite
2800
\ifx \:tokpage\:UnDef
2801
\csname newtoks\endcsname\:tokpage
2804
\:tokwrite{\write\:tocout}
2805
\def\Get:SecAnchor#1#2#3{}
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}%
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}%
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
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
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!*?: %
2836
\ifx \:tempb\sec:typ \else
2837
\expandafter\expandafter\expandafter\noct:Check:Until
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}%
2844
\let\found:\:tempb \let\:temp\empty
2845
\else \def\:temp{\mod:typ#2!*?: }\fi
2849
\let\:tempd\:Sections \Check:Until
2850
\ifx \:tempb\sec:typ \expandafter\Do:Close \fi
2853
\ifx \:tempd\empty \let\:tempb\empty \else
2854
\PopStack\:tempd\:tempb
2855
\ifx \:tempb\sec:typ \else
2856
\expandafter\expandafter\expandafter\Check:Until
2858
\PushStack\:Sections{}%
2859
\PopStack\:Sections\:temp
2861
\PopStack\:Sections\:tempb
2862
\ifx \sec:typ\:tempb \else
2863
\csname d:\:tempb\endcsname
2864
\expandafter\Do:Close
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
2875
\def\:StartSec#1#2#3{%
2876
\def\title:chs##1##2{##2}%
2878
\a:dTocAt \csname TocAt*\endcsname \b:dTocAt
2879
\expand:after{\global\let}\csname TocAt*\endcsname\empty
2882
\ro:nd\html:lbl{1000}%
2885
\let\expandafter\TitleMark\csname #1HMark\endcsname
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
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
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}%
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
2909
\csname Cut:#1\endcsname{#3}%
2911
\global\let\sec:lvl\HPageDepth
2912
\PushStack\:Sections{#1}%
2915
\expandafter\ifx \csname :BeforeEvery#1\endcsname\relax \else
2916
\csname :BeforeEvery#1\endcsname{#3}%
2919
\expandafter\ifx \csname a:#1\endcsname\relax \else
2920
\csname a:#1\endcsname{#3}%
2922
\b:NoSection \:Ttle{#1}{#2}{\csname #1:ttl\endcsname{#3}}%
2924
\expandafter\ifx \csname b:#1\endcsname\relax \else
2925
\csname b:#1\endcsname{#3}%
2927
\expandafter\ifx \csname :Every#1\endcsname\relax \else
2928
\csname :Every#1\endcsname{#3}%
2931
\csname a:AfterTitle\endcsname \b:NoSection
2932
\def\title:chs##1##2{##1}%
2934
\def\title:chs#1#2{#1}
2935
\def\protect:wrtoc{%
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 }%
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
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}
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+'}%
2972
\def\NoLink#1{\expandafter
2973
\gdef\csname #1:Href-\endcsname{\let\EndTitle:Link\:gobble}}%
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}%
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}}%
2990
\expandafter\def\csname a:#1\endcsname##1{#2}%
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}}%
2996
\expandafter\def\csname b:#1\endcsname##1{#3}%
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
3008
\ifx \FileStream\:UnDef \else
3009
\errmessage{--- TeX4ht error ---
3010
\noexpand\FileStream is defined outside of TeX4ht}\endinput
3012
\def\FileStream{\IgnorePar
3014
-\futurelet\:temp\F:le}
3015
\def\F:le{\if +\:temp \let\:tempb
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 }
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 ---}%
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}%
3037
\edef\:temp{\noexpand\yes:pic \def\noexpand\:temp{#1}}\:temp
3039
\def\gobble:font##1##2{##2}%
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}}}}%
3048
\ht:special{t4ht@[}{\ht:everypar{}\leavevmode}\ht:special{t4ht@]}%
3050
\a:PROLOG \a:HTML \a:HEAD
3054
\xdef:cs{Lv \file:id}{\noexpand\a:TITLE
3055
\bgroup \noexpand\:TITLE: \noexpand\c:TITLE \egroup
3057
\noexpand\b:TITLE\noexpand\a:@HEAD\noexpand\b:HEAD}%
3059
\xdef:cs{Lv \file:id}{}%
3060
\a:TITLE\bgroup \:TITLE: \c:TITLE \egroup
3061
\b:TITLE \a:@HEAD\b:HEAD\B:DY
3064
\else \xdef\file:id{\csname
3065
FN \file:name\endcsname}%
3066
\ht:special{t4ht>\ifnum \file:id>\bs:fileid\space \file:name\fi }%
3069
\HAssign\bs:fileid 1
3070
\def\EndFileStream#1{%
3072
\csname FN #1\endcsname\relax
3073
\:warning{\string\EndFileStream{#1}?}%
3075
\ifnum\csname FN #1\endcsname=\bs:fileid
3076
\:warning{\string\EndFileStream{\jobname .\:html}?}%
3077
\else \expandafter\ifnum \csname FN #1\endcsname > \bs:fileid
3079
{\let\inputlineno\tmp:cnt \tmp:cnt1 \root:next }%
3082
\ht:special{t4ht<#1}%
3083
\g:delete{\empty FN #1}%
3085
\expandafter\expandafter\expandafter\global \expandafter
3086
\let\csname Lv \file:id\endcsname\:UnDef
3087
\global\let\file:id\maxfile:id
3092
\expandafter\ifx \csname Lv \file:id\endcsname \relax
3093
\gHAdvance\file:id -1 \expandafter\find:fileid
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-%
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
3110
\empty F-\endcsname\relax
3112
\:LikeRef{)F\aXrefFile #1\empty F-}%
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}
3121
\xdef:cs{Lv \file:id}{\noexpand\a:TITLE
3122
\bgroup \noexpand\:TITLE: \noexpand\c:TITLE \egroup
3124
\noexpand\b:TITLE \noexpand\a:@HEAD\noexpand\b:HEAD}%
3127
\ifnum \op:fl<\bs:fileid \else
3129
\EndFileStream{\RefFileNumber\op:fl}%
3131
\expandafter\close:files
3135
\:CheckOption{next} \if:Option \else
3136
\let\c:next:\:gobbleII
3139
\ifHtml \def\HPage{\strt:bt\ch:HPage}
3141
\ifx -\:temp \expandafter\m:HPage
3142
\else \expand:after{\ifx [\:temp \expandafter\op:HPage
3143
\else \expandafter\:HPage \fi}%
3146
\def\:bgtr<##1>{\expand:after{\bt:fn##1.}\:html!*?: %
3148
\ifx #1\ch:bbtf \else \PushStack\:btid{##1}\fi
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{%
3161
\:hookI{BeforeHPageButton}{}{#2}%
3162
\hpg:wrn{#1}{#2}\HPage \TagFile{)B\:temp}%
3163
\Save:HPageTag\:temp
3165
\NewFileName\HP:file \Save:Link\HP:file
3166
\if:notempty{#2}{\HP:Link#2\EndLink}%
3167
\:hookI{AfterHPageButton}{}{#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
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
3184
\def\:temp{#1}\ifx \:temp\empty
3185
\else \HP:Link#1\EndLink
3187
\:hookI{AfterHPageButton}{}{#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
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}
3206
\:hookI{BeforeHPageButton}{}{}%
3208
\ifx \:temp\empty \:warning{\string\HPage-[]?}\fi
3210
\Save:HPageTag\:temp
3212
\NewFileName\HP:file \Save:Link\HP:file
3214
\def\ContHPage{\:ContHPage{x}{#1}}}
3218
\:hookI{BeforeHPageButton}{}{}%
3219
\NewFileName\HP:file \Save:Link\HP:file
3220
\TagFile{)B\HP:file}%
3221
\Save:HPageTag\HP:file
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}{}{}%
3229
\:buttrc\HPage{...\string\ContHPage}%
3230
\PushStack\:afterbt{#1}%
3233
\expandafter\ifx \csname #1\endcsname\relax #2\else
3234
\csname #1\endcsname{#3}\fi
3236
\def\NewFileName#1{%
3237
\HAssign#1\maxfile:id
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
3245
\def\NextFile#1{\xdef\:NxtNwFN{#1}}
3247
\SaveEverypar \FileStream[#1]{\HP:file} \IgnorePar
3248
\gHAdvance\HPageDepth 1
3249
\AtEndHPage{\csname HPageFooter\endcsname}%
3250
\:hookI{HPageHeader}{}{#1}%
3252
\def\HPageButton{\strt:bt\ch:bbtf}
3253
\def\ch:bbtf{\ifx -\:temp \expandafter\op:bbft
3254
\else \expandafter\:bbtf \fi}
3256
\:hookI{BeforeHPageButton}{}{#2}%
3257
\hpg:wrn{#1}{#2}\HPageButton
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 }
3265
\def\op:bbft#1[#2]{%
3266
\:hookI{BeforeHPageButton}{}{}%
3268
\ifx \:temp\empty \:warning{\string\HPageButton-[]?}\fi
3270
\edef\HP:file{\RefFile\:temp}%
3272
\def\ContHPage{\EndLink
3273
\:hookI{AfterHPageButton}{}{}%
3274
\csname AfterHPage\endcsname }}
3275
\def\BeginHPage{\futurelet\:temp\ch:bbbt}
3279
\NewFileName\HP:file \Save:Link\HP:file
3280
\ifx -\:temp \expandafter\op:bbbt
3281
\else \expandafter\:bbbt \fi}
3283
\PushStack\:btid{#1}%
3285
\:buttrc\BeginHPage{[#1]{#2}}%
3286
\PushStack\:afterbt\empty
3287
\hpg:wrn{#1}{#2}\BeginHPage \Save:HPageTag\:temp
3290
\def\op:bbbt#1[#2]{%
3291
\PushStack\:btid{#2}%
3292
\:hookI{AfterHPageButton}{}{}%
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{}%
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]?}%
3306
\else \ifnum #1<\HPageDepth\space
3307
\def\:temp{\:EndHPage\EndHPage[#1]{}}%
3308
\else \let\:temp\End:HPage \fi \fi
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}}%
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
3333
\FileStream{\:tempd}%
3334
\RecallEverypar \gHAdvance\HPageDepth -1
3335
\PopStack\:afterbt\:temp
3336
\ifx \:temp\empty \else \csname AfterHPage\endcsname \fi }
3338
\expandafter\gdef\csname EndHPage\HPageDepth\endcsname}
3339
\HAssign\HPageDepth0
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'}%
3352
\def\HPageInFile{\global\let\:FlHpg\empty}
3353
\def\NoHPageInFile{\global\let\:FlHpg\No:FlHpg}
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
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}
3377
\if +\:firstch#1 //\:CutAt#1,//\else
3378
\if -\:firstch#1 //\:CutAt#1,//\else
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
3387
\expandafter\let\csname Cut:#1\endcsname=\null
3388
\expandafter\def\csname Cut:#1\endcsname{%
3389
\gHAdvance \TitleCount 1
3395
\expandafter\ifx \csname NoCut:#1\endcsname\relax\else
3396
\expand:after{\expandafter\let\csname Cut:#1\endcsname=}%
3397
\csname NoCut:#1\endcsname
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'}%
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}?}%
3411
\expandafter\def \csname #2\endcsname{%
3412
\csname UnCut:#2\endcsname
3413
\csname #2:\endcsname}%
3417
\expandafter\edef \csname Cut:#2\endcsname##1{%
3418
\noexpand\cut:at{#2}{##1}#1}%
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}%
3431
\else \:warning{#2 already assumed in \string\CutAt{#1,...}}\fi
3433
\def\:temp{\:UnCutAt#1,#3//}%
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{%
3449
\Tag{fileidcut \file:id}{\C:tAtN}%
3450
\TagFile{cutfile \C:tAtN}%
3452
\xdef\nextCutAt{\RefFile{)N \file:id}}%
3453
\global\let\prevCutAt\prev:File
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}%
3463
\if #3+\HPage<#1>{#2}%
3466
\let\cut:TTL\:gobble
3468
\csname no:fonts\endcsname\def\gobble:font##1##2{##2}%
3471
\xdef\:temp{\noexpand\Configure{TITLE+}{\a:CutAtTITLE{#2}}}%
3476
\ifx \prevCutAt\empty \else \TagFile{)N \lastsec:id}\fi
3479
\expandafter\xdef\csname UnCut:#1\endcsname{%
3480
\noexpand\EndHPage[\HPageDepth]{}}%
3482
\HAssign\lastsec:id0
3485
\let\:CutAtTITLE:\empty
3486
\let\:HPageTITLE:\empty
3488
\global\expandafter\let\csname TocAt*\endcsname\empty
3490
\global\expandafter\let\csname UnCut:#1\endcsname\:UnDef
3491
\xdef\lastsec:id{\file:id}%
3492
\PopStack\prv:fl\:temp
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{}%
3501
\PopStack\prv:fl\prevCutAt
3502
\PopStack\prv:fl\nextCutAt
3504
\let\prevCutAt\:UndDef
3505
\let\nextCutAt\:UndDef
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
3516
\let\prevCutAt\empty
3517
\:CheckOption{next} \if:Option
3518
\def\next:bt{\nextCut}
3519
\def\prev:bt{\prevCut}
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}
3528
\HAssign\C:tAtN 0\LikeRef{fileidcut \file:id}%
3530
\xdef\prevCut{\RefFile{cutfile \C:tAtN}}%
3531
\ifx \prevCut\space \global\let\prevCut\empty \fi
3533
\xdef\nextCut{\RefFile{cutfile \C:tAtN}}%
3534
\ifx \nextCut\space \global\let\nextCut\empty \fi
3536
\let\root:next\empty
3537
\def\CutGroup#1{\Cut:Group#1,,!*?: }
3539
\expandafter\ifx \csname #1\endcsname\relax
3540
\expandafter\let\csname #1\endcsname\:gobble\fi
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}}%
3558
\def\ParentOf{\gHAdvance\TitleCount 1
3559
\global\let\mu:span\TitleCount \futurelet\:temp\:mprt}
3560
\def\ChildOf{\futurelet\:temp\:xprt}
3562
\:CheckOption{family} \if:Option
3563
\def\:mprt{\fm:call\:Imprt}
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}%
3577
\the\:tokwrite{\string\doTocEntry
3578
\string\tocParentOf{#2}{}{}\relax}}
3581
\def\:xprt{\fm:call\:Exprt}
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'}%
3588
\LoadRef[#2-\Jobname]{#3}{##1}%
3589
\xp:var{#2}fstf:id,#1!*?: %
3591
\openout\:refout\jobname.xref \:clearpage
3592
\gHAdvance\fstf:id 10000
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-}%
3599
\expandafter\xdef\csname
3600
FN \jobname.\:html\endcsname{\file:id}%
3601
\xdef:cs{Lv \file:id}{}%
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}%
3611
\gdef\:Export[##1]##2{\:warning{\string\ChildOf
3612
\string{##2\string}\space ignored (not 1st)}}%
3614
\def\rmv:ext#1.#2!*?: {#1}
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
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!*?: {%
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!*?: {%
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,!*?: }}
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}}
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:
3664
\Odef\ChildOf[#1]#2{\:warning{\string\ChildOf{#2}
3665
without \string\Preamble{...,family,...}}}
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}}
3674
\let\:CrsWd\Cross:Word
3675
\def\Cross:Word##1##2{%
3676
\expandafter\let\csname cw:##2\endcsname\:UnDef
3678
\LoadRef[)F\aXrefFile ]{#1}{##1}%
3679
\LoadRef[)Q\aXrefFile #2]{#1}{##1}%
3680
\let\Cross:Word\:CrsWd
3684
\openin15=\jobname.4tc
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}
3693
\ifHtml \ifx \TableOfContents\:UnDef
3694
\def\TableOfContents{\futurelet\:temp\:TOC}
3695
\def\:TOC{\ifx [\:temp \expandafter\:TableOfContents\fi}
3698
\def\:TableOfContents[#1]{\SaveEverypar{%
3701
\let\doTocEntry\:doTocEntry
3702
\def\contentsline##1##2##3{##2}%
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
3714
\everypar{\HtmlPar}%
3715
\ifx \a:tableofcontents\:UnDef \csname a:TableOfContents\endcsname
3716
\else \a:tableofcontents \fi
3718
{\ht:everypar{}\leavevmode}\ifx \b:tableofcontents\:UnDef
3719
\csname b:TableOfContents\endcsname
3720
\else \b:tableofcontents \fi
3722
\par }\RecallEverypar \ifx \c:tableofcontents\:UnDef
3723
\csname c:TableOfContents\endcsname
3724
\else \c:tableofcontents \fi
3733
{\escapechar=`\\\immediate\write15{\:temp}}%
3734
\expandafter\:copytoc
3736
\ifHtml \catcode`\#12\relax \fi
3737
\def\:next{\catcode\tmp:cnt12
3741
\immediate\openout15=\jobname.4ct \:copytoc
3742
\immediate\closeout15
3743
\endgroup \closein15
3746
\advance\tmp:cnt -1 \:next
3751
\def\:doTocEntry#1#2#3#4{%
3752
\Advance:\TocCount 1
3753
\expandafter\ifx \csname \string#1 \endcsname \relax \else
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
3766
\if:latex \expandafter\immediate\fi
3767
\openout\:tocout\jobname.4tc
3768
{\escapechar=`\\\if:latex \expandafter\immediate\fi
3770
\:tocout{\string\expandafter\string\ifx
3771
\noexpand\csname doTocEntry\string\endcsname\relax
3772
\string\expandafter\string\endinput
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,//}%
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 }}%
3789
\else \expandafter\edef\csname Toc:#1\endcsname{%
3790
\noexpand\csname Toc#1\noexpand\endcsname }%
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]}}%
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
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
3824
\expandafter\noexpand \csname svtoc::#2\endcsname{##1}{##2}{##3}%
3827
\expand:after{\::TocAt#1,#3//}%
3830
\def\:firstch#1#2 //{#1\def\:temp{#2}}
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
3838
\expandafter\let\csname 0cr\endcsname\cr
3839
\expandafter\let\csname 0crcr\endcsname\crcr
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}
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
3869
\iffalse}\fi \begingroup
3870
\ifmmode \def\end:m{$$\egroup}\vtop\bgroup$$\else
3871
\let \end:m\empty\fi
3873
\a:PauseMkHalign \new:halign\ext:cr}
3874
\def\EndMkHalign{\egroup
3875
\d:PauseMkHalign \end:m\endgroup
3877
\iffalse{\fi \expand:after{\let\cr}\csname \MkHalign:d cr\endcsname
3878
\expand:after{\let\crcr}\csname \MkHalign:d crcr\endcsname
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
3896
\def\:MHalign@1\cr{\endgroup \SaveMkHalignConfig
3897
\Configure{MkHalign}{\a:MiniHalign}{\b:MiniHalign}\c:MiniHalign
3898
\d:MiniHalign{\e:MiniHalign\RecallMkHalignConfig}\f:MiniHalign
3900
\catcode`\#6 \catcode`\@11
3901
\def\EndMiniHalign{\EndMkHalign \RecallMkHalignConfig }
3902
\def\add:halign#1\cr{%
3903
\def\:temp{#2}\def\:tempb{!*?: }%
3905
\append:def\new:halign{\b:halign#1\c:halign}%
3907
\def\:temp{#1}\ifx\:temp\empty \append:def\new:halign{&}%
3908
\else \append:def\new:halign{\b:halign#1\c:halign&}\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
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}
3930
\def\om:t{\:omit \BB:halign
3931
\gdef\end:omit{\gdef\end:omit{}\d:halign}}
3933
\let\ext:cr\cr \let\ext:crcr\crcr
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
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}%
3949
\expandafter\add:span
3954
\xdef\:temp{\noexpand\expandafter\noexpand\:temp
3955
\noexpand\halign:TD\:MkHalign: -0 0 1 !*?: }%
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{}%
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
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}
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}
3991
\def\r:relax{\r:lax}
3995
\ifx \rl:x\r:relax \expandafter\nodim:hlgn:
3996
\else \expandafter\TeXhalign:cr
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
4003
\catcode`\#13 \catcode`\~6
4004
\def\hlg:n{\begingroup \catcode`\#13 \let#\relax \hal:gn}%
4006
\long\def\hal:gn~1{\p:lgn~1#!*?: %
4008
\expandafter\chs:halgn\string ~1!*?: %
4010
\expand:after{\Picture+}\pic:hlng{ \a:@Picture{pic-halign}}\ifmmode
4012
$$\TeXhalign:cr \to:dim{~1}$$}%
4013
\else \vbox{\Rc:sharp
4014
\TeXhalign:cr \to:dim{~1}}\fi
4020
\:tempb\:temp{\endgroup
4021
\:warning{\noexpand\halign translated into linear text}%
4023
\HRestore\noalign \TeXhalign:cr~1}\:tempa!*?: %
4025
\else \def\:temp{\endgroup\:hlign{~1}}\fi \:temp}
4026
\long\def\p:lgn~1#~2!*?: {\def\:temp{~2}}
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}%
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!*?: }%
4040
\def\Rc:sharp{\let#=\sv:sharp}
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
4055
\else \let\:temp\empty
4056
\def\:tempb{\let\:tempb\:tempa
4058
\long\def\:tempa##1!*?: {}%
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}
4064
\let\:temp\empty \def\:tempb{\let\:tempb\:tempa
4066
\long\def\:tempa##1!*?: {}%
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
4078
\MkHalign#{@1}@2\EndMkHalign \RecallMkHalignConfig}
4079
\def\h:alignII@1\crcr{\h:alignI@1\cr}
4080
\catcode`\#6 \catcode`\@11
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...}}%
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 }%
4093
\HLet\noalign\:tempc
4099
\def\:temp{\let\:shrp##} \:temp
4103
\ifHtml \def\Canvas{\ht:special{t4ht"}}
4104
\let\EndCanvas\Canvas
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}]}%
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}
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
4127
\ht:special{t4ht++\PictureFile}%
4131
\let\ht:special\tex:special
4133
\if #1!\ht:special{t4ht!}\fi
4135
\csname b:PictureAlt*+\endcsname
4136
\ifx #2\relax \else \csname a:PictureAttr*+\endcsname{#2}\e:IMG\fi
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
4143
\def\EndPicture{\nd:gf!{\c:IMG\Pic:Img}%
4144
\let\EndPicture\:UnDef \csname b:Picture+\endcsname
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
4150
\ifmmode \expandafter\vcenter\else \expandafter\vtop\fi
4151
\bgroup \let\EndPicture\:EndGIf \NoHtmlEnv }}
4153
\egroup \nd:gf!{\c:IMG \Pic:Img}\csname b:Picture*\endcsname
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}
4161
\def\ht:special##1{\tex:special{t4ht+##1}}}
4162
\let\tex:special\ht:special
4163
\def\x:GifText[#1]#2{\cond:pic{%
4165
\def\gif:box{\vtop\bgroup \NoHtmlEnv \let\gif:box\egroup}%
4166
\else \let\gif:box\empty \fi
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
4175
\gif:box \nd:gf-\relax \ht:special{t4ht<\jobname.tmp}%
4176
\csname a:PictureAttr*+[]\endcsname{\c:IMG\Pic:Img}\e:IMG
4179
\let\:GifText\x:GifText
4180
\def\no:GifText[#1]{\:gobble}
4181
\ifx \:DraCatCodes\:UnDef
4182
\def\Pic:Img{\at:IMG}
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!*?: %
4191
\def\aT:IMG#1 !*?: {\def\at:IMG{#1}}
4192
\def\NextPictureFile{\def\Next:PictureFile}
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
4205
\expandafter\get:ext\PictureFile.!*?: %
4206
\ifx\:temp\empty \xdef\PictureFile{\PictureFile\PictExt}\fi
4208
\immediate\write-1{l. \the\inputlineno\space Writing
4209
\jobname.idv[\P:ctureCount] (\PictureFile)}%
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}%
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}
4232
\ifx\EndPicture\:UnDef \def\end:condpic{\EndPicture}\expandafter#1%
4233
\else \let\end:condpic\empty \expandafter#2%
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}
4240
\expandafter\let\csname Pic:\Pic:On\endcsname\EndPicture
4241
\ifx \EndPicture\:UnDef \let\EndPicture\empty \fi
4243
\let\:GifText\no:GifText
4245
\Advance:\Pic:On 1 }
4249
\ifnum \Pic:On=0 \let\im:g\xim:g
4250
\let\:GifText\x:GifText
4253
\expand:after{\let\EndPicture}\csname Pic:\Pic:On\endcsname
4254
\ifx \EndPicture\relax \let\EndPicture\:UnDef\fi
4256
\:warning{\string\PictureOn\space without \string\PictureOff}%
4259
\def\:temp#1{\ifx \EndPicture\:Undef
4260
\relax\ifmmode\hbox{$#1$}\else \hbox{#1}\fi
4261
\else \o:smash:{#1}\fi}
4265
\def\P:ct{\leavevmode \futurelet\:temp\:img}
4267
\def\yes:pic{\PictureOn}
4268
\def\no:pic{\PictureOff}
4269
\def\i:mgif#1{\futurelet\:temp\:gif}
4272
\ifx \:temp[\expandafter\:GifText
4273
\else \expandafter\:next \fi }
4278
\let\:startdoc\:UnDef \let\at:startdoc\:UnDef
4279
\edef\NoHtmlEnv{\NoHtmlEnv}%
4280
\append:def\NoHtmlEnv{\SUBOff \SUPOff}\HtmlEnv
4283
\a:PROLOG \a:HTML \a:HEAD
4285
\ht:special{t4ht>\jobname.tmp}{\everyhbox{}\hbox
4286
{x\ht:special{t4ht;\a:rootfont:}x}}%
4287
\ht:special{t4ht<\jobname.tmp}%
4291
\edef\:temp{\pageno\the\pageno}%
4292
{\let\HCode\:gobble \par\newpage}\:temp}
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}}
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~<+}}
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}
4332
\ifx -\:temp \expandafter\Ve:rbatim
4333
\else \let\start:verb\Ver:batim \expandafter\Ver:sp \fi }
4335
\ifx \ver:sp\:temp \expandafter\Ver:assg
4336
\else \expandafter\Ver:ln \fi }
4338
\ifx \ver:ln\:temp \expandafter\Ver:assg
4339
\else \expandafter\start:verb \fi }
4340
\def\Ver:assg{\afterassignment\start:verb\let\:temp}
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}
4351
\catcode`\^^I13 \catcode`\/0 \catcode`\\12
4352
/catcode`/.10 /catcode`/^^M13 /catcode`/ 13%
4354
.../def^^M{/ht:everypar{/Verb:eoln}/Verb:boln/par/leavevmode}%
4358
.../def^^I{/leavevmode }}}
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}
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}}
4373
\def\verb:config{\bef:Verb\csname leftsk:p\endcsname
4374
\def\verb:config{\Verb:boln \def\Verb:eoln{\leavevmode\par}\leftsk:p}}
4377
\ifx\beginL\@undefined \else
4378
\def\:temp{\o:beginL:\a:Lregion}
4380
\def\:temp{\b:Lregion\o:endL:}
4382
\NewConfigure{Lregion}{2}
4383
\def\:temp{\o:beginR:\a:Rregion}
4385
\def\:temp{\b:Rregion\o:endR:}
4387
\NewConfigure{Rregion}{2}
4391
\ifHtml \def\:tempa{\:Hinclude}
4393
\:CheckOption{th4}\if:Option \def\:tempa{\input th4.4ht}
4394
\else \let\:tempa\empty \fi
4396
\:CheckOption{core} \if:Option \let\:tempa\empty \fi
4397
\:CheckOption{base} \if:Option \let\:tempa\empty \fi
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
4405
\def\HTraceHPageOff{\def\:buttrc##1##2{}}
4408
\else \def\:buttrc#1#2{}
4409
\let\HTraceHPageOn\empty
4410
\let\HTraceHPageOff\empty
4413
\ifHtml \else \let\EndPreamble\empty \fi
4416
\let\:shipout\shipout
4417
\def\shipout{\vfil\break\let\shipout\:shipout \shipout}
4420
\ifx \Hinput\:UnDef \else
4422
\ifx \a:ProTex\:UnDef
4423
\else \input ProTex.4ht \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
4432
\def\:temp{#2}\expandafter\:temp
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 }
4440
\rmv:ifs \let\rmv:ifs\:UnDef
4441
\:RestoreCatcodes \TeXivht