-
Notifications
You must be signed in to change notification settings - Fork 2
/
html.sty
360 lines (328 loc) · 12.2 KB
/
html.sty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
% LaTeX2HTML Version 95.1 : html.sty
%
% WARNING: This file requires LaTeX2e. A LaTeX 2.09 version
% is also provided, but with restricted functionality.
%
% This file contains definitions of LaTeX commands which are
% processed in a special way by the translator.
% For example, there are commands for embedding external hypertext links,
% for cross-references between documents or for including
% raw HTML.
% This file includes the comments.sty file v2.0 by Victor Eijkhout
% In most cases these commands do nothing when processed by LaTeX.
% Modifications:
%
% nd = Nikos Drakos <[email protected]>
% jz = Jelle van Zeijl <[email protected]>
% hs = Herb Swan <[email protected]>
% hs 31-JAN-96 - Added support for document segmentation
% hs 10-OCT-95 - Added \htmlrule command
% jz 22-APR-94 - Added support for htmlref
% nd - Created
%%%%MG added
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{html}
[1996/02/01 v1.0 hypertext commands for latex2html (nd, hs)]
%%%%MG
% Exit if the style file is already loaded
% (suggested by Lee Shombert <[email protected]>
\ifx \htmlstyloaded\relax \endinput\else\let\htmlstyloaded\relax\fi
%%% LINKS TO EXTERNAL DOCUMENTS
%
% This can be used to provide links to arbitrary documents.
% The first argumment should be the text that is going to be
% highlighted and the second argument a URL.
% The hyperlink will appear as a hyperlink in the HTML
% document and as a footnote in the dvi or ps files.
%
\newcommand{\htmladdnormallinkfoot}[2]{#1\footnote{#2}}
% This is an alternative definition of the command above which
% will ignore the URL in the dvi or ps files.
\newcommand{\htmladdnormallink}[2]{#1}
% This command takes as argument a URL pointing to an image.
% The image will be embedded in the HTML document but will
% be ignored in the dvi and ps files.
%
\newcommand{\htmladdimg}[1]{}
%%% CROSS-REFERENCES BETWEEN (LOCAL OR REMOTE) DOCUMENTS
%
% This can be used to refer to symbolic labels in other Latex
% documents that have already been processed by the translator.
% The arguments should be:
% #1 : the URL to the directory containing the external document
% #2 : the path to the labels.pl file of the external document.
% If the external document lives on a remote machine then labels.pl
% must be copied on the local machine.
%
%e.g. \externallabels{http://cbl.leeds.ac.uk/nikos/WWW/doc/tex2html/latex2html}
% {/usr/cblelca/nikos/tmp/labels.pl}
% The arguments are ignored in the dvi and ps files.
%
\newcommand{\externallabels}[2]{}
%
% This complements the \externallabels command above. The argument
% should be a label defined in another latex document and will be
% ignored in the dvi and ps files.
%
\newcommand{\externalref}[1]{}
% This command adds a horizontal rule and is valid even within
% a figure caption.
%
\newcommand{\htmlrule}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The following commands pertain to document segmentation, and
% were added by Herbert Swan <[email protected]> (with help from
% Michel Goossens <[email protected]>):
%
%
% This command inputs internal latex2html tables so that large
% documents can to partitioned into smaller (more manageable)
% segments.
%
\newcommand{\internal}[2][internals]{}
%
% Define a dummy stub \htmlhead{}. This command causes latex2html
% to define the title of the start of a new segment. It is not
% normally placed in the user's document. Rather, it is passed to
% latex2html via a .ptr file written by \segment.
%
\newcommand{\htmlhead}[2]{}
%
% The dummy command \endpreamble is needed by latex2html to
% mark the end of the preamble in document segments that do
% not contain a \begin{document}
%
\newcommand{\startdocument}{}
%
% Allocate a new set of section counters, which will get incremented
% for "*" forms of sectioning commands, and for a few miscellaneous
% commands.
%
\newcounter{lpart}
\newcounter{lchapter}[part]
\ifx\chapter\undefined\newcounter{lsection}[part]\else\newcounter{lsection}[chapter]\fi
\newcounter{lsubsection}[section]
\newcounter{lsubsubsection}[subsection]
\newcounter{lparagraph}[subsubsection]
\newcounter{lsubparagraph}[paragraph]
\newcounter{lsubsubparagraph}[subparagraph]
\newcounter{lequation}
%
% Redefine "*" forms of sectioning commands to increment their
% respective counters.
%
\let\Hpart=\part
\let\Hchapter=\chapter
\let\Hsection=\section
\let\Hsubsection=\subsection
\let\Hsubsubsection=\subsubsection
\let\Hparagraph=\paragraph
\let\Hsubparagraph=\subparagraph
\let\Hsubsubparagraph=\subsubparagraph
%
% The following definitions are specific to LaTeX2e:
% (They must be commented out for LaTeX 2.09)
%
\def\part{\@ifstar{\stepcounter{lpart}\Hpart*}{\Hpart}}
\def\chapter{\@ifstar{\stepcounter{lchapter}\Hchapter*}{\Hchapter}}
\def\section{\@ifstar{\stepcounter{lsection}\Hsection*}{\Hsection}}
\def\subsection{\@ifstar{\stepcounter{lsubsection}\Hsubsection*}{\Hsubsection}}
\def\subsubsection{\@ifstar{\stepcounter{lsubsubsection}\Hsubsubsection*}{\Hsubsubsection}}
\def\paragraph{\@ifstar{\stepcounter{lparagraph}\Hparagraph*}{\Hparagraph}}
\def\subparagraph{\@ifstar{\stepcounter{lsubparagraph}\Hsubparagraph*}{\Hsubparagraph}}
\def\subsubparagraph{\@ifstar{\stepcounter{lsubsubparagraph}\Hsubsubparagraph*}{\Hsubsubparagraph}}
%
% Define a helper macro to dump a single \secounter command to a file.
%
\newcommand{\DumpPtr}[2]{%
\count255=\arabic{#1} \advance\count255 by \arabic{#2}
\immediate\write\ptrfile{%
\noexpand\setcounter{#1}{\number\count255}}}
%
% Define a helper macro to dump all counters to the file.
% The value for each counter will be the sum of the l-counter
% actual LaTeX section counter.
% Also dump an \htmlhead{section-command}{section title} command
% to the file.
%
\def\DumpCounters#1#2#3{\newwrite\ptrfile
\immediate\openout\ptrfile = #1.ptr
\DumpPtr{part}{lpart}
\ifx\Hchapter\undefined\relax\else\DumpPtr{chapter}{lchapter}\fi
\DumpPtr{section}{lsection}
\DumpPtr{subsection}{lsubsection}
\DumpPtr{subsubsection}{lsubsubsection}
\DumpPtr{paragraph}{lparagraph}
\DumpPtr{subparagraph}{lsubparagraph}
\DumpPtr{equation}{lequation}
\immediate\write\ptrfile{\noexpand\htmlhead{#2}{#3}}
\immediate\closeout\ptrfile}
%
% Define the \segment{file}{section-command}{section-title} command,
% and its helper macros. This command does four things:
% 1) Begins a new LaTeX section;
% 2) Writes a list of section counters to file.ptr, each
% of which represents the sum of the LaTeX section
% counters, and the l-counters, defined above;
% 3) Write an \htmlhead{section-title} command to file.ptr;
% 4) Inputs file.tex.
%
%%%%MG changed
\def\segment{\@ifstar{\@@htmls}{\@@html}}
\def\@@htmls#1#2#3{\csname #2\endcsname* {#3}%
\DumpCounters{#1}{#2*}{#3}\input{#1}}
\def\@@html#1#2#3{\csname #2\endcsname {#3}%
\DumpCounters{#1}{#2}{#3}\input{#1}}
%%%%MG
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Comment.sty version 2.0, 19 June 1992
% selectively in/exclude pieces of text: the user can define new
% comment versions, and each is controlled separately.
% This style can be used with plain TeX or LaTeX, and probably
% most other packages too.
%
% Examples of use in LaTeX and TeX follow \endinput
%
% Author
% Victor Eijkhout
% Department of Computer Science
% University Tennessee at Knoxville
% 104 Ayres Hall
% Knoxville, TN 37996
% USA
%
%
% Usage: all text included in between
% \comment ... \endcomment
% or \begin{comment} ... \end{comment}
% is discarded. The closing command should appear on a line
% of its own. No starting spaces, nothing after it.
% This environment should work with arbitrary amounts
% of comment.
%
% Other 'comment' environments are defined by
% and are selected/deselected with
% \includecomment{versiona}
% \excludecoment{versionb}
%
% These environments are used as
% \versiona ... \endversiona
% or \begin{versiona} ... \end{versiona}
% with the closing command again on a line of its own.
%
% Basic approach:
% to comment something out, scoop up every line in verbatim mode
% as macro argument, then throw it away.
% For inclusions, both the opening and closing comands
% are defined as noop
%
% Changed \next to \html@next to prevent clashes with other sty files
% Changed \html@next to \htmlnext so the \makeatletter and
% \makeatother commands could be removed (they were causing other
% style files - changebar.sty - to crash) ([email protected])
% Changed \htmlnext back to \html@next...
\makeatletter
\def\makeinnocent#1{\catcode`#1=12 }
\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
\def\ThrowAwayComment#1{\begingroup
\def\CurrentComment{#1}%
\let\do\makeinnocent \dospecials
\makeinnocent\^^L% and whatever other special cases
\endlinechar`\^^M \catcode`\^^M=12 \xComment}
{\catcode`\^^M=12 \endlinechar=-1 %
\gdef\xComment#1^^M{\def\test{#1}
\csarg\ifx{PlainEnd\CurrentComment Test}\test
\let\html@next\endgroup
\else \csarg\ifx{LaLaEnd\CurrentComment Test}\test
\edef\html@next{\endgroup\noexpand\end{\CurrentComment}}
\else \let\html@next\xComment
\fi \fi \html@next}
}
\makeatother
\def\includecomment
#1{\expandafter\def\csname#1\endcsname{}%
\expandafter\def\csname end#1\endcsname{}}
\def\excludecomment
#1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}%
{\escapechar=-1\relax
\csarg\xdef{PlainEnd#1Test}{\string\\end#1}%
\csarg\xdef{LaLaEnd#1Test}{\string\\end\string\{#1\string\}}%
}}
\excludecomment{comment}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% RAW HTML
%
% Enclose raw HTML between a \begin{rawhtml} and \end{rawhtml}.
% The html environment ignores its body
%
\excludecomment{rawhtml}
%%% HTML ONLY
%
% Enclose LaTeX constructs which will only appear in the
% HTML output and will be ignored by LaTeX with
% \begin{htmlonly} and \end{htmlonly}
%
\excludecomment{htmlonly}
% Shorter version
\newcommand{\html}[1]{}
%%% LaTeX ONLY
% Enclose LaTeX constructs which will only appear in the
% DVI output and will be ignored by latex2html with
%\begin{latexonly} and \end{latexonly}
%
\newenvironment{latexonly}{}{}
% Shorter version
\newcommand{\latex}[1]{#1}
%%% HYPERREF
% Suggested by Eric M. Carol <[email protected]>
% Similar to \ref but accepts conditional text.
% The first argument is HTML text which will become ``hyperized''
% (underlined).
% The second and third arguments are text which will appear only in the paper
% version (DVI file), enclosing the fourth argument which is a reference to a label.
%
%e.g. \hyperref{using the tracer}{using the tracer (see Section}{)}{trace}
% where there is a corresponding \label{trace}
%
\newcommand{\hyperref}[4]{#2\ref{#4}#3}
%%% HTMLREF
% Reference in HTML version only.
% Mix between \htmladdnormallink and \hyperref.
% First arg is text for in both versions, second is label for use in HTML
% version.
\newcommand{\htmlref}[2]{#1}
%%% HTMLIMAGE
% This command can be used inside any environment that is converted
% into an inlined image (eg a "figure" environment) in order to change
% the way the image will be translated. The argument of \htmlimage
% is really a string of options separated by commas ie
% [scale=<scale factor>],[external],[thumbnail=<reduction factor>
% The scale option allows control over the size of the final image.
% The ``external'' option will cause the image not to be inlined
% (images are inlined by default). External images will be accessible
% via a hypertext link.
% The ``thumbnail'' option will cause a small inlined image to be
% placed in the caption. The size of the thumbnail depends on the
% reduction factor. The use of the ``thumbnail'' option implies
% the ``external'' option.
%
% Example:
% \htmlimage{scale=1.5,external,thumbnail=0.2}
% will cause a small thumbnail image 1/5th of the original size to be
% placed in the final document, pointing to an external image 1.5
% times bigger than the original.
%
\newcommand{\htmlimage}[1]{}
%%% HTMLADDTONAVIGATION
% This command appends its argument to the buttons in the navigation
% panel. It is ignored by LaTeX.
%
% Example:
% \htmladdtonavigation{\htmladdnormallink
% {\htmladdimg{http://server/path/to/gif}}
% {http://server/path}}
\newcommand{\htmladdtonavigation}[1]{}
\endinput