diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/iso/iso4ht.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/iso/iso4ht.dtx | 1579 |
1 files changed, 1579 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/iso/iso4ht.dtx b/Master/texmf-dist/source/latex/iso/iso4ht.dtx new file mode 100644 index 00000000000..68aafddb62c --- /dev/null +++ b/Master/texmf-dist/source/latex/iso/iso4ht.dtx @@ -0,0 +1,1579 @@ +% \iffalse meta-comment +% +% Author: Peter Wilson (CUA) (now at: peter.r.wilson@boeing.com) +% +% This system is released under the LaTeX Project Public License. +% +% This system is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{url} +\newcommand{\makecolonletter}{\catcode`\:11\relax} +\renewcommand{\MakePrivateLetters}{\makeatletter\makecolonletter} +\EnableCrossrefs +\CodelineIndex +\setcounter{StandardModuleDepth}{1} +\begin{document} + \DocInput{iso4ht.dtx} +\end{document} +%</driver> +% +% \fi +% +% \CheckSum{1914} +% +% \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} +% \DoNotIndex{\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m} +% \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\Alph,\alph} +% \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman} +% \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% \DoNotIndex{\HCode} +% +% \changes{v0.1}{2000/01/20}{First public release} +% +% \def\fileversion{v0.1} +% \def\filedate{2000/01/20} +% \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package +% \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option +% \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file +% \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter +% \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle +% \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment +% \newcommand*{\texht}{\Lpack{TeX4ht}} ^^A typeset TeX4ht +% +% \title{The \Lpack{iso4ht} \texht{} package\thanks{This +% file has version number \fileversion, last revised +% \filedate.}} +% +% \author{% +% Peter Wilson\\ +% Catholic University of America \\ +% Now at \texttt{peter.r.wilson@boeing.com} +% } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% The \Lpack{iso4ht} package, in conjunction with \texht{} +% can be used to convert \LaTeX{} +% \Lpack{iso} class documents into HTML tagged documents. +% \end{abstract} +% \tableofcontents +% +% \StopEventually{} +% +% +% +% \section{Introduction} +% +% The \Lpack{iso4ht} package can be used in conjunction with +% the \texht{} system to convert \LaTeX{} \Lpack{iso} class documents +% into HTML tagged documents. The \Lpack{iso} class is for typesetting +% ISO standard documents~\cite{PRW96i}. +% +% Section~\ref{sec:usc} describes the package and +% commented source code for the package is in Section~\ref{sec:code}. +% +% This manual is typeset according to the conventions of the +% \LaTeX{} \textsc{docstrip} utility which enables the automatic +% extraction of the \LaTeX{} macro source files~\cite{GOOSSENS94}. +% +% \subsection{Acknowledgement} +% +% Development of the \Lpack{iso4ht} package would not have been possible +% without the help and expertise of Eitan Gurari, and in particular his +% willingness to put up with the many questions I asked. +% +% +% \section{The \Lpack{iso4ht} package} \label{sec:usc} +% +% The \texht{} system has been developed by Eitan Gurari (see Chapter~4 +% and Appendix~B in~\cite{GOOSSENS99}. It is a general purpose conversion +% system to convert \LaTeX{} tagged documents into HTML (or other *ML) +% tagged documents. \texht{} can be obtained from +% \url{http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html}. +% The \Lpack{iso4ht} +% package is not guaranteed to work with versions of \texht{} earlier +% than mid-January 2000. At the time of writing, the default \texht{} +% distribution was dated mid-1999. The latest version of \texht{} is obtainable +% from \url{http://www.cis.ohio-state.edu/~gurari/TeX4ht/bugfixes.html}. +% +% To use the \Lpack{iso4ht} package, just process the \LaTeX{} document +% as you would any other under \texht. That is, either call the |ht| script +% a document starting like: +% \begin{verbatim} +% \documentclass[...]{isov2} +% \usepackage[...]{tex4ht} +% ... +% \end{verbatim} +% or call the |htlatex| script on a document without the +% |\usepackage[...]{tex4ht}| line. +% +% +% \section{The package code} \label{sec:code} +% +% The following code is based on \Lpack{article.4ht}, \Lpack{html0.4ht}, +% \Lpack{html32.4ht} and \Lpack{html4.4ht}, all written by Eitan Gurari. +% +% Most of the necessary work already exists in \Lpack{latex.4ht}, which +% sets up the \LaTeX{} kernel code. \Lpack{article.4ht} provides the +% setup for the \Lpack{article} class, and \Lpack{html0.4ht}, +% \Lpack{html32.4ht} and \Lpack{html4.4ht} provide the HTML option-related +% configurations. +% +% The \Lpack{iso} class was originally based on the \Lpack{article} class, +% so \Lpack{isov2.4ht} is in turn based on \Lpack{article.4ht} (although little +% code is actually reused). The HTML option-related configurations are +% embedded in \Lpack{isov2.4ht} instead of being supplied as seperate files. +% +% \changes{v0.1}{2000/01/20}{First public release} +% +% Announce the name and version of the package. +% \begin{macrocode} +%<*usc> +\typeout{[isov2.4ht 2000/01/20 version v0.1]} + +% \end{macrocode} +% +% \subsection{Setup and hooks} +% +% The first major part of the code deals with setting up for configuring +% the \LaTeX{} commands and environments, which forms the second major +% portion of the code. +% +% Setting up may involve adding hooks into commands, either by redefining +% them or, in simpler cases prepending and/or appending code before and/or +% after the original code. It can also involve specifying that commands +% are configurable. +% +% \subsubsection{Table of contents} +% +% What follows is a revised version of the \Lpack{article.4ht} setup +% for the |\tableofcontents|, |listoffigures| and |\listoftables| commands. +% Parctically all of the revision has to do with replacing \Lpack{article} +% sectioning commands (i.e., |\section|, |\subsection|, etc.) +% with the \Lpack{iso} +% sectioning commands (i.e., |\clause|, |\sclause|, etc. +%). +% \DescribeMacro{\listof} +% \begin{macrocode} +\NewConfigure{listof}{6} + +% \end{macrocode} +% +% \DescribeMacro{\tableofcontents} +% The revised version of \Lpack{article.4ht} |\tableofcontents| +% configuration setup. +% +% Do the |tocdepth| setup. +% \begin{macrocode} +\def\:tableofcontents{\futurelet\:temp\:TOC} +\edef\:TOC{% + \noexpand\ifx [\noexpand\:temp + \noexpand\expandafter\noexpand\:TableOfContents + \noexpand\else + \noexpand\Auto:ent{% + \ifnum 1>\c@tocdepth\else clause,fibicl@use,likefibicl@use,normannex,infannex,repannex,\fi +\ifnum 2>\c@tocdepth \else sclause,\fi +\ifnum 3>\c@tocdepth \else ssclause,\fi +\ifnum 4>\c@tocdepth \else sssclause,\fi +\ifnum 5>\c@tocdepth \else ssssclause,\fi +\ifnum 6>\c@tocdepth \else sssssclause,\fi +UnDFexyz}% + \noexpand\fi} + +\def\Auto:ent#1{% + \edef\auto:toc{\noexpand\:TableOfContents[\ifx \auto:toc\:UnDef + #1\else \auto:toc \fi]} \auto:toc + \global\let\auto:toc\:UnDef } + +% \end{macrocode} +% +% Specify the various kinds of entries in the ToC. +% \begin{macrocode} +\def\tocnormannex#1#2#3{\par\annexname\ \toc:num{annex}{#1 (\normativename)}{#2}\par}% +\def\toclikenormannex#1#2#3{\par\:SPAN{likenormannexToc}{#2}\par}% +\def\tocinfannex#1#2#3{\par\annexname\ \toc:num{infannex}{#1 (\informativename)}{#2}\par}% +\def\toclikeinfannex#1#2#3{\par\:SPAN{likeinfannexToc}{#2}\par}% +\def\tocrepannex#1#2#3{\par\annexname\ \toc:num{annex}{#1}{#2}\par}% +\def\toclikerepannex#1#2#3{\par\:SPAN{likerepannexToc}{#2}\par}% +\def\tocfibicl@use#1#2#3{\par\:SPAN{fibicl@useToc}{#2}\par}% +\def\toclikefibicl@use#1#2#3{\par\:SPAN{likefibicl@useToc}{#2}\par}% +\def\tocclause#1#2#3{\par\toc:num{clause}{#1}{#2}\par}% +\def\toclikeclause#1#2#3{\par\:SPAN{likeclauseToc}{#2}\par}% +\def\tocsclause#1#2#3{\par\ \toc:num{sclause}{#1}{#2}\par} +\def\toclikesclause#1#2#3{\par\ \:SPAN{likesclauseToc}{#2}\par} +\def\tocssclause#1#2#3{\par + \ \ \toc:num{ssclause}{#1}{#2}\par} +\def\toclikessclause#1#2#3{\par + \ \ \:SPAN{likessclauseToc}{#2}\par} +\def\tocsssclause#1#2#3{\par\ \ \toc:num{sssclause}{#1}{#2}\par} +\def\toclikesssclause#1#2#3{\par\ \ \:SPAN{likesssclauseToc}{#2}\par} +\def\tocssssclause#1#2#3{\par + \ \ \ \ \toc:num{ssssclause}{#1}{#2}\par} +\def\toclikessssclause#1#2#3{\par + \ \ \ \ \:SPAN{likessssclauseToc}{#2}\par} +\def\tocsssssclause#1#2#3{\par + \ \ \ \ \ \toc:num{sssssclause}{#1}{#2}\par} +\def\toclikesssssclause#1#2#3{\par + \ \ \ \ \ \:SPAN{likesssssclauseToc}{#2}\par} +% \end{macrocode} +% There is also a special entry to cater for the |\title| command +% (see page~\pageref{titlehooks}). +% \begin{macrocode} +\def\toctitleclause#1#2#3{\par\toc:num{titleclause}{#1}{#2}\par}% +\def\tocliketitleclause#1#2#3{\par\:SPAN{liketitleclauseToc}{#2}\par}% + +% \end{macrocode} +% The next bit is a straight copy of original \texht{} code. +% \begin{macrocode} +\def\toc:num#1#2#3{\def\:temp{#1#2}\:SPAN{#1Toc}{\ifx \:temp\empty \else + #2 \fi #3}} +\def\:tocs{\noexpand\:tableofcontents} +\pend:defIII\addcontentsline{% + \def\:temp{##1}\def\:tempa{toc}\ifx \:temp\:tempa + \gHAdvance\TitleCount 1 \fi } +\def\@dottedtocline#1#2#3#4#5{\hbox{\def\numberline##1{\e:listof + ##1\f:listof}\c:listof#4\d:listof}\ignorespaces} + +% \end{macrocode} +% +% Setup the |\@starttoc| command. +% \begin{macrocode} +\def\@starttoc#1{% + \begingroup + \makeatletter \Configure{cite}{}{}% + \def\:temp{#1}\def\:tempa{toc}% + \a:listof\par + \@input{\jobname.\ifx \:temp\:tempa otc\else #1\fi}% + \b:listof + \if@filesw + \expandafter\expandafter\csname + newwrite\endcsname\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi + \global\@nobreakfalse + \endgroup} + +% \end{macrocode} +% +% The next chunk of code only applies for HTML. +% \begin{macrocode} +\ifHtml + \NewConfigure{tableofcontents*}[1]{\edef\auto:toc{#1}% + \ifx \au:StartSec\:UnDef + \let\au:StartSec\:StartSec + \def\:StartSec{\:tableofcontents + \global\let\auto:toc\:UnDef \:StartSec} + \pend:def\:tableofcontents{\gdef\:StartSec{\au:StartSec}} + \fi +} + +% \end{macrocode} +% +% Define the various levels at which the document may be cut into seperate +% files (|\CutAt|) and at which points a ToC may be produced (|\TocAt|). \\ +% \textbf{NOTE:} This may require modification to deal with the |\title|. +% +% Cut at the clause (and annex) level. +% \begin{macrocode} + \def\:tempa{ + \CutAt{clause,likeclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \CutAt{likeclause,clause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \Configure{tableofcontents*}{clause,likeclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} +} + +% \end{macrocode} +% +% Cut at the clause and subclause levels. +% \begin{macrocode} +\def\:tempb{ + \TocAt*{clause,/likeclause,sclause,likesclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \TocAt*{likeclause,/clause,sclause,likesclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \CutAt{clause,likeclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \CutAt{likeclause,clause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \Configure{tableofcontents*}{clause,likeclause,sclause,likesclause,% + ssclause,likessclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} +} + +% \end{macrocode} +% +% Cut at the clause, subclause, and subsubclause levels. +% \begin{macrocode} +\def\:tempc{ + \TocAt*{clause,/likeclause,sclause,likesclause,ssclause,likessclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \TocAt*{likeclause,/clause,sclause,likesclause,ssclause,likessclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \CutAt{clause,likeclause,sclause,likesclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \CutAt{likeclause,clause,sclause,likesclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \Configure{tableofcontents*}{clause,likeclause,sclause,likesclause,% + ssclause,likessclause,sssclause,likesssclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} +} + +% \end{macrocode} +% +% Cut at the clause, subclause, subsubclause, and subsubsubclause levels. +% \begin{macrocode} +\def\:tempd{ + \TocAt*{clause,/likeclause,sclause,likesclause,ssclause,likessclause,% + sssclause,likesssclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \TocAt*{likeclause,/clause,sclause,likesclause,ssclause,likessclause,% + sssclause,likesssclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \CutAt{clause,likeclause,sclause,likesclause,ssclause,likessclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \CutAt{likeclause,clause,sclause,likesclause,ssclause,likessclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} + \Configure{tableofcontents*}{clause,likeclause,sclause,likesclause,% + ssclause,likessclause,sssclause,likesssclause,% + ssssclause,likessssclause,% + normannex,infannex,repannex,fibicl@use,likefibicl@use} +} + +% \end{macrocode} +% +% Now pick the cut levels appropriate for the cutting option. +% Option 4 generates the most cuts (down to subsubsubclauses) and option 1 +% one the least (clauses and annexes only). +% \begin{macrocode} +\:CheckOption{4} + \if:Option + \:tempa \:tempb \:tempc \:tempd + \else\:CheckOption{3} + \if:Option + \:tempa \:tempb \:tempc + \else\:CheckOption{2} + \if:Option + \:tempa \:tempb + \else\:CheckOption{1} + \if:Option + \:tempa + \fi + \fi + \fi + \fi + +\fi % end ifHtml + +% \end{macrocode} +% That ends the HTML specific code. +% +% \DescribeMacro{\listoffigures} +% \DescribeMacro{\listoftables} +% The following code is copied from \Lpack{article.4ht}. +% \begin{macrocode} + \pend:def\listoffigures{\begingroup \a:listoffigures + \def\@starttoc{\:tableofcontents[lof]\:gobble}} +\append:def\listoffigures{\b:listoffigures \endgroup} +\pend:def\listoftables{\begingroup \a:listoftables + \def\@starttoc{\:tableofcontents[lot]\:gobble}} +\append:def\listoftables{\b:listoftables \endgroup} + +\NewConfigure{listoffigures}{2} +\NewConfigure{listoftables}{2} + +\def\toclot#1#2#3{\par\ \toc:num{table}{#1}{#2}\par} +\def\toclof#1#2#3{\par\ \toc:num{figure}{#1}{#2}\par} + +% \end{macrocode} +% +% +% \subsubsection{Sectioning commands} +% +% This part of the code provides the setup for the sectioning commands. +% +% For an ISO document, the Title comes after the ToC, Foreword and +% Introduction.\label{titlehooks} +% The \Lpack{iso} |\title| command should really end +% any previous sectioning commands, and the easiest way to manage this +% seems to be by redefining the |\title| command in terms of a sectioning +% command. In order to do this, some new commands are required and some +% \Lpack{iso} commands redefined. +% +% Eventually, it is the sectioning command that gets configured instead +% of the |\title| command. +% Another reason for doing things this way is that elsewhere, for +% a package under the \Lpack{iso} class, I will +% be configuring a different |\title| command and I will be able to use +% this as a basis for that configuration. +% +% \DescribeMacro{\introelement} +% \DescribeMacro{\compelement} +% These require redefining as, for reasons I don't understand, the system +% falls over when it tries to process the \Lpack{iso} |\isoemptystring| +% command. This is replaced by a more direct test. +% \begin{macrocode} +\renewcommand{\introelement}[1]{\ifx\empty#1\else {#1 ---\newline}\fi} +\renewcommand{\compelement}[1]{\ifx\empty#1\else { ---\newline #1}\fi} + +% \end{macrocode} +% +% \DescribeMacro{\titleclause} +% A `clause' for typesetting (in \texht{} only) the title. This should make +% no entry in the ToC. There is no typeset number, so life is a bit simpler +% than when normally defining sectioning commands. +% \begin{macrocode} +\newcommand{\titleclause}{% + \@startsection{titleclause}{100}% large level to avoid adding to ToC + {\z@}% + {\beforecskip}% + {\aftercskip}% + {\raggedright\Tfont\bfseries}} + +% \end{macrocode} +% +% \DescribeMacro{\title} +% Now redefine the original |\title| command in terms of |\titleclause*|. +% \begin{macrocode} +\renewcommand{\title}[3]{% + \setcounter{clause}{0} + \gdef\thetitle{\introelement{#1} % + \mainelement{#2} % + \compelement{#3}} + \titleclause*{\thetitle}} + +% \end{macrocode} +% +% Do the |\title| `clause' hooks. +% \begin{macrocode} +\let\no@titleclause\titleclause +\Def:Section\titleclause{}{#1} +\let\no:titleclause\titleclause +\def\titleclause{\rdef:sec{titleclause}} +\Def:Section\liketitleclause{}{#1} +\let\:liketitleclause\liketitleclause +\let\liketitleclause\:UnDef + +% \end{macrocode} +% +% +% Add the hooks for the normal sectioning commands. This is a revision of code +% in \Lpack{article.4ht}. +% \begin{macrocode} +\let\no@clause\clause +\Def:Section\clause{\ifnum \c:secnumdepth>\c@secnumdepth \else + \theclause \fi}{#1} +\let\no:clause\clause +\def\clause{\rdef:sec{clause}} +\Def:Section\likeclause{}{#1} +\let\:likeclause\likeclause +\let\likeclause\:UnDef + +\let\no@sclause\sclause +\Def:Section\sclause{\ifnum \c:secnumdepth>\c@secnumdepth \else + \thesclause \fi}{#1} +\let\no:sclause\sclause +\def\sclause{\rdef:sec{sclause}} +\Def:Section\likesclause{}{#1} +\let\:likesclause\likesclause +\let\likesclause\:UnDef + +\let\no@ssclause\ssclause +\Def:Section\ssclause{\ifnum \c:secnumdepth>\c@secnumdepth \else + \thessclause \fi}{#1} +\let\no:ssclause\ssclause +\def\ssclause{\rdef:sec{ssclause}} +\Def:Section\likessclause{}{#1} +\let\:likessclause\likessclause +\let\likessclause\:UnDef + +\let\no@sssclause\sssclause +\Def:Section\sssclause{\ifnum \c:secnumdepth>\c@secnumdepth \else + \thesssclause \fi}{#1} +\let\no:sssclause\sssclause +\def\sssclause{\rdef:sec{sssclause}} +\Def:Section\likesssclause{}{#1} +\let\:likesssclause\likesssclause +\let\likesssclause\:UnDef + +\let\no@ssssclause\ssssclause +\Def:Section\ssssclause{\ifnum \c:secnumdepth>\c@secnumdepth \else + \thessssclause \fi}{#1} +\let\no:ssssclause\ssssclause +\def\ssssclause{\rdef:sec{ssssclause}} +\Def:Section\likessssclause{}{#1} +\let\:likessssclause\likessssclause +\let\likessssclause\:UnDef + +\let\no@sssssclause\sssssclause +\Def:Section\sssssclause{\ifnum \c:secnumdepth>\c@secnumdepth \else + \thesssssclause \fi}{#1} +\let\no:sssssclause\sssssclause +\def\sssssclause{\rdef:sec{sssssclause}} +\Def:Section\likesssssclause{}{#1} +\let\:likesssssclause\likesssssclause +\let\likesssssclause\:UnDef + +\let\no@fibicl@use\fibicl@use +\Def:Section\fibicl@use{}{#1} +\let\no:fibicl@use\fibicl@use +\def\fibicl@use{\rdef:sec{fibicl@use}} +\Def:Section\likefibicl@use{}{#1} +\let\:likefibicl@use\likefibicl@use +\let\likefibicl@use\:UnDef + +\def\@normannex#1{% + \tocskip{\tocentryskip} + \SkipRefstepAnchor + \addcontentsline{toc}{annex}{\annexname\space\theannex\space(\normativename)\space#1}% + \csname @endnormannex\endcsname} + +\let\:tempb\normannex +\Def:Section\normannex{\theannex}{#1} +\let\:normannex\normannex +\let\normannex\:tempb +\let\no@normannex\@normannex +\def\@normannex#1{% + {\let\addcontentsline\:gobbleIII\no@normannex{#1}}% + \HtmlEnv \Toc:Title{#1}\:normannex{#1}} + +\def\@infannex#1{% + \tocskip{\tocentryskip} + \SkipRefstepAnchor + \addcontentsline{toc}{annex}{\annexname\space\theannex\space(\informativename)\space#1}% + \csname @endinfannex\endcsname} + +\let\:tempb\infannex +\Def:Section\infannex{\theannex}{#1} +\let\:infannex\infannex +\let\infannex\:tempb +\let\no@infannex\@infannex +\def\@infannex#1{% + {\let\addcontentsline\:gobbleIII\no@infannex{#1}}% + \HtmlEnv \Toc:Title{#1}\:infannex{#1}} + +\def\@repannex#1{% + \tocskip{\tocentryskip} + \SkipRefstepAnchor + \addcontentsline{toc}{annex}{\annexname\space\theannex\space#1}% + \csname @endrepannex\endcsname} + +\let\:tempb\repannex +\Def:Section\repannex{\theannex}{#1} +\let\:repannex\repannex +\let\repannex\:tempb +\let\no@repannex\@repannex +\def\@repannex#1{% + {\let\addcontentsline\:gobbleIII\no@repannex{#1}}% + \HtmlEnv \Toc:Title{#1}\:repannex{#1}} + +% \end{macrocode} +% +% Specify which sectioning commands end which kinds of section. +% \begin{macrocode} +\Configure{endtitleclause} + {clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} +\Configure{endliketitleclause} + {clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} + +\Configure{endclause} + {likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} +\Configure{endlikeclause} + {clause,fibicl@use,likefibicl@use,normannex,infannex,repannex} + +\Configure{endsclause} + {likesclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} +\Configure{endlikesclause} + {sclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} + +\Configure{endssclause} + {likessclause,sclause,likesclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} +\Configure{endlikessclause} + {ssclause,sclause,likesclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} + +\Configure{endsssclause} + {likesssclause,ssclause,likessclause,sclause,likesclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} +\Configure{endlikesssclause} + {sssclause,ssclause,likessclause,sclause,likesclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} + +\Configure{endssssclause} + {likessssclause,likesssclause,ssclause,likessclause,sclause,likesclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} +\Configure{endlikessssclause} + {ssssclause,likesssclause,ssclause,likessclause,sclause,likesclause,% + clause,likeclause,fibicl@use,likefibicl@use,normannex,infannex,repannex} + +\Configure{endfibicl@use}{fibicl@use,endlikefibicl@use,clause,likeclause} +\Configure{endlikefibicl@use}{fibicl@use,endlikefibicl@use,clause,likeclause} + +\Configure{endnormannex}{normannex,infannex,repannex,fibicl@use,likefibicl@use} +\Configure{endinfannex}{normannex,infannex,repannex,fibicl@use,likefibicl@use} +\Configure{endrepannex}{normannex,infannex,repannex,fibicl@use,likefibicl@use} + +% \end{macrocode} +% +% \subsubsection{Miscellaneous} +% +% \DescribeMacro{\caption} +% \DescribeMacro{\@makecaption} +% We have to add configuration hooks and code for captions. +% \begin{macrocode} +\NewConfigure{caption}[4]{\c:def\cptA:{#1}\c:def\cptB:{#2}% + \c:def\cptC:{#3}\c:def\cptD:{#4}} +\long\def\@makecaption#1#2{% + {\cptA: \cap:ref{#1}% +\cptB:}{\cptC:{#2}\cptD:}} +\pend:def\caption{\SkipRefstepAnchor} + +% \end{macrocode} +% +% \DescribeMacro{\theindex} +% |\theindex| is redefined to cater for the difference between printed +% documents with page numbers and HTML documents. This is a copy of the code +% in \Lpack{article.4ht}. +% \begin{macrocode} +\long\def\c:theindex:#1#2#3#4#5#6#7#8#9{% + \def\theindex{% + \def\idx:item{\SaveEverypar\everypar{}#1}% + \def\endtheindex{\idx:item#2\RecallEverypar}% + \def\item{\idx:item\let\index\@gobble #3\def\idx:item{#4}}% + \def\subitem{\idx:item\let\index\@gobble #5\def\idx:item{#6}}% + \def\subsubitem{\idx:item\let\index\@gobble #7\def\idx:item{#8}}}% + \def\indexspace{\idx:item#9\let\idx:item\empty}} + +% \end{macrocode} +% +% +% \DescribeEnv{quote} +% \DescribeEnv{quotation} +% A copy of the code from \Lpack{article.4ht}. +% \begin{macrocode} +\append:def\quote{\par\@totalleftmargin\z@} +\append:def\quotation{\a:quotation\par\@totalleftmargin\z@} +\NewConfigure{quotation}{1} + +% \end{macrocode} +% +% +% \DescribeMacro{\thefootnote} +% The default \texht{} treatment of footnotes is to put each one into a +% seperate file. In the \Lpack{iso} case I want to have the footnote text +% in the same file as the body of the document. Eitan Gurari suggested +% the method implemented here to override the default +% (see also page~\pageref{footpage}). +% \begin{macrocode} +\renewcommand{\thefootnote}{\arabic{footnote}\csname PRNT\endcsname} + +% \end{macrocode} +% +% +% \subsection{Configuration} +% +% All, or nearly all, configurations depend on the HTML level option chosen. +% Typically, html0 results in empty or null values of the hooks. html32 has +% some simple hook vaules, while html4 are the most complex. +% +% \subsubsection{Table of contents} +% +% The ToC configuration is basically a copy of the relevant code from +% \Lpack{html0.4ht}, \Lpack{html32.4ht} and \Lpack{html4.4ht}, from the +% \texttt{article} section of each of those. +% +% \begin{macro}{\listof} +% \begin{macro}{\lof} +% \begin{macro}{\lot} +% I'm not sure what |\listof| does, but it is related to the ToC, LoF and LoT. +% \begin{macrocode} +\:CheckOption{0.0} +\if:Option + %%%% Do html0 + \ConfigureToc{lof}{\empty}{ }{}{} + \ConfigureToc{lot}{\empty}{ }{}{} +\else + \:CheckOption{3.2} + \if:Option + %%%% Do html32 + {\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} + \Configure{listof}{}{}{}{\HCode{<br\xml:empty>}}{}{} + \ConfigureToc{lof}{\empty}{\ }{}{\HCode{<br\xml:empty>}} + \ConfigureToc{lot}{\empty}{\ }{}{\HCode{<br\xml:empty>}} + \else + %%%% Do html4 + {\Configure{Needs}{Font\string_Size: #1}\ifcase \@ptsize + \or \Needs{11}\or \Needs{12}\else \fi} + \Configure{listof}{}{}{}{\HCode{<br\xml:empty>}}{}{} + \ConfigureToc{lof} + {\HCode{<span class="lofToc">}}{\ }{}{\HCode{</span><br\xml:empty>}} + \ConfigureToc{lot} + {\HCode{<span class="lotToc">}}{\ }{}{\HCode{</span><br\xml:empty>}} + \fi +\fi + +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Sectioning commands} +% +% Configure the sectioning commands, HTML option dependent. +% +% \begin{macro}{\titleclause} +% \begin{macro}{\titleclause*} +% \begin{macro}{\clause} +% \begin{macro}{\clause*} +% \begin{macro}{\sclause} +% \begin{macro}{\sclause*} +% \begin{macro}{\ssclause} +% \begin{macro}{\ssclause*} +% \begin{macro}{\sssclause} +% \begin{macro}{\sssclause*} +% \begin{macro}{\ssssclause} +% \begin{macro}{\ssssclause*} +% \begin{macro}{\sssssclause} +% \begin{macro}{\sssssclause*} +% \begin{macro}{\fibicl@use} +% \begin{macro}{\fibicl@use*} +% \begin{macro}{\normannex} +% \begin{macro}{\infannex} +% \begin{macro}{\repannex} +% This code is based on the \Lpack{article} sectioning configuration. In most +% cases only the sectioning names have been changed. The annexes have a +% style of their own, though. +% \begin{macrocode} +\:CheckOption{0.0} +\if:Option +% \end{macrocode} +% +% HTML option 0.0 +% \begin{macrocode} + %%%% Do html0 + \Configure{titleclause}{}{}{}{} + \Configure{liketitleclause}{}{}{}{} + \Configure{clause}{}{}{\theclause\space}{} + \Configure{likeclause}{}{}{}{} + \Configure{sclause}{}{}{\thesclause\space}{} + \Configure{likesclause}{}{}{}{} + \Configure{ssclause}{}{}{\thessclause\space}{} + \Configure{likessclause}{}{}{}{} + \Configure{sssclause}{}{}{\thesssclause\space}{} + \Configure{likesssclause}{}{}{}{} + \Configure{ssssclause}{}{}{\thessssclause\space}{} + \Configure{likessssclause}{}{}{}{} + \Configure{sssssclause}{}{}{\thesssssclause\space}{} + \Configure{likesssssclause}{}{}{}{} + \Configure{fibicl@use}{}{}{}{} + \Configure{likefibicl@use}{}{}{}{} + \Configure{normannex}{}{} + {\annexname~\theannex~(\normativename)\space}{} + \Configure{infannex}{}{} + {\annexname~\theannex~(\informativename)\space}{} + \Configure{repannex}{}{} + {\annexname~\theannex\space}{} + +\else + \:CheckOption{3.2} + \if:Option +% \end{macrocode} +% +% HTML option 3.2 +% \begin{macrocode} + %%%% Do html3 + \Configure{titleclause}{}{} + {\IgnorePar\HCode{<h1 class="titleHead">}} + {\HCode{</h1>}\NoIndent \par} + \Configure{titleclauseTITLE+}{#1} + \Configure{liketitleclause}{}{} + {\IgnorePar\HCode{<h1 class="titleHead">}} + {\HCode{</h1>}\NoIndent \par} + + \Configure{clause}{}{} + {\IgnorePar\HCode{<h3 class="clauseHead">} + \ifnum \c:secnumdepth>\c@secnumdepth + \else \theclause \space \fi} + {\HCode{</h3>}\NoIndent \par} + \Configure{clauseTITLE+}{\theclause\space#1} + \Configure{likeclause}{}{} + {\IgnorePar\HCode{<h3 class="likeclauseHead">}} + {\HCode{</h3>}\NoIndent \par} + + \Configure{sclause}{}{} + {\bgroup \IgnorePar\HCode{<h4 class="sclauseHead">} + \ifnum \c:secnumdepth>\c@secnumdepth + \else \thesclause \space \fi} + {\HCode{</h4>}\NoIndent\egroup} + \Configure{sclauseTITLE+}{\thesclause \space#1} + \Configure{likesclause}{}{} + {\bgroup \IgnorePar\HCode{<h4 class="likesclauseHead">}} + {\HCode{</h4>}\NoIndent\egroup} + + \Configure{ssclause}{}{} + {\bgroup \IgnorePar\HCode{<h5 class="ssclauseHead">} + \ifnum \c:secnumdepth>\c@secnumdepth + \else \thessclause \space \fi} + {\HCode{</h5>}\NoIndent\egroup} + \Configure{likessclause}{}{} + {\bgroup \IgnorePar\HCode{<h5 class="likessclauseHead">}} + {\HCode{</h5>}\NoIndent\egroup} + \Configure{ssclauseTITLE+}{\thessclause \space#1} + + \Configure{sssclause}{}{} + {\ShowPar\NoIndent\HCode{<span class="sssclauseHead">}\begingroup\bf + \thesssclause\space} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{likesssclause}{}{} + {\ShowPar\NoIndent\HCode{<span class="likesssclauseHead">}} + {\HCode{</span>}\IgnorePar} + \Configure{sssclauseTITLE+}{\thesssclause \space#1} + + \Configure{ssssclause}{}{} + {\ShowPar\HCode{<span class="ssssclauseHead">}\begingroup\bf + \thessssclause\space} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{likessssclause}{}{} + {\ShowPar\HCode{<span class="likssssclauseHead">}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{ssssclauseTITLE+}{\thessssclause \space#1} + + \Configure{sssssclause}{}{} + {\ShowPar\HCode{<span class="sssssclauseHead">}\begingroup\bf + \thesssssclause\space} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{likesssssclause}{}{} + {\ShowPar\HCode{<span class="liksssssclauseHead">}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{sssssclauseTITLE+}{\thesssssclause \space#1} + + \Configure{fibicl@use}{}{} + {\IgnorePar\HCode{<h3 class="fibicl@useHead">}} + {\HCode{</h3>}\NoIndent \par} + \Configure{fibicl@useTITLE+}{#1} + \Configure{likefibicl@use}{}{} + {\IgnorePar\HCode{<h3 class="likefibicl@useHead">}} + {\HCode{</h3>}\NoIndent \par} + + \Configure{normannex}{}{} + {\IgnorePar\HCode{<h3 class="normannexHead">} + \annexname\ \theannex\ (\normativename)\HCode{<BR\xml:empty>}} + {\HCode{</h3>}\NoIndent \par} + \Configure{normannexTITLE+}{\annexname\space \theannex\space (\normativename)\space #1} + + \Configure{infannex}{}{} + {\IgnorePar\HCode{<h3 class="infannexHead">} + \annexname\ \theannex\ (\informativename)\HCode{<BR\xml:empty>}} + {\HCode{</h3>}\NoIndent \par} + \Configure{infannexTITLE+}{\annexname\space \theannex\space (\informativename)\space #1} + + \Configure{repannex}{}{} + {\IgnorePar\HCode{<h3 class="repannexHead">} + \annexname\ \theannex\ \HCode{<BR\xml:empty>}} + {\HCode{</h3>}\NoIndent \par} + \Configure{repannexTITLE+}{\annexname\space \theannex\space #1} + + \else +% \end{macrocode} +% +% HTML default option (4.0) +% \begin{macrocode} + %%%% Do html4 + \Configure{titleclause}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h1 class="titleHead">}} + {\HCode{</h1>}\NoIndent \par} + \Configure{titleclauseTITLE+}{#1} + \Configure{liketitleclause}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h1 class="titleHead">}} + {\HCode{</h1>}\NoIndent \par} + + \Configure{clause}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="clauseHead">} + \ifnum \c:secnumdepth>\c@secnumdepth + \else \theclause \space \fi} + {\HCode{</h3>}\NoIndent \par} + \Configure{clauseTITLE+}{\theclause\space#1} + \Configure{likeclause}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="likeclauseHead">}} + {\HCode{</h3>}\NoIndent \par} + + \Configure{sclause}{}{} + {\EndP\bgroup \IgnorePar\HCode{<h4 class="sclauseHead">} + \ifnum \c:secnumdepth>\c@secnumdepth + \else \thesclause \space \fi} + {\HCode{</h4>}\NoIndent\egroup} + \Configure{sclauseTITLE+}{\thesclause \space#1} + \Configure{likesclause}{}{} + {\EndP\bgroup \IgnorePar\HCode{<h4 class="likesclauseHead">}} + {\HCode{</h4>}\NoIndent\egroup} + + \Configure{ssclause}{}{} + {\EndP\bgroup \IgnorePar\HCode{<h5 class="ssclauseHead">} + \ifnum \c:secnumdepth>\c@secnumdepth + \else \thessclause \space \fi} + {\HCode{</h5>}\NoIndent\egroup} + \Configure{likessclause}{}{} + {\EndP\bgroup \IgnorePar\HCode{<h5 class="likessclauseHead">}} + {\HCode{</h5>}\NoIndent\egroup} + \Configure{ssclauseTITLE+}{\thessclause \space#1} + + \Configure{sssclause}{}{} + {\ShowPar\NoIndent\HCode{<span class="sssclauseHead">}\begingroup\bf + \thesssclause\space} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{likesssclause}{}{} + {\ShowPar\NoIndent\HCode{<span class="likesssclauseHead">}} + {\HCode{</span>}\IgnorePar} + \Css{.sssclauseHead, .likesssclauseHead + { margin-top:2em; font-weight: bold;}} + + \Configure{ssssclause}{}{} + {\ShowPar\HCode{<span class="ssssclauseHead">}\begingroup\bf + \thessssclause\space} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{likessssclause}{}{} + {\ShowPar\HCode{<span class="likssssclauseHead">}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} + \Css{.ssssclauseHead, .likessssclauseHead + { font-weight: bold;}} + + \Configure{sssssclause}{}{} + {\ShowPar\HCode{<span class="sssssclauseHead">}\begingroup\bf + \thesssssclause\space} + {\endgroup\HCode{</span>}\IgnorePar} + \Configure{likesssssclause}{}{} + {\ShowPar\HCode{<span class="liksssssclauseHead">}\begingroup\bf} + {\endgroup\HCode{</span>}\IgnorePar} + \Css{.sssssclauseHead, .likesssssclauseHead + { font-weight: bold;}} + + \Configure{fibicl@use}{}{} + {\IgnorePar\EndP \IgnorePar\HCode{<h3 class="fibicl@useHead">}} + {\HCode{</h3>}\NoIndent \par} + \Configure{fibicl@useTITLE+}{#1} + \Configure{likefibicl@use}{}{} + {\IgnorePar\EndP \IgnorePar\HCode{<h3 class="likefibicl@useHead">}} + {\HCode{</h3>}\NoIndent \par} + + \Configure{normannex}{}{} + {\IgnorePar \EndP\IgnorePar\HCode{<h3 class="normannexHead">} + \annexname\ \theannex\ (\normativename)\HCode{<BR\xml:empty>}} + {\HCode{</h3>}\NoIndent \par} + \Configure{normannexTITLE+}{\annexname\space \theannex\space (\normativename)\space #1} + \Css{h3.normannexHead{text-align: center}} + + \Configure{infannex}{}{} + {\IgnorePar\EndP \IgnorePar\HCode{<h3 class="infannexHead">} + \annexname\ \theannex\ (\informativename)\HCode{<BR\xml:empty>}} + {\HCode{</h3>}\NoIndent \par} + \Configure{infannexTITLE+}{\annexname\space \theannex\space (\informativename)\space #1} + \Css{h3.infannexHead{text-align: center}} + + \Configure{repannex}{}{} + {\IgnorePar\EndP \IgnorePar\HCode{<h3 class="repannexHead">} + \annexname\ \theannex\ \HCode{<BR\xml:empty>}} + {\HCode{</h3>}\NoIndent \par} + \Configure{repannexTITLE+}{\annexname\space \theannex\space #1} + \Css{h3.repannexHead{text-align: center}} + + \fi +\fi + +% \end{macrocode} +% +% Reconfigure sectioning if not HTML. +% \begin{macrocode} +\ifHtml \else + \ifx\bf\:UnDef + \def\bf{\normalfont\bfseries} + \fi + \Configure{titleclause}{\begingroup\bf}{\endgroup} + \Configure{liketitleclause}{\begingroup\bf}{\endgroup} + \Configure{clause}{}{}{\begingroup\bf\theclause\space}{\endgroup} + \Configure{likeclause}{}{}{\begingroup\bf}{\endgroup} + \Configure{sclause}{}{}{\begingroup\bf\thesclause\space}{\endgroup} + \Configure{likesclause}{}{}{\begingroup\bf}{\endgroup} + \Configure{ssclause}{}{}{\begingroup\bf\thessclause\space}{\endgroup} + \Configure{likessclause}{}{}{\begingroup\bf}{\endgroup} + \Configure{sssclause}{}{} + {\begingroup\bf\thesssclause\space}{\endgroup} + \Configure{likesssclause}{}{}{\begingroup\bf}{\endgroup} + \Configure{ssssclause}{}{} + {\begingroup\it\thessssclause\space}{\endgroup} + \Configure{likessssclause}{}{} + {\begingroup\it}{\endgroup} + \Configure{sssssclause}{}{} + {\begingroup\it\thesssssclause\space}{\endgroup} + \Configure{likesssssclause}{}{} + {\begingroup\it}{\endgroup} + \Configure{fibicl@use}{}{}{\begingroup\bf}{\endgroup} + \Configure{likefibicl@use}{}{}{\begingroup\bf}{\endgroup} + \Configure{normannex}{}{} + {\begingroup\bf \annexname~\theannex~(\normativename)\space}{\endgroup} + \Configure{infannex}{}{} + {\begingroup\bf \annexname~\theannex~(\informativename)\space}{\endgroup} + \Configure{repannex}{}{} + {\begingroup\bf v\annexname~\theannex\space}{\endgroup} +\fi + +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Miscellaneous} +% +% \begin{macro}{\caption} +% Configure the |\caption| command. +% \begin{macrocode} +\:CheckOption{0.0} +\if:Option +% \end{macrocode} +% The html0 option is in effect. +% \begin{macrocode} + %%%% Do html0 + \Configure{caption}{}{}{}{} +\else + \:CheckOption{3.2} + \if:Option +% \end{macrocode} +% The html32 option is in effect. +% \begin{macrocode} + %%%% Do html32 + \Configure{caption}{\HCode{\if:nopar \else <br\xml:empty>\fi + <div align="center"><table\Hnewline> + <tr valign="bottom"><td nowrap><strong>}} + {} {\HCode{</strong></td><td \Hnewline}} + {\HCode{</td></tr></table></div>}} + \else +% \end{macrocode} +% The html4 option +% (the default, unless specifically overridden by html0 or html32) +% is in effect. +% \begin{macrocode} + %%%% Do html4 + \Configure{caption}{\HCode{\if:nopar \else <br\xml:empty>\fi} + \:xhtml{\IgnorePar\EndP}\HCode{<div align="center" + class="caption"><table class="caption"\Hnewline><tr + valign="baseline" class="caption"><td class="id">}} + {: } {\HCode{</td><td \Hnewline class="content">}} + {\HCode{</td></tr></table></div>}} + \Css{.caption td.id{font-weight: bold; white-space: nowrap; }} + \fi +\fi + +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{theindex} +% Copy of original \texht{} code. There are 9 hooks for possible +% configuration. +% \begin{macrocode} +\:CheckOption{0.0} +\if:Option + %%%% Do html0 + \Configure{theindex}{}{}{}{}{}{}{}{}{} +\else + \:CheckOption{3.2} + \if:Option + %%%% Do html32 + \Configure{theindex} + {\HCode{<div>}} + {\HCode{</div>}} + {} + {\HCode{<br\xml:empty>}\hfil\break} + {\ \ \ \ } + {\HCode{<br\xml:empty>}\hfil\break} + {\ \ \ \ \ \ \ \ } + {\HCode{<br\xml:empty>}\hfil\break} + {\hbox{\HCode{<p>}}} + \else + %%%% Do html4 + \Configure{theindex} + {\HCode{<div class="theindex">}\let\end:theidx\empty} + {\end:theidx\HCode{</div>}} + {} + {\HCode{<br\xml:empty>}\hfil\break} + {\ \ \ \ } + {\HCode{<br\xml:empty>}\hfil\break} + {\ \ \ \ \ \ \ \ } + {\HCode{<br\xml:empty>}\hfil\break} + {\hbox{\end:theidx\HCode{<p class="theindex">}}% + \def\end:theidx{\HCode{</p>}}} + \fi +\fi + +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{quotation} +% \begin{environment}{quote} +% \begin{environment}{anote} +% \begin{environment}{note} +% \begin{environment}{anexample} +% \begin{environment}{example} +% These are all quotation-like environments. |quotation| and |quote| +% are original \texht, while the others are specifically for \Lpack{iso}. +% \begin{macrocode} +\:CheckOption{0.0} +\if:Option + %%%% Do html0 + \ConfigureEnv{quotation}{}{}{}{} + \ConfigureEnv{quote}{}{}{}{} + \ConfigureEnv{anote}{}{}{}{} + \ConfigureEnv{note}{}{}{}{} + \ConfigureEnv{anexample}{}{}{}{} + \ConfigureEnv{example}{}{}{}{} +\else + \:CheckOption{3.2} + \if:Option + %%%% Do html32 + \ConfigureEnv{quotation}{}{}{\start:env{quotation}}{\end:env} + \ConfigureEnv{quote}{}{}{\start:env{quote}}{\end:env} + \ConfigureEnv{anote}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{anote}}{\end:env} + \ConfigureEnv{note}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{note}}{\end:env} + \ConfigureEnv{anexample}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{anexample}}{\end:env} + \ConfigureEnv{example}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{example}}{\end:env} + \else + %%%% Do html4 + \ConfigureEnv{quotation}{}{}{\start:env{quotation}}{\end:env} + \ConfigureEnv{quote}{}{}{\start:env{quote}}{\end:env} + \Css{.quote {margin-bottom:0.25em; + margin-top:0.25em; + margin-left:1em;}} + \ConfigureEnv{anote}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{anote}}{\end:env} + \ConfigureEnv{note}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{note}}{\end:env} + \ConfigureEnv{anexample}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{anexample}}{\end:env} + \ConfigureEnv{example}{\HCode{<blockquote>}}{\HCode{</blockquote>}}% + {\start:env{example}}{\end:env} + \fi +\fi + +% \end{macrocode} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% +% +% +% \begin{environment}{description} +% \begin{environment}{nreferences} +% \begin{environment}{references} +% \begin{environment}{symbols} +% These all all description-like environments. |description| is the +% original \texht{} configuration, while the others are new for \Lpack{iso}. +% \begin{macrocode} +\:CheckOption{0.0} +\if:Option + %%%% Do html0 + \ConfigureList{description}{}{}{}{}{}{} + \ConfigureList{nreferences}{}{}{}{}{}{} + \ConfigureList{references}{}{}{}{}{}{} + \ConfigureList{symbols}{}{}{}{}{}{} +\else + \:CheckOption{3.2} + \if:Option + %%%% Do html32 + \ConfigureList{description}% + {\HCode{<dl>}} + {\HCode{</dl>}\ShowPar} + {\HCode{<dt>}\bgroup \bf} + {\egroup\HCode{<dd\Hnewline>}} + \ConfigureList{nreferences}% + {\HCode{<dl>}} + {\HCode{</dl>}\ShowPar} + {\HCode{<dt>}\bgroup \bf} + {\egroup\HCode{<dd\Hnewline>}} + \ConfigureList{references}% + {\HCode{<dl>}} + {\HCode{</dl>}\ShowPar} + {\HCode{<dt>}\bgroup \bf} + {\egroup\HCode{<dd\Hnewline>}} + \ConfigureList{symbols}% + {\HCode{<dl>}} + {\HCode{</dl>}\ShowPar} + {\HCode{<dt>}\bgroup \bf} + {\egroup\HCode{<dd\Hnewline>}} + \else + %%%% Do html4 + \ConfigureList{description}% + {\EndP\HCode{<dl class="description">}\let\end:itm=\empty} + {\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg</dd>} + \HCode{<dt class="description">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}} + \ConfigureList{nreferences}% + {\EndP\HCode{<dl class="nreferences">}\let\end:itm=\empty} + {\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg</dd>} + \HCode{<dt class="nreferences">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="nreferences">}} + \ConfigureList{references}% + {\EndP\HCode{<dl class="references">}\let\end:itm=\empty} + {\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg</dd>} + \HCode{<dt class="references">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="references">}} + \ConfigureList{symbols}% + {\EndP\HCode{<dl class="symbols">}\let\end:itm=\empty} + {\EndP\HCode{</dd></dl>}\ShowPar} + {\end:itm\def\end:itm{\EndP\Tg</dd>} + \HCode{<dt class="symbols">}\bgroup \bf} + {\egroup\EndP\HCode{</dt><dd\Hnewline class="symbols">}} + \fi +\fi + +% \end{macrocode} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% +% +% \begin{macro}{\footnotetext} +% \begin{macro}{\footnote} +% These are configured to print the footnote text in the main body of the +% document and for the number to link to the text. This is based on +% suggestions by Eitan Gurari.\label{footpage} +% \begin{macrocode} +\:CheckOption{0.0} +\if:Option + \Configure{footnotetext}{}{}{} % from latex section +\else + \:CheckOption{3.2} + \if:Option + %% \Configure{footnotetext} % from latex section I THINK THIS IS WRONG + %% {\HCode{<hr>}} {\HCode{<hr>}} + %% {\HCode{<sup>}} {\HCode{</sup>}} + \Configure{footnotetext} + {\HCode{<sup>}\FNmark\HCode{</sup>}} + {(footnote\ifx \FNmark\empty \else\space\fi \FNmark : } + {)} + \Configure{footnote} + {\def\PRNT{)}\HCode{<sup>}% + \Link{\arabic{footnote}}{}\FNmark\EndLink + \HCode{</sup>}} + {\relax\space + \Link{}{\arabic{footnote}}\EndLink + (footnote \FNmark : } + {)} + + \else + %% \Configure{footnotetext} % from latex section + %% {\HCode{<br \xml:empty><span class="footnotetext"><sup>}\FNmark + %% \HCode{</sup}} + %% {} + %% {\HCode{</span>}} + %% \Css{span.footnotetext{ font-size:75\%; font-style:italic; } } + %% + %% \Configure{footnote} % from latex section + %% {\HPageButton[fn\FNnum]{\HCode{<sup>}\FNmark\HCode{</sup>}}} + %% {\BeginHPage[fn\FNnum]{ }} + %% {\EndHPage{}} +% \end{macrocode} +% This is Eitan's suggested code. +% \begin{macrocode} + \Configure{footnotetext} + {\Tg<sup>\FNmark\Tg</sup>} + {(footnote\ifx \FNmark\empty \else\space\fi \FNmark : } + {)} + + \Configure{footnote} + {\def\PRNT{)}\Tg<sup>% + \Link{\arabic{footnote}}{}\FNmark\EndLink + \Tg</sup>} + {\relax\space + \Link{}{\arabic{footnote}}\EndLink + (footnote \FNmark : } + {)} + \fi +\fi + +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The following is a slight revision of the end of \Lpack{article.4ht}. +% \begin{macrocode} +\def\tableofcontents{% + \ifx\contentsname\empty \else + \clause*{\contentsname}% + \fi + \:tableofcontents} +\let\dx:begin\begin +\def\begin#1{\def\:temp{#1}\def\:tempa{theindex}\ifx \:temp\:tempa + \fibicl@use*{\indexname}\fi\dx:begin{#1}} + +% \end{macrocode} +% +% The end of the package +% \begin{macrocode} +%</usc> +% \end{macrocode} +% +% +% \subsection{Observations} +% +% There are three main aspects to developing \texht{} code and +% configurations for a new class or package: +% \begin{enumerate} +% \item Finding out what hooks and configurations are already available. +% \item Determining what additional hooks, and where they should be put, for +% the new package. +% \item Configuring all the hooks. +% \end{enumerate} +% +% \texht{} has added many hooks to the \LaTeX{} kernel and classes +% and packages +% based on kernel code inherit those hooks. I found it advisable to run +% a test document with new macros through \texht{} to see what +% the result looked like. Depending on the particular macros it may be that +% the inherited hooks and configuration are sufficient and nothing needs +% to be done. +% +% For this particular class a lot of new hooks were required, but mainly +% related to the new macros for sectioning. Configurations were obviously +% required for these, together with a few for new kinds of environments +% and lists. +% +% There are other packages that, in their turn, are designed to work +% with the \Lpack{iso} +% class and it turned +% out that they required few new hooks or changes to the existing +% configurations. +% +% The rest of this section is concerned with item~2, namely +% adding hooks. +% +% \subsubsection{Colon is a letter} +% +% Within the \texht{} `environment', that is the \file{*.4ht} +% files, the colon character (|:|) acts as a letter in a similar manner +% as the at character (|@|) does in class and package files; |@| is also +% treated as a letter in the environment. Normally, something like +% |\start:env{myenv}| would be treated as the command |\start| followed by +% the text |:env{myenv}|. In the \texht{} environment it is the command +% |\start:env| with the argument |{myenv}|. If any commands like this +% occur in the preamble to a \LaTeX{} document, then they must be surrounded +% by |\makecolonletter| and |\restorecolon|, which may be defined +% as:\footnote{Note that a package may redefine the category code for +% the colon, which is why the old value is saved.} +% \begin{verbatim} +% \chardef\oldcolon=\thecatcode`\: +% \newcommand{\makecolonletter}{\catcode`\:11\relax} +% \newcommand{\restorecolon}{\catcode`\:=\oldcolon\relax} +% \end{verbatim} +% +% The fact that command names can include a colon means that you have +% to be careful in code that includes any colon characters. In \LaTeX, +% code like like |{footnote \thefootnote:}| will print the footnote number +% immediately followed by a colon (e.g., |footnote 3:|). In the \texht{} +% environment you are more likely to get an error message saying that +% |\thefootnote:| is undefined! Instead, this needs to be coded as +% |{footnote \thefootnote :}|, so that the |\thefootnote| command is ended +% by the space before the colon. +% +% \subsubsection{Adding code and hooks} +% +% A \LaTeX{} idiom for adding code at the start and/or end of +% an existing macro which takes no arguments called, say |\foo|, is: +% \begin{verbatim} +% \let\oldfoo\foo +% \renewcommand{\foo}{new-start-code \oldfoo new-end-code} +% \end{verbatim} +% Similarly for commands |\baz| and |\biz| which take one and two arguments +% respectively: +% \begin{verbatim} +% \let\oldbaz\baz +% \renewcommand{\baz}[1]{new-start-code \oldbaz{#1} new-end-code} +% \let\oldbiz\biz +% \renewcommand{\biz}[2]{new-start-code \oldbiz{#1}{#2} new-end-code} +% \end{verbatim} +% +% As these kinds of redefinitions are a common occurrence +% \file{tex4ht.sty} provides commands that encapsulate the above idiom. +% These are |\pend:def\foo{new-start-code}| and +% |\append:def\foo{new-end-code}| for when |\foo| is a macro without +% arguments, and there are similar commands for prepending and appending +% to macros with up to three arguments. Repeating and extending +% the \LaTeX{} example, +% in the \texht{} environment it could be coded as: +% \begin{verbatim} +% \pend:def\foo{new-start-code} % \foo has no arguments +% \append:def\foo{new-end-code} +% \pend:defI\baz{new-start-code} % \baz has one argument +% \append:defI\baz{new-end-code} +% \pend:defII\biz{new-start-code} % \biz has two arguments +% \append:defII\biz{new-end-code} +% \pend:defIII\boz{new-start-code} % \boz has three arguments +% \append:defIII\boz{new-end-code} +% \end{verbatim} +% +% The definition of a hook in a macro called, say |\buz|, takes +% the form |\X:buz| where X is a single letter. For example, adding a +% configurable hook +% at the start and end of the macro |\baz| can be done like this: +% \begin{verbatim} +% \pend:defI\baz{\a:baz} % hook at start +% \append:defI\baz{\b:baz} % hook at end +% \NewConfigure{baz}{2} % declare \baz has two configurable hooks +% \end{verbatim} +% Note that by default a |\NewConfigure{baz}{2}| command expects the hook +% corresponding to the first argument to be |\a:baz| and the hook +% corresponding to the second argument to be |\b:baz|. Extending the +% example, |\NewConfigure{foo}{9}| will expect the hook corresponding to +% the ninth argument to be |\i:foo| (`i' is the ninth letter of the +% alphabet). This default setting for |\NewConfigure| has been created via: \\ +% |\Configure{NewConfigure}{a:}{b:}{c:}{d:}{e:}{f:}{g:}{h:}{i:}| \\ +% in \file{tex4ht.sty}. +% +% +% As an example for hook insertion, assume a macro defined like: \\ +% |\newcommand{\mac}[1]{START #1 END}| \\ +% in which there are four potential places for hooks (call them h1 to h4): \\ +% |{h1 START h2 #1 h3 END h4}|. Hooks h1 and h4 can be added via |\pend:defI| +% and |\append:defI|, but these are not sufficient by themselves. Other +% methods are required for inserting all four hooks. Two of these are: +% \begin{itemize} +% \item Redefine the whole macro from scratch: +% \begin{verbatim} +% \renewcommand{\mac}[1]{\a:mac START \c:mac #1 \d:mac END \b:mac} +% \NewConfigure{mac}{4} +% \end{verbatim} +% +% \item Reuse parts of the original macro +% (similar to the \LaTeX{} ap/pre-pending idiom): +% \begin{verbatim} +% \let\oldmac\mac +% \renewcommand{\mac}[1]{\a:mac\oldmac{\c:mac #1 \d:mac}\b:mac} +% \NewConfigure{mac}{4} +% \end{verbatim} +% \end{itemize} +% Either of these examples can be configured via: +% \begin{verbatim} +% \Configure{mac}% +% {first arg for a hook} % \a:mac at the start of the command +% {second arg for a hook} % \b:mac at the end of the command +% {third arg for a hook} % \c:mac immediately before the argument +% {fourth arg for a hook} % \d:mac immediately after the argument +% \end{verbatim} +% Note that the hooks do not have to be placed in the |\mac| command in +% alphabetical order. +% +% +% +% \bibliographystyle{alpha} +% +% \begin{thebibliography}{GMS94} +% +% \bibitem[GMS94]{GOOSSENS94} +% Michel Goossens, Frank Mittelbach, and Alexander Samarin. +% \newblock \textit{The LaTeX Companion}. +% \newblock Addison-Wesley Publishing Company, 1994. +% +% \bibitem[GR99]{GOOSSENS99} +% Michel Goossens and Sebastian Rahtz +% (with Eitan Gurari, Ross Moore, and Robert Sutor). +% \newblock \textit{The LaTeX Web Companion --- Integrating TeX, HTML, and XML}. +% \newblock Addison-Wesley Publishing Company, 1999. +% +% \bibitem[Wil96]{PRW96i} +% Peter~R. Wilson. +% \newblock \textit{{LaTeX for standards: The LaTeX package files user manual}}. +% \newblock NIST Report NISTIR, June 1996. +% +% \end{thebibliography} +% +% +% \Finale +% \PrintIndex +% +\endinput + +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + |