% % $Id: html.sty,v 1.39 2001/10/01 22:47:06 RRM Exp $ % LaTeX2HTML Version 2K.1 : html.sty % % 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. % % Place this file in a directory accessible to LaTeX (i.e., somewhere % in the TEXINPUTS path.) % % NOTE: This file works with LaTeX 2.09 or (the newer) LaTeX2e. % If you only have LaTeX 2.09, some complex LaTeX2HTML features % like support for segmented documents are not available. % Changes: % See the change log at end of file. % Exit if the style file is already loaded % (suggested by Lee Shombert \ifx \htmlstyloaded\relax \endinput\else\let\htmlstyloaded\relax\fi \makeatletter % allow for the hyperref package to be cleanly loaded % either before or after this package, % and ensure it is already loaded, when using pdf-TeX \ifx\undefined\hyperref \ifx\pdfoutput\undefined \let\pdfunknown\relax \let\html@new=\newcommand \else \ifx\pdfoutput\relax \let\pdfunknown\relax \RequirePackage{hyperref}\let\html@new=\renewcommand \else \ifcase\pdfoutput \let\pdfunknown\relax \let\html@new=\newcommand \else \RequirePackage[pdftex]{hyperref}\let\html@new=\newcommand \fi \fi \fi \else \let\html@new=\renewcommand \fi \providecommand{\latextohtml}{\LaTeX2\texttt{HTML}} %%% 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. % \ifx\pdfunknown\relax \html@new{\htmladdnormallinkfoot}[2]{#1\footnote{#2}} \else \def\htmladdnormallinkfoot#1#2{\footnote{\href{#2}{#1}}} \fi % This is an alternative definition of the command above which % will ignore the URL in the dvi or ps files. \ifx\pdfunknown\relax \html@new{\htmladdnormallink}[2]{#1} \else \def\htmladdnormallink#1#2{\href{#2}{#1}} \fi % 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. % \ifx\pdfunknown\relax \html@new{\htmladdimg}[1]{} \else \def\htmladdimg#1{\hyperimage{#1}} \fi %%% 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]{} % Suggested by Uffe Engberg (http://www.brics.dk/~engberg/) % This allows the same effect for citations in external bibliographies. % An \externallabels command must be given, locating a labels.pl file % which defines the location and keys used in the external .html file. % \newcommand{\externalcite}{\nocite} % This allows a section-heading in the TOC or mini-TOC to be just % a hyperlink to an external document. % % \htmladdTOClink[]{}{}{<URL>} % where <section-level> is 'chapter' , 'section' , 'subsection' etc. % and <path_to_labels> is the path to find a labels.pl file, % so that external cross-referencing may work, as with \externallabels % %\ifx\pdfunknown\relax \newcommand{\htmladdTOClink}[4][]{} % % can do something here, using the \pdfoutline primitive %\else % \def\htmladdTOClink#1#2#3#4{\pdfoutline user {/S /URI /URI #4} % name{#2} count{#1}{#3}} %\fi %%% HTMLRULE % This command adds a horizontal rule and is valid even within % a figure caption. % Here we introduce a stub for compatibility. \newcommand{\htmlrule}{\protect\HTMLrule} \newcommand{\HTMLrule}{\@ifstar\htmlrulestar\htmlrulestar} \newcommand{\htmlrulestar}[1]{} %%% HTMLCLEAR % This command puts in a <BR> tag, with CLEAR="ALL" \newcommand{\htmlclear}{} % This command adds information within the <BODY> ... </BODY> tag % \newcommand{\bodytext}[1]{} \newcommand{\htmlbody}{} %%% HYPERREF % Suggested by Eric M. Carol <eric@ca.utoronto.utcc.enfm> % 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} % % avoid possible confict with hyperref package \ifx\undefined\hyperref \newcommand{\hyperrefhyper}[4]{#4}% \def\next{\newcommand}% \else \let\hyperrefhyper\hyperref \def\next{\renewcommand}% \fi \next{\hyperref}{\hyperrefi[]}\let\next=\relax \def\hyperrefi[#1]{{\def\next{#1}\def\tmp{}% \ifx\next\tmp\aftergroup\hyperrefdef \else\def\tmp{ref}\ifx\next\tmp\aftergroup\hyperrefref \else\def\tmp{pageref}\ifx\next\tmp\aftergroup\hyperrefpageref \else\def\tmp{page}\ifx\next\tmp\aftergroup\hyperrefpage \else\def\tmp{noref}\ifx\next\tmp\aftergroup\hyperrefnoref \else\def\tmp{no}\ifx\next\tmp\aftergroup\hyperrefno \else\def\tmp{hyper}\ifx\next\tmp\aftergroup\hyperrefhyper \else\def\tmp{html}\ifx\next\tmp\aftergroup\hyperrefhtml \else\typeout{*** unknown option \next\space to hyperref ***}% \fi\fi\fi\fi\fi\fi\fi\fi}} \newcommand{\hyperrefdef}[4]{#2\ref{#4}#3} \newcommand{\hyperrefpageref}[4]{#2\pageref{#4}#3} \newcommand{\hyperrefnoref}[3]{#2} \let\hyperrefref=\hyperrefdef \let\hyperrefpage=\hyperrefpageref \let\hyperrefno=\hyperrefnoref \ifx\undefined\hyperrefhyper\newcommand{\hyperrefhyper}[4]{#4}\fi \let\hyperrefhtml=\hyperrefdef %%% HYPERCITE --- added by RRM % Suggested by Stephen Simpson <simpson@math.psu.edu> % effects the same ideas as in \hyperref, but for citations. % It does not allow an optional argument to the \cite, in LaTeX. % % \hypercite{<html-text>}{<LaTeX-text>}{<opt-text>}{<key>} % % uses the pre/post-texts in LaTeX, with a \cite{<key>} % % \hypercite[ext]{<html-text>}{<LaTeX-text>}{<key>} % \hypercite[ext]{<html-text>}{<LaTeX-text>}[<prefix>]{<key>} % % uses the pre/post-texts in LaTeX, with a \nocite{<key>} % the actual reference comes from an \externallabels file. % \newcommand{\hypercite}{\hypercitei[]} \def\hypercitei[#1]{{\def\next{#1}\def\tmp{}% \ifx\next\tmp\aftergroup\hypercitedef \else\def\tmp{int}\ifx\next\tmp\aftergroup\hyperciteint \else\def\tmp{cite}\ifx\next\tmp\aftergroup\hypercitecite \else\def\tmp{ext}\ifx\next\tmp\aftergroup\hyperciteext \else\def\tmp{nocite}\ifx\next\tmp\aftergroup\hypercitenocite \else\def\tmp{no}\ifx\next\tmp\aftergroup\hyperciteno \else\typeout{*** unknown option \next\space to hypercite ***}% \fi\fi\fi\fi\fi\fi}} \newcommand{\hypercitedef}[4]{#2{\def\tmp{#3}\def\emptyopt{}% \ifx\tmp\emptyopt\cite{#4}\else\cite[#3]{#4}\fi}} \newcommand{\hypercitenocite}[2]{#2\hypercitenocitex[]} \def\hypercitenocitex[#1]#2{\nocite{#2}} \let\hypercitecite=\hypercitedef \let\hyperciteint=\hypercitedef \let\hyperciteext=\hypercitenocite \let\hyperciteno=\hypercitenocite %%% 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. \ifx\pdfunknown\relax \html@new{\htmlref}[2]{#1} \else \def\htmlref#1#2{\hyperefhyper[#2]{#1}} \fi %%% HTMLCITE % Reference in HTML version only. % Mix between \htmladdnormallink and \hypercite. % First arg is text for both versions, second is citation for use in HTML % version. \newcommand{\htmlcite}[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]{} % \htmlborder causes a border to be placed around an image or table % when the image is placed within a <TABLE> cell. \newcommand{\htmlborder}[1]{} % Put \begin{makeimage}, \end{makeimage} around LaTeX to ensure its % translation into an image. % This shields sensitive text from being translated. \newenvironment{makeimage}{}{} % A dummy environment that can be useful to alter the order % in which commands are processed, in LaTeX2HTML \newenvironment{tex2html_deferred}{}{} %%% 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]{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % based upon Eijkhout's comment.sty v2.0 % with modifications to avoid conflicts with later versions % of this package, should a user be requiring it. % Ross Moore, 10 March 1999 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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 % % eijkhout@cs.utk.edu % % 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 % (mike@emn.fr) % Changed \html@next to \htmlnext so the \makeatletter and % \makeatother commands could be removed (they were causing other % style files - changebar.sty - to crash) (nikos@cbl.leeds.ac.uk) % Changed \htmlnext back to \html@next... \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 %%RRM %% use \xhtmlComment for \xComment %% use \html@next for \next \endlinechar`\^^M \catcode`\^^M=12 \xhtmlComment} {\catcode`\^^M=12 \endlinechar=-1 % \gdef\xhtmlComment#1^^M{\def\test{#1}\edef\test{\meaning\test} \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 \csarg\ifx{LaInnEnd\CurrentComment Test}\test \edef\html@next{\endgroup\noexpand\end{\CurrentComment}} \else \let\html@next\xhtmlComment \fi \fi \fi \html@next} } %%\def\includecomment %%RRM \def\htmlincludecomment #1{\expandafter\def\csname#1\endcsname{}% \expandafter\def\csname end#1\endcsname{}} %%\def\excludecomment %%RRM \def\htmlexcludecomment #1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}% {\escapechar=-1\relax \edef\tmp{\string\\end#1}% \csarg\xdef{PlainEnd#1Test}{\meaning\tmp}% \edef\tmp{\string\\end\string\{#1\string\}}% \csarg\xdef{LaLaEnd#1Test}{\meaning\tmp}% \edef\tmp{\string\\end \string\{#1\string\}}% \csarg\xdef{LaInnEnd#1Test}{\meaning\tmp}% }} %%\excludecomment{comment} %%RRM \htmlexcludecomment{comment} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % end Comment.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \let\includecomment=\htmlincludecomment \let\excludecomment=\htmlexcludecomment % % Alternative code by Robin Fairbairns, 22 September 1997 % revised to cope with % and unnested { }, by Ross Moore, 4 July 1998 % further revised to cope with & and # in tables, 10 March 1999 % \def\raw@catcodes{\catcode`\%=12 \catcode`\{=12 \catcode`\}=12 \catcode`\&=12 \catcode`\#=12 } \newcommand\@gobbleenv{\bgroup\raw@catcodes \let\reserved@a\@currenvir\@gobble@nv} \bgroup \def\expansionhead{\gdef\@gobble@nv@i##1} \def\expansiontail{{\def\reserved@b{##1}\@gobble@nv@ii}} \def\expansionheadii{\long\gdef\@gobble@nv##1\end} \def\expansiontailii{{\@gobble@nv@i}} \def\expansionmidii{##2} \raw@catcodes\relax \expandafter\expansionhead\expandafter}\expansiontail \egroup \long\gdef\@gobble@nv#1\end#2{\@gobble@nv@i} %\long\def\@gobble@nv#1\end#2{\def\reserved@b{#2}% \def\@gobble@nv@ii{% \ifx\reserved@a\reserved@b \edef\reserved@a{\egroup\noexpand\end{\reserved@a}}% \expandafter\reserved@a \else \expandafter\@gobble@nv \fi} \renewcommand{\htmlexcludecomment}[1]{% \csname newenvironment\endcsname{#1}{\@gobbleenv}{}} \newcommand{\htmlreexcludecomment}[1]{% \csname renewenvironment\endcsname{#1}{\@gobbleenv}{}} %%% RAW HTML % % Enclose raw HTML between a \begin{rawhtml} and \end{rawhtml}. % The html environment ignores its body % \htmlexcludecomment{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} % \htmlexcludecomment{htmlonly} % Shorter version \newcommand{\html}[1]{} % for images.tex only \htmlexcludecomment{imagesonly} %%% 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} %%% LaTeX or HTML % Combination of \latex and \html. % Say \latexhtml{this should be latex text}{this html text} % %\newcommand{\latexhtml}[2]{#1} \long\def\latexhtml#1#2{#1} %%% tracing the HTML conversions % This alters the tracing-level within the processing % performed by latex2html by adjusting $VERBOSITY % (see latex2html.config for the appropriate values) % \newcommand{\htmltracing}[1]{} \newcommand{\htmltracenv}[1]{} %%% \strikeout for HTML only % uses <STRIKE>...</STRIKE> tags on the argument % LaTeX just gobbles it up. \newcommand{\strikeout}[1]{} %%% \htmlurl and \url % implement \url as the simplest thing, if not already defined % let \htmlurl#1 be equivalent to it % \def\htmlurlx#1{\begin{small}\texttt{#1}\end{small}}% \expandafter\ifx\csname url\endcsname\relax \let\htmlurl=\htmlurlx \else \let\htmlurl=\url \fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% JCL - stop input here if LaTeX2e is not present %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifx\if@compatibility\undefined %LaTeX209 \makeatother\relax\expandafter\endinput \fi \if@compatibility %LaTeX2e in LaTeX209 compatibility mode \makeatother\relax\expandafter\endinput \fi %\let\real@TeXlogo = \TeX %\DeclareRobustCommand{\TeX}{\relax\real@TeXlogo} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Start providing LaTeX2e extension: % This is currently: % - additional optional argument for \htmladdimg % - support for segmented documents % \ProvidesPackage{html} [1999/07/19 v1.38 hypertext commands for latex2html (nd, hws, rrm)] % % Ensure that \includecomment and \excludecomment are bound % to the version defined here. % \AtBeginDocument{% \let\includecomment=\htmlincludecomment \let\excludecomment=\htmlexcludecomment \htmlreexcludecomment{comment}} %%% bind \htmlurl to \url if that is later loaded % \expandafter\ifx\csname url\endcsname\relax \AtBeginDocument{\@ifundefined{url}{}{\let\htmlurl=\url}}\fi %%%%MG % 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. The optional argument % denotes additional HTML tags. % % Example: \htmladdimg[ALT="portrait" ALIGN=CENTER]{portrait.gif} % \ifx\pdfunknown\relax \renewcommand{\htmladdimg}[2][]{} \else \renewcommand{\htmladdimg}[2][]{\hyperimage{#2}} \fi %%% HTMLRULE for LaTeX2e % This command adds a horizontal rule and is valid even within % a figure caption. % % This command is best used with LaTeX2e and HTML 3.2 support. % It is like \hrule, but allows for options via key--value pairs % as follows: \htmlrule[key1=value1, key2=value2, ...] . % Use \htmlrule* to suppress the <BR> tag. % Eg. \htmlrule[left, 15, 5pt, "none", NOSHADE] produces % <BR CLEAR="left"><HR NOSHADE SIZE="15">. % Renew the necessary part. \renewcommand{\htmlrulestar}[1][all]{} %%% HTMLCLEAR for LaTeX2e % This command puts in a <BR> tag, with optional CLEAR="<attrib>" % \renewcommand{\htmlclear}[1][all]{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % renew some definitions to allow optional arguments % % The description of the options is missing, as yet. % \renewcommand{\latextohtml}{\textup{\LaTeX2\texttt{HTML}}} \ifx\pdfunknown\relax \renewcommand{\htmladdnormallinkfoot}[3][]{#2\footnote{#3}} \renewcommand{\htmladdnormallink}[3][]{#2} \else \renewcommand{\htmladdnormallinkfoot}[1][]{\def\next{#1}% \ifx\next\@empty\def\next{\htmladdnonamedlinkfoot}% \else\def\next{\htmladdnamedlinkfoot{#1}}\fi \next} \newcommand{\htmladdnonamedlinkfoot}[2]{% #1\footnote{\href{#2}{#2}}} \newcommand{\htmladdnamedlinkfoot}[3]{% \hypertarget{#1}{#2}\footnote{\href{#3}{#3}}} \renewcommand{\htmladdnormallink}[1][]{\def\next{#1}% \ifx\next\@empty\def\next{\htmladdnonamedlink}% \else\def\next{\htmladdnamedlink{#1}}\fi \next} \newcommand{\htmladdnonamedlink}[2]{\href{#2}{#1}} \newcommand{\htmladdnamedlink}[3]{% \hypertarget{#1}{\hskip2bp}\href{#3}{#2}} \fi \renewcommand{\htmlbody}[1][]{} \renewcommand{\htmlborder}[2][]{} \renewcommand{\externallabels}[3][]{} \renewcommand{\externalref}[2][]{} \renewcommand{\externalcite}[1][]{\nocite} \renewcommand{\hyperref}[1][]{\hyperrefi[#1]} \renewcommand{\hypercite}[1][]{\hypercitei[#1]} \renewcommand{\hypercitenocite}[2]{#2\hypercitenocitex} \renewcommand{\hypercitenocitex}[2][]{\nocite{#2}} \let\hyperciteno=\hypercitenocite \let\hyperciteext=\hypercitenocite \ifx\pdfunknown\relax \renewcommand{\htmlimage}[2][]{} \renewcommand{\htmlref}[2][]{#2{\def\tmp{#1}\ifx\tmp\@empty \aftergroup\htmlrefdef\else\aftergroup\htmlrefext\fi}} \newcommand{\htmlrefdef}[1]{} \newcommand{\htmlrefext}[2][]{} \renewcommand{\htmlcite}[2][]{#2{\def\tmp{#1}\ifx\tmp\@empty \aftergroup\htmlcitedef\else\aftergroup\htmlciteext\fi}} \newcommand{\htmlciteext}[2][]{} \else \renewcommand{\htmlimage}[2][]{\hyperimage{#2}} \renewcommand{\htmlref}[1][]{\def\htmp@{#1}\ifx\htmp@\@empty \def\htmp@{\htmlrefdef}\else\def\htmp@{\htmlrefext{#1}}\fi\htmp@} \newcommand{\htmlrefdef}[2]{\hyperref[hyper][#2]{#1}} \newcommand{\htmlrefext}[3]{% \hypertarget{#1}{\hskip2bp}\hyperref[hyper][#3]{#2}} \renewcommand{\htmlcite}[2][]{#2{\def\htmp@{#1}\ifx\htmp@\@empty \aftergroup\htmlcitedef\else\aftergroup\htmlciteext\fi}} \newcommand{\htmlciteext}[1][]{\cite} \fi \newcommand{\htmlcitedef}[1]{ \nocite{#1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % HTML HTMLset HTMLsetenv % % These commands do nothing in LaTeX, but can be used to place % HTML tags or set Perl variables during the LaTeX2HTML processing; % They are intended for expert use only. \newcommand{\HTMLcode}[2][]{} \ifx\undefined\HTML\newcommand{\HTML}[2][]{}\else \typeout{*** Warning: \string\HTML\space had an incompatible definition ***}% \typeout{*** instead use \string\HTMLcode\space for raw HTML code ***}% \fi \newcommand{\HTMLset}[3][]{} \newcommand{\HTMLsetenv}[3][]{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The following commands pertain to document segmentation, and % were added by Herbert Swan <dprhws@edp.Arco.com> (with help from % Michel Goossens <goossens@cern.ch>): % % % 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}[3][]{} % In the LaTeX2HTML version this will eliminate the title line % generated by a \segment command, but retains the title string % for use in other places. % \newcommand{\htmlnohead}{} % In the LaTeX2HTML version this put a URL into a <BASE> tag % within the <HEAD>...</HEAD> portion of a document. % \ifx\pdfunknown\relax \newcommand{\htmlbase}[1]{} \else \let\htmlbase=\hyperbaseurl \fi % Include style information into the stylesheet; e.g. CSS % \newcommand{\htmlsetstyle}[3][]{} \newcommand{\htmladdtostyle}[3][]{} % Define a style-class for information in a particular language % \newcommand{\htmllanguagestyle}[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}{} % \tableofchildlinks, \htmlinfo % by Ross Moore --- extensions dated 27 September 1997 % % These do nothing in LaTeX but for LaTeX2HTML they mark % where the table of child-links and info-page should be placed, % when the user wants other than the default. % \tableofchildlinks % put mini-TOC at this location % \tableofchildlinks[off] % not on current page % \tableofchildlinks[none] % not on current and subsequent pages % \tableofchildlinks[on] % selectively on current page % \tableofchildlinks[all] % on current and all subsequent pages % \htmlinfo % put info-page at this location % \htmlinfo[off] % no info-page in current document % \htmlinfo[none] % no info-page in current document % *-versions omit the preceding <BR> tag. % \newcommand{\tableofchildlinks}{% \@ifstar\tableofchildlinksstar\tableofchildlinksstar} \newcommand{\tableofchildlinksstar}[1][]{} \newcommand{\htmlinfo}{\@ifstar\htmlinfostar\htmlinfostar} \newcommand{\htmlinfostar}[1][]{} % This redefines \begin to allow for an optional argument % which is used by LaTeX2HTML to specify `style-sheet' information \let\realLaTeX@begin=\begin \renewcommand{\begin}[1][]{\realLaTeX@begin} % % Allocate a new set of section counters, which will get incremented % for "*" forms of sectioning commands, and for a few miscellaneous % commands. % \@ifundefined{c@part}{\newcounter{part}}{}% \newcounter{lpart} \newcounter{lchapter}[part] \@ifundefined{c@chapter}% {\let\Hchapter\relax \newcounter{chapter}\let\thechapter\relax \newcounter{lsection}[part]}% {\let\Hchapter=\chapter \newcounter{lsection}[chapter]} \newcounter{lsubsection}[section] \newcounter{lsubsubsection}[subsection] \newcounter{lparagraph}[subsubsection] \newcounter{lsubparagraph}[paragraph] %\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 \ifx\c@subparagraph\undefined \newcounter{lsubsubparagraph}[lsubparagraph] \else \newcounter{lsubsubparagraph}[subparagraph] \fi % % The following definitions are specific to LaTeX2e: % (They must be commented out for LaTeX 2.09) % \expandafter\ifx\csname part\endcsname\relax\else \renewcommand{\part}{\@ifstar{\stepcounter{lpart}% \bgroup\def\tmp{*}\H@part}{\bgroup\def\tmp{}\H@part}}\fi \newcommand{\H@part}[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hpart\tmp} \ifx\Hchapter\relax\else \def\chapter{\resetsections \@ifstar{\stepcounter{lchapter}% \bgroup\def\tmp{*}\H@chapter}{\bgroup\def\tmp{}\H@chapter}}\fi \newcommand{\H@chapter}[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hchapter\tmp} \renewcommand{\section}{\resetsubsections \@ifstar{\stepcounter{lsection}\bgroup\def\tmp{*}% \H@section}{\bgroup\def\tmp{}\H@section}} \newcommand{\H@section}[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hsection\tmp} \renewcommand{\subsection}{\resetsubsubsections \@ifstar{\stepcounter{lsubsection}\bgroup\def\tmp{*}% \H@subsection}{\bgroup\def\tmp{}\H@subsection}} \newcommand{\H@subsection}[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hsubsection\tmp} \renewcommand{\subsubsection}{\resetparagraphs \@ifstar{\stepcounter{lsubsubsection}\bgroup\def\tmp{*}% \H@subsubsection}{\bgroup\def\tmp{}\H@subsubsection}} \newcommand{\H@subsubsection}[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hsubsubsection\tmp} \renewcommand{\paragraph}{\resetsubparagraphs \@ifstar{\stepcounter{lparagraph}\bgroup\def\tmp{*}% \H@paragraph}{\bgroup\def\tmp{}\H@paragraph}} \newcommand\H@paragraph[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hparagraph\tmp} \ifx\Hsubparagraph\relax\else\@ifundefined{subparagraph}{}{% \renewcommand{\subparagraph}{\resetsubsubparagraphs \@ifstar{\stepcounter{lsubparagraph}\bgroup\def\tmp{*}% \H@subparagraph}{\bgroup\def\tmp{}\H@subparagraph}}}\fi \newcommand\H@subparagraph[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hsubparagraph\tmp} \ifx\Hsubsubparagraph\relax\else\@ifundefined{subsubparagraph}{}{% \def\subsubparagraph{% \@ifstar{\stepcounter{lsubsubparagraph}\bgroup\def\tmp{*}% \H@subsubparagraph}{\bgroup\def\tmp{}\H@subsubparagraph}}}\fi \newcommand\H@subsubparagraph[1][]{\def\tmp@a{#1}\check@align \expandafter\egroup\expandafter\Hsubsubparagraph\tmp} \def\check@align{\def\empty{}\ifx\tmp@a\empty \else\def\tmp@b{center}\ifx\tmp@a\tmp@b\let\tmp@a\empty \else\def\tmp@b{left}\ifx\tmp@a\tmp@b\let\tmp@a\empty \else\def\tmp@b{right}\ifx\tmp@a\tmp@b\let\tmp@a\empty \else\expandafter\def\expandafter\tmp@a\expandafter{\expandafter[\tmp@a]}% \fi\fi\fi \def\empty{}\ifx\tmp\empty\let\tmp=\tmp@a \else \expandafter\def\expandafter\tmp\expandafter{\expandafter*\tmp@a}% \fi\fi} % \def\resetsections{\setcounter{section}{0}\setcounter{lsection}{0}% \reset@dependents{section}\resetsubsections } \def\resetsubsections{\setcounter{subsection}{0}\setcounter{lsubsection}{0}% \reset@dependents{subsection}\resetsubsubsections } \def\resetsubsubsections{\setcounter{subsubsection}{0}\setcounter{lsubsubsection}{0}% \reset@dependents{subsubsection}\resetparagraphs } % \def\resetparagraphs{\setcounter{lparagraph}{0}\setcounter{lparagraph}{0}% \reset@dependents{paragraph}\resetsubparagraphs } \def\resetsubparagraphs{\ifx\c@subparagraph\undefined\else \setcounter{subparagraph}{0}\fi \setcounter{lsubparagraph}{0}% \reset@dependents{subparagraph}\resetsubsubparagraphs } \def\resetsubsubparagraphs{\ifx\c@subsubparagraph\undefined\else \setcounter{subsubparagraph}{0}\fi \setcounter{lsubsubparagraph}{0}} % \def\reset@dependents#1{\begingroup\let \@elt \@stpelt \csname cl@#1\endcsname\endgroup} % ignore optional *-version of \tableofcontents \let\ltx@tableofcontents\tableofcontents \renewcommand{\tableofcontents}{% \@ifstar\ltx@tableofcontents\ltx@tableofcontents} % % % Define a helper macro to dump a single \secounter command to a file. % \newcommand{\DumpPtr}[2]{% \count255=\csname c@#1\endcsname\relax\def\dummy{dummy}\def\tmp{#2}% \ifx\tmp\dummy\def\ctr{#1}\else \def\ctr{#2}\advance\count255 by \csname c@#2\endcsname\relax\fi \immediate\write\ptrfile{% \noexpand\setcounter{\ctr}{\number\count255}}} %\expandafter\noexpand\expandafter\setcounter\expandafter{\ctr}{\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. % \newwrite\ptrfile \def\DumpCounters#1#2#3#4{% \begingroup\let\protect=\noexpand \immediate\openout\ptrfile = #1.ptr \DumpPtr{part}{lpart}% \ifx\Hchapter\relax\else\DumpPtr{chapter}{lchapter}\fi \DumpPtr{section}{lsection}% \DumpPtr{subsection}{lsubsection}% \DumpPtr{subsubsection}{lsubsubsection}% \DumpPtr{paragraph}{lparagraph}% \DumpPtr{subparagraph}{lsubparagraph}% \DumpPtr{equation}{dummy}% \DumpPtr{footnote}{dummy}% \def\tmp{#4}\ifx\tmp\@empty \immediate\write\ptrfile{\noexpand\htmlhead{#2}{#3}}\else \immediate\write\ptrfile{\noexpand\htmlhead[#4]{#2}{#3}}\fi \dumpcitestatus \dumpcurrentcolor \immediate\closeout\ptrfile \endgroup } %% interface to natbib.sty \def\dumpcitestatus{} \def\loadcitestatus{\def\dumpcitestatus{% \ifciteindex\immediate\write\ptrfile{\noexpand\citeindextrue}% \else\immediate\write\ptrfile{\noexpand\citeindexfalse}\fi }% } \@ifpackageloaded{natbib}{\loadcitestatus}{% \AtBeginDocument{\@ifpackageloaded{natbib}{\loadcitestatus}{}}} %% interface to color.sty \def\dumpcurrentcolor{} \def\loadsegmentcolors{% \let\real@pagecolor=\pagecolor \let\pagecolor\segmentpagecolor \let\segmentcolor\color \ifx\current@page@color\undefined \def\current@page@color{{}}\fi \def\dumpcurrentcolor{\bgroup\def\@empty@{{}}% \expandafter\def\expandafter\tmp\space####1@{\def\thiscol{####1}}% \ifx\current@color\@empty@\def\thiscol{}\else \expandafter\tmp\current@color @\fi \immediate\write\ptrfile{\noexpand\segmentcolor{\thiscol}}% \ifx\current@page@color\@empty@\def\thiscol{}\else \expandafter\tmp\current@page@color @\fi \immediate\write\ptrfile{\noexpand\segmentpagecolor{\thiscol}}% \egroup}% \global\let\loadsegmentcolors=\relax } % These macros are needed within images.tex since this inputs % the <segment>.ptr files for a segment, so that counters are % colors are synchronised. % \newcommand{\segmentpagecolor}[1][]{% \@ifpackageloaded{color}{\loadsegmentcolors\bgroup \def\tmp{#1}\ifx\@empty\tmp\def\next{[]}\else\def\next{[#1]}\fi \expandafter\segmentpagecolor@\next}% {\@gobble}} \def\segmentpagecolor@[#1]#2{\def\tmp{#1}\def\tmpB{#2}% \ifx\tmpB\@empty\let\next=\egroup \else \let\realendgroup=\endgroup \def\endgroup{\edef\next{\noexpand\realendgroup \def\noexpand\current@page@color{\current@color}}\next}% \ifx\tmp\@empty\real@pagecolor{#2}\def\model{}% \else\real@pagecolor[#1]{#2}\def\model{[#1]}% \fi \edef\next{\egroup\def\noexpand\current@page@color{\current@page@color}% \noexpand\real@pagecolor\model{#2}}% \fi\next} % \newcommand{\segmentcolor}[2][named]{\@ifpackageloaded{color}% {\loadsegmentcolors\segmentcolor[#1]{#2}}{}} \@ifpackageloaded{color}{\loadsegmentcolors}{\let\real@pagecolor=\@gobble \AtBeginDocument{\@ifpackageloaded{color}{\loadsegmentcolors}{}}} % Define the \segment[align]{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. \newcommand{\segment}{\@ifstar{\@@htmls}{\@@html}} %\tracingall \newcommand{\@endsegment}[1][]{} \let\endsegment\@endsegment \newcommand{\@@htmls}[1][]{\@@htmlsx{#1}} \newcommand{\@@html}[1][]{\@@htmlx{#1}} \def\@@htmlsx#1#2#3#4{\csname #3\endcsname* {#4}% \DumpCounters{#2}{#3*}{#4}{#1}\input{#2}} \def\@@htmlx#1#2#3#4{\csname #3\endcsname {#4}% \DumpCounters{#2}{#3}{#4}{#1}\input{#2}} \makeatother \endinput % Modifications: % % (The listing of Initiales see Changes) % $Log: html.sty,v $ % Revision 1.39 2001/10/01 22:47:06 RRM % -- somehow revision 1.39 was not committed earlier % -- it allows a * version of \tableofcontents (used with frames) to be % treated as un-starred by LaTeX % % Revision 1.39 2000/09/10 12:23:20 RRM % -- added *-argument for \tableofcontents in frames.perl % LaTeX should just ignore it % % Revision 1.38 1999/07/19 13:23:20 RRM % -- compatibility with pdflatex and hyperref.sty % citations are not complete yet, I think % -- ensure that \thechapter remains undefined; some packages use it % as a test for the type of documentclass being used. % % Revision 1.37 1999/03/12 07:02:38 RRM % -- change macro name from \addTOCsection to \htmladdTOClink % -- it has 3 + 1 optional argument, to allow a local path to a labels.pl % file for the external document, for cross-references % % Revision 1.36 1999/03/10 05:46:00 RRM % -- extended the code for compatibilty with comment.sty % -- allow excluded environments to work within tables, % with the excluded material spanning headers and several cells % thanks Avinash Chopde for recognising the need for this. % -- added LaTeX support (ignores it) for \htmladdTOCsection % thanks to Steffen Klupsch and Uli Wortmann for this idea. % % Revision 1.35 1999/03/08 11:16:16 RRM % html.sty for LaTeX2HTML V99.1 % % -- ensure that html.sty can be loaded *after* hyperref.sty % -- support new command \htmlclear for <BR> in HTML, ignored by LaTeX % -- ensure {part} and {chapter} counters are defined, even if not used % % Revision 1.34 1998/09/19 10:37:29 RRM % -- fixed typo with \next{\hyperref}{....} % % Revision 1.33 1998/09/08 12:47:51 RRM % -- changed macro-names for the \hyperref and \hypercite options % allows easier compatibility with other packages % % Revision 1.32 1998/08/24 12:15:14 RRM % -- new command \htmllanguagestyle to associate a style class % with text declared as a particular language % % Revision 1.31 1998/07/07 14:15:41 RRM % -- new commands \htmlsetstyle and \htmladdtostyle % % Revision 1.30 1998/07/04 02:42:22 RRM % -- cope with catcodes of % { } in rawhtml/comment/htmlonly environments % % Revision 1.29 1998/06/23 13:33:23 RRM % -- use \begin{small} with the default for URLs % % Revision 1.28 1998/06/21 09:38:39 RRM % -- implement \htmlurl to agree with \url if already defined % or loaded subsequently (LaTeX-2e only) % -- get LaTeX to print the revision number when loading % % Revision 1.27 1998/06/20 15:13:10 RRM % -- \TeX is already protected in recent versions of LaTeX % so \DeclareRobust doesn't work --- causes looping % -- \part and \subparagraph need not be defined in some styles % % Revision 1.26 1998/06/01 08:36:49 latex2html % -- implement optional argument for \endsegment % -- made the counter value output from \DumpPtr more robust % % Revision 1.25 1998/05/09 05:43:35 latex2html % -- conditionals for avoiding undefined counters % % Revision 1.23 1998/02/26 10:32:24 latex2html % -- use \providecommand for \latextohtml % -- implemented \HTMLcode to do what \HTML did previously % \HTML still works, unless already defined by another package % -- fixed problems remaining with undefined \chapter % -- defined \endsegment % % Revision 1.22 1997/12/05 11:38:18 RRM % -- implemented an optional argument to \begin for style-sheet info. % -- modified use of an optional argument with sectioning-commands % % Revision 1.21 1997/11/05 10:28:56 RRM % -- replaced redefinition of \@htmlrule with \htmlrulestar % % Revision 1.20 1997/10/28 02:15:58 RRM % -- altered the way some special html-macros are defined, so that % star-variants are explicitly defined for LaTeX % -- it is possible for these to occur within images.tex % e.g. \htmlinfostar \htmlrulestar \tableofchildlinksstar % % Revision 1.19 1997/10/11 05:47:48 RRM % -- allow the dummy {tex2html_nowrap} environment in LaTeX % use it to make its contents be evaluated in environment order % % Revision 1.18 1997/10/04 06:56:50 RRM % -- uses Robin Fairbairns' code for ignored environments, % replacing the previous comment.sty stuff. % -- extensions to the \tableofchildlinks command % -- extensions to the \htmlinfo command % % Revision 1.17 1997/07/08 11:23:39 RRM % include value of footnote counter in .ptr files for segments % % Revision 1.16 1997/07/03 08:56:34 RRM % use \textup within the \latextohtml macro % % Revision 1.15 1997/06/15 10:24:58 RRM % new command \htmltracenv as environment-ordered \htmltracing % % Revision 1.14 1997/06/06 10:30:37 RRM % - new command: \htmlborder puts environment into a <TABLE> cell % with a border of specified width, + other attributes. % - new commands: \HTML for setting arbitrary HTML tags, with attributes % \HTMLset for setting Perl variables, while processing % \HTMLsetenv same as \HTMLset , but it gets processed % as if it were an environment. % - new command: \latextohtml --- to set the LaTeX2HTML name/logo % - fixed some remaining problems with \segmentcolor & \segmentpagecolor % % Revision 1.13 1997/05/19 13:55:46 RRM % alterations and extra options to \hypercite % % Revision 1.12 1997/05/09 12:28:39 RRM % - Added the optional argument to \htmlhead, also in \DumpCounters % - Implemented \HTMLset as a no-op in LaTeX. % - Fixed a bug in accessing the page@color settings. % % Revision 1.11 1997/03/26 09:32:40 RRM % - Implements LaTeX versions of \externalcite and \hypercite commands. % Thanks to Uffe Engberg and Stephen Simpson for the suggestions. % % Revision 1.10 1997/03/06 07:37:58 RRM % Added the \htmltracing command, for altering $VERBOSITY . % % Revision 1.9 1997/02/17 02:26:26 RRM % - changes to counter handling (RRM) % - shuffled around some definitions % - changed \htmlrule of 209 mode % % Revision 1.8 1997/01/26 09:04:12 RRM % RRM: added optional argument to sectioning commands % \htmlbase sets the <BASE HREF=...> tag % \htmlinfo and \htmlinfo* allow the document info to be positioned % % Revision 1.7 1997/01/03 12:15:44 L2HADMIN % % - fixes to the color and natbib interfaces % % - extended usage of \hyperref, via an optional argument. % % - extended use comment environments to allow shifting expansions % % e.g. within \multicolumn (`bug' reported by Luc De Coninck). % % - allow optional argument to: \htmlimage, \htmlhead, % % \htmladdimg, \htmladdnormallink, \htmladdnormallinkfoot % % - added new commands: \htmlbody, \htmlnohead % % - added new command: \tableofchildlinks % % Revision 1.6 1996/12/25 03:04:54 JCL % added patches to segment feature from Martin Wilck % % Revision 1.5 1996/12/23 01:48:06 JCL % o introduced the environment makeimage, which may be used to force % LaTeX2HTML to generate an image from the contents. % There's no magic, all what we have now is a defined empty environment % which LaTeX2HTML will not recognize and thus pass it to images.tex. % o provided \protect to the \htmlrule commands to allow for usage % within captions. % % Revision 1.4 1996/12/21 19:59:22 JCL % - shuffled some entries % - added \latexhtml command % % Revision 1.3 1996/12/21 12:22:59 JCL % removed duplicate \htmlrule, changed \htmlrule back not to create a \hrule % to allow occurrence in caption % % Revision 1.2 1996/12/20 04:03:41 JCL % changed occurrence of \makeatletter, \makeatother % added new \htmlrule command both for the LaTeX2.09 and LaTeX2e % sections % % % jcl 30-SEP-96 % - Stuck the commands commonly used by both LaTeX versions to the top, % added a check which stops input or reads further if the document % makes use of LaTeX2e. % - Introduced rrm's \dumpcurrentcolor and \bodytext % hws 31-JAN-96 - Added support for document segmentation % hws 10-OCT-95 - Added \htmlrule command % jz 22-APR-94 - Added support for htmlref % nd - Created