% LaTeX2HTML Version 96.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.


% Modifications:
%
% (The listing of Initiales see Changes)

% 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

% Exit if the style file is already loaded
% (suggested by Lee Shombert <las@potomac.wash.inmet.com>
\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}{}

% This command adds information within the <BODY> ... </BODY> tag
%
\newcommand{\bodytext}[1]{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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...

\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 <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}
%
\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]{}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% JCL - stop input here if LaTeX2e is not present
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
\ifx\if@compatibility\undefined
  %LaTeX209
  \makeatother\relax\expandafter\endinput
\fi
\if@compatibility
  %LaTeX2e in LaTeX209 compatibility mode
  \makeatother\relax\expandafter\endinput
\fi


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Start providing LaTeX2e extension:
% This is currently:
%  - additional optional argument for \htmladdimg
%  - support for segmented documents
%


\ProvidesPackage{html}
          [1996/02/01 v1.0 hypertext commands for latex2html (nd, hws)]
%%%%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}
%
\renewcommand{\htmladdimg}[2][]{}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 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}[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.
%

\makeatletter
\newcounter{lpart}
\newcounter{lchapter}[part]
\@ifundefined{chapter}{\newcounter{lsection}[part]}{\newcounter{lsection}[chapter]}
\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}}
\ifx\Hchapter\relax\else\@ifundefined{chapter}{}{%
  \def\chapter{\resetsubsections \@ifstar{\stepcounter{lchapter}\Hchapter*}{\Hchapter}}}
\fi
\def\section{\resetsubsubsections \@ifstar{\stepcounter{lsection}\Hsection*}{\Hsection}}
\def\subsection{\resetparagraphs 
 \@ifstar{\stepcounter{lsubsection}\Hsubsection*}{\Hsubsection}}
\def\subsubsection{\resetsubparagraphs
 \@ifstar{\stepcounter{lsubsubsection}\Hsubsubsection*}{\Hsubsubsection}}
\def\paragraph{\resetsubsubparagraphs
 \@ifstar{\stepcounter{lparagraph}\Hparagraph*}{\Hparagraph}}
\def\subparagraph{%
 \@ifstar{\stepcounter{lsubparagraph}\Hsubparagraph*}{\Hsubparagraph}}
\def\subsubparagraph{%
 \@ifstar{\stepcounter{lsubsubparagraph}\Hsubsubparagraph*}{\Hsubsubparagraph}}
%
\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{\setcounter{subparagraph}{0}\setcounter{lsubparagraph}{0}%
 \reset@dependents{subparagraph}\resetsubsubparagraphs }
\def\resetsubsubparagraphs{%\setcounter{subsubparagraph}{0}%
 \setcounter{lsubsubparagraph}{0}}
%
\def\reset@dependents#1{\begingroup\let \@elt \@stpelt \csname cl@#1\endcsname\endgroup}
%
%
%  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.
%
\newwrite\ptrfile
\def\DumpCounters#1#2#3{%
\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}{lequation}%
\immediate\write\ptrfile{\noexpand\htmlhead{#2}{#3}}%
\ifx\undefined\citeindextrue\else\expandafter\dumpcitestatus\fi
\ifx\undefined\current@color\else\expandafter\dumpcurrentcolor\fi
\immediate\closeout\ptrfile
\endgroup }

\def\dumpcitestatus{%
 \ifciteindex\immediate\write\ptrfile{\noexpand\citeindextrue}%
 \else\immediate\write\ptrfile{\noexpand\citeindexfalse}\fi }

\def\dumpcurrentcolor{%
\immediate\write\ptrfile{\noexpand\segmentcolor{\current@color}}}

%
%  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 

\makeatother
\endinput
