summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/isostds/iso
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/isostds/iso
Initial commit
Diffstat (limited to 'macros/latex/contrib/isostds/iso')
-rw-r--r--macros/latex/contrib/isostds/iso/README43
-rw-r--r--macros/latex/contrib/isostds/iso/iso4ht.dtx1579
-rw-r--r--macros/latex/contrib/isostds/iso/iso4ht.ins60
-rw-r--r--macros/latex/contrib/isostds/iso/iso4ht.pdfbin0 -> 205628 bytes
-rw-r--r--macros/latex/contrib/isostds/iso/isoe.dtx5444
-rw-r--r--macros/latex/contrib/isostds/iso/isoe.ins96
-rw-r--r--macros/latex/contrib/isostds/iso/isoe.pdfbin0 -> 385405 bytes
-rw-r--r--macros/latex/contrib/isostds/iso/isoman.pdfbin0 -> 447492 bytes
-rw-r--r--macros/latex/contrib/isostds/iso/isoman.tex3874
9 files changed, 11096 insertions, 0 deletions
diff --git a/macros/latex/contrib/isostds/iso/README b/macros/latex/contrib/isostds/iso/README
new file mode 100644
index 0000000000..5be2457e8a
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/README
@@ -0,0 +1,43 @@
+ The iso class is for typesetting ISO International Standard documents
+according to the requirements specified in "ISO/IEC Directives, Part 2,
+Rules for the structure and drafting of International Standards.
+(Fourth edition, 2001)". Configuration files for TeX4ht are also provided.
+
+Changes in the 2002 release
+o Updated from ISO/IEC Directives, Third edition, 1997 to the
+ Fourth edition, 2001.
+
+ The distribution is under the LPPL and consists of the following files:
+README (this file)
+isoe.dtx
+isoe.ins
+isoe.pdf
+iso4ht.dtx
+iso4ht.ins
+iso4ht.pdf
+isoman.tex
+isoman.pdf (user manual)
+
+ To install the class (and packages)
+o run: latex isoe.ins (which will generate *.cls, *.clo, *.sty and *.tex files)
+o Move the generated files to a location where LaTeX will find them
+ (if you don't know where this is, see the FAQ on CTAN in /help/uktug-faq)
+
+o To regenerate the commented source code
+ o run: latex isoe.dtx
+ o run: makeindex -s gind.ist isoe
+ o run: latex isoe.dtx
+ o print isoe.dvi for a hardcopy
+o For the User Manual, either latex isoman.tex or print isoman.pdf
+
+o If you might use TeX4ht (and this might well not work):
+ o run: latex iso4ht.dtx (which will generate *.4ht file(s))
+ o To print the commented source code, follow instructions above on iso4ht.dtx
+ o Move the generated *.4ht file(s) to a location where TeX4ht will find them
+
+ Don't forget to update the (La)TeX file database if you have one.
+
+2002/09/04
+Peter Wilson
+peter.r.wilson@boeing.com
+
diff --git a/macros/latex/contrib/isostds/iso/iso4ht.dtx b/macros/latex/contrib/isostds/iso/iso4ht.dtx
new file mode 100644
index 0000000000..68aafddb62
--- /dev/null
+++ b/macros/latex/contrib/isostds/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 \~}
+
+
diff --git a/macros/latex/contrib/isostds/iso/iso4ht.ins b/macros/latex/contrib/isostds/iso/iso4ht.ins
new file mode 100644
index 0000000000..820171de05
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/iso4ht.ins
@@ -0,0 +1,60 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% 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.
+%%
+%% Author: Peter Wilson (CUA)
+%% now at: peter.r.wilson@boeing.com
+%%
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\batchfile{iso4ht.ins}
+\input docstrip.tex
+\preamble
+
+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.
+
+\endpreamble
+
+\keepsilent
+
+%%% \Msg{*** Generating the driver file ***}
+%%% \generateFile{iso4ht.drv}{t}{\from{iso4ht.dtx}{driver}}
+
+\Msg{*** Generating the TeX4ht package files ***}
+
+\generateFile{isov2.4ht}{t}{\from{iso4ht.dtx}{usc}}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file(s) into a directory searched by TeX4ht:}
+\Msg{*}
+\Msg{* \space\space isov2.4ht}
+\Msg{*}
+\Msg{*}
+\Msg{* To produce the documentation run the files ending with}
+\Msg{* `.dtx' through LaTeX.}
+\Msg{* Process any name.idx file by:}
+\Msg{* \space\space\space\space makeindex -s gind.ist name}
+\Msg{* Process any name.glo file by:}
+\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+
+\endinput
diff --git a/macros/latex/contrib/isostds/iso/iso4ht.pdf b/macros/latex/contrib/isostds/iso/iso4ht.pdf
new file mode 100644
index 0000000000..1264b092a2
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/iso4ht.pdf
Binary files differ
diff --git a/macros/latex/contrib/isostds/iso/isoe.dtx b/macros/latex/contrib/isostds/iso/isoe.dtx
new file mode 100644
index 0000000000..564feef456
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/isoe.dtx
@@ -0,0 +1,5444 @@
+% \iffalse meta-comment
+%
+% isoe.dtx
+%
+% This work has been partially funded by the US government
+% and is not subject to copyright.
+%
+% This program is provided under the terms of the
+% LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt.
+%
+% Author: Peter Wilson (CUA and NIST)
+% now at: peter.r.wilson@boeing.com
+%
+% \fi
+% \CheckSum{3764}
+%
+% \changes{v11}{1997/09/30}{Output character table to class and package files only}
+% \changes{v2}{1997/12/01}{Moved xtab and uschyp package code to seperate files}
+% \changes{v2}{1997/12/04}{Moved isorot package code to seperate file}
+% \changes{v2.1}{1999/02/15}{General updates}
+% \changes{v2.1}{1999/02/15}{Character table not output at all}
+% \changes{v2.1}{1999/03/19}{Some changes to boilerplate}
+% \changes{v2.2}{2000/01/10}{Modified to support tex4ht}
+% \changes{v2.3}{2001/07/06}{Modified to match ISO 2001 requirements}
+% \changes{v2.3}{2002/01/10}{More changes to match ISO 2001 requirements}
+% \changes{v2.4}{2002/07/22}{Added support for pdf/hyperref bookmarking}
+%
+% ^^A \def\fileversion{v2.2}
+% ^^A \def\filedate{2000/01/10}
+% \def\fileversion{v2.3}
+% ^^A \def\filedate{2001/07/06}
+% \def\filedate{2002/01/10}
+% \def\fileversion{v2.4}
+% \def\filedate{2002/07/22}
+% \title{\LaTeX{} for ISO Standards: \\
+% Source code\thanks{This
+% file has version number \fileversion, last revised
+% \filedate.}}
+%
+% \author{%
+% Peter Wilson\\
+% Catholic University of America\thanks{This work was originally
+% performed as
+% a Guest Researcher at the National Institute of Standards and Technology.} \\
+% Now at \texttt{peter.r.wilson@boeing.com}
+% }
+% \date{\filedate}
+% \maketitle
+% \tableofcontents
+%
+% \StopEventually{}
+%
+%
+%
+% \section{Introduction}
+%
+% This document provides the commented source for \LaTeX{}
+% class and package files designed for the typesetting of
+% documents according to the rules for ISO international standards.
+% A seperate document provides the user manual~\cite{PRW96i}.
+% 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}.
+%
+% The original version of this class was used for the production
+% of camera ready copy
+% for the ISO~10303 standard \emph{Product data representation and
+% exchange}. The initial release of ISO~10303:1994 consisted of twelve
+% parts and over 2400 pages. The editorial board of the ISO Central
+% Secretariat in Geneva accepted the typographic conventions embodied
+% in those macros.
+%
+% ISO (the International Organization for Standardisation) specify
+% their document layout requirements in ISO Directives~\cite{ISOD397}.
+% Unfortunately these Directives do not completely define the document
+% layout, leaving several aspects open to interpretation by the
+% document editor and re-interpretation by the ISO editorial board.
+% At the request of the editors of ISO~10303, and no doubt others as
+% well, ISO has clarified the intent of their Directives~\cite{ISOD201}.
+% Also, since
+% they were published ISO has been considering how best to accept
+% and use electronic manuscripts instead of camer ready paper copy.
+% At the time of writing (July 2001) they will accept documents in
+% PDF format. This has also lead to some changes in requirements.
+%
+% The following specifications are a re-implementation of the
+% class macros published in July 2000.
+%
+% This manual is provided as a service for future developers
+% and maintainers of the
+% class and packages for ISO standards. It is assumed that any
+% any such person is \LaTeX{} literate and accustomed to supporting
+% complex class and package files~\cite{GOOSSENS94}.
+%
+%
+% Sections~\ref{sec:docstrip} through~\ref{sec:ic} describe some
+% administrative elements and code for general use later in the specification.
+% The macros forming the class file are defined in sections~\ref{sec:opt}
+% through~\ref{sec:init}. These are principally revisions of the
+% report class to meet ISO typographic requirements and many new macros
+% to support specific structural elements of an ISO standard to provide
+% logical markup capabilities. Section~\ref{sec:askinc} describes the
+% macros for the \texttt{askinc} package for interactive file inclusion.
+%
+%
+% \section{A driver for this document} \label{sec:docstrip}
+%
+% The next series of code contains the documentation driver file for
+% \LaTeX, i.e., the file that will produce the documentation you are
+% currently reading. This will be extracted from this file by the
+% \textsc{docstrip} program.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+% \end{macrocode}
+%
+% We do not want the following basic elements to appear in the index.
+% \begin{macrocode}
+\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@}
+% \end{macrocode}
+% We do want an index, using linenumbers, but not update information.
+% \begin{macrocode}
+\EnableCrossrefs
+\CodelineIndex
+%% \RecordChanges
+% \end{macrocode}
+% We use so many \file{docstrip} modules that we set the
+% \texttt{StandardModuleDepth} counter to 1.
+% \begin{macrocode}
+\setcounter{StandardModuleDepth}{1}
+% \end{macrocode}
+% Some commonly used abbreviations
+% \begin{macrocode}
+\newcommand*{\Lopt}[1]{\textsf {#1}} % typeset an option
+\newcommand*{\file}[1]{\texttt {#1}} % typeset a file
+\newcommand*{\Lcount}[1]{\textsl {\small#1}} % typeset a counter
+\newcommand*{\pstyle}[1]{\textsl {#1}} % typeset a pagestyle
+\newcommand*{\Lenv}[1]{\texttt {#1}} % typeset an environment
+\newcommand*{\Lpack}[1]{\textsf {#1}} % typeset a package
+% \end{macrocode}
+% We want the full details printed.
+% \begin{macrocode}
+\begin{document}
+\DocInput{isoe.dtx}
+\PrintIndex
+%% \PrintChanges
+\end{document}
+%</driver>
+% \end{macrocode}
+%
+%
+%
+%
+%
+% \section{Identification} \label{sec:id}
+%
+% \changes{v2}{1997/11/30}{Eliminated all native v2.09 support}
+%
+% The \file{iso} document class can only be used with \LaTeX 2e, so we make
+% sure that an appropriate message is displayed when another \TeX\
+% format is used.
+% \begin{macrocode}
+%<iso>\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% Announce the name, option files and version for \LaTeX 2e files:
+% \begin{macrocode}
+%<iso>\ProvidesClass{isov2}[2002/07/22 v2.4 LaTeX ISO document class]
+%<9pt>\ProvidesFile{iso9.clo}[1997/11/30 v1.1 ISO class size option]
+%<10pt>\ProvidesFile{iso10.clo}[1997/11/30 v1.1 ISO class size option]
+%<11pt>\ProvidesFile{iso11.clo}[1997/11/30 v1.1 ISO class size option]
+%<inc>\ProvidesPackage{askincv1}[1995/05/31 Interactive include package]
+%<fwd1>\ProvidesFile{isofwdbp.tex}[2002/01/10 ISO Foreword boilerplate]
+%<trfwd1>\ProvidesFile{trfwd1.tex}[2002/01/10 PAS/TS Foreword boilerplate]
+% \end{macrocode}
+%
+%
+% \section{Initial Code} \label{sec:ic}
+%
+% \begin{macrocode}
+%<*iso>
+% \end{macrocode}
+%
+% \changes{v2.1}{1999/02/15}{Requires the url package}
+% The class requires the \file{url} package, so make sure
+% that it is loaded.
+% \begin{macrocode}
+\RequirePackage{url}
+% \end{macrocode}
+%
+% In this part we define a few commands that are used later on.
+%
+% \begin{macro}{\@ptsize}
+% This control sequence is used to store the second digit of the
+% pointsize we are typesetting in. So, normally, it's value is one
+% of 0, 1 or 2.
+% \begin{macrocode}
+\newcommand{\@ptsize}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@restonecol}
+% When the document has to be printed in two columns, we sometimes
+% have to temporarily switch to one column. This switch is used to
+% remember to switch back.
+% \begin{macrocode}
+\newif\if@restonecol
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\isostringsequal}
+% \begin{macro}{\isoemptystring}
+% The command |\isostringsequal| is based on code in Stephan von
+% Bechtolsheim \emph{\TeX{} in Practice}, vol III page 334.
+% It enables the definition of specific commands for testing whether
+% two strings are equal.
+% \begin{macrocode}
+\def\isostringsequal #1#2{%
+ TT\fi
+ \edef\@is@str@ngsequali{#1}%
+ \edef\@is@str@ngsequalii{#2}%
+ \ifx\@is@str@ngsequali\@is@str@ngsequalii}
+% \end{macrocode}
+% Now we define the |\isoemptystring| command for use in testing
+% for an empty parameter.
+% \begin{macrocode}
+\def\isoemptystring #1{%
+ TT\fi
+ \if\isostringsequal{#1}{}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fillline}
+% This command draws a horizontal line across the page.
+% \begin{macrocode}
+\newcommand{\fillline}{\mbox{}\hrulefill\mbox{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makecommand}
+% \begin{macro}{\make@command}
+% \changes{v2.2}{2000/01/10}{Added makecommand}
+% The |\makecommand| macro is like the |\newcommand| macro except that it
+% always (re)defines a command. It is equivalent to the pair of commands: \\
+% |\providecommand{\com}...\renewcommand{\com}...|. \\
+% The code for |\make@command}| is a simplified version of the code
+% for |\renew@command| in file \file{ltdefns.dtx}.
+% \begin{macrocode}
+\newcommand{\makecommand}{\@star@or@long\make@command}
+\newcommand{\make@command}[1]{%
+ \let\@ifdefinable\@rc@ifdefinable
+ \new@command#1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpdf}
+% \changes{v2.2}{2000/01/10}{Added ifpdf to support pdfLaTeX}
+% This can be used to check whether or not a document is being processed
+% by LaTeX or pdfLaTeX.
+% \begin{macrocode}
+\newif\ifpdf
+\ifx\pdfoutput\undefined
+ \pdffalse
+\else
+ \pdftrue
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifisohyper}
+% This can be used to check, after |\begin{document}| to check if
+% the \Lpack{hyperref} package has been used.
+% \changes{v2.4}{2002/07/22}{Added \cs{ifisohyper} to support hyperref}
+% \begin{macrocode}
+\newif\ifisohyper
+ \isohyperfalse
+\AtBeginDocument{%
+ \@ifpackageloaded{hyperref}%
+ {\isohypertrue}%
+ {\newcommand{\hyperpage}[1]{#1}}%
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Declaration of Options} \label{sec:opt}
+%
+%
+% \subsection{Setting Paper Sizes}
+%
+% The variables |\paperwidth| and |\paperheight| should reflect the
+% physical paper size after trimming. For desk printer output this
+% is usually the real paper size since there is no post-processing.
+% We assume that the document will only be printed on either ISO
+% standard A4 paper (option \Lopt{a4paper}) or on the most common
+% of the US paper sizes (option \Lopt{letterpaper}).
+%
+% Option \Lopt{a4paper} will be the default.
+%
+% \begin{macro}{\if@us}
+% A flag for the paper size option.
+% \begin{macrocode}
+\newif\if@us\@usfalse
+% \end{macrocode}
+% \end{macro}
+% Declare the paper size options.
+% \begin{macrocode}
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}% %% 11.69in
+ \setlength\paperwidth {210mm}} %% 8.27in
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}% %% 279mm
+ \setlength\paperwidth {8.5in}% %% 216mm
+ \@ustrue}
+% \end{macrocode}
+%
+% \subsection{Choosing the type size}
+%
+% The type size options are handled by defining |\@ptsize| to contain
+% the last digit of the size in question and branching on |\ifcase|
+% statements. This is done for historical reasons to stay compatible
+% with other packages that use the |\@ptsize| variable to select
+% special actions. It makes the declarations of size options less
+% than 10pt difficult, although one can probably use \texttt{9}
+% assuming that a class will not define both
+% \Lopt{9pt} and \Lopt{19pt} options.
+%
+% Option \Lopt{11pt} will be the default.
+%
+% \begin{macrocode}
+\renewcommand{\@ptsize}{1}
+\DeclareOption{9pt}{\renewcommand{\@ptsize}{9}}
+\DeclareOption{10pt}{\renewcommand{\@ptsize}{0}}
+\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}}
+% \end{macrocode}
+%
+%
+% \subsection{Two-side or one-side printing}
+%
+% For two-sided printing we use the switch |\if@twoside|. In
+% addition we have to set the |\if@mparswitch| to get any margin
+% paragraphs into the outside margin. In this class we always
+% use two-sided printing with marginal notes on the outside.
+% \begin{macro}{\if@twoside}
+% \begin{macro}{\if@mparswitch}
+% \begin{macrocode}
+\@twosidetrue \@mparswitchtrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v2}{1997/11/30}{Eliminated the sect option}
+%
+% \subsection{Two column printing}
+%
+% Two-column and one-column printing is again realized via a switch
+% which is defined in the kernel. The default is single column printing.
+%
+% \begin{macro}{\if@twocolumn}
+% \begin{macrocode}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The \Lopt{copyright} option}
+%
+% The default is not to print ISO copyright notices. This option
+% enables copyright notice printing. As usual, we employ a flag.
+% \changes{v11}{1997/09/30}{Added additional \cs{ifc@pyrightopt} flag}
+% \begin{macro}{\ifc@pyrightopt}
+% |c@pyrightopt| stores the user's option, while |c@pyright| will
+% be used to control printing of copyright notices and symbols
+% in the body of the document.
+% \begin{macrocode}
+\newif\ifc@pyright\c@pyrightfalse
+\newif\ifc@pyrightopt\c@pyrightoptfalse
+\DeclareOption{copyright}{\c@pyrightopttrue}
+\DeclareOption{notcopyright}{\c@pyrightoptfalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Document kind options \Lopt{is}, \Lopt{dis}, \Lopt{cd},
+% \Lopt{wd}, \Lopt{techrep}, \Lopt{otherdoc} etc.}
+%
+% The default is to assume that an ISO standard in preparation is
+% to be printed (effectively this is the \Lopt{otherdoc} option).
+% The \Lopt{is} option declares that an International Standard (IS)
+% is to be printed.
+% The \Lopt{fdis} option declares that a Final Draft International
+% Standard (FDIS) is to be printed, and similarly the
+% \Lopt{dis} option declares that a Draft International Standard
+% (DIS) is to be printed. The \Lopt{cd} option is for Committee
+% Draft (CD) documents and the option \Lopt{wd} is for Working
+% Drafts.
+%
+% The \Lopt{techrep} option declares that a Technical Report (probably
+% type 1 or 2) is to be printed.
+%
+% The \Lopt{otherdoc} option indicates that
+% the document is not intended to become an ISO standard (e.g., is
+% an ISO internal report).
+% \begin{macro}{\ifisstandard}
+% \begin{macro}{\iffdisstandard}
+% \begin{macro}{\ifdisstandard}
+% \begin{macro}{\ifcdstandard}
+% \begin{macro}{\ifwdstandard}
+% \begin{macro}{\iftechrep}
+% \begin{macro}{\ifotherdoc}
+% We use flags for remembering which option is in effect.
+% \changes{v1.1}{1997/09/30}{Added options: fdis, cd, and wd}
+% \begin{macrocode}
+\newif\ifisstandard\isstandardfalse
+\newif\iffdisstandard\fdisstandardfalse
+\newif\ifdisstandard\disstandardfalse
+\newif\ifcdstandard\cdstandardfalse
+\newif\ifwdstandard\wdstandardfalse
+\newif\iftechrep\techrepfalse
+\newif\ifotherdoc\otherdocfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\iftechspec}
+% \begin{macro}{\ifpaspec}
+% Flags for the \Lopt{techspec} Technical Specification and \Lopt{pas}
+% Publicly Available Specification options.
+% \changes{v2.3}{2001/07/06}{Added ts and pas options}
+% \begin{macrocode}
+\newif\iftechspec\techspecfalse
+\newif\ifpaspec\paspecfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Now declare the options (including an \Lopt{is} option just for
+% completeness). We need to ensure (later) that, whatever copyright
+% option has been used, copyright notices are not printed for certain
+% kinds of documents.
+% \begin{macrocode}
+\DeclareOption{is}{\isstandardtrue
+ \fdisstandardfalse
+ \disstandardfalse
+ \cdstandardfalse
+ \wdstandardfalse
+ \techrepfalse
+ \techspecfalse
+ \paspecfalse
+ \otherdocfalse}
+\DeclareOption{fdis}{\isstandardfalse
+ \fdisstandardtrue
+ \disstandardfalse
+ \cdstandardfalse
+ \wdstandardfalse
+ \techrepfalse
+ \techspecfalse
+ \paspecfalse
+ \otherdocfalse}
+\DeclareOption{dis}{\isstandardfalse
+ \fdisstandardfalse
+ \disstandardtrue
+ \cdstandardfalse
+ \wdstandardfalse
+ \techrepfalse
+ \techspecfalse
+ \paspecfalse
+ \otherdocfalse}
+\DeclareOption{cd}{\isstandardfalse
+ \fdisstandardfalse
+ \disstandardfalse
+ \cdstandardtrue
+ \wdstandardfalse
+ \techrepfalse
+ \techspecfalse
+ \paspecfalse
+ \otherdocfalse
+ \c@pyrightfalse}
+\DeclareOption{wd}{\isstandardfalse
+ \fdisstandardfalse
+ \disstandardfalse
+ \cdstandardfalse
+ \wdstandardtrue
+ \techrepfalse
+ \techspecfalse
+ \paspecfalse
+ \otherdocfalse
+ \c@pyrightfalse}
+\DeclareOption{techrep}{\isstandardfalse
+ \fdisstandardfalse
+ \disstandardfalse
+ \cdstandardfalse
+ \wdstandardfalse
+ \techreptrue
+ \techspecfalse
+ \paspecfalse
+ \otherdocfalse}
+\DeclareOption{techspec}{\isstandardfalse
+ \fdisstandardfalse
+ \disstandardfalse
+ \cdstandardfalse
+ \wdstandardfalse
+ \techrepfalse
+ \techspectrue
+ \paspecfalse
+ \otherdocfalse}
+\DeclareOption{pas}{\isstandardfalse
+ \fdisstandardfalse
+ \disstandardfalse
+ \cdstandardfalse
+ \wdstandardfalse
+ \techreptrue
+ \techspecfalse
+ \paspectrue
+ \otherdocfalse}
+\DeclareOption{otherdoc}{\isstandardfalse
+ \fdisstandardfalse
+ \disstandardfalse
+ \cdstandardfalse
+ \wdstandardfalse
+ \techrepfalse
+ \techspecfalse
+ \paspecfalse
+ \otherdoctrue
+ \c@pyrightfalse}
+% \end{macrocode}
+%
+% \subsection{The \Lopt{draft} option}
+%
+% If the user requests \Lopt{draft} we show any overfull boxes,
+% marginal notes are allowed, and any copyright notices are not
+% printed. For symmetry, we also define a \Lopt{final} option
+% which is the default.
+% \begin{macro}{\ifdr@ftd@c}
+% \begin{macrocode}
+\newif\ifdr@ftd@c\dr@ftd@cfalse
+\setlength{\overfullrule}{\z@}
+\DeclareOption{final}{\setlength{\overfullrule}{\z@}
+ \dr@ftd@cfalse}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}%
+ \dr@ftd@ctrue}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \section{Executing Options} \label{sec:xopt}
+%
+% Here we execute the default options to initialize certain
+% variables. Note that the document class \file{isoe} always uses two
+% sided printing.
+% \changes{v2.3}{2001/07/06}{Deleted the uglycaption option}
+% \begin{macrocode}
+\ExecuteOptions{notcopyright,otherdoc,final,a4paper,11pt,onecolumn}
+% \end{macrocode}
+%
+% The |\ProcessOptions| command causes the execution of the code
+% for every option \Lopt{FOO}
+% which is declared and for which the user typed
+% the \Lopt{FOO} option in his
+% |\documentclass| command. For every option \Lopt{BAR} he typed,
+% which is not declared, the option is assumed to be a global option.
+% All options will be passed as document options to any
+% |\usepackage| command in the document preamble.
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% \begin{macro}{\ifc@pyright}
+% Ensure that we have the correct value of |\ifc@pyright| no matter
+% the ordering in which the options are processed.
+% \changes{v11}{1997/09/30}{Added setting of c@pyright after option processing}
+% \changes{v2.3}{2001/07/06}{Changed copyright option to apply to all docs}
+% \begin{macrocode}
+\c@pyrightfalse
+\ifc@pyrightopt
+ \c@pyrighttrue
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% Now that all the options have been executed we can load the
+% chosen class option file that contains all size dependent code.
+% \begin{macrocode}
+\ifnum\@ptsize < \tw@
+ \input{iso1\@ptsize.clo}
+\else
+ \input{iso\@ptsize.clo}
+\fi
+% \end{macrocode}
+%
+% \section{Loading Packages} \label{sec:lpack}
+%
+% This class file does not load additional package files.
+%
+%
+% \section{Document Layout} \label{sec:docl}
+% \label{sec:maincode}
+%
+% In this section we deal with the more difficult typographical
+% details.
+%
+% \subsection{Fonts}
+%
+% \LaTeX\ offers the user commands to change the size of the font,
+% relative to the `main' size. Each relative size changing command
+% |\size| executes the command
+% |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
+%
+% \begin{description}
+% \item[\meta{font-size}] The absolute size of the font to use from
+% now on.
+%
+% \item[\meta{baselineskip}] The normal value of |\baselineskip|
+% for the size of the font selected. (The actual value will be
+% |\baselinestretch| * \meta{baselineskip}.)
+% \end{description}
+%
+% A number of commands, defined in the \LaTeX\ kernel, shorten the
+% following definitions and are used throughout. They are:
+% \begin{center}
+% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
+% \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
+% \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
+% \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
+% \verb=\@xviipt= & 17.28 & \verb=\@xxpt= & 20.74 & \verb=\@xxvpt= & 24.88\\
+% \end{tabular}
+% \end{center}
+%
+% \begin{macro}{\normalsize}
+% \begin{macro}{\@normalsize}
+%
+% The user level command for the main size is |\normalsize|.
+% Internally \LaTeX\ uses |\@normalsize| when it refers to the
+% main size. |\@normalsize| will be defined to work like
+% |\normalsize| if the latter is redefined from its default
+% definition (that just issues an error message). Otherwise
+% |\@normalsize| simply selects a 9pt/11pt size.
+%
+% The |\normalsize| macro also sets new values for\\
+% |\abovedisplayskip|, |\abovedisplayshortskip| and
+% |\belowdisplayshortskip|.
+%
+% \begin{macrocode}
+%</iso>
+%<*9pt|10pt|11pt>
+\renewcommand{\normalsize}{%
+%<*9pt>
+ \@setfontsize\normalsize\@ixpt\@xpt
+ \abovedisplayskip 9\p@ \@plus 2\p@ \@minus 4.5\p@
+ \abovedisplayshortskip \z@ \@plus 3\p@
+ \belowdisplayshortskip 5.5\p@ \@plus 2.5\p@ \@minus 3\p@
+%</9pt>
+%<*10pt>
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+%</10pt>
+%<*11pt>
+ \@setfontsize\normalsize\@xipt{13.6}%
+ \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</11pt>
+% \end{macrocode}
+% The |\belowdisplayskip| is always equal to the
+% |\abovedisplayskip|. The parameters of the first level list are
+% always given by |\@listI|.
+% \begin{macrocode}
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+% \end{macrocode}
+%
+% We initially choose the normalsize font.
+% \begin{macrocode}
+\normalsize
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@smidgeon}
+% \begin{macro}{\parskip}
+% \begin{macro}{\@onelineskip}
+% ISO typesetting is grid based, which is not something that \LaTeX{}
+% is good at. We use some `fixed' skips for before and after headings,
+% plus a flexible smidgeon.
+%
+% For the grid, we want a fixed size |\parskip|, dependant only on
+% the normal font, of one blank line (i.e., the |\baselineskip|).
+%
+% Just in case the value of |\parskip| gets changed, also keep
+% a similar value in |@onelineskip|.
+% \changes{v2}{1997/11/30}{parskip fixed and moved to .clo files}
+% \changes{v2}{1997/11/30}{Added \cs{@smidgeon} command}
+% \changes{v2}{1997/11/30}{Added \cs{@onelineskip} command}
+% \begin{macrocode}
+\newlength{\@smidgeon}
+ \setlength{\@smidgeon}{0.5\p@ \@plus 1\p@ \@minus 1\p@}
+\newlength{\@onelineskip}
+%<9pt>\parskip \@xpt\p@
+%<9pt>\setlength{\@onelineskip}{\@xpt\p@}
+%<10pt>\parskip \@xiipt\p@
+%<10pt>\setlength{\@onelineskip}{\@xiipt\p@}
+%<11pt>\parskip 13.6\p@
+%<11pt>\setlength{\@onelineskip}{13.6\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\small}
+% This code is similar to that for |\normalsize|.
+% \begin{macrocode}
+\newcommand{\small}{%
+%<*9pt>
+ \@setfontsize\small\@viiipt{9}
+ \abovedisplayskip 6\p@ \@plus 2\p@ \@minus 4\p@
+ \abovedisplayshortskip \z@ \@plus 2\p@
+ \belowdisplayshortskip 4\p@ \@plus 2\p@ \@minus 2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 2\p@ \@plus 2\p@ \@minus 2\p@
+ \parsep 1\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep
+ \itemindent\z@
+ }%
+%</9pt>
+%<*10pt>
+ \@setfontsize\small\@ixpt{11}%
+ \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus2\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep
+ \itemindent\z@
+ }%
+%</10pt>
+%<*11pt>
+ \@setfontsize\small\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@
+ \parsep 3\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep
+ \itemindent\z@
+ }%
+%</11pt>
+ \belowdisplayskip \abovedisplayskip
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footnotesize}
+% This code is similar to that for |\normalsize|.
+% \begin{macrocode}
+\newcommand{\footnotesize}{%
+%<*9pt>
+ \@setfontsize\footnotesize\@viiipt{9}
+ \abovedisplayskip 6\p@ \@plus 2\p@ \@minus 4\p@
+ \abovedisplayshortskip \z@ \@plus 2\p@
+ \belowdisplayshortskip 4\p@ \@plus 2\p@ \@minus 2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 2\p@ \@plus 2\p@ \@minus 2\p@
+ \parsep 1\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep
+ \itemindent\z@
+ }%
+%</9pt>
+%<*10pt>
+ \@setfontsize\footnotesize\@viiipt{9.5}%
+ \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 3\p@ \@plus\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep
+ \itemindent\z@
+ }%
+%</10pt>
+%<*11pt>
+ \@setfontsize\footnotesize\@ixpt{11}%
+ \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep
+ \itemindent\z@
+ }%
+%</11pt>
+ \belowdisplayskip \abovedisplayskip
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scriptsize}
+% \begin{macro}{\tiny}
+% \begin{macro}{\large}
+% \begin{macro}{\Large}
+% \begin{macro}{\LARGE}
+% \begin{macro}{\huge}
+% \begin{macro}{\Huge}
+% These are all much simpler than the previous macros, they just
+% select a new fontsize, but leave the parameters for displays and
+% lists alone.
+% \begin{macrocode}
+%<*9pt>
+\newcommand{\tiny}{\@setfontsize\tiny\@vpt{6}}
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt{8}}
+\newcommand{\large}{\@setfontsize\large\@xpt{11}}
+\newcommand{\Large}{\@setfontsize\Large\@xipt{12}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xivpt{18}}
+\newcommand{\huge}{\@setfontsize\huge\@xviipt{22}}
+\newcommand{\Huge}{\@setfontsize\Huge\@xxpt{25}}
+%</9pt>
+%<*10pt>
+\newcommand{\tiny}{\@setfontsize\tiny\@vipt{7}}
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9}}
+\newcommand{\large}{\@setfontsize\large\@xipt{12}}
+\newcommand{\Large}{\@setfontsize\Large\@xiipt{14}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xivpt{18}}
+\newcommand{\huge}{\@setfontsize\huge\@xviipt{22}}
+\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}}
+%</10pt>
+%<*11pt>
+\newcommand{\tiny}{\@setfontsize\tiny\@vipt{7}}
+\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9}}
+\newcommand{\large}{\@setfontsize\large\@xiipt{14}}
+\newcommand{\Large}{\@setfontsize\Large\@xivpt{18}}
+\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}}
+\newcommand{\huge}{\@setfontsize\huge\@xxpt{25}}
+\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}}
+%</11pt>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Gfont}
+% \begin{macro}{\Tfont}
+% \begin{macro}{\Cfont}
+% \begin{macro}{\SCfont}
+% \begin{macro}{\SSCfont}
+% \begin{macro}{\Nfont}
+% \begin{macro}{\Efont}
+% Define the font sizes for headings, captions, etc.
+% |\Gfont| is the normal size font for general text.
+% |\Tfont| is for the title of the standard.
+% |\Cfont| is for clause headings. Similarly |\SCfont| and |\SSCfont|
+% are for subheadings.
+% |\Nfont| is for notes, examples, footers, footnotes, copyright.
+% |\Efont| is for code in typewriter font.
+% \changes{v2}{1997/11/30}{New \cs{SCfont} and \cs{SSCfont} commands}
+% \changes{v2.3}{2001/07/06}{Added font series to heading font sizes}
+% \begin{macrocode}
+\newcommand{\Gfont}{\normalsize}
+\newcommand{\Nfont}{\small}
+\newcommand{\Efont}{\small}
+%<*9pt>
+%%%\newcommand{\Tfont}{\huge}
+\newcommand{\Tfont}{\@setfontsize\Tfont\@xviipt{22}\bfseries}
+\newcommand{\Cfont}{\Large\bfseries}
+\newcommand{\SCfont}{\large\bfseries}
+\newcommand{\SSCfont}{\normalsize\bfseries}
+
+%</9pt>
+%<*10pt>
+%%%\newcommand{\Tfont}{\huge}
+\newcommand{\Tfont}{\@setfontsize\Tfont\@xviipt{22}\bfseries}
+\newcommand{\Cfont}{\Large\bfseries}
+\newcommand{\SCfont}{\large\bfseries}
+\newcommand{\SSCfont}{\normalsize\bfseries}
+
+%</10pt>
+%<*11pt>
+%%%\newcommand{\Tfont}{\LARGE}
+\newcommand{\Tfont}{\LARGE\bfseries}
+\newcommand{\Cfont}{\Large\bfseries}
+\newcommand{\SCfont}{\large\bfseries}
+\newcommand{\SSCfont}{\normalsize\bfseries}
+
+%</11pt>
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\beforecskip}
+% \begin{macro}{\aftercskip}
+% \begin{macro}{\beforescskip}
+% \begin{macro}{\afterscskip}
+% \begin{macro}{\beforesscskip}
+% \begin{macro}{\aftersscskip}
+% We define skips for before and after headings. ISO wants two blank
+% lines before a clause and one afterwards. For lower level sectioning
+% the spacing is one blank line before and one after.
+%
+% Remember that \LaTeX{} automatically adds |\parskip| before and
+% after headings.
+% \changes{v2}{1997/11/30}{New before and after clause skip commands}
+% \begin{macrocode}
+\newlength{\beforecskip}
+ \setlength{\beforecskip}{\@smidgeon}
+ \addtolength{\beforecskip}{2\@onelineskip}
+ \addtolength{\beforecskip}{-\parskip}
+\newlength{\aftercskip}
+ \setlength{\aftercskip}{\@smidgeon}
+ \addtolength{\aftercskip}{\@onelineskip}
+ \addtolength{\aftercskip}{-\parskip}
+\newlength{\beforescskip}
+ \setlength{\beforescskip}{\@smidgeon}
+ \addtolength{\beforescskip}{\@onelineskip}
+ \addtolength{\beforescskip}{-\parskip}
+\newlength{\afterscskip}
+ \setlength{\afterscskip}{\@smidgeon}
+ \addtolength{\afterscskip}{\@onelineskip}
+ \addtolength{\afterscskip}{-\parskip}
+\newlength{\beforesscskip}
+ \setlength{\beforesscskip}{\@smidgeon}
+ \addtolength{\beforesscskip}{\@onelineskip}
+ \addtolength{\beforesscskip}{-\parskip}
+\newlength{\aftersscskip}
+ \setlength{\aftersscskip}{\@smidgeon}
+ \addtolength{\aftersscskip}{\@onelineskip}
+ \addtolength{\aftersscskip}{-\parskip}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</9pt|10pt|11pt>
+%<*iso>
+% \end{macrocode}
+%
+% \begin{macro}{\captionsize}
+% This internal command holds the font size for captions. Its value
+% depends on the \Lopt{uglycaption} option.
+% \changes{v1.1}{1997/07/31}{Added \cs{captionsize} command to support the uglycaption}
+% \changes{v2.3}{2001/07/06}{\cs{captionsize} is just \cs{normalsize}}
+% \begin{macrocode}
+ \newcommand{\captionsize}{\normalsize}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Paragraphing}
+%
+% \begin{macro}{\lineskip}
+% \begin{macro}{\normallineskip}
+% These parameters control \TeX's behaviour when two lines tend to
+% come too close together.
+% \begin{macrocode}
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\baselinestretch}
+% This is used as a multiplier for |\baselineskip|. The default is
+% to \emph{not} stretch the baselines.
+% \begin{macrocode}
+\renewcommand{\baselinestretch}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parindent}
+% |\parskip| gives extra vertical space between paragraphs and
+% |\parindent| is the width of the paragraph indentation.
+% (|\parskip| is defined in the \file{.clo} file.)
+% \begin{macrocode}
+\setlength\parindent{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@lowpenalty}
+% \begin{macro}{\@medpenalty}
+% \begin{macro}{\@highpenalty}%
+% The commands |\nopagebreak| and |\nolinebreak| put in penalties
+% to discourage these breaks at the point they are put in.
+% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
+% dependent on their argument.
+% \begin{macrocode}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\clubpenalty}
+% \begin{macro}{\widowpenalty}
+% These penalties are used to discourage club and widow lines.
+% The default values are 150 each, but we want stronger discouragement.
+% \begin{macrocode}
+\clubpenalty 1000
+\widowpenalty 1000
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\displaywidowpenalty}
+% \begin{macro}{\predisplaypenalty}
+% \begin{macro}{\postdisplaypenalty}
+% Discourage, but do not prevent, widows in front of a math display
+% and forbid breaking directly in front of a display. Allow break
+% after a display without a penalty. The default values are
+% used, therefore we only show them here.
+% \begin{macrocode}
+% \displaywidowpenalty 50
+% \predisplaypenalty 10000
+% \postdisplaypenalty 0
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\interlinepenalty}
+% Allow the breaking of a page in the middle of a paragraph.
+% \begin{macrocode}
+% \interlinepenalty 0
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\brokenpenalty}
+% We allow the breaking of a page after a hyphenated line.
+% \begin{macrocode}
+% \brokenpenalty 100
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \subsection{Page Layout}
+%
+% All margin dimensions are measured from a point one inch from the
+% top and lefthand side of the page.
+%
+% The ISO layout on A4 paper (297 by 210 mm) is 25mm sidemargins
+% (make that 25.4mm for simplicity)
+% 12mm above and below the header and footer, at least one blank line
+% between the typeblock and headers/footers. This leads to
+% |\...sidemargin = 0|, and |\textwidth = 159.2mm = 160mm| for convenience,
+% and |\topmargin = -13.5mm|.
+%
+% Make |\headheight|,
+% |\headskip| and footheight each be 12pt, then |\footskip = 24pt|.
+% The total height of the typeblock is then 256mm; subtracting the
+% |\topskip| (say 12pt = 4mm) gives |\textheight = 252mm|.
+% \changes{v2.3}{2001/07/06}{Reconfigured the page layout}
+%
+% \subsubsection{Vertical spacing}
+%
+% \begin{macro}{\headheight}
+% \begin{macro}{\headsep}
+% \begin{macro}{\topskip}
+% The |\headheight| is the height of the box that will contain the
+% running head. The |\headsep| is the distance between the bottom
+% of the running head and the top of the text. The |\topskip| is the
+% |\baselineskip| for the first line on a page;
+% \LaTeX's output routine will not work properly if it has the
+% value 0pt, so do not do that!
+% \begin{macrocode}
+\setlength\headheight{12\p@}
+\setlength\headsep{12\p@}
+%</iso>
+%<9pt>\setlength\topskip{12\p@}
+%<10pt>\setlength\topskip{12\p@}
+%<11pt>\setlength\topskip{12\p@}
+%<*iso>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footskip}
+% The distance from the baseline of the box which contains the
+% running footer to the baseline of last line of text is controlled
+% by the |\footskip|.
+% \begin{macrocode}
+\setlength\footskip{24\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxdepth}
+% \begin{macro}{\@maxdepth}
+% The \TeX\ primitive register |\maxdepth| has a function that is
+% similar to that of |\topskip|. The register |\@maxdepth| should
+% always contain a copy of |\maxdepth|. In both plain \TeX\ and
+% \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
+% native \LaTeX 2e mode we let the value depend on the typesize. We
+% set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
+% 1.5$. As it happens, in these classes |\topskip| is equal to the
+% typesize, therefor we set |\maxdepth| to half the value of
+% |\topskip|.
+% \begin{macrocode}
+\setlength\maxdepth{.5\topskip}
+\setlength\@maxdepth\maxdepth
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{The dimension of text}
+%
+% \begin{macro}{\textwidth}
+% \begin{macro}{\textheight}
+% \begin{macro}{\columnsep}
+% The width and height of the text which are fixed in this class.
+% Also, the gutter width when in two column mode.
+%
+% \begin{macrocode}
+\setlength\textwidth{160mm}
+%%%\setlength\textheight{221.5mm}
+\setlength\textheight{252mm}
+\setlength\columnsep{10mm}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \subsubsection{Margins}
+%
+% \begin{macro}{\topmargin}
+% \begin{macro}{\oddsidemargin}
+% \begin{macro}{\evensidemargin}
+% \begin{macro}{\marginparwidth}
+% \begin{macro}{\marginparsep}
+% \begin{macro}{\marginparpush}
+% The margins are fixed in this class.
+% \begin{macrocode}
+%%%\setlength\topmargin{0mm}
+\setlength\topmargin{-13.5mm}
+\setlength\oddsidemargin{0mm}
+\setlength\evensidemargin{0mm}
+\setlength\marginparwidth{0pt}
+\setlength\marginparsep{0pt}
+\setlength\marginparpush{3mm}
+% \end{macrocode}
+% However, some of the options can change these values. The \Lopt{draft}
+% option allows marginal notes.
+% \begin{macrocode}
+\ifdr@ftd@c
+ \setlength\marginparwidth{20mm}
+ \setlength\marginparsep{0.5mm}
+\fi
+% \end{macrocode}
+% The \Lopt{letterpaper} (279 by 216 mm) option rearranges the text block on the page,
+% trying to center it horizontally.
+% \begin{macrocode}
+\if@us
+%%% \setlength\topmargin{-9.4mm}
+%%% \setlength\oddsidemargin{1.55mm}
+%%% \setlength\evensidemargin{1.55mm}
+ \addtolength{\topmargin}{-9mm}
+ \setlength\oddsidemargin{2mm}
+ \setlength\evensidemargin{2mm}
+ \typeout{ }
+ \typeout{*********************************************************}
+ \typeout{* Warning: You have used the letterpage option. *********}
+ \typeout{* This will not be acceptable as ISO camera ready copy. *}
+ \typeout{*********************************************************}
+ \typeout{ }
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \subsubsection{Footnotes}
+%
+% \begin{macro}{\footnotesep}
+% |\footnotesep| is the height of the strut placed at the beginning
+% of every footnote.
+% \begin{macrocode}
+\setlength\footnotesep{12\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footins}
+% |\skip\footins| is the space between the last line of the main
+% text and the top of the first footnote.
+% \begin{macrocode}
+\setlength{\skip\footins}{6\p@ \@plus 2\p@ \@minus 2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Float placement parameters}
+%
+% All float parameters are given default values in the \LaTeX 2e
+% kernel. For this reason counters only need to be set with
+% |\setcounter| and other parameters are set using |\renewcommand|.
+%
+% \paragraph{Limits for the placement of floating objects}
+%
+% \begin{macro}{\c@topnumber}
+% The \Lcount{topnumber} counter holds the maximum number of
+% floats that can appear on the top of a text page (classically 2)
+% \begin{macrocode}
+\setcounter{topnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\topfraction}
+% This indicates the maximum part of a text page that can be
+% occupied by floats at the top (classically 0.7).
+% \begin{macrocode}
+\renewcommand{\topfraction}{.8}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@bottomnumber}
+% The \Lcount{bottomnumber} counter holds the maximum number of
+% floats that can appear on the bottom of a text page (classically 1).
+% \begin{macrocode}
+\setcounter{bottomnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bottomfraction}
+% This indicates the maximum part of a text page that can be
+% occupied by floats at the bottom (classically 0.3).
+% \begin{macrocode}
+\renewcommand{\bottomfraction}{.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@totalnumber}
+% This indicates the maximum number of floats that can appear on
+% any text page (classically 3).
+% \begin{macrocode}
+\setcounter{totalnumber}{4}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfraction}
+% This indicates the minimum part of a text page that has to be
+% occupied by text (classically 0.2).
+% \begin{macrocode}
+\renewcommand{\textfraction}{.1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatpagefraction}
+% This indicates the minimum part of a page that has to be
+% occupied by floating objects before a `float page' is
+% produced (classically 0.5).
+% \begin{macrocode}
+\renewcommand{\floatpagefraction}{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@dbltopnumber}
+% The \Lcount{dbltopnumber} counter holds the maximum number of
+% two column floats that can appear on the top of a two column text
+% page (classically 2).
+% \begin{macrocode}
+\setcounter{dbltopnumber}{2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbltopfraction}
+% This indicates the maximum part of a two column text page that
+% can be occupied by two column floats at the top (classically 0.7).
+% \begin{macrocode}
+\renewcommand{\dbltopfraction}{.8}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatpagefraction}
+% This indicates the minimum part of a page that has to be
+% occupied by two column wide floating objects before a `float
+% page' is produced (classically 0.5).
+% \begin{macrocode}
+\renewcommand{\dblfloatpagefraction}{.7}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Floats on a text page}
+%
+% \begin{macro}{\floatsep}
+% \begin{macro}{\textfloatsep}
+% \begin{macro}{\intextsep}
+% When a floating object is placed on a page with text, these
+% parameters control the separation between the float and the other
+% objects on the page. These parameters are used for both
+% one-column mode and single-column floats in two-column mode.
+%
+% |\floatsep| is the space between adjacent floats that are moved
+% to the top or bottom of the text page.
+%
+% |\textfloatsep| is the space between the main text and floats
+% at the top or bottom of the page.
+%
+% |\intextsep| is the space between in-text floats and the text.
+% \begin{macrocode}
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dblfloatsep}
+% \begin{macro}{\dbltextfloatsep}
+% When floating objects that span the whole |\textwidth| are placed
+% on a text page and \LaTeX{} is in twocolumn mode the separation
+% between the float and the text is controlled by |\dblfloatsep|
+% and |\dbltextfloatsep|.
+%
+% |\dblfloatsep| is the space between adjacent floats that are moved
+% to the top or bottom of the text page.
+%
+% |\dbltextfloatsep| is the space between the main text and floats
+% at the top or bottom of the page.
+%
+% \begin{macrocode}
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{Floats on their own page or column}
+%
+% \begin{macro}{\@fptop}
+% \begin{macro}{\@fpsep}
+% \begin{macro}{\@fpbot}
+% When floating objects are placed on separate pages the layout of
+% such pages is controlled by these parameters. At the top of the
+% page |\@fptop| amount of stretchable whitespace is inserted, at
+% the bottom of the page we get an |\@fpbot| amount of stretchable
+% whitespace. Between adjacent floats the |\@fpsep| is inserted.
+%
+% These parameters are used for the placement of floating objects
+% in one column mode, or in single column floats in two column
+% mode.
+%
+% Note that at least one of the two parameters |\@fptop| and
+% |\@fpbot| should contain a |plus ...fil| to allow filling the
+% remaining empty space.
+% \begin{macrocode}
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dblfptop}
+% \begin{macro}{\@dblfpsep}
+% \begin{macro}{\@dblfpbot}
+% Double column floats in two column mode are handled with similar
+% parameters.
+% \begin{macrocode}
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Page Styles}
+%
+% The page style \pstyle{foo} is defined by defining the command
+% |\ps@foo|. This command should make only local definitions.
+% There should be no stray spaces in the definition, since they
+% could lead to mysterious extra spaces in the output.
+%
+% \begin{macro}{\@evenhead}
+% \begin{macro}{\@oddhead}
+% \begin{macro}{\@evenfoot}
+% \begin{macro}{\@oddfoot}
+% The |\ps@...| command defines the macros |\@oddhead|,
+% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
+% heads and feet---e.g., |\@oddhead| is the macro to produce the
+% contents of the heading box for odd-numbered pages. It is called
+% inside an |\hbox| of width |\textwidth|.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Marking conventions}
+%
+% To make headings determined by the sectioning commands, the page
+% style defines the commands |\chaptermark|, |\sectionmark|,
+% \ldots,\\
+% where |\chaptermark{|\meta{TEXT}|}| is called by
+% |\chapter| to set a mark, and so on.
+%
+% The |\...mark| commands and the |\...head| macros are defined
+% with the help of the following macros. (All the |\...mark|
+% commands should be initialized to no-ops.)
+%
+% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
+% of marks, a `left' and a `right' mark, using the following
+% commands:
+% \begin{flushleft}
+% |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks.
+%
+% |\markright{|\meta{RIGHT}|}|: Adds a `right' mark.
+%
+% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
+% or |\@evenfoot| macros, it gets the current `left'
+% mark. |\leftmark| works like \TeX's |\botmark|
+% command.
+%
+% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
+% or |\@evenfoot| macros, it gets the current
+% `right' mark. |\rightmark| works like \TeX's
+% |\firstmark| command.
+% \end{flushleft}
+%
+% The marking commands work reasonably well for right marks
+% `numbered within' left marks--e.g., the left mark is changed by a
+% |\chapter| command and the right mark is changed by a |\section|
+% command. However, it does produce somewhat anomalous results if
+% two |\markboth|'s occur on the same page.
+%
+%
+% Commands like |\tableofcontents| that should set the marks in some
+% page styles use a |\@mkboth| command, which is |\let| by the
+% pagestyle command (|\ps@...|) to |\markboth| for setting the
+% heading or to |\@gobbletwo| to do nothing.
+%
+%
+% \begin{macrocode}
+ %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish
+% \end{macrocode}
+%
+% \begin{macro}{\standard}
+% \begin{macro}{\yearofedition}
+% \begin{macro}{\languageofedition}
+% These commands are to be used in the document preamble. They
+% are used to specify the identification of the standard,
+% the year of the standard and the language of the standard.
+% For example, for a DIS printed in 1995 in English:
+% \begin{verbatim}
+% \standard{ISO/DIS 10303-321}
+% \yearofedition{1995}
+% \languageofedition{(E)}
+% \end{verbatim}
+% \begin{macro}{\thestandard}
+% \begin{macro}{\thesyear}
+% \begin{macro}{\theslanguage}
+% \begin{macro}{\@runninghead}
+% |\thestandard| and |\thesyear| hold the number and year of the
+% standard being documented. |\theslanguage| holds the ISO
+% identification of the publication language; note that
+% this must include parentheses around the code letter.
+% \begin{macrocode}
+\gdef\thestandard{}
+\gdef\thesyear{}
+\gdef\theslanguage{}
+\def\standard#1{\gdef\thestandard{#1}}
+\def\yearofedition#1{\gdef\thesyear{#1}}
+\def\languageofedition#1{\gdef\theslanguage{#1}}
+% \end{macrocode}
+% |\@runninghead| contains the document identification text for
+% the running head. Its value depends on the \Lopt{otherdoc} option.
+% \begin{macrocode}
+\ifotherdoc
+% \end{macrocode}
+% This is not intended to be a standard, so just use |\thestandard| text.
+% \begin{macrocode}
+ \newcommand{\@runninghead}{\thestandard}
+\else
+% \end{macrocode}
+% It either is, or is intended to become, a standard,
+% `so the year and language are
+% required as well; note the colon.
+% \begin{macrocode}
+ \newcommand{\@runninghead}{\thestandard:\thesyear\theslanguage}
+\fi
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\copyrighthead}
+%
+% |\copyrighthead| contains the text for a copyright mark
+% in a heading.
+% However, it should be blank if the document is not copyrighted.
+% \changes{v2.3}{2001/07/06}{Changed \cs{copyrighthead}}
+% \begin{macrocode}
+\newcommand{\copyrighthead}{\ifc@pyright
+ {\mbox{\copyright \textsc{\copyrightname} \thesyear{} --- All rights reserved}}
+ \else
+ \mbox{}
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\extrahead}
+% |\extrahead| puts its contents into the page header (e.g., a document
+% number). Use it in the preamble as |\renewcommand{\extrahead}{N5496}|.
+% \changes{v2.3}{2001/07/06}{Added \cs{extrahead}}
+% \begin{macrocode}
+\newcommand{\extrahead}{\mbox{}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Defining the page styles}
+%
+% The pagestyles \pstyle{empty} and \pstyle{plain} are defined
+% in \file{latex.dtx}.
+%
+% \begin{macro}{\ps@headings}
+% \pstyle{headings} is the typical pagestyle throughout the document.
+% The header contains the identification of the standard.
+% The footer has the page number at the outer edge and a copyright
+% notice at the inner.
+% \changes{v2.3}{2001/07/06}{The headings pagestyle has been modified}
+% \begin{macrocode}
+\newcommand{\ps@headings}{%
+ \def\@oddhead{\bfseries\extrahead\hfil\@runninghead}%
+ \def\@evenhead{\bfseries\@runninghead\hfil\extrahead}%
+ \def\@oddfoot{\copyrighthead\hfil\thepage}%
+ \def\@evenfoot{\thepage\hfil\copyrighthead}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@startpage}
+% The \pstyle{startpage} page style is similar to \pstyle{headings}
+% but without a copyright notice.
+% \changes{v2.3}{2001/07/06}{The startpage pagestyle modified like headings}
+% \begin{macrocode}
+\newcommand{\ps@startpage}{%
+ \def\@oddhead{\bfseries\extrahead\hfil\@runninghead}%
+ \def\@evenhead{\bfseries\@runninghead\hfil\extrahead}%
+ \def\@oddfoot{\hfil\thepage}%
+ \def\@evenfoot{\thepage\hfil}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@nohead}
+% Pagestyle \pstyle{nohead} has no headers or footers.
+% \begin{macrocode}
+\newcommand{\ps@nohead}{%
+ \def\@oddhead{}%
+ \def\@evenhead{}%
+ \def\@oddfoot{}%
+ \def\@evenfoot{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rectoisotitlehead}
+% \begin{macro}{\versoisotitlehead}
+% \begin{macro}{\ps@isotitlehead}
+%
+% \pstyle{isotitlehead} is a special pagestyle for the title page of
+% a standard. |\rectoisotitlehead| and |\versoisotitlehead|
+% contain the relevent texts.
+% \changes{v2.3}{2002/01/22}{Changed the isotitlehead pagestyle}
+% \begin{macrocode}
+\newcommand{\rectoisotitlehead}{%
+ \fillline\vspace{0.1\baselineskip}\linebreak%
+ {\bfseries \uppercase{\ISname}}
+%% \mbox{\ifc@pyright\space\copyright {\scshape \copyrightname}\else
+%% \space{\scshape (\copyrightname)}\fi}
+ \hfil {\bfseries \@runninghead}%
+ \vspace{-0.5\baselineskip}\linebreak\fillline}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\versoisotitlehead}{%
+ \fillline\vspace{0.1\baselineskip}\linebreak%
+ {\bfseries \@runninghead} \hfil
+ {\bfseries \uppercase{\ISname}}
+%% \mbox{\ifc@pyright\space\copyright {\scshape \copyrightname}\else
+%% \space{\scshape (\copyrightname)}\fi}
+ \vspace{-0.5\baselineskip}\linebreak\fillline}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\ps@isotitlehead{%
+ \def\@oddhead{\parbox{\textwidth}{\protect\rectoisotitlehead}}%
+ \def\@evenhead{\parbox{\textwidth}{\protect\versoisotitlehead}}%
+%% \def\@oddfoot{\hfil\thepage}%
+%% \def\@evenfoot{\thepage\hfil}}
+ \def\@oddfoot{\copyrighthead\hfil\thepage}%
+ \def\@evenfoot{\thepage\hfil\copyrighthead}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \section{Document Markup} \label{sec:docm}
+%
+% \subsection{The title}
+%
+% In this class the |\title| command is somewhat different to that
+% in the standard classes.
+%
+% \begin{macro}{\title}
+% \begin{macro}{\thetitle}
+% \begin{macro}{\introelement}
+% \begin{macro}{\mainelement}
+% \begin{macro}{\compelement}
+% The command |\title{|\meta{intro}|}{|\meta{main}|}{|\meta{comp}|}|
+% produces a macro |\thetitle| which is used when generating the
+% first normative clause.
+%
+% First define a default |\thetitle|.
+% \begin{macrocode}
+\gdef\thetitle{}
+% \end{macrocode}
+% Define the elements to be used in the title.
+% \changes{v2}{1997/11/30}{Tweaked the \cs{title} command}
+% \changes{v2.3}{2001/07/06}{Tweaked the \cs{title} command by adding \cs{par}}
+% \begin{macrocode}
+\newcommand{\introelement}[1]{\if\isoemptystring{#1}\else {#1 ---\newline}\fi}
+\newcommand{\mainelement}[1]{#1}
+\newcommand{\compelement}[1]{\if\isoemptystring{#1}\else { --- \newline #1}\fi}
+% \end{macrocode}
+% The |\title| command starts a new recto page with arabic numbering and
+% initialises the counters. It also uses the |isotitlehead|.
+% \begin{macrocode}
+\renewcommand{\title}[3]{%
+ \cleardoublepage\pagenumbering{arabic}%
+ \setcounter{clause}{0}%
+ \ifotherdoc \else %
+ \protect\thispagestyle{isotitlehead}
+ \fi
+ \gdef\thetitle{{\Tfont \introelement{#1} %
+ \mainelement{#2} %
+ \compelement{#3}\par}}
+ \if@twocolumn
+ \twocolumn[\vspace*{2\baselineskip}\vbox to 35mm{\thetitle}]
+ \else
+ \vspace*{2\baselineskip}\vbox to 35mm{\thetitle}
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{The cover}
+%
+% ISO will produce the cover (pages 1 and 2) for any documents they
+% publish. It can be useful for editors to be able to provide their
+% own, informal, cover sheet.
+%
+% \begin{environment}{cover}
+% The |cover| environment is for typesetting an informal cover sheet.
+% there is no restriction on what can go into it, except that if used it
+% must be the first element in the document and the contents must not
+% exceed a single page.
+% \changes{v2.3}{2001/07/06}{Added the cover environment}
+% \begin{macrocode}
+\newenvironment{cover}{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \setcounter{page}{1} \pagenumbering{roman}
+ \thispagestyle{empty}}{%
+% \end{macrocode}
+% A copyright notice has to go at the foot of the second page.
+% \begin{macrocode}
+%% \clearpage
+ \thispagestyle{startpage}
+ \mbox{}
+ \ifc@pyright\@copyrighttext\fi
+ \newpage
+ \if@restonecol\twocolumn\fi}
+
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Clauses}
+%
+% \subsubsection{Building blocks} The definitions in this part of a
+% class file usually make use of two internal macros, |\@startsection| and
+% |\secdef|. To understand
+% what is going on here, we describe their syntax.
+%
+% The macro |\@startsection| has 6 required arguments, optionally
+% followed by a $*$, an optional argument and a required argument:
+%
+% |\@startsection|\meta{name}\meta{level}\meta{indent}^^A
+% \meta{beforeskip}\meta{afterskip}\meta{style}
+% optional *\\
+% \null\hphantom{\bslash @startsection}^^A
+% |[|\meta{altheading}|]|\meta{heading}
+%
+% It is a generic command to start a section, the arguments have
+% the following meaning:
+%
+% \begin{description}
+% \item[\meta{name}] The name of the user level command, e.g.,
+% `section'.
+% \item[\meta{level}] A number, denoting the depth of the section
+% -- e.g., chapter=1, section = 2, etc. A section number
+% will be printed if and only if \meta{level} $<=$ the value
+% of the \Lcount{secnumdepth} counter.
+% \item[\meta{indent}] The indentation of the heading from the left
+% margin
+% \item[\meta{beforeskip}] The absolute value of this argument
+% gives the skip to leave above the heading. If it is
+% negative, then the paragraph indent of the text following
+% the heading is suppressed.
+% \item[\meta{afterskip}] If positive, this gives the skip to leave
+% below the heading, else it gives the skip to leave to the
+% right of a run-in heading.
+% \item[\meta{style}] Commands to set the style of the heading.
+% \item[$*$] When this is missing the heading is numbered and the
+% corresponding counter is incremented.
+% \item[\meta{altheading}] Gives an alternative heading to use in
+% the table of contents and in the running heads. This should
+% be present when the $*$ form is used.
+% \item[\meta{heading}] The heading of the new section.
+% \end{description}
+% A sectioning command is normally defined to |\@startsection| and
+% its first six arguments.
+%
+% The macro |\secdef| can be used when a sectioning command is
+% defined without using |\@startsection|. It has two arguments:
+%
+% |\secdef|\meta{unstarcmds}\meta{starcmds}
+%
+% \begin{description}
+% \item[\meta{unstarcmds}] Used for the normal form of a
+% sectioning command.
+% \item[\meta{starcmds}] Used for the $*$-form of a
+% sectioning command.
+% \end{description}
+%
+% You can use |\secdef| as follows:
+% \begin{verbatim}
+% \def\chapter { ... \secdef \CMDA \CMDB }
+% \def\CMDA [#1]#2{ ... } % Command to define
+% % \chapter[...]{...}
+% \def\CMDB #1{ ... } % Command to define
+% % \chapter*{...}
+% \end{verbatim}
+%
+% \changes{v2.2}{2000/01/10}{deleted \cs{@prwstartsection} }
+%
+% \subsubsection{Overview}
+%
+% ISO terminology uses `clause' instead of the typical terms for
+% subdivisions in a document, although they do use the term `section'.
+% Accordingly, we have defined new terms for the document sectioning
+% commands. We also use the shorthand `ss' for `subsub', and so on.
+%
+% \begin{center}
+% \begin{tabular}{llc}\hline
+% \LaTeX\ & ISO & level \\ \hline
+% chapter & clause, annex & 1 \\
+% section & sclause & 2 \\
+% subsection & ssclause & 3 \\
+% subsubsection & sssclause & 4 \\
+% paragraph & ssssclause & 5 \\
+% subparagraph & sssssclause & 6 \\ \hline
+% \end{tabular}
+% \end{center}
+%
+% We also provide `annex' commands, which are equivalent to a `clause'
+% command.
+%
+% \subsubsection{Hyperref ToC levels}
+%
+% \begin{macro}{\toclevel@clause}
+% \begin{macro}{\toclevel@sclause}
+% \begin{macro}{\toclevel@ssclause}
+% \begin{macro}{\toclevel@sssclause}
+% \begin{macro}{\toclevel@ssssclause}
+% \begin{macro}{\toclevel@sssssclause}
+% \begin{macro}{\toclevel@annex}
+% \begin{macro}{\toclevel@index}
+% The \Lpack{hyperref} package needs to know ToC entry levels.
+% \changes{v2.4}{2002/07/22}{Added \cs{toclevel@} macros for hyperref}
+% \begin{macrocode}
+\newcommand*{\toclevel@clause}{1}
+\newcommand*{\toclevel@sclause}{2}
+\newcommand*{\toclevel@ssclause}{3}
+\newcommand*{\toclevel@sssclause}{4}
+\newcommand*{\toclevel@ssssclause}{5}
+\newcommand*{\toclevel@sssssclause}{6}
+\newcommand*{\toclevel@annex}{1}
+\newcommand*{\toclevel@index}{1}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Define Counters}
+%
+% \begin{macro}{\c@secnumdepth}
+% The value of the counter \Lcount{secnumdepth} gives the depth of
+% the highest-level sectioning command that is to produce section
+% numbers.
+% \begin{macrocode}
+\setcounter{secnumdepth}{6}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro\\
+% |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\
+% defines\meta{newctr} to be a counter, which is reset to zero when
+% counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
+% already be defined.
+%
+% \begin{macro}{\c@annex}
+% \begin{macro}{\c@clause}
+% \begin{macro}{\c@fibicl@use}
+% These counters are used for the sectioning numbers.
+% Clause and annex are the top level document divisions.
+% \begin{macrocode}
+\newcounter{annex}
+\newcounter{clause}
+\newcounter{fibicl@use}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\c@sclause}
+% \begin{macro}{\c@ssclause}
+% \begin{macro}{\c@sssclause}
+% \begin{macro}{\c@ssssclause}
+% \begin{macro}{\c@sssssclause}
+% The lower level divisions get reset by higher level divisions.
+% \begin{macrocode}
+\newcounter{sclause}[clause]
+\newcounter{ssclause}[sclause]
+\newcounter{sssclause}[ssclause]
+\newcounter{ssssclause}[sssclause]
+\newcounter{sssssclause}[ssssclause]
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\c@yextra}
+% We need an extra counter for the \Lpack{hyperref} package.
+% \changes{v2.4}{2002/07/22}{Added \cs{c@yextra} counter for hyperref}
+% \begin{macrocode}
+\newcounter{yextra}
+
+% \end{macrocode}
+% \end{macro}
+%
+% For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
+% the printed version of counter \Lcount{CTR}. It is defined in
+% terms of the following macros:
+%
+% |\arabic{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as an arabic numeral.
+%
+% |\roman{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as a lowercase roman numeral.
+%
+% |\Roman{|\Lcount{COUNTER}|}| prints the value of
+% \Lcount{COUNTER} as an uppercase roman numeral.
+%
+% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
+% as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
+%
+% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
+% as an uppercase letter: $1 =$~A, $2 =$~B, etc.
+%
+% \begin{macro}{\theannex}
+% \begin{macro}{\theclause}
+% \begin{macro}{\thefibicl@use}
+% The top level division numbers.
+% \begin{macrocode}
+\renewcommand{\theannex}{\Alph{annex}}
+\renewcommand{\theclause}{\arabic{clause}}
+\renewcommand{\thefibicl@use}{\arabic{fibicl@use}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thesclause}
+% \begin{macro}{\thessclause}
+% \begin{macro}{\thesssclause}
+% \begin{macro}{\thessssclause}
+% \begin{macro}{\thesssssclause}
+% The lower level division number representations.
+% \begin{macrocode}
+\renewcommand{\thesclause}{\theclause.\arabic{sclause}}
+\renewcommand{\thessclause}{\thesclause.\arabic{ssclause}}
+\renewcommand{\thesssclause}{\thessclause.\arabic{sssclause}}
+\renewcommand{\thessssclause}{\thesssclause.\arabic{ssssclause}}
+\renewcommand{\thesssssclause}{\thessssclause.\arabic{sssssclause}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\theHannex}
+% \begin{macro}{\theHclause}
+% \begin{macro}{\theHsclause}
+% \begin{macro}{\theHssclause}
+% \begin{macro}{\theHsssclause}
+% \begin{macro}{\theHssssclause}
+% \begin{macro}{\theHsssssclause}
+% For \Lpack{hyperref} we have to specify a similar set of
+% number representations.
+% \changes{v2.4}{2002/07/22}{Added a lot of \cs{theHsclause} like commands}
+% \begin{macrocode}
+\newcommand{\theHannex}{\Alph{annex}}
+\newcommand{\theHclause}{\arabic{clause}}
+\newcommand{\theHsclause}{\theHclause.\arabic{sclause}}
+\newcommand{\theHssclause}{\theHsclause.\arabic{ssclause}}
+\newcommand{\theHsssclause}{\theHssclause.\arabic{sssclause}}
+\newcommand{\theHssssclause}{\theHsssclause.\arabic{ssssclause}}
+\newcommand{\theHsssssclause}{\theHssssclause.\arabic{sssssclause}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Clauses}
+%
+%
+% \begin{macro}{\zerocounters}
+% \changes{v2.2}{2000/01/10}{Added \cs{zerocounters}}
+% At the start of each document division counters like for notes and examples
+% are zeroed.
+% \begin{macrocode}
+\newcommand{\zerocounters}{%
+ \setcounter{note}{0}\setcounter{example}{0}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@hangfrom}
+% Multiline clause headings are flushleft (block paragraph style).
+% \changes{v2.3}{200/07/06}{Changed \cs{@hangfrom} for block para clauses}
+% \begin{macrocode}
+\renewcommand{\@hangfrom}[1]{#1}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\clause}
+% The command to start a new clause.
+% \changes{v2}{1997/11/30}{Use beforecskip and aftercskip for skips around clause headings}
+% \changes{v2.2}{2000/01/10}{To support tex4ht all clausing commands use \cs{@startsection}}
+% \begin{macrocode}
+\newcommand{\clause}{\zerocounters
+ \addtocounter{clause}{1}
+ \typeout{Clause: \theclause}
+ \addtocounter{clause}{-1}
+ \tocskip{\tocentryskip}
+ \@startsection{clause}{1}%
+ {\z@}%
+ {\beforecskip}%
+ {\aftercskip}%
+%% {\raggedright\Cfont\bfseries}}
+ {\raggedright\Cfont}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fibicl@use}
+% \changes{v2.2}{2000/01/10}{To support tex4ht added \cs{fibicl@use}}
+% Document divisions like the Foreword and the Bibliography are
+% effectively unnumbered clauses, but which appear in the ToC. In order
+% to ease support for the \Lpack{tex4ht} package,
+% the |\fibicl@use| command is defined, but should
+% only be used in its starred form.
+% \begin{macrocode}
+\newcommand{\fibicl@use}{%
+ \@startsection{fibicl@use}{1}%
+ {\z@}%
+ {\beforecskip}%
+ {\aftercskip}%
+%% {\raggedright\Cfont\bfseries}}
+ {\raggedright\Cfont}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Lower level headings}
+%
+% These commands all make use of |\@startsection|. They also
+% reinitialize the note and example counters.
+% \begin{macro}{\sclause}
+% \begin{macro}{\ssclause}
+% \begin{macro}{\sssclause}
+% \begin{macro}{\ssssclause}
+% \begin{macro}{\sssssclause}
+% \changes{v2}{1997/11/30}{Use beforescskip and afterscskip, etc, for skips around s...clause headings}
+% \changes{v2}{1997/11/30}{s...clauses reset the example counter}
+% \begin{macrocode}
+\newcommand{\sclause}{\zerocounters
+ \@startsection{sclause}{2}%
+ {\z@}%
+ {\beforescskip}%
+ {\afterscskip}%
+ {\raggedright\SCfont}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\ssclause}{\zerocounters
+ \@startsection{ssclause}{3}%
+ {\z@}%
+ {\beforesscskip}%
+ {\aftersscskip}%
+ {\raggedright\SSCfont}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\sssclause}{\zerocounters
+ \@startsection{sssclause}{4}%
+ {\z@}%
+ {\beforesscskip}%
+ {\aftersscskip}%
+ {\raggedright\SSCfont}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\ssssclause}{\zerocounters
+ \@startsection{ssssclause}{5}%
+ {\z@}%
+ {\beforesscskip}%
+ {\aftersscskip}%
+ {\raggedright\SSCfont}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\sssssclause}{\zerocounters
+ \@startsection{sssssclause}{6}%
+ {\z@}%
+ {\beforesscskip}%
+ {\aftersscskip}%
+ {\raggedright\SSCfont}}
+% \end{macrocode}
+% Preloaded definitions.
+% \begin{macrocode}
+\def\clausemark#1{}
+\def\sclausemark#1{}
+\def\ssclausemark#1{}
+\def\sssclausemark#1{}
+\def\ssssclausemark#1{}
+\def\sssssclausemark#1{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%
+% \subsubsection{Annexes}
+%
+% \begin{macro}{\init@nnex}
+% As an annex command has to do quite a lot, we define the internal
+% |\init@nnex| command as a worker. It has to:
+% \begin{itemize}
+% \item clear the page;
+% \item reset the table and figure counters to zero;
+% \item redefine the |\thefigure| and the |\thetable| to precede them
+% with the annex letter;
+% \item reset the |sclause| counter to zero;
+% \item test for annexes I and O since these are not allowed by ISO.
+% \end{itemize}
+% Use as: |\@annex{|\meta{title}|}{|\meta{typeset body kind}|}{|\meta{typeset toc kind}|}|
+% \changes{v1}{1996/06/19}{Added blank line after `annexes' title in toc.}
+% \changes{v2}{1997/11/30}{Deleted Annex heading in the ToC}
+% \changes{v2}{1997/11/30}{Added annex type to ToC}
+% \changes{v2}{1997/11/30}{Annexes reset the note and example counters}
+% \changes{v2}{1997/12/01}{Replaced \cs{typeout} by \cs{ClassError}}
+% \changes{v2.2}{2000/01/10}{Reimplented annexes to support tex4ht}
+% \changes{v2.4}{2002/07/22}{Changed \cs{init@nnex} for hyperref}
+% \begin{macrocode}
+\newcommand{\init@nnex}{%
+ \clearpage
+% \end{macrocode}
+% Reset the counters and test for illegal annex numbering
+% \begin{macrocode}
+ \setcounter{table}{0}
+ \setcounter{figure}{0}
+ \setcounter{sclause}{0}
+ \zerocounters
+ \refstepcounter{annex}
+ \ifnum 9=\value{annex} \refstepcounter{annex}\fi
+ \ifnum 15=\value{annex} \refstepcounter{annex}\fi
+% \end{macrocode}
+% Reset the numbering scheme, but not just when first called.
+% \begin{macrocode}
+%%% \ifnum 1=\value{annex}
+ \renewcommand{\clause}{%
+ \ClassWarning{iso}{%
+ \protect\clause\space commands are not allowed after starting Annexes}{%
+ Type \space <return> to proceed and I'll ignore your \protect\clause.}}
+ \renewcommand{\thesclause}{\theannex.\arabic{sclause}}
+ \renewcommand{\thetable}{\theannex.\arabic{table}}
+ \renewcommand{\thefigure}{\theannex.\arabic{figure}}
+ \renewcommand{\theHsclause}{\theHannex.\arabic{sclause}}
+ \ifisohyper
+ \renewcommand{\theHtable}{\theHannex.\arabic{table}}
+ \renewcommand{\theHfigure}{\theHannex.\arabic{figure}}
+ \fi
+%%% \fi
+% \end{macrocode}
+% Prevent floats appearing before the title.
+% \begin{macrocode}
+ \global\@topnum\z@
+ \@afterindentfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makepreannexhead}
+% Command to typeset the first part of an annex title. Use as
+% |\makepreannexhead{|\meta{type}|}|.
+% \begin{macrocode}
+\newcommand{\makepreannexhead}[1]{%
+ \begin{center}
+ {{\Cfont \annexname~\theannex}\\\Large #1}
+ \end{center}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makeannexhead}
+% Typeset the title name of an annex.
+% Use as |\makeannexhead{|\meta{title}|}|.
+% \begin{macrocode}
+\newcommand{\makeannexhead}[1]{%
+ \centerline{\Cfont #1}
+ \vskip 0.5\baselineskip
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addannextotoc}
+% Add an annex title to the ToC.
+% Use as |\addannextotoc{|\meta{type}|}{|\meta{title}|}|.
+% \changes{v2.4}{2002/07/22}{Fixed minor problem in \cs{addannextotoc}}
+% \begin{macrocode}
+\newcommand{\addannextotoc}[2]{%
+ \tocskip{\tocentryskip}
+ \addcontentsline{toc}{annex}{\ifnum2>\c@secnumdepth \else
+ \protect\numberline{\annexname~\theannex\space #1}\fi #2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@infannex}
+% \begin{macro}{\infannex}
+% \begin{macro}{\@normannex}
+% \begin{macro}{\normannex}
+% \begin{macro}{\@repannex}
+% \begin{macro}{\repannex}
+% Three kinds of annexes are provided. |\infannex| is an informative
+% annex and |\normannex| is a normative annex. Just to round things
+% out, |\repannex| is neither of these.
+%
+% All the titles are centered, together with the kind of annex.
+%
+% Here are the informative annex commands.
+% \begin{macrocode}
+\newcommand{\@infannex}[1]{%
+ \makepreannexhead{(\informativename)}
+ \makeannexhead{#1}
+ \addannextotoc{(\informativename)}{#1}
+}
+\newcommand{\infannex}[1]{%
+ \init@nnex
+ \@infannex{#1}
+ \typeout{Informative annex: #1}
+}
+% \end{macrocode}
+%
+% Here are the normative annex commands.
+% \begin{macrocode}
+\newcommand{\@normannex}[1]{%
+ \makepreannexhead{(\normativename)}
+ \makeannexhead{#1}
+ \addannextotoc{(\normativename)}{#1}
+}
+\newcommand{\normannex}[1]{%
+ \init@nnex
+ \@normannex{#1}
+ \typeout{Normative annex: #1}
+}
+% \end{macrocode}
+%
+% Here are the other annex commands.
+% \begin{macrocode}
+\newcommand{\@repannex}[1]{%
+ \makepreannexhead{}
+ \makeannexhead{#1}
+ \addannextotoc{}{#1}
+}
+\newcommand{\repannex}[1]{%
+ \init@nnex
+ \@repannex{#1}
+ \typeout{Annex: #1}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Lists}
+%
+% \subsubsection{General List Parameters}
+%
+% The following commands are used to set the default values for the list
+% environment's parameters. See the \LaTeX{} manual for an explanation
+% of the meanings of the parameters. Defaults for the list
+% environment are set as follows. First, |\rightmargin|,
+% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth
+% level list, the command |\@listK| is called, where `K' denotes `i',
+% '`i', ... , `vi'. (I.e., |\@listiii| is called for a third-level
+% list.) By convention, |\@listK| should set |\leftmargin| to
+% |\leftmarginK|.
+%
+% \changes{v2}{1997/11/30}{list labels are flush with left margin}
+% \changes{v2}{1997/11/30}{list text is indented 3 spaces from the label}
+%
+% \begin{macro}{\leftmargin}
+% \begin{macro}{\leftmargini}
+% \begin{macro}{\leftmarginii}
+% \begin{macro}{\leftmarginiii}
+% \begin{macro}{\leftmarginiv}
+% \begin{macro}{\leftmarginv}
+% \begin{macro}{\leftmarginvi}
+% For efficiency, level-one list's values are defined at top level, and
+% |\@listi| is defined to set only |\leftmargin|.
+%
+% \begin{macrocode}
+\setlength{\leftmargini}{2em}
+% \end{macrocode}
+% The value of |\leftmargin| has to be set at this outer level.
+% \begin{macrocode}
+\leftmargin \leftmargini
+% \end{macrocode}
+% For ISO, all lists are indented the same amount.
+% \begin{macrocode}
+\setlength{\leftmarginii}{\leftmargini}
+\setlength{\leftmarginiii}{\leftmargini}
+\setlength{\leftmarginiv}{\leftmargini}
+\setlength{\leftmarginv}{\leftmargini}
+\setlength{\leftmarginvi}{\leftmargini}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\itemindent}
+% Here we set the |\itemindent| which is the extra indentation before
+% a label.
+% \begin{macrocode}
+\setlength{\itemindent}{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\labelsep}
+% \begin{macro}{\labelwidth}
+% |\labelsep| is the distance between the label and the text of an
+% item; |\labelwidth| is the width of the label.
+% \begin{macrocode}
+\setlength{\labelsep}{0.5em}
+\setlength{\labelwidth}{\leftmargini}
+ \addtolength{\labelwidth}{-\labelsep}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\partopsep}
+% When the user leaves a blank line before the environment an extra
+% vertical space of |\partopsep| is inserted, in addition to
+% |\parskip| and |\topsep|.
+% \begin{macrocode}
+%</iso>
+%<*9pt|10pt|11pt>
+\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
+%</9pt|10pt|11pt>
+%<*iso>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@beginparpenalty}
+% \begin{macro}{\@endparpenalty}
+% These penalties are inserted before and after a list or paragraph
+% environment. They are set to a bonus value to encourage page
+% breaking at these points.
+% \begin{macro}{\@itempenalty}
+% This penalty is inserted between list items.
+% \begin{macrocode}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@setitemparams}
+% Lists may be called within other list environments with differing
+% layouts. We use a routine to set the layout for \Lenv{itemize} and
+% \Lenv{enumerate} lists.
+% \changes{v2}{1997/12/02}{Added \cs{@setitemparams} routine}
+% \begin{macrocode}
+%</iso>
+%<*9pt|10pt|11pt>
+\newcommand{\@setitemparams}{%
+ \setlength{\labelsep}{0.5em}
+ \setlength{\labelwidth}{\leftmargini}
+ \addtolength{\labelwidth}{-\labelsep}
+ \setlength{\itemindent}{\z@}
+ \setlength{\parsep}{\baselineskip}
+ \topsep \z@ \@plus1\p@ \@minus1\p@
+ \itemsep \z@ \@plus1\p@ \@minus1\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@listI}
+% \begin{macro}{\@listi}
+% |\@listI| defines top level and |\@listi| values of
+% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
+%
+% \begin{macrocode}
+\def\@listi{\leftmargin\leftmargini
+ %%% \itemindent\labelsep
+ %% \itemindent\z@
+ %% \parsep\baselineskip
+ %% \topsep 0\p@ \@plus1\p@ \@minus1\p@
+ %% \itemsep0\p@ \@plus1\p@ \@minus1\p@}
+ \@setitemparams}
+\let\@listI\@listi
+% \end{macrocode}
+% We have to initialise these parameters.
+% \begin{macrocode}
+\@listi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@listiv}
+% \begin{macro}{\@listv}
+% \begin{macro}{\@listvi}
+% Here are the same macros for the lower level lists.
+% \begin{macrocode}
+\def\@listii {\leftmargin\leftmarginii
+ %%% \itemindent\labelsep}
+ %% \itemindent\z@
+ \@setitemparams
+ }
+\def\@listiii{\leftmargin\leftmarginiii
+ %%% \itemindent\labelsep}
+ %% \itemindent\z@
+ \@setitemparams
+ }
+\def\@listiv {\leftmargin\leftmarginiv
+ %%% \itemindent\labelsep}
+ %% \itemindent\z@
+ \@setitemparams
+ }
+\def\@listv {\leftmargin\leftmarginv
+ %%% \itemindent\labelsep}
+ %% \itemindent\z@
+ \@setitemparams
+ }
+\def\@listvi {\leftmargin\leftmarginvi
+ %%% \itemindent\labelsep}
+ %% \itemindent\z@
+ \@setitemparams
+ }
+%</9pt|10pt|11pt>
+%<*iso>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Enumerate}
+%
+% \changes{v2}{1997/11/30}{Enumeration increased from 3 to 4 levels}
+%
+% ISO only requires two levels of enumeration labelled `a)' and
+% `1)'. We include a third level and fourth labelled `i)' and `A)',
+% just in case.
+% ISO has printed ISO 10303:1994 which includes all three levels
+% defined here.
+% The enumerate environment uses four counters: \Lcount{enumi},
+% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
+% \Lcount{enumN} controls the numbering of the Nth level
+% enumeration.
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+% The counters are already defined in \file{latex.dtx}, but their
+% representation is changed here.
+% \changes{v2.3}{2001/07/06}{4th level enumerate now uses Roman, not Alph}
+% \begin{macrocode}
+\renewcommand{\theenumi}{\alph{enumi}}
+\renewcommand{\theenumii}{\arabic{enumii}}
+\renewcommand{\theenumiii}{\roman{enumiii}}
+\renewcommand{\theenumiv}{\Roman{enumiv}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+% The label for each item is generated by the commands\\
+% |\labelenumi| \ldots\ |\labelenumiv|.
+% \begin{macrocode}
+\newcommand{\labelenumi}{\theenumi)}
+\newcommand{\labelenumii}{\theenumii)}
+\newcommand{\labelenumiii}{\theenumiii)}
+\newcommand{\labelenumiv}{\theenumiv)}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+% The expansion of |\p@enumN||\theenumN| defines the output of a
+% |\ref| command when referencing an item of the Nth level of an
+% enumerated list.
+% \begin{macrocode}
+\renewcommand{\p@enumii}{\theenumi}
+\renewcommand{\p@enumiii}{\p@enumii\theenumii}
+\renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{enumerate}
+% We modify the default |enumerate| environment to make labels
+% flush left in the label box.
+% \begin{macrocode}
+\def\enumerate{%
+ \ifnum \@enumdepth >\thr@@\@toodeep\else
+ \advance\@enumdepth\@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+
+ \expandafter
+ \list
+ \csname label\@enumctr\endcsname
+ {\usecounter\@enumctr\def\makelabel##1{##1\hfill}}%
+ \fi}
+\let\endenumerate =\endlist
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Itemize}
+%
+% \changes{v2}{1997/11/30}{Itemize increased from 3 to 4 levels}
+%
+% ISO only requires one level labelled with either a long dash
+% or a bullet. We provide
+% four levels, three of which have been used in ISO 10303:1994.
+%
+% \begin{macro}{\labelitemi}
+% \begin{macro}{\labelitemii}
+% \begin{macro}{\labelitemiii}
+% \begin{macro}{\labelitemiii}
+% Itemization is controlled by the commands: |\labelitemi|,
+% |\labelitemii|, etc., which define
+% the labels of the various itemization levels: the symbols used are
+% bold em-dash, bullet, asterisk, and centered period.
+%
+% \changes{v2}{1997/11/30}{Itemize dash changed from en- to em-dash}
+% \changes{v2}{1997/11/30}{1st and 2nd level itemize symbols swapped}
+% \changes{v2.1}{1999/02/15}{1st and 2nd level itemize symbols swapped}
+% \changes{v2.3}{2001/07/06}{All itemize labels are em dashes}
+% \begin{macrocode}
+\newcommand{\labelitemi}{{\normalfont\bfseries \textemdash}\hfill}
+%%\newcommand{\labelitemii}{\textbullet\hfill}
+%%\newcommand{\labelitemiii}{\textasteriskcentered}
+%%\newcommand{\labelitemiv}{\textperiodcentered}
+\newcommand{\labelitemii}{\labelitemi}
+\newcommand{\labelitemiii}{\labelitemi}
+\newcommand{\labelitemiv}{\labelitemi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{itemize}
+% We modify the default |itemize| environment to make the labels
+% flush left in the label box.
+% \begin{macrocode}
+\def\itemize{%
+ \ifnum \@itemdepth >\thr@@\@toodeep\else
+ \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+
+ \expandafter
+ \list
+ \csname\@itemitem\endcsname
+ {\def\makelabel##1{##1\hfill}}%
+ \fi}
+\let\enditemize =\endlist
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Description}
+%
+% \begin{environment}{description}
+% The description environment is defined here -- while the default itemize
+% and enumerate environments are defined in \file{latex.dtx}.
+%
+% \begin{macrocode}
+\newenvironment{description}%
+ {\list{}{\labelwidth\z@ \itemindent 0.5em \labelsep 0.5em
+ \let\makelabel\descriptionlabel}}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\descriptionlabel}
+% To change the formatting of the label, you must redefine
+% |\descriptionlabel|. Note that the label includes a colon.
+%
+% \begin{macrocode}
+\newcommand*{\descriptionlabel}[1]{\normalfont\bfseries #1:\hfill}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Defining new environments}
+%
+%
+% \subsubsection{Quotation}
+%
+% This is not required by ISO, but we leave it in anyway.
+% \begin{environment}{quotation}
+% The quotation environment is defined by making clever use of
+% the list environment's parameters. The lines in the environment
+% are set smaller than |\textwidth|. The first line of a paragraph
+% inside this environment is indented.
+%
+% \begin{macrocode}
+\newenvironment{quotation}%
+ {\list{}{\listparindent 1.5em%
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@}%
+ \item[]}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Quote}
+%
+% This is also not an ISO requirement, but leave it in anyway.
+%
+% \begin{environment}{quote}
+% The quote environment is like the quotation environment except
+% that paragraphs are not indented.
+%
+% \begin{macrocode}
+\newenvironment{quote}%
+ {\list{}{\rightmargin\leftmargin}%
+ \item[]}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Theorem}
+%
+% This document class does not define it's own theorem environments,
+% the defaults, supplied by \file{latex.dtx} are available.
+%
+% \subsubsection{Notes}
+%
+% ISO requires that information which is essential to the
+% understanding of a standard but which is not a requirement
+% is to be given in the form of a note. In the Directives edition 2,
+% there were three
+% styles of note:
+% \begin{enumerate}
+% \item isolated notes which are marked NOTE - 1, NOTE - 2, etc.
+% \item a local grouping of notes marked \\
+% NOTES \\
+% 1 - \ldots \\
+% 2 - \ldots
+% \item an isolated note that is not numbered because it is
+% the only one in that (sub-) clause of the document.
+% \end{enumerate}
+%
+% The 3rd edition removed the local grouping.
+%
+% \begin{macro}{\ifinfloat}
+% Special consideration has to be given when notes appear within a float.
+% \changes{v2}{1997/12/02}{Deleted \cs{ifintable} as \cs{ifinfloat} does the job}
+% \begin{macrocode}
+\newif\ifinfloat\infloatfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@note}
+% \begin{macro}{\c@floatnote}
+% \begin{macro}{\thenote}
+% \begin{macro}{\thefloatnote}
+% Define note counters, where the counter \Lcount{note} for body
+% notes gets reset within each new clause and notes
+% within floats have their own numbering scheme
+% via \Lcount{floatnote}.
+% \begin{macrocode}
+\newcounter{note}[clause]
+\renewcommand{\thenote}{\arabic{note}}
+\newcounter{floatnote}
+\renewcommand{\thefloatnote}{\arabic{floatnote}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\theHnote}
+% \begin{macro}{\theHfloatnote}
+% We also need \Lpack{hyperref} representations.
+% \changes{v2.4}{2002/07/22}{Added \cs{theHnote} and \cs{theHfloatnote}}
+% \begin{macrocode}
+\newcommand{\theHnote}{\thenote.\arabic{yextra}}
+\newcommand{\theHfloatnote}{\thefloatnote.\arabic{yextra}}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\notelabel}
+% Labeling of notes (and examples).
+% \begin{macrocode}
+\newcommand{\notelabel}[1]{{#1\hfill}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{notes}
+% This environment produced a fixed heading followed by a
+% numbered list. The environment is defined in terms of a general list.
+%
+% Use as:
+% \begin{verbatim}
+% \begin{notes}
+% \begin{note}Text of first note ... \end{note}
+% \begin{note}Text of second note ... \end{note}
+% \end{notes}
+% \end{verbatim}
+%
+% With the 3rd edition of the ISO Directives, this has been made a no-op
+% and is only retained for compatability. The original code was:
+% \begin{verbatim}
+% \newif\ifinnotes\innotesfalse
+% \newenvironment{notes}{\list{}%
+% {\ifinfloat \leftmargin 0em \else \leftmargin 2em\fi
+% \itemindent 0.5em \labelwidth 0em
+% \labelsep 0.5em \listparindent 0em
+% \let\makelabel\notelabel}
+% \innotestrue
+% \Nfont\item[\notesname]\mbox{}\nopagebreak[2]}%
+% {\innotesfalse\endlist}
+% \end{verbatim}
+%
+% \changes{v2}{1997/11/30}{notes environment made a no-op}
+% \changes{v2.3}{2001/07/06}{Deleted notes environment}
+% \end{environment}
+%
+% \begin{macro}{\@setnoteparams}
+% Because notes, and examples, have the same basic layout we use a
+% routine to set the various parameters.
+% \changes{v2}{1997/12/02}{Added \cs{@setnoteparams}}
+% \changes{v2.3}{2001/07/06}{Notes not indented}
+% \begin{macrocode}
+\newcommand{\@setnoteparams}{%
+ \setlength{\partopsep}{\z@}
+ \setlength{\topsep}{\z@}
+ \setlength{\labelsep}{1em}
+ \setlength{\itemindent}{\labelsep}
+ \setlength{\labelwidth}{\z@}
+ \setlength{\listparindent}{\z@}
+ \setlength{\leftmargin}{\z@} % added in v2.3
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{anote}
+% An isolated un-numbered note.
+% \changes{v2}{1997/11/30}{dash removed from NOTE label}
+% \changes{v2}{1997/12/02}{Adjusted anote margins when in a float}
+% \begin{macrocode}
+\newenvironment{anote}{\list{}{%
+%% \ifinfloat \setlength{\leftmargin}{\z@} \else
+%% \setlength{\leftmargin}{2em} \fi
+ \@setnoteparams}
+ \Nfont\item[\notename]}%
+{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{note}
+% A numbered note.
+% \changes{v2.4}{2002/07/22}{Changed note environment for hyperref}
+% \begin{macrocode}
+\newenvironment{note}{\list{}{%
+% \end{macrocode}
+% Use the appropriate counter: normally \Lcount{note} but
+% \Lcount{floatnote} when in a floating environment.
+% \begin{macrocode}
+ \stepcounter{yextra}
+ \ifinfloat
+ \refstepcounter{floatnote}
+ \let\thenote\thefloatnote
+ \else
+ \refstepcounter{note}
+ \fi
+% \end{macrocode}
+% Originally we adjusted the margins according to whether we were
+% in a notes environment or not.
+% \changes{v2}{1997/11/30}{Deleted the dash after NOTE number}
+% \changes{v2}{1997/12/01}{Deleted \cs{ifinnotes} test from note environment}
+% \changes{v2}{1997/12/02}{Added \cs{ifinfloat} test}
+% \begin{macrocode}
+%% \ifinfloat \setlength{\leftmargin}{\z@} \else
+%% \setlength{\leftmargin}{2em} \fi
+ \@setnoteparams}
+ \Nfont\item[\notename~\thenote]}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Examples}
+%
+% ISO Directives part 3 (2nd edition) had no rules on how to display
+% an example, but it did use examples itself; these examples were
+% displayed in a format similar to notes.
+%
+% We provided two styles of example:
+% \begin{enumerate}
+% \item isolated examples which are marked EXAMPLE - 1, EXAMPLE - 2, etc.
+% \item a local grouping of examples marked \\
+% EXAMPLES \\
+% 1 - \ldots \\
+% 2 - \ldots
+% \end{enumerate}
+%
+% The 3rd edition of the Directives does specify some options for
+% typesetting examples. A single example in a (sub) clause is
+% preceeded by the word `EXAMPLE'. If there are several examples,
+% then each is numbered (e.g., `EXAMPLE 3'). It also states that
+% all lines of an example shall be inset from the margin or set
+% in a smaller font, so that its extent can be determined.
+%
+% For now, we choose both options.
+%
+% Implementation is very similar to that for notes.
+%
+% \begin{macro}{\c@example}
+% \begin{macro}{\theexample}
+% \begin{macro}{\theHexample}
+% Define example counter. Example numbering is only continuous
+% within a (sub) clause (we used to have it continuous throughout
+% the document).
+% \changes{v2}{1997/11/30}{Reset example counter at each clause}
+% \changes{v2.4}{2002/07/22}{Added \cs{theHexample}}
+% \begin{macrocode}
+\newcounter{example}[clause]
+\renewcommand{\theexample}{\arabic{example}}
+\newcommand{\theHexample}{theexample.\arabic{yextra}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{environment}{examples}
+% Originally, this environment produces a fixed heading followed by a
+% numbered list. The environment is defined in terms of a general list.
+%
+% Use as:
+% \begin{verbatim}
+% \begin{examples}
+% \begin{example}Text of first ...\end{example}
+% \begin{example}Text of second ... \end{example}
+% \end{examples}
+% \end{verbatim}
+%
+% \changes{v2}{1997/11/30}{examples environment made into a no-op}
+% With the 3rd edition of the ISO Directives the environment has been
+% made a no-op, but is retained for compatibility.
+% The code used to be:
+% \begin{verbatim}
+% \newif\ifinexamples\inexamplesfalse
+% \newenvironment{examples}{\list{}%
+% {\leftmargin 2em
+% \itemindent 0.5em \labelwidth 0em
+% \labelsep 0.5em \listparindent 0em
+% \let\makelabel\notelabel}
+% \inexamplestrue
+% \Nfont\item[\examplesname]\mbox{}\nopagebreak[2]}%
+% {\inexamplesfalse\endlist}
+% \end{verbatim}
+% \changes{v2.3}{2001/07/06}{Deleted examples environment}
+% \end{environment}
+%
+% \begin{environment}{anexample}
+% An isolated un-numbered example.
+% \changes{v2}{1997/11/30}{Added anexample environment}
+% \begin{macrocode}
+\newenvironment{anexample}{\list{}{%
+%% \ifinfloat \setlength{\leftmargin}{\z@} \else
+%% \setlength{\leftmargin}{2em} \fi
+ \@setnoteparams}
+ \Nfont\item[\examplename]}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{example}
+% Like the |note| environment.
+% \changes{v2}{1997/11/30}{Deleted dash after examples number}
+% \changes{v2}{1997/12/01}{Removed \cs{ifinexamples} test in example environment}
+% \changes{v2}{1997/12/02}{Added \cs{ifinfloat} test}
+% \changes{v2.4}{2002/07/22}{Changed example environment for hyperref}
+% \begin{macrocode}
+\newenvironment{example}{\list{}{%
+ \stepcounter{yextra}
+ \refstepcounter{example}
+%% \ifinfloat \setlength{\leftmargin}{\z@} \else
+%% \setlength{\leftmargin}{2em} \fi
+ \@setnoteparams}
+ \Nfont\item[\examplename~\theexample]}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Listing of references}
+%
+% ISO has three kinds of literature references, broken into two
+% categories. The categories are normative and informative
+% references. Within the normative category, references are
+% to either published or `unpublished' standards (IS or DIS
+% in ISO terminology).
+%
+% \begin{environment}{nreferences}
+%
+% The |nreferences| environment is for listing normative
+% references. It is implemented as a list.
+%
+% \begin{macro}{\nreferencelabel}
+% Labelling of normative references.
+% \begin{macrocode}
+\newcommand{\nreferencelabel}[1]{#1,\hfill}
+% \end{macrocode}
+% \end{macro}
+% Define the environment. It is used as:
+% \begin{verbatim}
+% \begin{nreferences}
+% \isref{id}{published standard title}
+% \disref{id}{unpublished standard title}
+% ....
+% \end{nreferences}
+% \end{verbatim}
+% \begin{macrocode}
+\newenvironment{nreferences}{\list{}%
+ {\leftmargin 0pt \itemindent 0.5em
+ \labelwidth\z@ \labelsep 0.5em
+ \let\makelabel\nreferencelabel}}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\isref}
+% This is a two parameter command for printing a normative reference to
+% a published standard.
+% \begin{macrocode}
+\newcommand{\isref}[2]{\item[#1]{\itshape #2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\disref}
+% This is a two parameter command for printing a normative reference to
+% an unpublished standard. ISO requires that each unpublished standard
+% should be footnoted as `unpublished'. Awkwardly, only one footnote
+% is permitted. This means we have to fiddle with the footnote counter.
+% \changes{v2.2}{2000/01/10}{Simplified definition of \cs{disref}}
+% \begin{macro}{\ifd@is}
+% A flag to denote if there have been any previous disrefs.
+% \begin{macrocode}
+\newif\ifd@is\d@isfalse
+% \end{macrocode}
+% \end{macro}
+% Now define the |\disref| command.
+% \begin{macrocode}
+\newcommand{\disref}[2]{\begingroup
+ \ifd@is
+% \end{macrocode}
+% This is not the first call to |\disref|, so just footnotemark the entry
+% \begin{macrocode}
+ {\item[#1\protect\@footnotemark]{\itshape #2}}
+ \else
+% \end{macrocode}
+% This is the first call, so we have to make the footnote
+% \begin{macrocode}
+ \addtocounter{footnote}{1}
+ \xdef\@thefnmark{\thefootnote}
+ \item[#1\protect\@footnotemark]{\itshape #2}%
+ \footnotetext[\value{footnote}]{\tbpname}
+ \d@istrue
+ \fi
+ \endgroup\d@istrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{references}
+%
+% The |references| environment is for listing informative
+% references. It is implemented as a list.
+%
+% \begin{macro}{\c@infrefctr}
+% \begin{macro}{\p@infrefctr}
+% \begin{macro}{\theinfrefctr}
+% \begin{macro}{\labelinfref}
+% Informative references are labelled with a number enclosed in
+% square brackets.
+%
+% In the body of the text, a reference to an informatively
+% listed document |n| has to be printed as |[n]|. Use the
+% standard \LaTeX\ |\label| command and the|\bref| command for this.
+% \begin{macrocode}
+\newcounter{infrefctr}
+\renewcommand{\p@infrefctr}{}
+\renewcommand{\theinfrefctr}{\arabic{infrefctr}}
+\newcommand{\labelinfref}{[\arabic{infrefctr}]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Define the environment. It is used as:
+% \begin{verbatim}
+% \begin{references}
+% \reference{authors}{title}{publisher and date}
+% ....
+% \end{references}
+% \end{verbatim}
+% \begin{macrocode}
+\newenvironment{references}{\list{\labelinfref}{\usecounter{infrefctr}
+ \leftmargin 0pt \itemindent 0.5em
+ \labelwidth\z@ \labelsep 0.5em}}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\reference}
+% This is a three parameter command for printing an informatively
+% listed reference document. \\
+% |\reference{|\meta{authors}|}{|\meta{title}|}{|\meta{publisher and date}|}|
+% \begin{macrocode}
+\newcommand{\reference}[3]{\item {#1} {{\itshape #2}} {#3}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Listing of definitions}
+%
+% One element of an ISO standard is the listing of definitions
+% of terms.
+%
+% \begin{environment}{olddefinitions}
+% The |olddefinitions| environment is for listing terms which
+% have been defined in some other standard. It is defined
+% in terms of the |itemize| environment.
+% \begin{macrocode}
+\newenvironment{olddefinitions}%
+ {\begin{itemize}}%
+ {\end{itemize}}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\olddefinition}
+% Within an |olddefinitions| environment each term is specified by
+% the \\
+% |\olddefinition{|\meta{phrase}|}{|\meta{supplement}|}|
+% command.
+% \begin{macrocode}
+\newcommand{\olddefinition}[2]{\item #1 #2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{definitions}
+% Terms being defined within the current document are listed within
+% the |definitions| environment. ISO requires that each definition
+% be sequentially numbered within the clause in which it is defined.
+% This numbering is as though the definition formed a sub-clause.
+% \changes{v11}{1997/09/30}{Reimplemented definitions as clauses}
+% \changes{v2}{1997/11/30}{Reimplemented definitions}
+% \begin{macro}{\c@cl@level}
+% A counter for determing the current sectioning level.
+% \begin{macrocode}
+\newcounter{cl@level}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@defcl}
+% We use this internally for the |\definition| command. A default
+% definition is suplied here as we are going to renew it, possibly
+% several times.
+% \begin{macrocode}
+\newcommand{\@defcl}[1]{}
+% \end{macrocode}
+% \end{macro}
+% Now we define the |definitions| environment.
+% \begin{macrocode}
+\newenvironment{definitions}{%
+% \end{macrocode}
+% First, set the \Lcount{cl@level} according to the sectioning
+% level within which the environment is called.
+% \begin{macrocode}
+ \setcounter{cl@level}{6}
+ \ifnum\value{sssssclause}=0 \setcounter{cl@level}{5} \fi
+ \ifnum\value{ssssclause}=0 \setcounter{cl@level}{4} \fi
+ \ifnum\value{sssclause}=0 \setcounter{cl@level}{3} \fi
+ \ifnum\value{ssclause}=0 \setcounter{cl@level}{2} \fi
+ \ifnum\value{sclause}=0 \setcounter{cl@level}{1} \fi
+ \ifnum\value{clause}=0 \setcounter{cl@level}{0} \fi
+% \end{macrocode}
+% Now redefine an appropriate (s)clause definition to get a number
+% on one line, followed by the heading on the next line
+% with a bold normal font. A new paragraph is not started after
+% the heading, and there is no entry in the ToC.
+% As this is done within the
+% group automatically set up be the environment, any original definitions
+% will get restored afterwards.
+% \begin{macrocode}
+ \ifcase\value{cl@level} % 0, NOT YET IN A CLAUSE
+ \ClassWarning{iso}{Definitions started before the initial clause}
+ \renewcommand{\@defcl}[1]{\setcounter{note}{0}\setcounter{example}{0}
+ \par
+ \addvspace{\beforecskip}
+ \@afterindentfalse
+ \refstepcounter{clause}
+ {\raggedright\bfseries \theclause\\ ##1\\}}
+% \end{macrocode}
+% Do similar things for the other cases.
+% \begin{macrocode}
+ \or % 1, called in a clause
+ \renewcommand{\@defcl}[1]{\setcounter{note}{0}\setcounter{example}{0}
+ \par
+ \addvspace{\beforescskip}
+ \@afterindentfalse
+ \refstepcounter{sclause}
+ {\raggedright\bfseries \thesclause\\ ##1\\}}
+ \or % 2, called in an sclause
+ \renewcommand{\@defcl}[1]{\setcounter{note}{0}\setcounter{example}{0}
+ \par
+ \addvspace{\beforesscskip}
+ \@afterindentfalse
+ \refstepcounter{ssclause}
+ {\raggedright\bfseries \thessclause\\ ##1\\}}
+ \or % 3, called in an ssclause
+ \renewcommand{\@defcl}[1]{\setcounter{note}{0}\setcounter{example}{0}
+ \par
+ \addvspace{\beforesscskip}
+ \@afterindentfalse
+ \refstepcounter{sssclause}
+ {\raggedright\bfseries \thesssclause\\ ##1\\}}
+ \or % 4, called in an sssclause
+ \renewcommand{\@defcl}[1]{\setcounter{note}{0}\setcounter{example}{0}
+ \par
+ \addvspace{\beforesscskip}
+ \@afterindentfalse
+ \refstepcounter{ssssclause}
+ {\raggedright\bfseries \thessssclause\\ ##1\\}}
+ \or % 5, called in an ssssclause
+ \renewcommand{\@defcl}[1]{\setcounter{note}{0}\setcounter{example}{0}
+ \par
+ \addvspace{\beforesscskip}
+ \@afterindentfalse
+ \refstepcounter{sssssclause}
+ {\raggedright\bfseries \thesssssclause\\ ##1\\}}
+ \else % 5+, called in an sssssclause or lower
+ \ClassWarning{iso}{Definitions too deeply nested}
+ \renewcommand{\@defcl}[1]{
+ \par
+ \addvspace{\beforesscskip}
+ \@afterindentfalse
+ \refstepcounter{sssssclause}
+ {\raggedright\bfseries \thesssssclause\\ ##1\\}}
+ \fi}%
+ {}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\definition}
+% Within a |definitions| environment the command
+% |\definition{|\meta{phrase}|}{|\meta{definition text}|}|
+% is used to specify and define each term. It uses the sectional heading
+% definition stored in |\@defcl| set up by the environment.
+% \begin{macrocode}
+\newcommand{\definition}[2]{\@defcl{#1} #2}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Listing of symbols and abbreviations}
+%
+% Another possible element in a standard is the listing of symbols
+% and abbreviations. This is similar to the original |definitions|
+% listing, except that terms are not treated as clauses.
+%
+% \begin{environment}{symbols}
+% \begin{macro}{\symbollabel}
+% \begin{macrocode}
+\newcommand{\symbollabel}[1]{{#1 \hfill}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newenvironment{symbols}{\list{}%
+ {\itemindent 0em \leftmargin 8em
+ \labelsep 1em \labelwidth 5em
+ \let\makelabel\symbollabel}}%
+ {\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\symboldef}
+% Within a |symbols| environment the command
+% |\symboldef{|\meta{symbol}|}{|\meta{meaning}|}|
+% is used to specify and explain each symbol or abbreviation.
+% \begin{macrocode}
+\newcommand{\symboldef}[2]{\item[#1] #2}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Listing of scope items}
+%
+% Another possible element in a standard is the listing of
+% items that are within the scope; conversely, listing
+% of items that are out of scope may also be useful.
+%
+% \begin{environment}{inscope}
+% \begin{environment}{outofscope}
+% We define synonyms for the |itemize| list environment, and
+% initiate the lists with some boilerplate. Use as, for example:
+% \begin{verbatim}
+% \begin{inscope}{international standard}
+% \item ...
+% \item ...
+% \end{inscope}
+% \end{verbatim}
+% \begin{macrocode}
+\newenvironment{inscope}[1]{%
+ \inscopename #1:
+ \begin{itemize}}%
+ {\end{itemize}}
+\newenvironment{outofscope}[1]{%
+ \outofscopename #1:
+ \begin{itemize}}%
+ {\end{itemize}}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+%
+% \subsection{Setting parameters for existing environments}
+%
+% \subsubsection{Array and tabular}
+%
+% \begin{macro}{\arraycolsep}
+% The columns in an array environment are separated by
+% 2|\arraycolsep|.
+% \begin{macrocode}
+\setlength\arraycolsep{4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabcolsep}
+% The columns in an tabular environment are separated by
+% 2|\tabcolsep|.
+% \begin{macrocode}
+\setlength\tabcolsep{4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arrayrulewidth}
+% The width of rules in the array and tabular environments is given
+% by\\ |\arrayrulewidth|.
+% \begin{macrocode}
+\setlength\arrayrulewidth{.4\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doublerulesep}
+% The space between adjacent rules in the array and tabular
+% environments is given by |\doublerulesep|.
+% \begin{macrocode}
+\setlength\doublerulesep{2\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Tabbing}
+%
+% \begin{macro}{\tabbingsep}
+% This controls the space that the |\'| command puts in. (See
+% \LaTeX{} manual for an explanation.)
+% \begin{macrocode}
+\setlength\tabbingsep{\labelsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Minipage}
+%
+% \begin{macro}{\@minipagerestore}
+% The macro |\@minipagerestore| is called upon entry to a minipage
+% environment to set up things that are to be handled differently
+% inside a minipage environment. In the current styles, it does
+% nothing.
+% \end{macro}
+%
+% \begin{macro}{\@mpfootins}
+% Minipages have their own footnotes; |\skip||\@mpfootins| plays
+% same r\^ole for footnotes in a minipage as |\skip||\footins| does
+% for ordinary footnotes.
+%
+% \begin{macrocode}
+\skip\@mpfootins = \skip\footins
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Framed boxes}
+%
+% \begin{macro}{\fboxsep}
+% The space left by |\fbox| and |\framebox| between the box and the
+% text in it.
+% \begin{macro}{\fboxrule}
+% The width of the rules in the box made by |\fbox| and |\framebox|.
+% \begin{macrocode}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Equation and eqnarray}
+%
+% |equation| and |eqnarray| counters are not required by ISO, and
+% the equations are to be left-justified. The default is for the
+% left-hand side of equations to be flushleft.
+
+% \begin{macro}{\theequation}
+% The equation counter will be reset at beginning of a new chapter
+% and the equation number will be prefixed by the chapter number.
+%
+% This code must follow the |\chapter| definition, or more exactly
+% the definition of the chapter counter.
+% \begin{macrocode}
+\renewcommand{\theequation}{\arabic{equation}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jot}
+% |\jot| is the extra space added between lines of an eqnarray
+% environment. The default value is used.
+% \begin{macrocode}
+% \setlength\jot{3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnnum}
+% The macro |\@eqnnum| defines how equation numbers are to appear in
+% equations. Again the default is used.
+%
+% \begin{macrocode}
+% \def\@eqnnum{(\theequation)}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Floating objects}
+%
+% The file \file{latex.dtx} only defines a number of tools with
+% which floating objects can be defined. This is done in the
+% document class. It needs to define the following macros for each
+% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
+% figure).
+%
+% \begin{description}
+% \item[\texttt{\bslash fps@TYPE}]
+% The default placement specifier for floats of type
+% \texttt{TYPE}.
+%
+% \item[\texttt{\bslash ftype@TYPE}]
+% The type number for floats of type \texttt{TYPE}. Each
+% \texttt{TYPE} has associated a unique positive \texttt
+% {TYPE} number, which is a power of two. E.g., figures might
+% have type number 1, tables type number 2, programs type
+% number 4, etc.
+%
+% \item[\texttt{\bslash ext@TYPE}]
+% The file extension indicating the file on which the contents
+% list for float type \texttt{TYPE} is stored. For example,
+% |\ext@figure| = `lof'.
+%
+% \item[\texttt{\bslash fnum@TYPE}]
+% A macro to generate the figure number for a caption. For
+% example, |\fnum@TYPE| == `Figure |\thefigure|'.
+%
+% \item[\texttt{\bslash @makecaption}{\meta{num}}{\meta{text}}]
+% A macro to make a caption, with \meta{num} the value produced
+% by |\fnum@...| and \meta{text} the text of the caption. It
+% can assume it's in a |\parbox| of the appropriate width.
+% This will be used for \emph{all} floating objects.
+%
+% \end{description}
+%
+% The actual environment that implements a floating object such as
+% a figure is defined using the macros |\@float| and |\end@float|,
+% which are defined in \file{latex.dtx}.
+%
+% An environment that implements a single column floating object is
+% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
+% \texttt{TYPE} with \meta{placement} as the placement specifier.
+% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
+%
+% The environment is ended by |\end@float|. E.g., |\figure| ==
+% |\@float|{figure}, |\endfigure| == |\end@float|.
+%
+% \subsubsection{Figure}
+%
+% Here is the implementation of the figure environment.
+%
+% \begin{macro}{\c@figure}
+% First we have to allocate a counter to number the figures. In this
+% class figures are numbered sequentially.
+% \begin{macrocode}
+\newcounter{figure}
+\renewcommand{\thefigure}{\@arabic\c@figure}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fps@figure}
+% \begin{macro}{\ftype@figure}
+% \begin{macro}{\ext@figure}
+% \begin{macro}{\fnum@figure}
+% Here are the parameters for the floating objects of type `figure'.
+% \begin{macrocode}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\iffigs}
+% We define a flag to tell whether the document contains any figures.
+% Elsewhere a flag, |\ifinfloat|, is defined to tell if we are in a float.
+% \begin{macrocode}
+\newif\iffigs\figsfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@initisofig}
+% At the start of a |figure| environment we have to set a flag and do
+% some work to deal with the ISO requirements
+% for the ToC, and also zero the floatnote counter.
+% \changes{v2.2}{2000/01/10}{Added \cs{@initisofig} command}
+% \begin{macrocode}
+\newcommand{\@initisofig}{%
+ \iffigs\else\figstrue
+ \if@filesw \immediate\write\@mainaux{%
+ \string\gdef\string\setfigs{%
+ \string\floatlist{\listfigurename}{lof}}}
+ \fi
+ \fi
+% \end{macrocode}
+% Now deal with the possibility that the float may contain notes.
+% \begin{macrocode}
+ \infloattrue\setcounter{floatnote}{0}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{figure}
+% \begin{environment}{figure*}
+% This is the definition of the actual environment. The form with the
+% |*| is used for double column figures.
+% \begin{macrocode}
+\newenvironment{figure}{%
+ \@initisofig
+ \@float{figure}}%
+% \end{macrocode}
+% At the end of the environment we are no longer in a float.
+% \begin{macrocode}
+ {\end@float\infloatfalse}
+% \end{macrocode}
+% The starred version is similar.
+% \begin{macrocode}
+\newenvironment{figure*}{%
+ \@initisofig
+ \@dblfloat{figure}}%
+ {\end@dblfloat\infloatfalse}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{Table}
+%
+% Here is the implementation of the table environment. It is very
+% much the same as the figure environment, the additional complication
+% being that we have to flag that we are in a table, as well as
+% being in a float.
+%
+% \begin{macro}{\c@table}
+% First we have to allocate a counter to number the tables. In this
+% class tables are numbered sequentially.
+% \begin{macrocode}
+\newcounter{table}
+\renewcommand{\thetable}{\@arabic\c@table}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fps@table}
+% \begin{macro}{\ftype@table}
+% \begin{macro}{\ext@table}
+% \begin{macro}{\fnum@table}
+% Here are the parameters for the floating objects of type `table'.
+% \begin{macrocode}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\iftabs}
+% We define a flag to tell whether the document contains any tables.
+% Elsewhere a flag, |\ifinfloat|, is defined to tell if we are in a float.
+% \begin{macrocode}
+\newif\iftabs\tabsfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@initisotab}
+% Initial code at the start of a |table| environment.
+% \changes{v2.2}{2000/01/10}{Added \cs{@initisotab} command}
+% \begin{macrocode}
+\newcommand{\@initisotab}{%
+ \iftabs\else\tabstrue
+ \if@filesw \immediate\write\@mainaux{%
+ \string\gdef\string\settabs{%
+ \string\floatlist{\listtablename}{lot}}}
+ \fi
+ \fi
+ \infloattrue\setcounter{floatnote}{0}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{table}
+% \begin{environment}{table*}
+% This is the definition of the actual environment. The form with the
+% |*| is used for double column tables.
+% \begin{macrocode}
+\newenvironment{table}{%
+ \@initisotab
+ \@float{table}}%
+ {\end@float\infloatfalse}
+% \end{macrocode}
+% The starred version is similar.
+% \begin{macrocode}
+\newenvironment{table*}{%
+ \@initisotab
+ \@dblfloat{table}}%
+ {\end@dblfloat\infloatfalse}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{A bottom float}
+%
+% We define an additional float environment. Unless something
+% additional is done, this will not be listed in the table
+% of contents.
+%
+% \begin{macro}{\c@bottomfloat}
+% \begin{macro}{\thebottomfloat}
+% First we have to allocate a counter to number the float.
+% \begin{macrocode}
+\newcounter{bottomfloat}
+\renewcommand{\thebottomfloat}{\@arabic\c@bottomfloat}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fps@bottomfloat}
+% \begin{macro}{\ftype@bottomfloat}
+% \begin{macro}{\ext@bottomfloat}
+% \begin{macro}{\fnum@bottomfloat}
+% Here are the parameters for the floating objects of type `bottomfloat'.
+% \begin{macrocode}
+\def\fps@bottomfloat{b}
+\def\ftype@bottomfloat{4}
+\def\ext@bottomfloat{lbf}
+\def\fnum@bottomfloat{\thebottomfloat}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{bottomfloat}
+% \begin{environment}{bottomfloat*}
+% This is the definition of the actual environment. The form with the
+% |*| is used for double column floats.
+% \begin{macrocode}
+\newenvironment{bottomfloat}%
+ {\@float{bottomfloat}}%
+ {\end@float}
+\newenvironment{bottomfloat*}%
+ {\@dblfloat{bottomfloat}}%
+ {\end@dblfloat}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+%
+% \subsubsection{Captions}
+%
+% \begin{macro}{\@makecaption}
+% The |\caption| command calls |\@makecaption| to format the
+% caption of floating objects. It gets two arguments,
+% \meta{number}, the number of the floating object and \meta{text},
+% the text of the caption. Usually \meta{number} contains a string
+% such as `Figure 3.2'. The macro can assume it is called inside a
+% |\parbox| of right width, with |\normalsize|.
+%
+% \begin{macro}{\abovecaptionskip}
+% \begin{macro}{\belowcaptionskip}
+% These lengths contain the amount of white space to leave above
+% and below the caption.
+% \begin{macrocode}
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{10\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The definition of this macro is |\long| in order to allow more
+% then one paragraph in a caption.
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+% \end{macrocode}
+% We want to see if the caption fits on one line on the page,
+% therefore we first typeset it in a temporary box.
+% \begin{macrocode}
+ \sbox\@tempboxa{{\captionsize\bfseries #1 -- #2}}%
+% \end{macrocode}
+% We can the measure its width. It that is larger than the current
+% |\hsize| we typeset the caption as a centered paragraph.
+% \begin{macrocode}
+ \ifdim \wd\@tempboxa >\hsize
+ {\centering {\captionsize\bfseries #1 -- #2}\par}
+% \end{macrocode}
+% If the caption fits, we center it. Because this uses an |\hbox|
+% directly in vertical mode, it does not execute the |\everypar|
+% tokens; the only thing that could be needed here is resetting the
+% `minipage flag' so we do this explicitly.
+% \begin{macrocode}
+ \else
+ \global \@minipagefalse
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\contcaption}
+% The |\contcaption| command can be used to put a `continuation'
+% caption into a float. It neither increments the float number
+% nor makes any entry in the toc listings.
+%
+% It is called as
+% |\contcaption{|\meta{continued/concluded}|}{|\meta{optional text}|}|
+% \begin{macrocode}
+\newcommand{\contcaption}{\@contcaption\@captype}
+% \end{macrocode}
+% \begin{macro}{\@contcaption}
+% This does the work for us.
+% \begin{macrocode}
+\long\def\@contcaption#1#2{%
+ \begingroup
+ \@parboxrestore
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #2}\par
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Font changing}
+%
+% Here we supply the declarative font changing commands that were
+% common in \LaTeX\ version 2.09 and earlier. These commands work
+% in text mode \emph{and} in math mode. They are provided for
+% compatibility, but one should start using the |\text...| and
+% |\math...| commands instead. These commands are defined using
+% |\DeclareTextFontCommand|, a command with three arguments: the
+% user command to be defined; \LaTeX\ commands to execute in text
+% mode and \LaTeX\ commands to execute in math mode.
+%
+% \begin{macro}{\rm}
+% \begin{macro}{\tt}
+% \begin{macro}{\sf}
+%
+% The commands to change the family. When in compatibility mode we
+% select the `default' font first, to get \LaTeX2.09 behviour.
+% \begin{macrocode}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bf}
+% The command to change to the bold series. One should use
+% |\mdseries| to explicitly switch back to medium series.
+% \begin{macrocode}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sl}
+% \begin{macro}{\it}
+% \begin{macro}{\sc}
+%
+% And the commands to change the shape of the font. The slanted and
+% small caps shapes are not available by default as math alphabets,
+% so those changes do nothing in math mode. However, we do warn the
+% user that the selection will not have any effect.One should use
+% |\upshape| to explicitly change back to the upright shape.
+% \begin{macrocode}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cal}
+% \begin{macro}{\mit}
+%
+% The commands |\cal| and |\mit| should only be used in math mode,
+% outside math mode they have no effect. Currently the New Font
+% Selection Scheme defines these commands to generate warning
+% messages. Therefore we have to define them `by hand'.
+% \begin{macrocode}
+\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
+\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Urls, etc}
+%
+% \changes{v2.1}{1999/02/15}{Added the isourl command}
+% ISO uses its own format for typesetting urls. This is implemented here
+% via the \file{url} package.
+% \begin{macro}{\url}
+% \begin{macro}{\isourl}
+% The |\url{|\meta{text}|}| command is provided by the \file{url} package.
+% It may be used for typesetting email addresses. The
+% |\isourl{|\meta{text}|}| command typesets \meta{text} in the format
+% required by ISO for an url; that is, the address is underlined and enclosed
+% within (not-underlined) angle brackets.
+%
+% NOTE: The underlining prohibits linebreaking in the url. I also tried
+% the \file{ulem} package's |\uline| command, but this also prevented any
+% linebreaking, so we might as well stick to the \TeX{} |\underline|.
+% \changes{v2.3}{2002/01/10}{Removed underline from \cs{isourl}}
+% \begin{macrocode}
+%%\newcommand{\isourl}[1]{\texttt{<}\underline{\url{#1}}\texttt{>}}
+\newcommand{\isourl}[1]{\texttt{<}\url{#1}\texttt{>}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \section{Cross Referencing} \label{sec:xref}
+%
+% \subsection{Label referencing}
+%
+% \begin{macro}{\aref}
+% \begin{macro}{\bref}
+% \begin{macro}{\cref}
+% \begin{macro}{\eref}
+% \begin{macro}{\fref}
+% \begin{macro}{\nref}
+% \begin{macro}{\tref}
+% \begin{macro}{\pref}
+% Named references to labeled elements. |\bref{|\meta{label id}|}| is
+% a reference to a labeled informative bibliographic element (similar
+% to the standard \LaTeX\ |\cite| command. The others are to named
+% elements of the document.
+% \changes{v2.3}{2001/07/06}{Added \cs{pref}}
+% \begin{macrocode}
+\newcommand{\aref}[1]{\annexrefname~\ref{#1}}
+\newcommand{\bref}[1]{[\ref{#1}]}
+\newcommand{\cref}[1]{\clauserefname~\ref{#1}}
+\newcommand{\eref}[1]{\examplerefname~\ref{#1}}
+\newcommand{\fref}[1]{\figurerefname~\ref{#1}}
+\newcommand{\nref}[1]{\noterefname~\ref{#1}}
+\newcommand{\tref}[1]{\tablerefname~\ref{#1}}
+\newcommand{\pref}[1]{\pagerefname~\pageref{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Table of Contents, etc.}
+%
+% A |\section| command writes a
+% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
+% on the \file{.toc} file, where \meta{title} contains the
+% contents of the entry and \meta{page} is the page number. If
+% sections are being numbered, then \meta{title} will be of the
+% form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
+% \meta{num} is the number produced by |\thesection|. Other
+% sectioning commands work similarly.
+%
+% A |\caption| command in a `figure' environment writes
+%
+% |\contentsline{figure}{\numberline{|\meta{num}|}{|%
+% \meta{caption}|}}{|\meta{page}|}|
+%
+% on the .\file{lof} file, where \meta{num} is the number produced
+% by |\thefigure| and \meta{caption} is the figure caption. It
+% works similarly for a `table' environment.
+%
+% The command |\contentsline{|\meta{name}|}| expands to
+% |\l@|\meta{name}. So, to specify the table of contents, we must
+% define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
+% specify the list of figures, we must define |\l@figure|; and so
+% on. Most of these can be defined with the |\@dottedtocline|
+% command, which works as follows.
+%
+% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
+% \meta{numwidth}|}{|^^A
+% \meta{title}|}{|\meta{page}|}|
+%
+% \begin{description}
+% \item[\meta{level}] An entry is produced only if\meta{ level}
+% $<=$ value of the \Lcount{tocdepth} counter. Note,
+% |\chapter| is level 0, |\section| is level 1, etc.
+% \item[\meta{indent}] The indentation from the outer left margin
+% of the start of the contents line.
+% \item[\meta{numwidth}] The width of a box in which the section
+% number is to go, if \meta{title} includes a |\numberline|
+% command.
+% \end{description}
+%
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% \begin{macro}{\@dotsep}
+% This command uses the following three parameters, which are set
+% with a |\newcommand| (so em's can be used to make them depend upon
+% the font).
+% \begin{description}
+% \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
+% page number is put.
+% \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
+% line entries. One wants |\@tocrmarg| $\ge$ |\@pnumwidth|
+% \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
+% units. Should be defined as a number like 2 or 1.7
+% \end{description}
+%
+% \begin{macrocode}
+\newcommand{\@pnumwidth}{1.55em}
+\newcommand{\@tocrmarg} {2.55em}
+\newcommand{\@dotsep}{4.5}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tocentryskip}
+% \begin{macro}{\tocbaseline}
+% \begin{macro}{\tocskip}
+% We define two lengths and a utility command.
+% \begin{macrocode}
+\newlength{\tocentryskip} \setlength{\tocentryskip}{1em}
+\newlength{\tocbaseline} \setlength{\tocbaseline}{20pt}
+\newcommand{\tocskip}[1]{%
+ \addtocontents{toc}{\protect\vspace{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Table of Contents}
+%
+% \begin{macro}{\tableofcontents}
+% This macro is used to request that \LaTeX{} produces a table of
+% contents. In this class the tables of
+% contents, figures etc. are always set in single-column style.
+%
+% \changes{v1}{1995/05/31}{Added `page' above page numbers in
+% table of contents.}
+% \changes{v2.3}{2001/07/06}{copyright at foot of page ii, not ToC}
+% \begin{macrocode}
+\newcommand{\tableofcontents}{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+% \end{macrocode}
+% If the document is copyrighted, then the copyright notice is
+% placed at the foot of page ii.
+% \begin{macrocode}
+%%% \setcounter{page}{2}
+%%% \thispagestyle{startpage}
+%%% \mbox{}
+%%% \ifc@pyright\@copyrighttext\fi
+% \end{macrocode}
+% Set the title for the toc, which must start on page (iii) of the
+% document. The actual table of contents is made by calling
+% |\@starttoc{toc}|.
+% \begin{macrocode}
+%%% \cleardoublepage
+ \setcounter{page}{3}
+ \pagestyle{headings}
+ \hbox to \textwidth{{\Cfont \contentsname}\hfil\pagename}
+% \end{macrocode}
+% Add a locator for a bookmark.
+% \changes{v2.4}{2002/07/22}{Added bookmark to \cs{tableofcontents}}
+% \begin{macrocode}
+ \ifisohyper
+ \pdfbookmark[1]{\contentsname}{isotoc}%
+ \fi
+ \begingroup
+ \parskip\z@
+ \@starttoc{toc}
+ \endgroup
+% \end{macrocode}
+% Finish by restoring two column mode if necessary.
+% \begin{macrocode}
+ \if@restonecol\twocolumn\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% \end{macrocode}
+%
+% Each sectioning command needs an additional macro to format its
+% entry in the table of contents, as described above. In this class
+% the formatting depends on whether or not the |sect| option
+% is used.
+% \begin{macro}{\l@clause}
+% \begin{macro}{\l@sclause}
+% \begin{macro}{\l@ssclause}
+% \begin{macro}{\l@sssclause}
+% \begin{macro}{\l@ssssclause}
+% \begin{macro}{\l@sssssclause}
+% \begin{macro}{\l@annex}
+% First the default specifications.
+% \begin{macrocode}
+\newcommand{\l@clause}{\@dottedtocline{1}{0em}{2.3em}}
+\newcommand{\l@sclause}{\@dottedtocline{2}{1.5em}{3.2em}}
+\newcommand{\l@ssclause}{\@dottedtocline{3}{3em}{4.1em}}
+\newcommand{\l@sssclause}{\@dottedtocline{4}{4.5em}{5em}}
+\newcommand{\l@ssssclause}{\@dottedtocline{5}{6em}{5.9em}}
+\newcommand{\l@sssssclause}{\@dottedtocline{6}{7.5em}{6.8em}}
+\newcommand{\l@annex}{\@dottedtocline{1}{0em}{11.0em}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% In this class lists of floats are made to appear as though they
+% were an integral part of the table of contents. Further, headings
+% are only printed if there is at least one float of the given kind
+% in the body of the document.
+%
+% \begin{macro}{\floatlist}
+% For print a heading for a list of floats.
+% \changes{v2}{1997/12/04}{Doubled beforeskip in ToC}
+% \changes{v2}{1997/12/04}{Added \cs{nopagebreak} after heading text}
+% \begin{macrocode}
+\newcommand{\floatlist}[2]{%
+ \vspace{2\tocentryskip}
+ \hbox to \textwidth{\bfseries #1\hfil}
+ \vspace*{\tocentryskip}
+ \nopagebreak
+ \begingroup
+ \parskip\z@
+ \@starttoc{#2}
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{List of figures}
+%
+%
+% \begin{macro}{\iffigs}
+% A flag for figure floats.
+% \begin{macrocode}
+\newif\iffigs\figsfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listoffigures}
+% This macro is used to request that \LaTeX{} produces a list of
+% figures.
+%
+% \begin{macrocode}
+\newcommand{\listoffigures}{%
+ \ifx\undefined\setfigs\else\setfigs\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\loftnumberline}
+% Used to add a dash after a figure/table number in the listing.
+% \changes{v2.3}{2001/07/06}{Added \cs{loftnumberline}}
+% \begin{macrocode}
+\newcommand{\loftnumberline}[1]{#1 --- }
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+% This macro produces an entry in the list of figures.
+% Note that \verb*?Figure M.999 ? is 6.15em.
+% \changes{v11}{1997/11/24}{Increased ToC figure number space from 2.3em to 3.0em (caters for M.999)}
+% \changes{v2.3}{2001/07/06}{Increased ToC fignum space to 7.5em to cater for name}
+% \begin{macrocode}
+\newcommand{\l@figure}{\@dottedtocline{1}{0em}{7.5em}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand{\l@figure}[2]{%
+ \vskip \z@ \@plus.2\p@
+ {%
+ \leftskip 0em
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent 0em\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima 3.15em
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\let\numberline\loftnumberline \normalfont\figurename{} #1}\nobreak
+ \loftfillnum{#2}}
+}
+
+\newcommand{\loftfillnum}[1]{\normalfont%
+ {\leaders\hbox{$\m@th\mkern 4.5mu\hbox{.}\mkern 4.5mu$}\hfill}\nobreak
+ \hb@xt@\@pnumwidth{\hfil #1}\par}
+
+
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{List of tables}
+%
+% \begin{macro}{\iftabs}
+% A flag for table floats.
+% \begin{macrocode}
+\newif\iftabs\tabsfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listoftables}
+% This macro is used to request that \LaTeX{} produces a list of
+% tables. It is very similar to |\listoffigures|. Note that
+% \verb*?Table M.999 ? is 5.75em.
+%
+% \begin{macrocode}
+\newcommand{\listoftables}{%
+ \ifx\undefined\settabs\else\settabs\fi}
+% \end{macrocode}
+%
+% \begin{macro}{\l@table}
+% This macro produces an entry in the list of tables.
+% \changes{v2.3}{2001/07/06}{Defined \cs{l@table} as a macro}
+% \begin{macrocode}
+\newcommand{\l@table}{\@dottedtocline{1}{0em}{6.5em}}
+
+\renewcommand{\l@table}[2]{%
+ \vskip \z@ \@plus.2\p@
+ {%
+ \leftskip 0em
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent 0em\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima 2.75em
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {\let\numberline\loftnumberline \normalfont\tablename{} #1}\nobreak
+ \loftfillnum{#2}}
+}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@caption}
+% This is a reimplementation of the kernel |\@caption| macro (ltfloat.dtx)
+% to cater for the peculiarity of putting the float name before the number in
+% the List of\ldots
+% \changes{v2.3}{2001/07/06}{Redefined the \cs{@caption} kernel macro}
+% \begin{macrocode}
+\long\def\@isocaption#1[#2]#3{%
+ \par
+ \addcontentsline{\csname ext@#1\endcsname}{#1}%
+ {\protect\numberline{{\@nameuse{#1name}} {\@nameuse{the#1}} --- }%
+ {\ignorespaces #2}}%
+ \begingroup
+ \@parboxrestore
+ \if@minipage
+ \@setminipage
+ \fi
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{ToC and clause numbering}
+%
+% Commands are provided, based on the \Lpack{tocvsec2} package, for changing
+% the section numbering level and the ToC entry level.
+% \changes{v2.2}{2000/01/10}{Added tocvsec2-like commands}
+%
+% \begin{macro}{\if@knownclause}
+% \begin{macro}{\@setclcnt}
+% Helper macro to set a sectioning-related counter. Use as
+% |\@setclcnt{|\meta{sec}|}{|\meta{counter}|}| to set \Lcount{counter}
+% to the level of \meta{sec}.
+% \begin{macrocode}
+\newif\if@knownclause
+\newcommand{\@setclcnt}[2]{
+ \@knownclausefalse
+ \if\isostringsequal{#1}{none}
+ \setcounter{#2}{-10}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{clause}
+ \setcounter{#2}{1}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{sclause}
+ \setcounter{#2}{2}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{ssclause}
+ \setcounter{#2}{3}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{sssclause}
+ \setcounter{#2}{4}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{ssssclause}
+ \setcounter{#2}{5}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{sssssclause}
+ \setcounter{#2}{6}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{all}
+ \setcounter{#2}{50}
+ \@knownclausetrue
+ \fi
+ \if@knownclause\else
+ \ClassError{isov2}{%
+ Unknown clause command name (#1)
+ }{%
+ I'll ignore it. Type \space <return> and I'll continue.\MessageBreak
+ If you haven't mistyped the name then use \protect\setcounter\space instead.}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\settocdepth}
+% |\settocdepth{|\meta{sec}|}| is the user command for setting
+% \Lcount{tocdepth} in the \file{.toc} file to the value corresponding to
+% \meta{sec}. It can only be used after the preamble.
+% \begin{macrocode}
+\newcommand{\settocdepth}[1]{%
+ \@knownclausefalse
+ \if\isostringsequal{#1}{none}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{-10}}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{clause}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{sclause}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{2}}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{ssclause}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{3}}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{sssclause}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{4}}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{ssssclause}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{5}}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{sssssclause}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{6}}
+ \@knownclausetrue
+ \fi
+ \if\isostringsequal{#1}{all}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{50}}
+ \@knownclausetrue
+ \fi
+ \if@knownclause\else
+ \ClassError{isov2}{%
+ Unknown clause command name (#1)
+ }{%
+ I'll ignore it. Type \space <return> and I'll continue.}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxtocdepth}
+% |\maxtocdepth{|\meta{sec}|}| can be used to initialise \Lcount{tocdepth}
+% to the value corresponding to \meta{sec}. This can only be used
+% between the end of the preamble and the |\tableofcontents| command.
+% \begin{macrocode}
+\newcommand{\maxtocdepth}[1]{%
+ \@setclcnt{#1}{tocdepth}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setsecnumdepth}
+% |\setsecnumdepth{|\meta{sec}|}| is the user command for setting
+% \Lcount{secnumdepth} to the value for \meta{sec}. It can only be used after
+% the preamble.
+% \begin{macrocode}
+\newcommand{\setsecnumdepth}[1]{\leavevmode%
+ \@setclcnt{#1}{secnumdepth}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxsecnumdepth}
+% |\maxsecnumdepth{|\meta{sec}|}| can be used to initialise
+% \Lcount{secnumdepth}
+% after the preamble to the value corresponding to \meta{sec}.
+% \begin{macrocode}
+\newcommand{\maxsecnumdepth}[1]{%
+ \@setclcnt{#1}{secnumdepth}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{Bibliography}
+%
+% This class does not implement a bibliography. The |references|
+% environment is defined instead.
+%
+% \subsection{The index}
+%
+% \begin{environment}{theindex}
+% \changes{v2.2}{2000/01/10}{Reconfigured theindex to use \cs{fibicl@use}}
+% The environment `theindex' can be used for indices. It makes an
+% index with one column, with each entry a separate paragraph. At
+% the user level the commands |\item|, |\subitem| and |\subsubitem|
+% are used to produce index entries of various levels. When a new
+% letter of the alphabet is encountered an amount of |\indexspace|
+% white space can be added.
+%
+% ISO requires that an index, if present, must be the last element
+% in the document.
+%
+%
+% \begin{macrocode}
+\newenvironment{theindex}%
+ {\clearpage
+ \typeout{Index}%
+ \refstepcounter{clause}%
+ \tocskip{\tocentryskip}%
+ \addcontentsline{toc}{index}{\indexname}%
+ \columnseprule \z@
+ \onecolumn{\fibicl@use*{\indexname}}
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}%
+ {\clearpage}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\l@index}
+% Format the index entry in the table of contents.
+% \begin{macrocode}
+\newcommand{\l@index}{\@dottedtocline{1}{0em}{0pt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@idxitem}
+% \begin{macro}{\subitem}
+% \begin{macro}{\subsubitem}
+% Thsee macros are used to format the entries in the index.
+% \begin{macrocode}
+\newcommand{\@idxitem} {\par\hangindent 40\p@}
+\newcommand{\subitem} {\par\hangindent 40\p@ \hspace*{20\p@}}
+\newcommand{\subsubitem}{\par\hangindent 40\p@ \hspace*{30\p@}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indexspace}
+% The amount of white space that is inserted between `letter
+% blocks' in the index.
+% \begin{macrocode}
+\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% The program GenIndex, written for processing ISO documents,
+% takes an \file{.idx} file and converts it to a |theindex| format.
+% The following are the formatting commands output by GenIndex.
+%
+% \begin{macro}{\indexfill}
+% \begin{macro}{\sindexfill}
+% \begin{macro}{\ssindexfill}
+% Thse define the format of leaders between the (sub-) topic and
+% the page number. ISO requires a dotted line between each index
+% entry and the page number.
+% \begin{macrocode}
+\newcommand{\indexfill}{\dotfill}
+\newcommand{\sindexfill}{\dotfill}
+\newcommand{\ssindexfill}{\dotfill}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indexsee}
+% \begin{macro}{\indexseealso}
+% These format entries of type `see \ldots' and `see also \ldots'.
+% \begin{macrocode}
+\newcommand{\indexsee}[1]{\par \hspace*{2em} \emph{see} #1}
+\newcommand{\indexseealso}[1]{\par \hspace*{2em} \emph{see also} #1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\alphaindexspace}
+% \begin{macro}{\otherindexspace}
+% These format the space between each alphabetic block of entries,
+% and correspondingly for entries that begin with an analpahbetic
+% character. ISO requires no additional spacing.
+%
+% These commands take one parameter, intended to be the
+% (letter) heading for the next block of entries. For example,
+% we could have defined:
+% \begin{verbatim}
+% \newcommand{\alphaindexspace}[1]{\indexspace
+% {\bfseries #1}}
+% \end{verbatim}
+% for printing a vertical space and a bold heading.
+% \begin{macrocode}
+\newcommand{\alphaindexspace}[1]{}
+\newcommand{\otherindexspace}[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% For good measure we provide a style file for users of the
+% {\sc makeindex} program.
+%
+% \begin{macrocode}
+%</iso>
+%<*ist>
+ %%%%iso.ist Makeindex style file for ISO documents
+group_skip "\n\n" % no vertical space between blocks
+headings_flag 0 % make sure headings are turned off
+delim_0 " \\dotfill " % dot leaders between entry and page numbers
+delim_1 " \\dotfill "
+delim_2 " \\dotfill "
+
+%</ist>
+%<*iso>
+% \end{macrocode}
+%
+% \subsection{Footnotes}
+%
+% \begin{macro}{\footnoterule}
+% Usually, footnotes are separated from the main body of the text
+% by a small rule. This rule is drawn by the macro |\footnoterule|.
+% We have to make sure that the rule takes no vertical space (see
+% \file{plain.tex}) so we compensate for the natural heigth of the
+% rule of 0.4pt by adding the right amount of vertical skip.
+%
+% To prevent the rule from colliding with the footnote we first add
+% a little negative vertical skip, then we put the rule and make
+% sure we end up at the same point where we begun this operation.
+% \begin{macrocode}
+\renewcommand{\footnoterule}{%
+ \kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+% Footnotes are numbered sequentially throughout the document.
+% ISO requires footnotes to be a superscripted arabic numeral
+% with a right parenthesis. The counter is predefined.
+% \begin{macrocode}
+% \newcounter{footnote}
+\renewcommand{\thefootnote}{\arabic{footnote})}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
+% to produce the actual footnote. The macro gets the text of the
+% footnote as its argument and should use |\@thefnmark| as the mark
+% of the footnote. The macro |\@makefntext|is called when
+% effectively inside a |\parbox| of width |\columnwidth| (i.e.,
+% with |\hsize| = |\columnwidth|).
+%
+% An example of what can be achieved is given by the following piece
+% of \TeX\ code.
+% \begin{verbatim}
+% \long\def\@makefntext#1{%
+% \@setpar{\@@par
+% \@tempdima = \hsize
+% \advance\@tempdima-10pt
+% \parshape \@ne 10pt \@tempdima}%
+% \par
+% \parindent 1em\noindent
+% \hbox to \z@{\hss\@makefnmark}#1}
+% \end{verbatim}
+% The effect of this definition is that all lines of the footnote
+% are indented by 10pt, while the first line of a new paragraph is
+% indented by 1em. To change these dimensions, just substitute the
+% desired value for `10pt' (in both places) or `1em'. The mark is
+% flushright against the footnote.
+%
+% In this document class we use a simpler macro, in which the
+% footnote text is set like an ordinary text paragraph, with no
+% indentation except on the first line of a paragraph, and the
+% first line of the footnote. Thus, all the macro must do is set
+% |\parindent| to the appropriate value for succeeding paragraphs
+% and put the proper indentation before the mark.
+%
+%
+% \begin{macrocode}
+\long\def\@makefntext#1{%
+ \parindent 1em%
+ \noindent
+ \hbox to 1.8em{\hss\@makefnmark}#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefnmark}
+% The footnote markers that are printed in the text to point to the
+% footnotes should be produced by the macro |\@makefnmark|. We use
+% the default definition for it.
+% \begin{macrocode}
+%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Version control tools} \label{sec:vct}
+%
+% When preparing an international standard the document goes through
+% several iterations. In particular it may change due to international
+% ballot comments. The commands provided may be used to identify
+% changes made to a document during its life cycle.
+%
+% \subsection{Print control}
+%
+% Members of the development group often need to see the changes
+% between document versions, while the general public does not.
+% \begin{macro}{\ifchangemarks}
+% This controls the appearence of the version controls defined
+% below.
+% \begin{macrocode}
+\newif\ifchangemarks\changemarksfalse
+% \end{macrocode}
+% The version controls only work properly when the |draft| option
+% is in effect. Also, the command |\changemarkstrue| must be
+% put in the document preamble.
+% \end{macro}
+%
+% \begin{macro}{\v@rid}
+% This acts as an alias for |\marginpar| when both |changemarks| is
+% true and the |draft| option is in effect, otherwise it throws
+% away its two arguments.
+% \begin{macrocode}
+\newcommand{\v@rid}[2]{%
+ \ifchangemarks
+ \ifdr@ftd@c
+ \marginpar[#1]{#2}%
+ \fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Change marking}
+%
+% The following commands flag changes in the typeset document. Each of
+% the commands takes one parameter which is intended to be a
+% `change number' for tracking purposes. Some also take a text
+% parameter which is the changed text.
+%
+% \begin{macro}{\editorial}
+% |\editorial{|\meta{change id}|}|
+% Places the \meta{change id} in the document to indicate an editorial
+% change.
+% \begin{macrocode}
+\newcommand{\editorial}[1]{%
+ \@bsphack
+ \ifchangemarks
+ \v@rid{\small\hfill$^{#1}$ED}%
+ {\small ED$^{#1}$\hfill}%
+ \fi\@esphack}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\added}
+% |\added{|\meta{text}|}{|\meta{change id}|}|
+% Flags the additional \meta{text} with the \meta{change id}.
+% \begin{macrocode}
+\long\def\added#1#2{%
+ \@bsphack
+ \ifchangemarks
+ \v@rid{\small\hfill$^{#2}\Rightarrow$}%
+ {\small $\Leftarrow^{#2}$\hfill}%
+ \emph{#1}%
+ \else
+ #1
+ \fi\@esphack}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\deleted}
+% |\deleted{|\meta{change id}|}|
+% Places the \meta{change id} in the document to indicate that
+% some text has been deleted.
+% \begin{macrocode}
+\newcommand{\deleted}[1]{%
+ \@bsphack
+ \ifchangemarks
+ \v@rid{\small\hfill$^{#1}\Leftarrow$}%
+ {\small $\Rightarrow^{#1}$\hfill}%
+ \fi\@esphack}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\moved}
+% |\moved{|\meta{text}|}{|\meta{change id}|}|
+% Flags the moved \meta{text} with the \meta{change id}.
+% \begin{macrocode}
+\long\def\moved#1#2{%
+ \@bsphack
+ \ifchangemarks
+ \v@rid{\small\hfill$^{#2}\Leftrightarrow$}%
+ {\small $\Leftrightarrow^{#2}$\hfill}%
+ \emph{#1}%
+ \else
+ #1
+ \fi\@esphack}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Structure and boilerplate} \label{sec:bp}
+%
+% ISO standard documents have certain required elements and boilerplate.
+%
+% \subsection{Structural elements}
+%
+% \begin{environment}{foreword}
+% The |foreword| environment initializes the front matter for a standard
+% and starts an unnumbered foreword clause. To ensure that the
+% front matter is set in single column we use an environment.
+% \changes{v2}{1997/12/04}{Added Foreword to ToC}
+% \changes{v2.1}{1999/02/15}{Deleted Foreword from ToC}
+% \changes{v2.2}{2000/01/10}{Reconfigured Foreword to use \cs{fibicl@use}}
+% \changes{v2.4}{2002/07/22}{Added bookmark to the foreword}
+% \begin{macrocode}
+\newenvironment{foreword}%
+ {\tableofcontents
+ \listoffigures
+ \listoftables
+ \clearpage
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \fibicl@use*{\forewordname}%
+%% \tocskip{\tocentryskip}%
+%% \addcontentsline{toc}{clause}{\forewordname}%
+ \ifisohyper
+ \pdfbookmark[1]{\forewordname}{isofwd}%
+ \fi}%
+ {\if@restonecol\twocolumn\fi}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@copyrighttext}
+% This command sets up the copyright notice on the first page of
+% the table of contents. The text is set in a |bottomfloat|
+% environment in a small size.
+% \begin{macrocode}
+\newcommand{\@copyrighttext}{%
+ \vfill
+%%% \begin{bottomfloat}[b]
+ \begin{small}
+ \copyrightnotice
+ \end{small}
+%%% \end{bottomfloat}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{introduction}
+% Starts a new unnumbered introduction clause, the body of which is set
+% in single column, so we use an environment.
+% \changes{v2}{1997/12/04}{Added Introduction to ToC}
+% \changes{v2.1}{1999/02/15}{Deleted Introduction from Toc}
+% \changes{v2.2}{2000/01/10}{Changed introduction to use \cs{fibicl@use}}
+% \changes{v2.4}{2002/07/22}{Added bookmark to introduction}
+% \begin{macrocode}
+\newenvironment{introduction}%
+ {\clearpage
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \fibicl@use*{\introductionname}%
+%% \tocskip{\tocentryskip}
+%% \addcontentsline{toc}{clause}{\introductionname}%
+ \ifisohyper
+ \pdfbookmark[1]{\introductionname}{isointro}
+ \fi}%
+ {\if@restonecol\twocolumn\fi}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\scopeclause}
+% Starts a new numbered scope clause.
+% This is given the label |;i1| as it is the first numbered clause.
+% \changes{v2.2}{2000/01/10}{Scope clause labelled ;i1}
+% \begin{macrocode}
+\newcommand{\scopeclause}{\clause{\scopename}\label{;i1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\normrefsclause}
+% Starts a new numbered normative references clause.
+% This is given the label |;i2| as it is the second numbered clause.
+% \changes{v2.2}{2000/01/10}{Normrefs clause labelled ;i2}
+% \begin{macrocode}
+\newcommand{\normrefsclause}{\clause{\normrefsname}\label{;i2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\defclause}
+% \begin{macro}{\symclause}
+% \begin{macro}{\abbclause}
+% \begin{macro}{\defsymclause}
+% \begin{macro}{\defabbclause}
+% \begin{macro}{\symabbclause}
+% \begin{macro}{\defsymabbclause}
+% These macros start new clauses for definitions, symbols and abbreviations.
+% ISO allows these to be grouped in various ways, depending on the
+% amount of material in the respective categories.
+% These are each given the label |;i3| as one should be the third numbered clause.
+% \changes{v2.2}{2000/01/10}{Definition clauses labelled ;i3}
+% \begin{macrocode}
+\newcommand{\defclause}{\clause{\defname}\label{;i3}}
+\newcommand{\symclause}{\clause{\symname}\label{;i3}}
+\newcommand{\abbclause}{\clause{\abbname}\label{;i3}}
+\newcommand{\defsymclause}{\clause{\defsymname}\label{;i3}}
+\newcommand{\defabbclause}{\clause{\defabbname}\label{;i3}}
+\newcommand{\symabbclause}{\clause{\symabbname}\label{;i3}}
+\newcommand{\defsymabbclause}{\clause{\defsymabbname}\label{;i3}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\defsubclause}
+% \begin{macro}{\symsubclause}
+% \begin{macro}{\abbsubclause}
+% \begin{macro}{\defsymsubclause}
+% \begin{macro}{\defabbsubclause}
+% \begin{macro}{\symabbsubclause}
+% These macros start new sub-clauses for definitions, symbols and abbreviations.
+% ISO allows these to be grouped in various ways, depending on the
+% amount of material in the respective categories.
+% \begin{macrocode}
+\newcommand{\defsubclause}{\sclause{\defname}}
+\newcommand{\symsubclause}{\sclause{\symname}}
+\newcommand{\abbsubclause}{\sclause{\abbname}}
+\newcommand{\defsymsubclause}{\sclause{\defsymname}}
+\newcommand{\defabbsubclause}{\sclause{\defabbname}}
+\newcommand{\symabbsubclause}{\sclause{\symabbname}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fcandaclause}
+% This macro starts a clause `Fundamental concepts and assumptions'.
+% The actual title is given by the value of |\fcandaname|.
+% \begin{macrocode}
+\newcommand{\fcandaclause}{\clause{\fcandaname}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bibannex}
+% This macro starts a bibliography (which used to be an
+% informative annex).
+%
+% \changes{v2}{1997}{Bibliography is no longer an informative annex}
+% \changes{v2.2}{2000/01/10}{Reconfigured \cs{bibannex} to use \cs{fibicl@use}}
+% \begin{macrocode}
+\newcommand{\bibannex}{%
+ \typeout{Bibliography}
+ \clearpage
+ \fibicl@use*{\bibname}
+ \tocskip{\tocentryskip}
+ \addcontentsline{toc}{index}{\bibname}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Boilerplate}
+%
+% ISO defines the wording of certain textual elements within a
+% standard.
+%
+% This class has been prepared for standard documents in the
+% English language. The boilerplate text commands must be
+% redefined for other languages.
+%
+% \begin{macro}{\copyrightnotice}
+% The required English text of the copyright notice.
+% \changes{v2.3}{2001/07/06}{Text of \cs{copyrightnotice} changed}
+% \begin{macrocode}
+\newcommand{\copyrightnotice}{%
+\copyright\quad \copyrightname\quad \thesyear\newline
+All rights reserved. Unless otherwise specified, no part of
+this publication may be reproduced or utilized in any form or
+by any means, electronic or mechanical, including photocopying
+and microfilm, without permission in writing from %%% the publisher.
+%%%\makebox[\textwidth][r]{%
+%%%ISO/IEC Copyright Office $\bullet$ Case Postale 56 $\bullet$
+%%%CH-1211 Gen{\`e}ve 20 $\bullet$ Switzerland}
+%%\vspace{\baselineskip}\newline
+%%\hspace*{1em} International Organization for Standardization\newline
+%%\hspace*{1em} Case Postale 56 $\bullet$ CH-2111 Gen{\`e}ve 20 $\bullet$ Switzerland
+either ISO at the address below or ISO's member body in the country
+of the requester.
+\par
+\noindent ISO copyright office \\
+Case postale 56. CH-1211 Geneva 20 \\
+Tel. +41 22 749 01 11 \\
+Fax +41 22 734 10 79 \\
+E-mail \texttt{copyright@iso.ch} \\
+Web \texttt{www.iso.ch}
+% \end{macrocode}
+% For an IS or a Tech Report, need a blank line and place of printing
+% \begin{macrocode}
+%%\ifisst@ndard \ifc@pyright
+%% \vspace{\baselineskip}\newline\noindent
+%% Printed in Switzerland
+%%\fi\fi
+%%\ift@chrep \ifc@pyright
+%% \vspace{\baselineskip}\newline\noindent
+%% Printed in Switzerland
+%%\fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fwdbp}
+%
+% The prescribed text of the initial paragraphs in an ISO Standard
+% Foreword.
+% \begin{macrocode}
+\newcommand{\fwdbp}{\input{isofwdbp}}
+% \end{macrocode}
+%
+% The following is the text contained in the file \file{isofwdbp.tex}.
+% \changes{v2.1}{1999/02/15}{Change to foreword boilerplate}
+% \changes{v2.3}{2001/07/06}{Change to foreword boilerplate}
+% \changes{v2.3}{2001/08/29}{Yet another ISO change to foreword boilerplate}
+% \begin{macrocode}
+%</iso>
+%<*fwd1>
+\ProvidesFile{isofwdbp.tex}[2001/08/29 Boilerplate for start of Foreword]
+
+ISO (the International Organization for Standardization) is a worldwide
+federation of national standards bodies (ISO member bodies). The work
+of preparing International Standards is normally carried out through
+ISO technical committees. Each member body interested in a subject for
+which a technical committee has been established has the right to be
+represented on that committee. International organizations,
+governmental and non-governmental, in liaison with ISO, also take part
+in the work. ISO collaborates closely with the International
+Electrotechnical Commission (IEC) on all matters of electrotechnical
+standardization.
+
+International Standards are drafted in accordance with the rules given
+in the ISO/IEC Directives, Part~2.
+
+The main task of technical committees is to prepare International Standards.
+Draft International Standards adopted by the technical committees are
+circulated to the member bodies for voting. Publication as an
+International Standard requires approval by at least 75\% of the member
+bodies casting a vote.
+\par
+
+%</fwd1>
+%<*iso>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tspasfwdbp}
+%
+% The prescribed text of the initial paragraphs in an ISO
+% Technical Specification or PAS Foreword.
+% \begin{macrocode}
+\newcommand{\tspasfwdbp}{\input{tspasfwdbp}}
+% \end{macrocode}
+%
+% The following is the text contained in the file \file{tspasfwdbp.tex}.
+% \changes{v2.3}{2001/07/06}{Added TS/PAS foreword boilerplate}
+% \changes{v2.3}{2002/01/10}{Modified TS/PAS foreword boilerplate}
+% \begin{macrocode}
+%</iso>
+%<*tspasfwd1>
+\ProvidesFile{tspasfwdbp.tex}[2001/07/06 Boilerplate for start of TS/PAS Foreword]
+
+ISO (the International Organization for Standardization) is a worldwide
+federation of national standards bodies (ISO member bodies). The work
+of preparing International Standards is normally carried out through
+ISO technical committees. Each member body interested in a subject for
+which a technical committee has been established has the right to be
+represented on that committee. International organizations,
+governmental and non-governmental, in liaison with ISO, also take part
+in the work. ISO collaborates closely with the International
+Electrotechnical Commission (IEC) on all matters of electrotechnical
+standardization.
+
+International Standards are drafted in accordance with the rules given
+in the ISO/IEC Directives, Part~2.
+
+ The main task of technical committees is to prepare International
+Standards.
+Draft International Standards adopted by the technical committees are
+circulated to the member bodies for voting. Publication as an
+International Standard requires approval by at least 75\% of the member
+bodies casting a vote.
+
+ In other circumstances, particularly when there is an urgent market
+requirement for such documents, a technical committee may decide to
+publish other types of normative document:
+\begin{itemize}
+\item an ISO Publicly Available Specification (ISO/PAS) represents an
+agreement between technical experts in an ISO working group and is
+accepted for publication if it is approved by more than 50\% of the
+members of the parent committee casting a vote;
+
+\item an ISO Technical Specification (ISO/TS) represents an agreement
+between the members of a technical committee and is accepted for
+publication if it is approved by 2/3 of the members of the committee
+casting a vote.
+\end{itemize}
+
+ An ISO/PAS or ISO/TS is reviewed every three years with a view to
+deciding whether it can be transformed into an International Standard.
+\par
+
+%</tspasfwd1>
+% \end{macrocode}
+% \end{macro}
+%
+% The following is the text contained in the file \file{trfwd1.tex}.
+% \begin{macrocode}
+%<*trfwd1>
+ %% trfwd1.tex Boilerplate for start of a tech rep Foreword clause
+%
+
+ ISO (the International Organization for Standardization) is a worldwide
+federation of national standards bodies (ISO member bodies). The work
+of preparing International Standards is normally carried out through
+ISO technical committees. Each member body interested in a subject for
+which a technical committee has been established has the right to be
+represented on that committee. International organizations,
+governmental and non-governmental, in liaison with ISO, also take part
+in the work. ISO collaborates closely with the International
+Electrotechnical Commission (IEC) on all matters of electrotechnical
+standardization.
+
+ International Standards are drafted in accordance with the rules
+given in the ISO/IEC Directives, Part 3.
+
+ The main task of technical committees is to prepare International
+Standards. Draft International Standards adopted by the technical
+committees are circulated to the member bodies for voting. Publication
+as an International Standard requires approval by at least 75\% of the
+member bodies casting a vote.
+
+ In other circumstances, particularly when there is an urgent market
+requirement for such documents, a technical committee may decide to
+publish other types of normative document:
+\begin{itemize}
+\item an ISO Publicly Available Specification (ISO/PAS) represents an
+agreement between technical experts in an ISO working group and is
+accepted for publication if it is approved by more than 50\% of the
+members of the parent committee casting a vote;
+
+\item an ISO Technical Specification (ISO/TS) represents an agreement
+between the members of a technical committee and is accepted for
+publication if it is approved by 2/3 of the members of the committee
+casting a vote.
+\end{itemize}
+
+ An ISO/PAS or ISO/TS is reviewed every three years with a view to
+deciding whether it can be transformed into an International Standard.
+\par
+
+
+%</trfwd1>
+%<*iso>
+% \end{macrocode}
+%
+%
+% \begin{macro}{\trfwdbpi}
+% \begin{macro}{\trfwdbpii}
+% \changes{v2.1}{1999/03/19}{Removed trfwdbpii command}
+% Required texts for a technical report foreword.
+% Use as: |\trfwdbpii{|\meta{application field}|}|.
+% \begin{macrocode}
+\newcommand{\trfwdbpi}{\input{trfwd1}}
+\newcommand{\trfwdbpii}[1]{%
+ \ClassError{iso}{The \protect\trfwdpbii\space command has been removed}%
+ {Type <return> to proceed, and change your source file before
+ running LaTeX again.}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\intropatents}
+% |\intropatents| is the boilerplate for the last Introduction
+% paragraph dealing with potential additional patent rights.
+% \changes{v2.3}{2001/07/06}{Added \cs{fwdpatents} macro}
+% \changes{v2.3}{2001/08/29}{Changed \cs{fwdpatents} macro}
+% \changes{v2.3}{2002/01/10}{Changed \cs{fwdpatents} macro to \cs{intropatents}}
+% \begin{macrocode}
+\newcommand{\intropatents}{\par
+ Attention is drawn to the possibility that some of the elements of this
+document may be the subject of patent rights
+other than those mentioned above.
+ISO [and/or] IEC shall not be held responsible
+for identifying any or all such patent rights.\par}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fwdnopatents}
+% |\fwdnopatents| is the boilerplate for the Foreword
+% paragraph dealing with potential patent rights.
+% \changes{v2.3}{2001/08/29}{Added \cs{fwdnopatents} macro}
+% \begin{macrocode}
+\newcommand{\fwdnopatents}{\par
+ Attention is drawn to the possibility that some of the elements of this
+document may be the subject of patent rights.
+ISO shall not be held responsible
+for identifying any or all such patent rights.\par}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\normrefbp}
+% The required text for the introduction
+% of the normative references clause. Use as:
+% |\normrefbp{|\meta{standard identifier}|}|
+% \changes{v2}{1997/11/30}{\cs{normrefbp} boilerplate modified}
+% \begin{macrocode}
+\newcommand{\normrefbp}[1]{%
+
+The following normative documents contain provisions which, through
+reference in this text, constitute provisions of this #1.
+For dated references, subsequent amendments to, or revisions of,
+any of these publications do not apply.
+However, parties
+to agreements based on this #1
+are encouraged to investigate the possibility of applying
+the most recent editions of the normative documents indicated below.
+For undated references, the latest edition of the normative
+document referred to applies.
+Members of ISO and IEC maintain registers of currently
+valid International Standards.
+
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Initialization} \label{sec:init}
+%
+% \subsection{Words and phrases}
+%
+% \begin{macro}{\annexname}
+% \begin{macro}{\bibname}
+% \begin{macro}{\contentsname}
+% \begin{macro}{\defname}
+% \begin{macro}{\symname}
+% \begin{macro}{\abbname}
+% \begin{macro}{\defabbname}
+% \begin{macro}{\defsymname}
+% \begin{macro}{\defsymabbname}
+% \begin{macro}{\fcandaname}
+% \begin{macro}{\forewordname}
+% \begin{macro}{\indexname}
+% \begin{macro}{\informativename}
+% \begin{macro}{\introductionname}
+% \begin{macro}{\normativename}
+% \begin{macro}{\normrefsname}
+% \begin{macro}{\scopename}
+% \begin{macro}{\sectionname}
+% \begin{macro}{\symabbname}
+% This document class is for documents prepared in the English language.
+% To prepare a version for another language, various English words
+% and phrases must
+% be replaced. The English elements that require replacement are
+% defined below in command names.
+%
+% This list is for titles of document sections.
+%
+% \changes{v2.1}{1999/02/15}{Changed defname, defabbname, defsymname, defsymabbname}
+% \begin{macrocode}
+\newcommand{\abbname}{Abbreviations}
+\newcommand{\annexname}{Annex}
+\newcommand{\bibname}{Bibliography}
+\newcommand{\contentsname}{Contents}
+\newcommand{\defname}{Terms and definitions}
+\newcommand{\defabbname}{Terms, definitions, and abbreviations}
+\newcommand{\defsymname}{Terms, definitions, and symbols}
+\newcommand{\defsymabbname}{Terms, definitions, abbreviations, and symbols}
+\newcommand{\fcandaname}{Fundamental concepts and assumptions}
+\newcommand{\forewordname}{Foreword}
+\newcommand{\indexname}{Index}
+\newcommand{\informativename}{informative}
+\newcommand{\introductionname}{Introduction}
+\newcommand{\normativename}{normative}
+\newcommand{\normrefsname}{Normative references}
+\newcommand{\scopename}{Scope}
+\newcommand{\sectionname}{Section}
+\newcommand{\symname}{Symbols}
+\newcommand{\symabbname}{Symbols and abbreviations}
+% \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}
+%
+% \begin{macro}{\copyrightname}
+% \begin{macro}{\examplename}
+% \begin{macro}{\figurename}
+% \begin{macro}{\inscopename}
+% \begin{macro}{\ISname}
+% \begin{macro}{\listannexname}
+% \begin{macro}{\listfigurename}
+% \begin{macro}{\listtablename}
+% \begin{macro}{\notename}
+% \begin{macro}{\outofscopename}
+% \begin{macro}{\pagename}
+% \begin{macro}{\tablename}
+% \begin{macro}{\tbpname}
+%
+% These are the names and phrases used for general elements.
+%
+% \changes{v2}{1997/11/30}{\cs{examplesname} and \cs{notesname} deleted}
+% \changes{v2.3}{2001/07/06}{Additional forms of \cs{ISname}}
+% \begin{macrocode}
+\newcommand{\copyrightname}{ISO}
+\newcommand{\examplename}{EXAMPLE}
+ %%%\newcommand{\examplesname}{EXAMPLES}
+\newcommand{\figurename}{Figure}
+\newcommand{\inscopename}{The following are within the scope of this }
+\newcommand{\ISname}{INTERNATIONAL STANDARD}
+\iffdisstandard\renewcommand{\ISname}{FINAL DRAFT INTERNATIONAL STANDARD}\fi
+\ifdisstandard\renewcommand{\ISname}{DRAFT INTERNATIONAL STANDARD}\fi
+\ifcdstandard\renewcommand{\ISname}{COMMITTEE DRAFT}\fi
+\ifwdstandard\renewcommand{\ISname}{WORKING DRAFT}\fi
+\iftechrep\renewcommand{\ISname}{TECHNICAL REPORT}\fi
+\iftechspec\renewcommand{\ISname}{TECHNICAL SPECIFICATION}\fi
+\ifpaspec\renewcommand{\ISname}{PUBLICLY AVAILABLE SPECIFICATION}\fi
+\ifotherdoc\renewcommand{\ISname}{}\fi
+\newcommand{\listannexname}{Annexes}
+\newcommand{\listfigurename}{Figures}
+\newcommand{\listtablename}{Tables}
+\newcommand{\notename}{NOTE}
+ %%%\newcommand{\notesname}{NOTES}
+\newcommand{\outofscopename}{The following are outside the scope of this }
+\newcommand{\pagename}{Page}
+\newcommand{\tablename}{Table}
+\newcommand{\tbpname}{To be published.}
+% \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}
+%
+% \begin{macro}{\annexrefname}
+% \begin{macro}{\clauserefname}
+% \begin{macro}{\examplerefname}
+% \begin{macro}{\figurerefname}
+% \begin{macro}{\noterefname}
+% \begin{macro}{\tablerefname}
+% \begin{macro}{\pagerefname}
+% These are the names for referenced document elements. Except when
+% starting a sentence or referring to a figure, references to document
+% elements start with
+% a lower case letter.
+% \changes{v2}{1997/11/30}{\cs{figurename} changed to print Figure}
+% \changes{v2}{1997/11/30}{\cs{tablerefname} changed to print Table}
+% \changes{v2}{1997/11/30}{Added \cs{noterefname} command}
+% \changes{v2.3}{2001/07/06}{Added \cs{pagerefname} command}
+% \begin{macrocode}
+\newcommand{\annexrefname}{annex}
+\newcommand{\clauserefname}{clause}
+\newcommand{\examplerefname}{example}
+\newcommand{\figurerefname}{Figure}
+\newcommand{\noterefname}{note}
+\newcommand{\tablerefname}{Table}
+\newcommand{\pagerefname}{page}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\abstractname}
+% \begin{macro}{\appendixname}
+% \begin{macro}{\chaptername}
+% \begin{macro}{\partname}
+% \begin{macro}{\refname}
+% These names are used in the standard \LaTeX\ classes but are not
+% applicable in this class. We just make them null.
+% \begin{macrocode}
+\newcommand{\abstractname}{}
+\newcommand{\appendixname}{}
+\newcommand{\chaptername}{}
+\newcommand{\partname}{}
+\newcommand{\refname}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Date}
+%
+% \begin{macro}{\today}
+% This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
+% to provide the date of the \LaTeX-run.
+% \begin{macrocode}
+\newcommand{\today}{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Two column mode}
+%
+% \begin{macro}{\columnsep}
+% This gives the distance between two columns in two column mode.
+% \begin{macrocode}
+\setlength\columnsep{10\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\columnseprule}
+% This gives the width of the rule between two columns in two
+% column mode. We have no visible rule.
+% \begin{macrocode}
+\setlength\columnseprule{0\p@}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The page style}
+% We use the page style \pstyle{headings} by
+% default and start with roman numbering for the
+% front matter, this being reset to arabic by the title
+% or first main matter section/clause.
+% \begin{macrocode}
+\pagestyle{headings}
+\pagenumbering{roman}
+% \end{macrocode}
+% We set the sectional counters to zero and the |tocdepth| to
+% one (clauses only listed).
+% \begin{macrocode}
+\setcounter{clause}{0}
+\setcounter{annex}{0}
+\setcounter{tocdepth}{1}
+% \end{macrocode}
+%
+%
+% \subsection{Single or double sided printing}
+%
+%
+% We do not try to make each page as long as all the others, even
+% though it is two-side printing.
+% \begin{macrocode}
+\@twosidetrue
+\raggedbottom
+% \end{macrocode}
+% When the \Lopt{twocolumn} option was specified we call
+% |\twocolumn| to activate this mode. We try to make each column as
+% long as the others, but call |sloppy| to make our life easier.
+% \begin{macrocode}
+\if@twocolumn
+ \twocolumn
+ \sloppy
+ \flushbottom
+% \end{macrocode}
+% Normally we call |\onecolumn| to initiate typesetting in one
+% column.
+% \begin{macrocode}
+\else
+ \onecolumn
+\fi
+% \end{macrocode}
+%
+% The end of the class definitions.
+% \begin{macrocode}
+%</iso>
+% \end{macrocode}
+%
+%
+%
+% \section{The \file{askinc} package} \label{sec:askinc}
+%
+% This package provides an interactive `include' facility. It was developed
+% by Phil Spiby of CADDETC, Leeds, United Kingdom in the late eighties.
+% \begin{macrocode}
+%<*inc>
+% \end{macrocode}
+%
+% \begin{macro}{\infile}
+% The |\infile{|\meta{file name}|}| command is a cross between the
+% |\input| and |\include| commands. When this package is used, at
+% runtime the user is asked to interactively specify a comma-seperated
+% list of the names of |\infile|d files that are to be processed. In
+% this sense it acts like the |\include| and |\includeonly| pair of
+% commands. If no list is entered at the terminal (by hitting the
+% \meta{RETURN} key) then all |\infile|d files are processed. In this
+% sense it acts like the |\input| command. However, like the |\include|
+% command, an |\infile|d file cannot contain any other |\infile|d file.
+%
+% \begin{macro}{temp}
+% Define a counter \Lcount{temp} for general use within the include files.
+% This is required to ensure that the contents of |\incfiles| is
+% used and not |\incfiles| the string.
+% \begin{macrocode}
+\newcounter{temp}
+% \end{macrocode}
+% \end{macro}
+% Now for the rest of the definition.
+% \begin{macrocode}
+\def\readinclude#1\endread{\gdef\myincludeonly{\includeonly{#1}}}
+\long\def\stripspace#1 \nextspace{#1}
+\typeout{Which files do you want processing ?}
+\message{enter names (separated by commas) or <RET> for all.}
+\message{}\global\read-1 to\incfiles
+\if\incfiles\par\let\infile\input
+\else\let\infile\include
+\edef\incfiles{\expandafter\stripspace\incfiles\nextspace}
+\expandafter\readinclude\incfiles\endread\myincludeonly\fi
+% \end{macrocode}
+% \end{macro}
+%
+% The end of the askinc package.
+% \begin{macrocode}
+%</inc>
+% \end{macrocode}
+%
+%
+%
+%
+%
+%
+% \bibliographystyle{alpha}
+%
+% \begin{thebibliography}{GMS94}
+%
+% \bibitem[GMS94]{GOOSSENS94}
+% Michel Goossens, Frank Mittelbach, and Alexander Samarin.
+% \newblock \emph{The LaTeX Companion}.
+% \newblock Addison-Wesley Publishing Company, 1994.
+%
+% \bibitem[ISO97]{ISOD397}
+% ISO/IEC Directives Part 3.
+% \newblock \emph{Drafting and presentation of International
+% Standards}, Third edition, 1997.
+%
+% \bibitem[ISO01]{ISOD201}
+% ISO/IEC Directives Part 2.
+% \newblock \emph{Rules for the structure and drafting
+% of International Standards}, Fourth edition, 2001.
+%
+% \bibitem[Wil96]{PRW96i}
+% Peter~R. Wilson.
+% \newblock \emph{{LaTeX for standards: The LaTeX package files user manual}}.
+% \newblock NIST Report NISTIR, June 1996.
+%
+% \end{thebibliography}
+%
+%
+% \Finale
+%
+\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 \~}
+
+
+
diff --git a/macros/latex/contrib/isostds/iso/isoe.ins b/macros/latex/contrib/isostds/iso/isoe.ins
new file mode 100644
index 0000000000..2a1bfab67b
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/isoe.ins
@@ -0,0 +1,96 @@
+%%
+%% isoe.dtx
+%% This work has been partially funded by the US government and is
+%% not subject to copyright.
+%%
+%% This program is provided under the terms of the
+%% LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt.
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Author: Peter Wilson (CUA and NIST)
+%% now at: peter.r.wilson@boeing.com
+%%
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\batchfile{isoe.ins}
+\input docstrip.tex
+\preamble
+
+ This work has been partially funded by the US government and is
+ not subject to copyright.
+
+ This program is provided under the terms of the
+ LaTeX Project Public License distributed from CTAN
+ archives in directory macros/latex/base/lppl.txt.
+
+ Author: Peter Wilson (CUA and NIST)
+ now at: peter.r.wilson@boeing.com
+
+\endpreamble
+
+\keepsilent
+
+%% \Msg{*** Generating the driver file ***}
+
+%% \generateFile{isoe.drv}{t}{\from{isoe.dtx}{driver}}
+
+\Msg{*** Generating the LaTeX2e document class files ***}
+
+\generateFile{isov2.cls}{t}{\from{isoe.dtx}{iso}}
+
+\Msg{*** Generating the LaTeX2e document class option files ***}
+
+\generateFile{iso9.clo}{t}{\from{isoe.dtx}{9pt}}
+\generateFile{iso10.clo}{t}{\from{isoe.dtx}{10pt}}
+\generateFile{iso11.clo}{t}{\from{isoe.dtx}{11pt}}
+
+\Msg{*** Generating the LaTeX2e package files ***}
+
+\generateFile{askincv1.sty}{t}{\from{isoe.dtx}{inc}}
+
+\Msg{*** Generating the boilerplate files ***}
+
+\generateFile{isofwdbp.tex}{t}{\from{isoe.dtx}{fwd1}}
+\generateFile{tspasfwdbp.tex}{t}{\from{isoe.dtx}{tspasfwd1}}
+\generateFile{trfwd1.tex}{t}{\from{isoe.dtx}{trfwd1}}
+
+\Msg{*** Generating the makeindex style file ***}
+
+\generateFile{iso.ist}{t}{\from{isoe.dtx}{ist}}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* For a LaTeX2e system:}
+\Msg{* \space\space isov2.cls}
+\Msg{* \space\space iso9.clo}
+\Msg{* \space\space iso10.clo}
+\Msg{* \space\space iso11.clo}
+\Msg{* \space\space askincv1.sty}
+\Msg{* \space\space isofwdbp.tex}
+\Msg{* \space\space tspasfwdbp.tex}
+\Msg{* \space\space trfwd1.tex}
+\Msg{*}
+\Msg{*}
+\Msg{* For MakeIndex:}
+\Msg{* \space\space iso.ist}
+\Msg{*}
+\Msg{*}
+\Msg{* To produce the documented source run the files ending with}
+\Msg{* `.dtx' through LaTeX.}
+\Msg{* Process any name.idx file by:}
+\Msg{* \space\space\space\space makeindex -s gind.ist name}
+\Msg{* Process any name.glo file by:}
+\Msg{* \space\space\space\space makeindex -s gglo.ist -o name.gls name.glo}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+
+\endinput
diff --git a/macros/latex/contrib/isostds/iso/isoe.pdf b/macros/latex/contrib/isostds/iso/isoe.pdf
new file mode 100644
index 0000000000..cdcb7740f8
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/isoe.pdf
Binary files differ
diff --git a/macros/latex/contrib/isostds/iso/isoman.pdf b/macros/latex/contrib/isostds/iso/isoman.pdf
new file mode 100644
index 0000000000..9dcdc520bf
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/isoman.pdf
Binary files differ
diff --git a/macros/latex/contrib/isostds/iso/isoman.tex b/macros/latex/contrib/isostds/iso/isoman.tex
new file mode 100644
index 0000000000..18eb6cf29d
--- /dev/null
+++ b/macros/latex/contrib/isostds/iso/isoman.tex
@@ -0,0 +1,3874 @@
+% isoman.tex User guide for ISO style files for LaTeX(2e) August 2002
+%
+\documentclass[wd,letterpaper,copyright]{isov2}
+%\documentclass[wd,letterpaper,draft]{isov2}
+%\documentclass{isov2}
+
+%%%\usepackage[isoman]{tex4ht}
+
+\usepackage{comment}
+
+%%%\usepackage{times}
+\usepackage{isorot}
+\usepackage{xtab}
+\usepackage{hyphenat}
+
+\ifpdf
+ \pdfoutput=1
+ \usepackage[plainpages=false,
+ pdfpagelabels,
+ bookmarksnumbered,
+ hyperindex=true
+ ]{hyperref}
+\fi
+
+\standard{LaTeX for ISO standards}
+\yearofedition{2002}
+\languageofedition{(E)}
+
+%\partno{3456}
+\changemarkstrue
+
+\makeindex
+
+% Uncomment the following to change the Foreword heading
+%\renewcommand{\forewordname}{Avant-propos} % change the Foreword title
+
+\setcounter{tocdepth}{3} % add more levels to table of contents
+%
+% remainder of preamble is some special macro definitions
+\makeatletter
+% the \meta{} command
+%
+\begingroup
+\obeyspaces%
+\catcode`\^^M\active%
+\gdef\meta{\begingroup\obeyspaces\catcode`\^^M\active%
+\let^^M\do@space\let \do@space%
+\def\-{\egroup\discretionary{-}{}{}\hbox\bgroup\it}%
+\m@ta}%
+\endgroup
+\def\m@ta#1{\leavevmode\hbox\bgroup\texttt{<}\textit{#1}\/\texttt{>}\egroup
+ \endgroup}
+\def\do@space{\egroup\space
+ \hbox\bgroup\it\futurelet\next\sp@ce}
+\def\sp@ce{\ifx\next\do@space\expandafter\sp@@ce\fi}
+\def\sp@@ce#1{\futurelet\next\sp@ce}
+%
+%
+\makeatother
+%
+% the \latex command
+\newcommand{\latex}{LaTeX}
+\newcommand{\tex}{TeX}
+%
+% the \file{} command
+%
+\newcommand{\file}[1]{\textsf{#1}}
+%
+\makeatletter
+% index a command
+\newcommand{\bs}{\symbol{'134}}
+\newcommand{\ixcom}[1]{\index{#1/ @{\tt \protect\bs #1}}}
+% index an environment
+\newcommand{\ixenv}[1]{\index{#1 @{\tt #1} (environment)}}
+% index a starred environment
+\newcommand{\ixenvs}[1]{\index{#1s @{\tt #1*} (environment)}}
+% index an option
+\newcommand{\ixopt}[1]{\index{#1 @{\tt #1} (option)}}
+% index a package
+\newcommand{\ixpack}[1]{\index{#1 @\file{#1} (package)}}
+% index a class
+\newcommand{\ixclass}[1]{\index{#1 @\file{#1} (class)}}
+% index in typewriter font
+\newcommand{\ixtt}[1]{\index{#1@{\tt #1}}}
+% index LaTeX
+\newcommand{\ixltx}{\index{latex@\latex}}
+% index LaTeX 2e
+\newcommand{\ixltxe}{\index{latex2e@\latex 2e}}
+% index LaTeX v2.09
+\newcommand{\ixltxv}{\index{latex209@\latex{} v2.09}}
+\makeatother
+%
+% end of preamble
+%
+\begin{document}
+
+
+\begin{cover}
+\vspace*{4in}
+\begin{center}
+\Huge\bfseries LaTeX for ISO standards
+\end{center}
+\begin{center}
+\bfseries 2002/08/10
+\end{center}
+\begin{center}
+Peter Wilson \\
+\texttt{peter.r.wilson@boeing.com}
+\end{center}
+\clearpage
+\end{cover}
+%%%\clearpage
+
+\begin{foreword}
+\fwdbp
+\fwdnopatents
+Annexes~\ref{anx:extraiso} and~\ref{anx:lord}
+are an integral part of this document.
+Annexes~\ref{anx:indexing}, \ref{anx:sgml}, \ref{anx:getstuff},
+and \ref{anx:changes}
+are for information only.
+\end{foreword}
+
+
+\begin{introduction}
+
+ This document describes the use of the \file{isov2} \latex{} class
+file and some package files in preparing ISO standard documents.
+
+\sclause*{Overview}
+
+ This document describes a \latex{} class file, called \file{isov2},
+ for typesetting ISO standards. It also
+provides descriptions of some particular package files (e.g., \file{isorot})
+that have been developed to support the writing of ISO standards.
+The electronic source of this document also provides an example of the
+use of these files.
+
+
+
+ The current set of files~\bref{isoe} have been developed by
+Peter Wilson (RPI, CUA and NIST, Boeing)
+from files written by Kent Reed (NIST).
+In turn, these were revisions of files originally created by
+Phil Spiby (CADDETC, UK), based on early work by
+Phil Kennicott (GE).\footnote{In mid 1994 \latex{} was upgraded from
+version 2.09 to what is called \latex 2e. The files described in
+earlier versions this document were compatible with both versions
+of \latex. Starting with the October 1997 release,
+support was withdrawn from any \latex{} v2.09 file versions.}
+
+
+ Documents produced with the \latex{} files have been reviewed
+by the ISO Editorial Board in Geneva for conformance to their typographical
+requirements. The first review was of a series of Draft International
+Standard documents. This review resulted in some changes to the style
+files. The second review was of a series of twelve International Standard
+documents (ISO 10303:1994). Likewise, this review led to changes in the
+style files to bring the documents into compliance.
+
+ With the publication of the ISO~10303:1994 standard, the opportunity
+was taken
+to provide a new baseline release of the package files.
+The new baseline release was also designed to address the fact that
+a major update of \latex{} to \latex 2e took place during 1994. \latex 2e
+is now the officially supported version. However, some users needed time
+to convert to using \latex 2e. Consequently, although the
+facilities described in the original version of this document
+were common for both
+\latex{} v2.09 and \latex 2e users, there were two different
+implementations.
+
+ Because ISO standard documents have a very structured layout, the class
+and package files have been designed to reflect the logical document structure
+to a much greater extent than the `standard' \latex{} files. Further, ISO
+documents are published in more than one language. The files described
+here are written for the English language, but the language-specific elements
+have been parameterized for easy modification for publication in other
+official ISO languages, such as French.
+
+ In 1997 ISO produced a new version of their Directives on the
+requirements for the layout of ISO documents. These were not completely
+unambiguous as to their intent; the current version was released in
+2001. Members of ISO TC184/SC4 have worked with
+the ISO Editorial Board and have reached an agreement that more precisely
+identifies the requirements. The current version of the \latex{} files
+implements that agreement.
+
+\begin{note}
+The original of this manual has been typeset using the \verb?draft?
+option in order to display its effect of placing a black box at the
+end of each line that is longer than the normal width of the text.
+\end{note}
+
+\begin{note}
+The author of this document may be contacted at
+\texttt{peter.r.wilson@boeing.com}.
+\end{note}
+
+\end{introduction}
+
+\title{LaTeX for ISO standards: User manual}%
+{Peter Wilson}%
+{August 2002}
+
+
+\scopeclause
+
+This manual describes a set of \ixltx\latex{} files for typesetting
+documents according to the ISO Directives Part 3 (third edition, 1997),
+together with some elements from the ISO~10303 Supplementary Directives.
+
+\begin{inscope}{manual}
+\item use of \latex{} for preparing ISO standard documents.
+\end{inscope}
+
+\begin{outofscope}{manual}
+\item use of \latex{} in general;
+\item use of other document preparation systems.
+\end{outofscope}
+
+\textbf{IMPORTANT:} No matter whether or not there are copyright attributions
+to ISO, this document is \emph{not} copyrighted by ISO. Any copyright
+markings are for illustrative purposes only. This document is released under
+the LaTeX Project Public Licence.
+
+\normrefsclause \label{sec:nrefs}
+
+\normrefbp{manual}
+\begin{nreferences}
+
+\isref{ISO/IEC Directives, Part 2}{Rules for the structure and drafting of
+ International Standards. (Fourth edition, 2001)}
+
+\isref{ISO TC 184/SC4 N1217:2001(E)}{SC4 Supplementary directives --- Rules
+ for the structure and drafting of SC4
+ standards for industrial data. (2001--11--01).}
+
+\isref{ISO/IEC 8824-1:1998}{Information technology ---
+ Abstract Syntax Notation One (ASN.1):
+ Specification of basic notation.}
+
+\disref{ISO}{Camera-ready copy (CRC) ---
+ Submission requirements and ISO type specification.
+ (Version 1.0, 1996-04-26)}
+
+\end{nreferences}
+
+\defabbclause
+%\clause{Terms, definitions, and abbreviations}
+
+\defsubclause
+%\sclause{Terms and definitions}
+
+ For the purposes of this manual, the following definitions
+apply.
+
+\begin{definitions}
+\definition{boilerplate}{text whose wording is fixed and has been agreed
+ to be present in a specific type of document} \index{boilerplate}
+\definition{style file}{a set of \latex{} macros assembled into a single
+ file with an extension \file{.sty}}
+ \index{style file}\ixltx\index{file!.sty}
+\definition{package file}{a style file for use with \latex 2e}\ixltxe
+\end{definitions}
+
+\abbsubclause
+%\sclause{Abbreviations}
+
+ For the purposes of this manual, the following abbreviations
+ apply.
+
+\begin{symbols}
+\symboldef{CD}{Committee Draft}\index{CD}
+\symboldef{DIS}{Draft International Standard}\index{DIS}
+\symboldef{FDIS}{Final Draft International Standard}\index{DIS}
+\symboldef{IS}{International Standard}\index{IS}
+\symboldef{IS-REVIEW}{The documentation style accepted by the ISO
+ Editorial Board review (September 1994) of twelve IS documents
+ (the initial release of ISO~10303) for compliance with ISO
+ typographical and layout requirements.}\index{IS-REVIEW}
+\symboldef{ISOD}{ISO/IEC Directives, Part 2}\index{ISOD}\index{ISO/IEC Directives}
+\symboldef{PAS}{Publicly Available Specification}\index{PAS}
+\symboldef{SD}{SC4 Supplementary directives}\index{SD}\index{Supplementary directives}
+\symboldef{TR}{Technical Report}\index{TR}
+\symboldef{TS}{Technical Specification}\index{TS}
+\symboldef{WD}{Working Draft}\index{WD}
+\symboldef{CRC}{The ISO \emph{Camera-ready copy (CRC)} document}\index{CRC}
+\symboldef{ToC}{table of contents}\index{ToC}
+\end{symbols}
+
+\clause{Conformance requirements} \label{sec:iconform}
+
+ The \latex{} macro source files shall not be modified.
+
+ If there is a need to modify the macro definitions then the
+modifications shall be defined in a separate \file{.sty}\index{file!.sty}
+ file (or files), using the
+\latex{} \verb|\renewcommand|\ixcom{renewcommand}
+and/or the
+\verb|\renewenvironment|\ixcom{renewenvironment}
+commands as appropriate. The resulting \file{.sty} file(s) shall then
+be called in within the preamble\index{preamble} portion of the
+document to be typeset.
+
+ Author specified \verb|\label{...}| commands shall not start with
+the characters \verb|;i| (semicolon and `i'); definition of labels
+starting with these characters is reserved for the maintainer of the
+facility files.
+
+
+\fcandaclause
+%\clause{Fundamental concepts and assumptions}
+
+ It is assumed that the reader of this document is familiar with the
+\latex{} document preparation system.\ixltx
+
+\begin{note}Reference~\bref{lamport} in the bibliography describes the
+ \latex{} system.
+\end{note}
+
+ The reader is also assumed to be familiar with the ISO/IEC Directives
+Part~2 (ISOD\index{ISOD}). Agreements reached between the ISO Editorial Board
+and ISO TC184/SC4 are documented in the SC4 Supplementary Directives
+(SD\index{SD}).
+
+ If there are any discrepancies between the layout and wording of this
+document and the requirements of the ISO/IEC Directives Part~2,
+then the requirements in that document shall be
+followed for any ISO standard document.
+
+ The \file{isov2}\ixclass{isov2} class requires the
+\file{url}\ixpack{url} package.
+
+\begin{note}
+Additional \latex{} facilities specifically designed for ISO~10303 are
+defined and described elsewhere~\bref{stepsty}.
+\end{note}
+
+ Because of many revisions over the years to the files described
+herein, a naming convention has been adopted for them.
+The primary name of the file is suffixed by \file{v\#} or \file{\#}, where
+\file{\#} is the version number of the file in question.
+All file primary names have been limited to a
+maximum of eight characters.
+
+\begin{note}
+ Table~\ref{tab:curfiles} shows the versions of the files that were
+current at the time of publication.
+\end{note} % end note
+\begin{note}
+Starting with the October 1997 release, files that were specific to
+\ixltxv\latex{} v2.09 are no
+longer either supported or supplied.
+\end{note}
+
+\begin{note}
+As of 1999, the \file{uschyp}\ixpack{uschyp} package is no longer supported.
+It has been replaced by the
+\file{hyphenat}\ixpack{hyphenat}\index{hyphenat.sty@\file{hyphenat.sty}}
+package.
+\end{note}
+
+\ixclass{isov2}\index{isov2.cls@\file{isov2.cls}}
+% \index{isonev11.sty@\file{isonev11.sty}}
+\ixopt{9pt}\index{iso9.clo@\file{iso9.clo}}
+% \index{iso9.sty@\file{iso9.sty}}
+\ixopt{10pt}\index{iso10.clo@\file{iso10.clo}}
+% \index{iso10.sty@\file{iso10.sty}}
+\ixopt{11pt}\index{iso11.clo@\file{iso11.clo}}
+% \index{iso11.sty@\file{iso11.sty}}
+\ixpack{isorot}\index{isorot.sty@\file{isorot.sty}}
+% \index{isrotne1.sty@\file{isrotne1.sty}}
+\ixpack{askinc}\index{askincv1.sty@\file{askincv1.sty}}
+\ixpack{xtab}\index{xtab.sty@\file{xtab.sty}}
+\ixpack{uschyp}\index{uschyp.sty@\file{uschyp.sty}}
+% \index{uschypne.sty@\file{uschypne.sty}}
+
+\begin{table}
+\centering
+\caption{Current file versions} \label{tab:curfiles}
+\begin{tabular}{|l|l|} \hline
+\textbf{Facility} & \textbf{File} \\ \hline\hline
+\file{iso} & \file{isov2.cls} \\
+9pt option & \file{iso9.clo} \\
+10pt option & \file{iso10.clo} \\
+11pt option & \file{iso11.clo} \\
+\file{isorot} & \file{isorot.sty} \\
+\file{askinc} & \file{askincv1.sty} \\
+\file{xtab} & \file{xtab.sty} \\
+\file{hyphenat} & \file{hyphenat.sty} \\ \hline
+\end{tabular}
+\end{table}
+
+
+\begin{anexample} At the time of
+publication of this document, any references to \file{iso.cls} should be
+read as actually referring to \file{isov2.cls}, and similarly for references
+to other files.
+\end{anexample} % end example
+
+
+\begin{note}This document is not intended for publication as a standard,
+although it has been laid out in a
+similar, but not necessarily identical, manner.\end{note} % end note
+
+
+\clause{The \file{iso} class facility}
+
+ The \latex{} \file{isov2}\ixclass{isov2} class file
+is a general file for use in preparing ISO
+standard documents using the \latex{} document preparation system.
+
+ As usual, any \latex{} document has the following structure:
+\begin{verbatim}
+\documentclass[<list of options>]{isov2}
+% preamble goes here
+\begin{document}
+% document body goes here
+\end{document}
+\end{verbatim}
+
+\sclause{Options}
+
+ The \file{isov2}\ixclass{isov2} class file supports the following options:
+\begin{itemize}
+\item \verb|draft|\ixopt{draft} for a draft document where
+ overfull horizontal boxes are marked, marginal notes are allowed,
+ and ISO copyright text is not placed in the document;
+\item \verb|final|\ixopt{final} the opposite of \verb|draft|
+ (this is the default);
+\item \verb|letterpaper|\ixopt{letterpaper} for printing
+ on US letter size paper;
+\item \verb|a4paper|\ixopt{a4paper} for printing on A4
+ size paper (this is the default);
+\item \verb|twocolumn|\ixopt{twocolumn} for two column
+ formatting;
+\item \verb|onecolumn|\ixopt{onecolumn} for single column
+ printing (this is the default);
+\item One of \verb|11pt|, \ixopt{11pt}
+ \verb|10pt|, \ixopt{10pt}
+ \verb|9pt|\ixopt{9pt} for 11pt, 10pt or 9pt printing
+ respectively (the default is \verb|11pt|);
+\item \verb|notcopyright|\ixopt{notcopyright} for
+ disabling the printing of copyright notices (this is the default);
+\item \verb|copyright|\ixopt{copyright} enables printing
+ of copyright notices;
+\item \verb|is|\ixopt{is} for International Standard documents;
+\item \verb|fdis|\ixopt{fdis} for Final Draft
+ International Standard documents; \index{FDIS}
+\item \verb|dis|\ixopt{dis} for Draft
+ International Standard documents; \index{DIS}
+\item \verb|cd|\ixopt{cd} for Committee Draft
+ standard documents; \index{CD}
+\item \verb|wd|\ixopt{wd} for Working Draft
+ standard documents; \index{WD}
+\item \verb|pas|\ixopt{pas} for Publicly Available Specification
+ standard documents;
+\item \verb|techrep|\ixopt{techrep} for Technical
+ Report standard documents; \index{TR}
+\item \verb|techspec|\ixopt{techspec} for Technical
+ Spefication standard documents; \index{TS}
+\item \verb|otherdoc|\ixopt{otherdoc} for documents
+ that are not intended to become a standard (this is the default);
+%\item \verb|uglycaption|\ixopt{uglycaption} to produce
+% an ugly style of captioning;
+\item Any other facilities that are available via packages.
+\end{itemize}
+
+ When no options are specified, then the result is 11pt, single column
+printing on A4 size paper, without copyright notice and a running header.
+That is, by default, the options set are:
+\verb|final|\ixopt{final};
+\verb|a4paper|\ixopt{a4paper};
+\verb|onecolumn|\ixopt{onecolumn};
+\verb|11pt|\ixopt{11pt};
+\verb|notcopyright|\ixopt{notcopyright}; and
+\verb|otherdoc|\ixopt{otherdoc}.
+
+
+%\begin{note}ISOD\index{ISOD} calls for 9pt double column printing but the
+% SD\index{SD} calls for 11pt single column printing.
+% Using 9pt double column printing is awkward if any computer
+% code has to
+% be typeset in the document. The IS-REVIEW\index{IS-REVIEW} accepted
+% 11pt single column layout. \end{note} % end note
+%\begin{note}The CRC\index{CRC} states that acceptable founts are: Univers,
+% Helvetica, and Times Roman with the body text in 10pt.
+% The IS-REVIEW accepted camera-ready copy
+% using Computer Modern 11pt set in single column. \end{note}
+\begin{note}The user of the \file{isov2}\ixclass{isov2} class is encouraged
+ to process this document using
+ different combinations of the options to gain experience with
+ their effects. This printing of the document is typeset using the
+ \verb|draft|\ixopt{draft} option.
+\end{note} % end note
+\begin{note}
+ The \verb|otherdoc|\ixopt{otherdoc} option
+was chosen as the default so that the
+current stage of ISO standardardization has to be explicitly declared
+as an option, and is therefore available to any software package that
+might process the document source (e.g., a \latex{} to SGML translator).
+\end{note}
+
+
+\sclause{Sectioning commands}
+
+ Table~\ref{tab:sec} gives the sectioning commands defined for \file{isov2}
+class documents.
+\ixcom{clause} \ixcom{normannex} \ixcom{infannex} \ixcom{repannex}
+\ixcom{sclause}
+\ixcom{ssclause}
+\ixcom{sssclause}
+\ixcom{ssssclause}
+\ixcom{sssssclause}
+
+\begin{table}
+\centering
+\caption{Sectioning commands.} \label{tab:sec}
+\begin{tabular}{|c|l|} \hline
+\textbf{Level} & \textbf{Command} \\ \hline\hline
+1 & \verb|\clause|, \verb|\normannex|, \verb|\infannex|, \verb|\repannex| \\
+2 & \verb|\sclause| \\
+3 & \verb|\ssclause| \\
+4 & \verb|\sssclause| \\
+5 & \verb|\ssssclause| \\
+6 & \verb|\sssssclause| \\ \hline
+\end{tabular}
+\end{table}
+
+% The \verb|\section|\ixcom{section} command
+% is similar to the normal \latex{} \verb|\part|\ixcom{part}
+%command. It is only available when the \verb|sect|\ixopt{sect}
+%option is specified.
+
+ The \verb|\clause|\ixcom{clause} commands are similar to
+the normal \latex{} \verb|\section|ing
+commands. There are also starred versions of these commands
+(e.g., \verb|\clause*|).
+
+ Three varieties of annex\index{annex} commands are available:
+\begin{itemize}
+\item \verb+\normannex{+\meta{title}\verb+}+\ixcom{normannex}
+ for a normative annex;
+\item \verb+\infannex{+\meta{title}\verb+}+\ixcom{infannex}
+ for an informative annex;
+\item \verb+\repannex{+\meta{title}\verb+}+\ixcom{repannex}
+ for an annex that is neither normative or
+ informative (e.g. an annex in a technical report).
+\end{itemize}
+
+ Only \verb|\sclause|\ixcom{sclause} and lower level
+sectioning commands can be used after
+an annex\index{annex} command.
+
+
+\begin{example}
+ The command \verb|\infannex{Technical discussion}|, assuming that this is the first
+annex in the document, produces:
+ \begin{center}
+ \textbf{Annex A}\\
+ (informative)
+
+ \textbf{Technical discussion}
+ \end{center}
+\end{example} % end example
+\begin{example}
+ The command \verb|\repannex{Title of annex}|, assuming that this is the second
+annex in the document, produces:
+
+\begin{center}
+ \textbf{Annex B}
+
+ \textbf{Title of annex}
+\end{center}
+\end{example} % end example
+
+
+\ssclause{The use of \texttt{tocdepth} and \texttt{secnumdepth}}
+
+ In the standard \latex{} classes the
+\verb|tocdepth|\ixtt{tocdepth} and
+\verb|secnumdepth|\ixtt{secnumdepth} counters
+are set in the preamble\index{preamble} to respectively control the level at
+which clause titles are inserted into a table of contents (ToC)\index{ToC}
+and at which clause numbering ceases.
+
+ In the \file{isov2}\ixclass{isov2} class,
+the values of these can be changed at
+any point in the document. The change lasts until another change is
+made to the value.
+\begin{example}
+ Assume that in the preamble we have
+\begin{verbatim}
+\setcounter{secnumdepth}{3} % number ssclauses and above
+\setcounter{tocdepth}{3} % ToC includes ssclauses and above
+\end{verbatim}
+and that a certain subclause has subsubclauses that should be numbered but
+not put into the table of contents, then we could do:
+\begin{verbatim}
+...
+\sclause{The certain subclause}
+\setcounter{tocdepth}{2}
+...
+\ssclause{Numbered but not in ToC}
+...
+...
+\setcounter{tocdepth}{3}
+\sclause{Following subclause}
+\end{verbatim}
+
+\end{example}
+
+ It can sometimes be difficult to remember which level number corresponds
+to which kind of clause. Accordingly, a set of commands are provided to ease
+this task. These commands can only be used after the preamble.
+\begin{itemize}
+\item \verb|\maxsecnumdepth{|\meta{sec}\verb|}|\ixcom{maxsecnumdepth}
+ sets the level at which clauses will be numbered. This command
+ should be used before the first sectioning command.
+\item \verb|\maxtocdepth{|\meta{sec}\verb|}|\ixcom{maxtocdepth}
+ sets the level at which clauses will be put into the ToC.
+ This command should be used before the \verb|\tableofcontents| command.
+\item \verb|\setsecnumdepth{|\meta{sec}\verb|}|\ixcom{setsecnumdepth}
+ sets the current level at which clauses will be numbered.
+ This command can be used anywhere after the preamble.
+\item \verb|\settocdepth{|\meta{sec}\verb|}|\ixcom{settocdepth}
+ sets the current level at which clauses will put into the ToC.
+ This command can be used anywhere after the preamble.
+\end{itemize}
+The value of the argument \meta{sec} can be any of the following:
+\texttt{clause}, \texttt{sclause}, \ldots, \texttt{sssssclause}.
+
+\begin{example}
+Using these commands, the previous example can also be coded as:
+\begin{verbatim}
+...
+\begin{document}
+\maxsecnumdepth{ssclause}
+\maxtocdepth{ssclause}
+...
+\sclause{The certain subclause}
+\settocdepth{sclause}
+...
+\ssclause{Numbered but not in ToC}
+...
+...
+\settocdepth{ssclause}
+\sclause{Following subclause}
+\end{verbatim}
+
+\end{example}
+
+
+
+\sclause{LaTeX environments and commands}
+
+ Many of the standard \latex{} environments and commands are available.
+In particular, all the normal mathematical typesetting capabilities are
+present.
+However, there are some additional environments and commands defined.
+
+\ssclause{Lists}
+
+ The standard \latex{} \verb|itemize|,\ixenv{itemize}
+\verb|enumerate|\ixenv{enumerate} and \verb|description|\ixenv{description}
+environments are provided. The labels in these lists, though, differ from
+those normally provided by \latex.
+
+\begin{note}
+The ISOD describes only a single level for an itemized list, being marked
+with either an em-dash or a bullet. The SD deprecates the bullet but
+provides four levels, each being marked with an em-dash. These are
+provided in the \file{isov2} class.
+\end{note}
+\begin{note}
+The ISOD allows for two levels of enumerated lists. The SD extends this
+to four levels, and these are provided in the \file{isov2} class.
+\end{note}
+
+\begin{example}
+The list environments provided are shown below as:\ixenv{itemize}
+\begin{verbatim}
+\begin{itemize}
+\item First level itemized element;
+ \begin{itemize}
+ \item Second level itemized element;
+ \begin{itemize}
+ \item Third level itemized element;
+ \begin{itemize}
+ \item Fourth level itemized element.
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+\end{itemize}
+\end{verbatim}
+
+\ixenv{enumerate}
+\begin{verbatim}
+\begin{enumerate}
+\item First level enumerated element;
+ \begin{enumerate}
+ \item Second level enumerated element;
+ \begin{enumerate}
+ \item Third level enumerated element;
+ \begin{enumerate}
+ \item Fourth level enumerated element.
+ \end{enumerate}
+ \end{enumerate}
+ \end{enumerate}
+\end{enumerate}
+\end{verbatim}
+
+\ixenv{description}
+\begin{verbatim}
+\begin{description}
+\item[Description] a description element. Note that a colon is
+ automatically added to the item label.
+\end{description}
+\end{verbatim}
+and they produce
+\begin{itemize}
+\item First level itemized element;
+ \begin{itemize}
+ \item Second level itemized element;
+ \begin{itemize}
+ \item Third level itemized element;
+ \begin{itemize}
+ \item Fourth level itemized element.
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+\end{itemize}
+
+\begin{enumerate}
+\item First level enumerated element;
+ \begin{enumerate}
+ \item Second level enumerated element;
+ \begin{enumerate}
+ \item Third level enumerated element;
+ \begin{enumerate}
+ \item Fourth level enumerated element.
+ \end{enumerate}
+ \end{enumerate}
+ \end{enumerate}
+\end{enumerate}
+
+\begin{description}
+\item[Description] a description element. Note that a colon is
+ automatically added to the item label.
+\end{description}
+
+\end{example} % end example
+
+\begin{example}
+ Here is a more complex set of lists:
+
+\begin{itemize}
+\item First level itemization
+ \begin{enumerate}
+ \item First level enumeration
+ \begin{itemize}
+ \item Second level itemization
+ \begin{enumerate}
+ \item Second level enumeration
+ \begin{itemize}
+ \item Third level itemization
+% \begin{enumerate} % At this point the list is too deeply nested.
+% \item Third level enumeration % For the TeXnophile this is
+% \item 3rd level enumeration % because the example environment
+% \end{enumerate} % is itself a list.
+ \item 3rd level itemization
+ \end{itemize}
+ \item 2nd level enumeration
+ \end{enumerate}
+ \item 2nd level itemization
+ \end{itemize}
+ \item 1st level enumeration
+ \end{enumerate}
+\item 1st level itemization
+\end{itemize}
+
+\end{example} % end example
+
+\begin{note}
+On occasion, \latex{} objects to a well formed list. Typically, this happens
+when a list has only one entry. \index{list!error}
+ The \latex{} error message is of the form:
+\begin{verbatim}
+! Something's wrong--perhaps a missing \item.
+\end{verbatim}
+Hitting the \verb|<return>| key usually gets \latex{} to run on happily.
+\end{note}% end note
+\begin{note}
+Similarly, you may get the message
+\begin{verbatim}
+! Too deeply nested
+\end{verbatim}
+Again, hit \verb|<return>| and processing should continue. However,
+the indentation of later lists may not be correct.
+\end{note} % end note
+
+
+\ssclause{Notes}
+
+
+ Two different kinds of environments are provided for typesetting notes.
+
+\sssclause{Numbered notes}
+
+ The environment
+\verb+\begin{note}+ \meta{text} \verb+\end{note}+\ixenv{note}
+produces a numbered note whose body consists
+of \meta{text}.
+
+\begin{anexample}
+The commands
+\begin{verbatim}
+\begin{note}Numbered note.\end{note}
+\end{verbatim}
+produce
+
+\begin{note}Numbered note.\end{note}
+\end{anexample}
+
+\sssclause{Isolated notes}
+
+ The environment
+\verb+\begin{anote}+ \meta{text} \verb+\end{anote}+\ixenv{anote}
+produces an un-numbered note whose body
+consists of \meta{text}.
+
+\begin{anexample}
+ The commands
+\begin{verbatim}
+\begin{anote}Plain note.\end{anote}
+\end{verbatim}
+produce
+
+\begin{anote}Plain note.\end{anote}
+\end{anexample} % end example
+
+
+\ssclause{Examples} \label{ssc:ex}
+
+ Two different kinds of environments are provided for typesetting
+examples.
+
+\sssclause{Numbered examples} \label{cl:numex}
+
+The environment \verb?\begin{example}? \meta{text} \verb?\end{example}?
+produces a numbered example whose body consists of \meta{text}.
+
+\begin{anexample}
+The commands
+\begin{verbatim}
+\begin{example}Numbered example. \label{ex:exref} \end{example}
+\end{verbatim}
+produce
+
+\begin{example}Numbered example. \label{ex:exref} \end{example}
+\end{anexample}
+
+\begin{anote}
+Numbered examples (and numbered notes) may be identified using the
+\verb?\label{...}?\ixcom{label} command, as exhibited in \eref{ex:exref}
+in \ref{cl:numex}, and then referred to by the
+\verb?\ref{...}?\ixcom{ref} command.
+\end{anote}
+
+\sssclause{Isolated examples}
+
+The environment \verb?\begin{anexample}? \meta{text} \verb?\end{anexample}?
+produces an un-numbered example whose body consists of \meta{text}.
+\ixenv{anexample}
+
+\begin{anexample}
+The commands
+\begin{verbatim}
+\begin{anexample}Isolated example.\end{anexample}
+\end{verbatim}
+produce
+
+\begin{anexample}Isolated example.\end{anexample}
+\end{anexample}
+
+
+
+\ssclause{Bibliographic references}
+
+ Two different kinds of environments are provided for bibliographic
+references. It should be noted that neither of these has anything to do with
+BibTeX.\index{BibTeX}
+
+\sssclause{Normative references}
+
+ Normative references are listed in the
+\verb|nreferences|\ixenv{nreferences} environment.
+
+ In this environment, bibliographic entries are denoted by either
+\verb+\isref{+\meta{ref}\verb+}{+\meta{title}\verb+}+ or by
+\verb+\disref{+\meta{ref}\verb+}{+\meta{title}\verb+}+. The
+\meta{ref} parameter is the number of the standard document and
+the \meta{title} parameter is the title of the standard.
+
+ Use the \verb|\isref|\ixcom{isref} command for published standards
+and the \verb|\disref|\ixcom{disref}
+ command for documents that have not yet been
+finally approved as a standard. This latter command automatically adds a
+footnote to the effect that the document is
+to be published.
+
+\begin{example}
+The \latex{} source for the references in clause~\ref{sec:nrefs} of
+this document is:
+\begin{verbatim}
+\begin{nreferences}
+\isref{ISO/IEC Directives, Part 2}{Rules for the structure and drafting of
+ International Standards. (Fourth edition, 2001)}
+...
+...
+\disref{ISO}{Camera-ready copy (CRC) ---
+ Submission requirements and ISO type specification.
+ (Version 1.0, 1996-04-26)}
+\end{nreferences}
+\end{verbatim}
+\end{example} % end example
+
+
+\sssclause{Informative references}
+
+ Informative bibliography elements are listed in the
+\verb|references|\ixenv{references} environment.
+Each element in the list is specified as
+\verb+\reference{+\meta{author}\verb+}{+\meta{title}\verb+}{+\meta{publisher}\verb+}+.\ixcom{reference}
+
+\begin{example}
+The \latex{} source for the bibliography in one version of this document was:
+\begin{verbatim}
+\infannex{Bibliography}
+\begin{references}
+\reference{LAMPORT, L.,}{\latex\/ A Document Preparation System,}%
+ {Addison-Wesley Publishing Co., 1986} \label{lamport}
+\reference{GOOSSENS, M., MITTELBACH, F. and SAMARIN, A.,}{%
+ The \latex\/ Companion,}
+ Addison-Wesley Publishing Co., 1994} \label{goosens}
+\reference{CHEN, P. and HARRISON, M.A.,}{Index preparation and
+ processing,}{Software--Practice and Experience, 19(9):897--915,
+ September 1988.} \label{chen}
+....
+\end{references}
+
+\end{verbatim}
+\end{example} % end example
+
+ Informative references may be cited in the text via the \latex{}
+\verb|\label|\ixcom{label} and \verb|\ref|\ixcom{ref}
+mechanism. Note that \verb|\cite|\ixcom{cite} is not available
+for references to bibliographic items. For the purposes of
+ISO documents, the command
+\verb+\bref{+\meta{ref}\verb+}+\ixcom{bref}
+is supplied which
+properly formats a bibliographic reference.
+
+\ssclause{Listing of scope items}
+
+ The \verb|inscope|\ixenv{inscope} and
+\verb|outofscope|\ixenv{outofscope}
+environments are provided for itemized listing of elements that
+are within and outside the scope of the standard. Each list
+element is introduced via the \verb|\item|\ixcom{item} command.
+Some boilerplate
+text is also printed that introduces the scope list.
+
+ The environments take one parameter, \meta{text}, that must read
+naturally in a sentence of the form: `The following are within/outside
+the scope of this \meta{text}:'. The non-parameterized part of this
+sentence is specified by the commands
+|\verb|\inscopename|\ixcom{inscopename} and
+\verb|\outofscopename|\ixcom{outofscopename}
+ respectively for `within' and `outside'.
+
+\begin{example}The following text was printed by the commands shown at the
+end of the example.
+
+\begin{inscope}{part of ISO~10303}
+\item use of \latex{} for preparing ISO standard documents;
+\item use of \latex{} for preparing ISO~10303 documents.
+\end{inscope}
+
+\begin{outofscope}{part of ISO~10303}
+\item use of \latex{} in general;
+\item use of other document preparation systems.
+\end{outofscope}
+
+\begin{verbatim}
+\begin{inscope}{part of ISO~10303}
+\item use of \latex{} for preparing ISO standard documents;
+\item use of \latex{} for preparing ISO~10303 documents.
+\end{inscope}
+
+\begin{outofscope}{part of ISO~10303}
+\item use of \latex{} in general;
+\item use of other document preparation systems.
+\end{outofscope}
+\end{verbatim}
+
+\end{example} % end example
+
+\ssclause{Listing of definitions}
+
+ The \verb|\begin{olddefinitions}| \ldots \verb|\end{olddefinitions}|
+\ixenv{olddefinitions} environment is provided for
+listing terms that have been defined within
+the normatively referenced documents. Each term in the list is specified as: \\
+\verb+\olddefinition{+\meta{phrase}\verb+}{+\meta{supplement}\verb+}+\ixcom{olddefinition}.
+
+
+ The \verb|\begin{definitions}| \ldots \verb|\end{definitions}|
+\ixenv{definitions} environment is provided for listing
+the definitions of terms specific to the
+document being written. Each term in the
+list is specified as: \ixcom{definition} \\
+\verb+\definition{+\meta{phrase}\verb+}{+\meta{definition text}\verb+}+.
+
+
+\begin{example}A listing of terms defined elsewhere could be specified as:
+
+\begin{verbatim}
+\begin{olddefinitions}
+\olddefinition{application protocol (AP)}{}
+\olddefinition{integrated resource}{}
+\end{olddefinitions}
+\end{verbatim}
+\end{example} % end example
+\begin{example}The definition listing earlier in this document was produced by:
+
+\begin{verbatim}
+\begin{definitions}
+\definition{boilerplate}{text whose wording is fixed ...}
+\definition{style file}{a set of \latex{} macros assembled
+ into a single file}
+...
+\end{definitions}
+\end{verbatim}
+\end{example} % end example
+
+
+\ssclause{Listing of abbreviations}
+
+ The \verb|\begin{symbols}| \ldots \verb|\end{symbols}|\ixenv{symbols}
+environment is provided for listing symbols
+and abbreviations. Each term (either symbol or abbreviation) in the list is
+specified as: \ixcom{symboldef} \\
+ \verb+\symboldef{+\meta{symbol}\verb+}{+\meta{definition text}\verb+}+.
+
+\begin{example}The list of abbreviations earlier in this document was specified as:
+\begin{verbatim}
+\begin{symbols}
+\symboldef{DIS}{Draft International Standard}
+\symboldef{IS}{International Standard}
+...
+\end{symbols}
+\end{verbatim}
+\end{example} % end example
+
+\sclause{Floating bodies}
+
+ \latex{} provides the \verb|figure|\ixenv{figure}
+and \verb|table|\ixenv{table} environments.
+Captions (produced by the \verb|\caption|\ixcom{caption}
+command) increment the figure or
+table number and add the caption to the relevant contents listing file.
+
+\index{floats} \index{floats!continuation}
+
+ The command
+\verb+\contcaption{+\meta{text}\verb+}+\ixcom{contcaption}
+may be used instead. This command neither increments the number nor adds
+anything to the listing files.
+
+\begin{example}
+The following code:
+\begin{verbatim}
+\begin{table}[tbp]
+\centering
+\caption{Example table in three parts} \label{tab:cont}
+\begin{tabular}{|c|c|} \hline
+\textbf{Col 1} & \textbf{Col 2} \\ \hline\hline
+A & 1 \\
+B & 2 \\ \hline
+\end{tabular}
+\end{table}
+
+\begin{table}[tbp]
+\centering
+\contcaption{(continued)}
+\begin{tabular}{|c|c|} \hline
+\textbf{Col 1} & \textbf{Col 2} \\ \hline\hline
+C & 3 \\
+D & 4 \\ \hline
+\end{tabular}
+\end{table}
+
+\begin{table}[tbp]
+\centering
+\contcaption{(concluded)}
+\begin{tabular}{|c|c|} \hline
+\textbf{Col 1} & \textbf{Col 2} \\ \hline\hline
+E & 5 \\
+F & 6 \\ \hline
+\end{tabular}
+\end{table}
+\end{verbatim}
+produces the three-part \tref{tab:cont}. \end{example} %end example
+
+\begin{table}[tbp]
+\centering
+\caption{Example table in three parts} \label{tab:cont}
+\begin{tabular}{|c|c|} \hline
+\textbf{Col 1} & \textbf{Col 2} \\ \hline\hline
+A & 1 \\
+B & 2 \\ \hline
+\end{tabular}
+\end{table}
+
+\begin{table}[tbp]
+\centering
+\contcaption{(continued)}
+\begin{tabular}{|c|c|} \hline
+\textbf{Col 1} & \textbf{Col 2} \\ \hline\hline
+C & 3 \\
+D & 4 \\ \hline
+\end{tabular}
+\end{table}
+
+\begin{table}[tbp]
+\centering
+\contcaption{(concluded)}
+\begin{tabular}{|c|c|} \hline
+\textbf{Col 1} & \textbf{Col 2} \\ \hline\hline
+E & 5 \\
+F & 6 \\ \hline
+\end{tabular}
+\end{table}
+
+\sclause{Title command}
+
+
+ The command to produce the title of the standard\ixcom{title}
+is
+\verb+\title{+\meta{intro}\verb+}{+\meta{main}\verb+}{+\meta{compl}\verb+}+.
+The command takes three parameters
+according to the three elements of the title as specified in the ISO directives.
+\begin{enumerate}
+\item \meta{intro} The introductory element of the title. This may be empty.
+\item \meta{main} The main element of the title.
+\item \meta{compl} The complementary element of the title. This may be empty.
+\end{enumerate}
+
+\begin{example}
+If this were actually meant to be an ISO standard, then the \latex{} source
+for the title of this document might be:
+\begin{verbatim}
+\title{Industrial automation systems and integration}%
+{Product data representation and exchange}%
+{Part 3456 : Documentation methods: The LaTeX style
+file reference manual}
+\end{verbatim}
+\end{example} % end example
+
+\begin{anote}There must be a space on either side of the colon separating the
+part number and the final part of the title.
+\end{anote}% end of note
+
+ Three other commands are used for setting the running header throughout the
+document. These shall be placed in the preamble.\index{preamble}
+
+ The command \verb+\standard{+\meta{number of standard}\verb+}+ is used to identify
+the standard.\ixcom{standard}
+
+ The command \verb+\yearofedition{+\meta{year}\verb+}+ is used to identify the
+\ixcom{yearofedition} year of the edition.
+
+ The command
+\verb+\languageofedition{+\meta{code}\verb+}+\ixcom{languageofedition}
+ is used to identify the language of the edition.
+
+\begin{example}
+This document is identified by:
+\begin{verbatim}
+\standard{LaTeX for standards}
+\yearofedition{1997}
+\languageofedition{(E)}
+\end{verbatim}
+\end{example} % end of example
+
+ As a convenience the vacuous command \verb+\extrahead+\ixcom{extrahead}
+is supplied which will add it's contents, if any, to the header. It may
+be used, for example, to add a document number to the header by
+\verb+\renewcommand{\extrahead}{Doc number}+. If \verb+\extrahead+ is
+modified it must be done in the preamble.
+
+ The \verb|\title|\ixcom{title} command sets the page numbering
+style to be arabic,
+starts a new page, numbered 1, and puts the title
+at the start of the page. It also puts the appropriate header at the top
+of the page, dependending on the particular combination of selected
+options.
+
+\begin{anote}
+Remember that you have to use the \verb|copyright|\ixopt{copyright}
+option to enable printing of copyright symbols and notices.
+\end{anote}
+
+\ssclause{The cover}
+
+ For publication, ISO want to be supplied with a document starting
+on page iii with the ToC. They supply the cover (page i) and page ii.
+
+It can often be useful to have a cover page for documents while they
+are in the process of being prepared for submittal to ISO.
+ The \verb+cover+\ixenv{cover} environment is provided for that
+purpose. The contents of the environment must not exceed one page and the
+contents must have a \verb+\clearpage+\ixcom{clearpage} immediately before
+the end. The \verb+cover+ environment also prints page ii, which has a
+copyright notice on it if the document is copyrighted.
+
+ For example, this document starts with:
+\begin{verbatim}
+\begin{cover}
+\vspace*{4in}
+\begin{center}
+\Huge\bfseries LaTeX for standards
+\end{center}
+\begin{center}
+\bfseries 2001/07/06
+\end{center}
+\begin{center}
+Peter Wilson \\
+\texttt{peter.r.wilson@boeing.com}
+\end{center}
+\clearpage
+\end{cover}
+\end{verbatim}
+
+\sclause{Cross referencing commands}
+
+ The usual \latex{} \verb+\label+\ixcom{label} and
+\verb+\ref+\ixcom{ref} commands are supported. The class also
+provides some formatted referencing commands in addition to \verb+\ref+.
+
+ The following commands are useful for referring to figures, clauses etc.
+Each takes a parameter that is the parameter of a \latex{} \verb|\label{}|
+command.
+
+\begin{itemize}
+\item The command \verb|`\aref{anx:lord}'|\ixcom{aref} prints `\aref{anx:lord}'
+ while \verb|`\ref{anx:lord}'|\ixcom{ref}
+ prints `\ref{anx:lord}'
+\item The command \verb|`\bref{lamport}'|\ixcom{bref} prints `\bref{lamport}'
+ while \verb|`\ref{lamport}'|\ixcom{ref}
+ prints `\ref{lamport}'
+\item The command \verb|`\cref{sec:nrefs}'|\ixcom{cref} prints `\cref{sec:nrefs}'
+ while \verb|`\ref{sec:nrefs}'|\ixcom{ref}
+ prints `\ref{sec:nrefs}'
+\item The command \verb|`\eref{sec:nrefs}'|\ixcom{eref} prints `\eref{sec:nrefs}'
+ while \verb|`\ref{sec:nrefs}'|\ixcom{ref}
+ prints `\ref{sec:nrefs}'
+\item The command \verb|`\fref{sec:nrefs}'|\ixcom{fref} prints `\fref{sec:nrefs}'
+ while \verb|`\ref{sec:nrefs}'|\ixcom{ref}
+ prints `\ref{sec:nrefs}'
+\item The command \verb|`\nref{sec:nrefs}'|\ixcom{nref} prints `\nref{sec:nrefs}'
+ while \verb|`\ref{sec:nrefs}'|\ixcom{ref}
+ prints `\ref{sec:nrefs}'
+\item The command \verb|`\tref{sec:nrefs}'|\ixcom{tref} prints `\tref{sec:nrefs}'
+ while \verb|`\ref{sec:nrefs}'|\ixcom{ref}
+ prints `\ref{sec:nrefs}'
+\item The command \verb|`\pref{sec:nrefs}'|\ixcom{pref} prints
+ `\pref{sec:nrefs}'.
+\end{itemize}
+
+
+
+
+\sclause{Heading commands}
+
+\ssclause{Foreword}
+
+ The \verb|foreword|\ixenv{foreword} environment specifies
+that a table of contents, list of
+figures and list of tables be produced, and starts a new unnumbered
+clause called Foreword.
+Formatting is one column style only and roman page numbering is set. The
+table of contents starts on page iii.
+
+ More precisely, the title of the clause is given by the value of
+\verb|\forewordname|\ixcom{forewordname} (see \aref{anx:extraiso}).
+
+\begin{note}
+The default style only lists level 1 clauses in the table of contents. If you
+need a more detailed listing, then put the command
+\verb|\setcounter{tocdepth}{<level #>}|\ixcom{setcounter}\ixtt{tocdepth}
+in the preamble.\index{preamble}
+For example \verb|\setcounter{tocdepth}{3}| will produce a contents
+listing down to the level of \verb|\ssclause| (see \tref{tab:sec} for
+the definitions of clause levels).
+\end{note} %end note
+
+ The command \verb+\fwdbp+\ixcom{fwdbp} prints the
+ISO specified boilerplate for
+the initial paragraphs of a foreword.
+
+ The boilerplate for a Technical Specification (ISO/TS) or a
+Publicly Available Specification (ISO/PAS) differs from that
+for a standard. The command \verb|\tspasfwdbp|\ixcom{tspasfwdbp}
+prints some of this boilerplate.
+\begin{example}
+In this document, \verb|\tspasfwdbp| prints:
+
+\tspasfwdbp
+\end{example}
+\begin{note}
+ The required paragraph immediately following this boilerplate is:
+
+ISO/PAS [or ISO/TS] \ldots was prepared by Technical Committee ISO/TC \ldots
+\end{note}
+
+%% The boilerplate for a Technical Report (TR) also differs from that for
+%%a standard.
+%%The command \verb|\trfwdbpi|\ixcom{trfwdbpi}
+%%prints some of this boilerplate.
+%%\begin{example}
+%%In this document, \verb|\trfwdbpi| prints:
+%%
+%%\trfwdbpi
+%%\end{example}
+
+ The \verb|\fwdnopatents|\ixcom{fwdnopatents}
+prints out the Foreword
+boilerplate paragraph concerning potential patent rights.
+\begin{example}
+In this document, \verb|\fwdnopatents| prints:
+\fwdnopatents
+\end{example}
+
+
+
+\ssclause{Introduction}
+
+ The \verb|introduction|\ixenv{introduction} environment
+starts a new unnumbered clause
+called `Introduction' with one column formatting.
+
+ More precisely, the title of the clause is given by the value of
+\verb|\introductionname|\ixcom{introductionname} (see \aref{anx:extraiso}).
+
+ The \verb|\intropatents|\ixcom{intropatents} prints some of the
+patent boilerplate that may be required in the Introduction.
+\begin{anexample}
+In this document, \verb|\intropatents| prints:
+\fwdnopatents
+\end{anexample}
+
+
+\ssclause{Scope clause}
+
+ The \verb|\scopeclause|\ixcom{scopeclause}
+command starts a new numbered clause called `Scope', which is given
+the label \verb|;i1|\index{;i1}.
+
+ More precisely, the title of the clause is given by the value of
+\verb|\scopename|\ixcom{scopename} (see \aref{anx:extraiso}).
+
+\ssclause{Normative references clause}
+
+ The \verb|\normrefsclause|\ixcom{normrefsclause}
+command starts a new numbered clause called `Normative references',
+which is given the label \verb|;i2|\index{;i2}.
+
+ More precisely, the title of the clause is given by the value of
+\verb|\normrefsname|\ixcom{normrefsname} (see \aref{anx:extraiso}).
+
+ The command
+\verb+\normrefbp{+\meta{document identifier}\verb+}+\ixcom{normrefbp}
+prints the
+ISO required text for the introduction to the listing of normative
+references. The \meta{document identifier} parameter must be such
+that it reads sensibly in a sentence of the form `\ldots constitute
+provisions of this \meta{document identifier}.'.
+
+\begin{example}Clause~\ref{sec:nrefs} in this document was started by the
+commands:
+\begin{verbatim}
+\normrefsclause \label{sec:nrefs}
+
+\normrefbp{manual}
+\begin{nreferences}
+...
+\end{verbatim}
+\end{example} % end example
+
+\ssclause{Definitions, symbols and abbreviations}
+
+ A variety of commands are provided that initiate new numbered
+clauses for definitions, symbols and abbreviations. Depending on the
+amount of material in these respective categories, one or more clauses
+may be used. The commands and clause titles are listed in \tref{tab:dsa}.
+The clause level headings are each given the label \verb|;i3|\index{;i3};
+one and only one of these headings should appear in a standard document.
+\ixcom{defclause} \ixcom{defname}
+\ixcom{symclause} \ixcom{symname}
+\ixcom{abbclause} \ixcom{abbname}
+\ixcom{defsymclause} \ixcom{defsymname}
+\ixcom{defabbclause} \ixcom{defabbname}
+\ixcom{symabbclause} \ixcom{symabbname}
+\ixcom{defsymabbclause} \ixcom{defsymabbname}
+\ixcom{defsubclause}
+\ixcom{symsubclause}
+\ixcom{abbsubclause}
+\ixcom{defsymsubclause}
+\ixcom{defabbsubclause}
+\ixcom{symabbsubclause}
+
+\begin{table}
+\centering
+\caption{Definition, symbol and abbreviation clause commands}
+\label{tab:dsa}
+\begin{tabular}{|l|c|l|l|} \hline
+\textbf{Command} & \textbf{Clause} & \textbf{Title} & \textbf{Default text} \\ \hline
+\verb|\defclause| & C & \verb|\defname| & \defname{} \\
+\verb|\symclause| & C & \verb|\symname| & \symname{} \\
+\verb|\abbclause| & C & \verb|\abbname| & \abbname{} \\
+\verb|\defsymclause| & C & \verb|\defsymname| & \defsymname{} \\
+\verb|\defabbclause| & C & \verb|\defabbname| & \defabbname{} \\
+\verb|\symabbclause| & C & \verb|\symabbname| & \symabbname{} \\
+\verb|\defsymabbclause| & C & \verb|\defsymabbname| & \defsymabbname{} \\
+\verb|\defsubclause| & SC & \verb|\defname| & \defname{} \\
+\verb|\symsubclause| & SC & \verb|\symname| & \symname{} \\
+\verb|\abbsubclause| & SC & \verb|\abbname| & \abbname{} \\
+\verb|\defsymsubclause| & SC & \verb|\defsymname| & \defsymname{} \\
+\verb|\defabbsubclause| & SC & \verb|\defabbname| & \defabbname{} \\
+\verb|\symabbsubclause| & SC & \verb|\symabbname| & \symabbname{} \\
+ \hline
+\multicolumn{4}{|l|}{%
+NOTE - In the table, C = clause, SC = subclause. } \\ \hline
+\end{tabular}
+\end{table}
+
+\sssclause{Heading labels}
+
+ Some of the defined clauses have associated \verb|\label|s. These
+heading commands and their \verb|\label| values are listed in
+\tref{tab:clabels}.
+
+\begin{table}
+\centering
+\caption{Defined clause headings with labels}
+\label{tab:clabels}
+\begin{tabular}{|l|c|} \hline
+\textbf{Command} & \textbf{Label} \\ \hline
+\verb|\scopeclause| & \texttt{;i1} \\
+\verb|\normrefsclause| & \texttt{;i2} \\
+\verb|\defclause| & \texttt{;i3} \\
+\verb|\symclause| & \texttt{;i3} \\
+\verb|\abbclause| & \texttt{;i3} \\
+\verb|\defsymclause| & \texttt{;i3} \\
+\verb|\defabbclause| & \texttt{;i3} \\
+\verb|\symabbclause| & \texttt{;i3} \\
+\verb|\defsymabbclause| & \texttt{;i3} \\
+ \hline
+\end{tabular}
+\end{table}
+
+
+
+\ssclause{Bibliography}
+
+ The command \verb|\bibannex|\ixcom{bibannex}
+ starts an informative section of the document entitled `Bibliography'.
+Or, more precisely,
+by the value of the \verb|\bibname|\ixcom{bibname}
+command.
+
+\sclause{Urls, etc}
+
+ The command \verb|\url{|\meta{text}\verb|}|\ixcom{url} can be used for
+typesetting \meta{text} as an email address.
+
+ The command \verb|\isourl{|\meta{text}\verb|}|\ixcom{isourl} can be
+used for
+typesetting \meta{text} as an URL address.
+
+\begin{example}
+The following code
+\begin{verbatim}
+The Email address is \url{joe@fred.mik} or the homepage is at
+\isourl{http://fred.mik/home/}.
+\end{verbatim}
+will be typeset as: \\
+The Email address is \url{joe@fred.mik} or the homepage is at
+\isourl{http://fred.mik/home/}.
+\end{example}
+
+
+\sclause{Version control commands}
+
+
+ A set of commands are provided to assist when revising a document.
+For these commands to flag the changes in the printed document the command
+\verb|\changemarkstrue|\ixcom{changemarkstrue}
+must be put in the preamble.\index{preamble}
+
+ In the commands described below, the \meta{number} parameter can be used
+to correlate changes in a document
+to some external (numbered) requirement for the change.
+
+\ssclause{Editorial}
+
+ The command \verb+\editorial{+\meta{number}\verb+}+\ixcom{editorial}
+flags an editorial change to the
+document text with ED$^{number}$.
+
+\begin{anexample}
+
+ Just to start things off, this is an original sentence, which should
+take up about a line.
+This example sentence contains an editorial \editorial{37}
+change. The command \verb|\editorial{37}| was included in the previous
+sentence.
+This sentence, though, has no changes marked in it and may be
+assumed to be unaltered from a prior version.
+\end{anexample} % end example
+
+\ssclause{Added}
+
+ The command
+\verb+\added{+\meta{text}\verb+}{+\meta{number}\verb+}+\ixcom{added}
+flags the
+position of the additional \meta{text} and highlights it.
+
+\begin{anexample}
+
+ Just to start things off, this is an original sentence, which should
+take up about a line.
+This example sentence contains \added{some added text}{27} in
+the middle of it. The command \verb|\added{some added text}{27}| was
+included in the previous sentence.
+This sentence, though, has no changes marked in it and may be
+assumed to be unaltered from a prior version.
+\end{anexample} % end example
+
+\ssclause{Deleted}
+
+ The command \verb+\deleted{+\meta{number}\verb+}+\ixcom{deleted}
+flags the position of deleted text.
+
+\begin{anexample}
+
+ Just to start things off, this is an original sentence, which should
+take up about a line.
+Some text was deleted \deleted{34} from the middle of this sentence.
+The command \verb|\deleted{34}| was included in the previous sentence.
+This sentence, though, has no changes marked in it and may be
+assumed to be unaltered from a prior version.
+\end{anexample} % end example
+
+\ssclause{Moved}
+
+ The command
+\verb+\moved{+\meta{text}\verb+}{+\meta{number}\verb+}+\ixcom{moved}
+flags the position of
+moved \meta{text} and highlights it.
+
+\begin{anexample}
+
+ Just to start things off, this is an original sentence, which should
+take up about a line.
+This sentence contains some \moved{moved}{81} text in the middle of it.
+The command \verb|\moved{moved}{81}| was included in the previous
+sentence.
+This sentence, though, has no changes marked in it and may be
+assumed to be unaltered from a prior version.
+\end{anexample} % end example
+
+\sclause{PDF}
+
+ The class provides a command, \verb|\ifpdf|\ixcom{ifpdf},
+to test whether or not the document is being processed by \latex{}
+or by pdf\latex. \latex{} processing produces a \file{.dvi} file which
+needs further processing, usually by \file{dvips}, to generate PostScript
+for printing. pdf\latex, however, directly generates a \file{.pdf} file
+which can then be printed.
+
+\begin{anexample}
+A document for processing by either \latex{} or pdf\latex{} could be
+started like:
+\begin{verbatim}
+\documentclass{iso}
+\usepackage{times}
+\ifpdf
+ \pdfoutput=1
+ \usepackage[pdftex]{graphicx}
+\else
+ \usepackage{graphicx}
+\fi
+....
+\end{verbatim}
+
+The \file{times} package is used in this example as PDF printers tend
+to handle
+PostScript fonts better than other kinds of fonts.
+\end{anexample}
+
+
+ The class also supports the use of the
+\file{hyperref}\ixpack{hyperref} package in conjunction with pdf\latex.
+Typically bookmark processing would be specifed by:
+\begin{verbatim}
+\ifpdf
+ \pdfoutput=1
+ \usepackage[plainpages=false,
+ pdfpagelabels,
+ bookmarksnumbered,
+ hyperindex=true
+ ]{hyperref}
+ ...
+\else
+ ...
+\fi
+....
+\end{verbatim}
+If the \verb|hyperindex=true| option to the \file{hyperref} package is used
+the the index has to be processed via the
+\textsc{MakeIndex}\index{makeIndex@{\sc MakeIndex}} program.
+
+%%%%%%%%%%%
+%%%\end{document}
+%%%%%%%%%%%
+
+\clause{The \file{isorot} package facility}
+
+ The \file{isorot}\ixpack{isorot} facility enables the rotation
+of document elements on
+a page. It uses the \latex{} \verb|\special|\ixcom{special}
+command to perform its
+effects, and thus can only be used
+with a limited number of dvi to postscript programs. The facilities
+available are summarized in \tref{tab4}.
+
+ \file{isorot} is a modification of the \file{rotation.sty} file
+created by Rahtz and Barroca~\bref{rahtz}. Further examples of the usage
+of their style are given in Goosens \emph{et al}~\bref{goosens}.
+
+\begin{note}Several examples of the effects of the commands described herein
+are shown. In many cases the results are not pretty. This should act as
+a warning that using rotational elements requires more care than
+most other document elements.\end{note} %end note
+
+\begin{sidewaystable}
+\ixcom{rotdriver} \ixcom{clockwise} \ixcom{counterclockwise}
+\ixcom{figuresright} \ixcom{figuresleft} \ixcom{rotcaption}
+\ixcom{controtcaption}
+\ixenv{sideways} \ixenv{turn} \ixenv{rotate} \ixenv{sidewaystable}
+\ixenv{sidewaysfigure} \ixenv{landscape}
+\centering
+\caption{The rotation facilities} \label{tab4}
+\begin{tabular}{|l|l|} \hline
+\textbf{Facility} & \textbf{Effect} \\ \hline
+\multicolumn{2}{|c|}{\textbf{Commands}} \\ \hline
+\verb|\rotdriver{<driver>}| &
+declare the name of the dvi to Postscript translator (default {\tt dvips}) \\
+\verb|\clockwise| &
+sets rotation direction clockwise for positive angles (the default) \\
+\verb|\counterclockwise| &
+sets rotation direction counterclockwise for positive angles \\
+\verb|\figuresright| &
+sets rotation direction for sideways floats counterclockwise (the default) \\
+\verb|\figuresleft| &
+sets rotation direction for sideways floats clockwise \\
+\verb|\rotcaption| &
+like the \verb|caption| command, but rotates the caption through 90 degrees \\
+\verb|\controtcaption| &
+like the \verb|contcaption| command, but rotates the caption through 90 degrees \\ \hline
+\multicolumn{2}{|c|}{\textbf{Environments}} \\ \hline
+\verb|sideways| &
+rotates the contents through 90 degrees counterclockwise \\
+\verb|turn| &
+rotates the contents through the given angle \\
+\verb|rotate| &
+rotates the contents through the given angle, but no space allowed for the result\\
+\verb|sidewaystable| &
+like the \verb|table| environment, but rotated 90 degrees \\
+\verb|sidewaystable*| &
+twocolumn version of \verb|sidewaystable| \\
+\verb|sidewaysfigure| &
+like the \verb|figure| environment, but rotated 90 degrees \\
+\verb|sidewaysfigure*| &
+twocolumn version of \verb|sidewaysfigure| \\
+\verb|landscape| &
+prints all enclosed pages in landscape mode \\ \hline
+\end{tabular}
+\end{sidewaystable}
+
+\sclause{Options}
+
+ The \file{isorot} facility has one option,
+namely \verb|debugshow|\ixopt{debugshow}. Calling this option produces
+messages on the screen and in the \file{log} file regarding the actions
+being taken.
+
+\begin{anote} This option is principally of interest to the maintainer
+of the facility. \end{anote}
+
+\sclause{DVI drivers}
+
+ The \file{isorot} facility supports only a limited number of
+dvi to postscript translators. The default translator is \emph{dvips}.
+ The following command must be put in
+the preamble of the document if \emph{dvips} is not being used:
+\verb|\rotdriver{<drivername>}|,\ixcom{rotdriver} where
+\verb|<drivername>| is one of the following:\footnote{I have been able to
+try the {\tt dvips} driver
+but not the others. If anyone has experience with the other drivers, or has
+extended the range of drivers, I would like to be given the results.} %end footnote
+
+\begin{enumerate}
+\item \verb|dvipdf| for the \emph{dvipdf}
+ translator;\ixtt{dvipdf}
+\item \verb|dvips| for Tom Rockicki's \emph{dvips}
+ translator;\ixtt{dvips}
+\item \verb|dvipsone| for Y\&Y's \emph{dvipsone}
+ translator;\ixtt{dvipsone}
+\item \verb|dvitops| for James Clark's \emph{dvitops}
+ translator;\ixtt{dvitops}
+\item \verb|dviwindo| for Y\&Y's \emph{dviwindo}
+ translator;\ixtt{dviwindo}
+\item \verb|pctex32| for Personal TeX's PC TeX for 32 bit Windows
+ (\emph{pctex32})
+ translator;\ixtt{pctex32}
+\item \verb|pctexps| for Personal TeX's PC PTI Laser/PS (\emph{pctexps})
+ translator;\ixtt{pctexps}
+\item \verb|pubps| for the Arbortext's \emph{pubps}
+ translator.\ixtt{pubps}
+\item \verb|textures| for Blue Sky's \emph{Textures}
+ translator;\ixtt{textures}
+
+\end{enumerate}
+
+
+\sclause{Rotational directions}
+
+ \file{isorot} enables the textual and other elements of a document
+to be rotated from their normal horizontal layout. In some cases elements
+can be rotated through arbitrary angles, whereas in others only 90 degree
+rotation is possible.
+
+ By default, a rotation through a positive number of
+degrees corresponds to a clockwise rotation. The command
+\verb|\counterclockwise|\ixcom{counterclockwise}
+sets the following rotations to be counterclockwise for positive angles.
+The command \verb|\clockwise|\ixcom{clockwise}
+sets the following rotations to be clockwise for positive angles.
+These commands can be used to toggle the rotational behavior.
+
+
+ Rotated floating environments are normally rotated so that they are
+printed with a counterclockwise rotation (i.e. the original bottom of the float
+is placed at the right hand side of the paper),
+which is what is normally required.
+This behavior can be altered by the command
+\verb|\figuresleft|,\ixcom{figuresleft}
+which will give the reverse effect. The command
+\verb|\figuresright|\ixcom{figuresright}
+will set the behavior to the default.
+These commands can be used to toggle the rotational behavior of
+floats.
+
+
+\sclause{Rotation of text}
+
+ The \verb|sideways|\ixenv{sideways}
+environment rotates the contents of the environment
+by 90 degrees counterclockwise, and leaves space for the result.
+
+ The \verb|\begin{turn}{|\meta{angle}\verb|}|\ixenv{turn}
+environment rotates the contents by the given number
+of degrees in the direction specified by the most recent of the
+\verb|\clockwise|\ixcom{clockwise} or
+\verb|\counterclockwise|\ixcom{counterclockwise}
+commands, leaving space for the result.
+
+ The \verb|\begin{rotate}{|\meta{angle}\verb|}|\ixenv{rotate}
+environment rotates the contents by the given number
+of degrees in the direction specified by the most recent of the
+\verb|\clockwise|\ixcom{clockwise} or
+\verb|\counterclockwise|\ixcom{counterclockwise}
+commands, but no arrangements are made for leaving space for the result.
+
+
+\begin{example}Some simple rotations: \label{ex:1}
+
+This code
+\begin{verbatim}
+Default rotation direction: \\
+A
+\begin{sideways}%
+B C
+\end{sideways}
+D E F G H I J K L M
+\begin{turn}{-90}%
+Minus 90 turn
+\end{turn}
+N O P
+\begin{rotate}{90}%
+Plus 90 rotate
+\end{rotate}
+Q \\
+and continue on with another line after rotations.
+\end{verbatim}
+produces the following (note how space is allowed for the \verb|turn|ed
+text, whereas the \verb|rotate|d text runs into the text below).
+
+Default rotation direction: \\
+A
+\begin{sideways}%
+B C
+\end{sideways}
+D E F G H I J K L M
+\begin{turn}{-90}%
+Minus 90 turn
+\end{turn}
+N O P
+\begin{rotate}{90}%
+Plus 90 rotate
+\end{rotate}
+Q \\
+and continue on with another line after rotations.
+\end{example} % end example
+\begin{example}This example shows the effect of using the
+\verb|\counterclockwise|\ixcom{counterclockwise}
+command.
+
+This code
+\begin{verbatim}
+Flip rotation direction: \\
+\counterclockwise
+A
+\begin{sideways}%
+B C
+\end{sideways}
+D E F G H I J K L M
+\begin{turn}{-90}%
+Minus 90 turn
+\end{turn}
+N O P
+\begin{rotate}{90}%
+Plus 90 rotate
+\end{rotate}
+Q \\
+Set rotation direction back to default value.
+\clockwise
+\end{verbatim}
+
+produces the following, which should be compared with example~\ref{ex:1}.
+
+Flip rotation direction: \\
+\counterclockwise
+A
+\begin{sideways}%
+B C
+\end{sideways}
+D E F G H I J K L M
+\begin{turn}{-90}%
+Minus 90 turn
+\end{turn}
+N O P
+\begin{rotate}{90}%
+Plus 90 rotate
+\end{rotate}
+Q \\
+Set rotation direction back to default value.
+\clockwise
+\end{example} % end example
+
+
+ Although the examples so far have only shown the rotation of text, boxes
+can also be rotated.
+
+\begin{example}Rotating a box.
+
+This code
+\begin{verbatim}
+\newsavebox{\foo}
+\newlength{\fool}
+\settowidth{\fool}{Hurrah for ISO.}
+\savebox{\foo}{\parbox{\fool}{Hurrah for ISO. Hurrah for ISO.
+ Hurrah for ISO. Hurrah for ISO.}}
+Start
+\usebox{\foo}
+\&
+\begin{turn}{-45}\usebox{\foo}\end{turn}
+\&
+\begin{turn}{45}\usebox{\foo}\end{turn}
+End
+\end{verbatim}
+produces:
+
+\newsavebox{\foo}
+\newlength{\fool}
+\settowidth{\fool}{Hurrah for ISO.}
+\savebox{\foo}{\parbox{\fool}{Hurrah for ISO. Hurrah for ISO.
+ Hurrah for ISO. Hurrah for ISO.}}
+Start
+\usebox{\foo}
+\&
+\begin{turn}{-45}\usebox{\foo}\end{turn}
+\&
+\begin{turn}{45}\usebox{\foo}\end{turn}
+End
+
+\end{example} %end example
+
+ Elements can be rotated through arbitrary angles, and also rotated
+elements can be nested inside other rotated elements.
+
+
+\begin{example}Repeated rotation:
+
+ The following example code shows that text can be rotated through any angle.
+The result is shown in \fref{fig:wheel}.
+\begin{verbatim}
+\newcount\prwc
+\newsavebox{\prwtext}
+\newdimen\prwspace
+\def\wheel#1#2{%
+ \savebox{\prwtext}{#1\begin{sideways}#2\end{sideways}}%
+ \prwspace\wd\prwtext%
+ \advance\prwspace by 1cm%
+ \centerline{%
+ \rule{0pt}{\prwspace}%
+ \rule[-\prwspace]{0pt}{\prwspace}%
+ \prwc=-180\loop\ifnum\prwc<180
+ \rlap{\begin{rotate}{\the\prwc}%
+ \rule{1cm}{0pt}\usebox{\prwtext}\end{rotate}}%
+ \advance\prwc by 20\repeat}}
+\begin{figure}
+\wheel{Express yourself ---}{Hooray for STEP!}
+\caption{Example rotation through multiple angles}
+\label{fig:wheel}
+\end{figure}
+\end{verbatim}
+
+\newcount\prwc
+\newsavebox{\prwtext}
+\newdimen\prwspace
+\def\wheel#1#2{%
+ \savebox{\prwtext}{#1\begin{sideways}#2\end{sideways}}%
+ \prwspace\wd\prwtext%
+ \advance\prwspace by 1cm%
+ \centerline{%
+ \rule{0pt}{\prwspace}%
+ \rule[-\prwspace]{0pt}{\prwspace}%
+ \prwc=-180\loop\ifnum\prwc<180
+ \rlap{\begin{rotate}{\the\prwc}%
+ \rule{1cm}{0pt}\usebox{\prwtext}\end{rotate}}%
+ \advance\prwc by 20\repeat}}
+\begin{figure}
+\vspace*{1cm}
+\wheel{Express yourself ---}{Hooray for STEP!}
+\vspace*{1cm}
+\caption{Example rotation through multiple angles}
+\label{fig:wheel}
+\end{figure}
+
+ Figures~\ref{fig:angles1} and~\ref{fig:angles2} also show rotations through a
+range of angles, both positive and negative.
+\end{example} %end example
+
+\begin{example}Nested rotations. \label{ex:sidetabular}
+
+This code
+\begin{verbatim}
+ Here is some text before a \verb|sideways| environment.
+And some more, and more and more garble gobble cluck
+click clack clock cluck and so on and on and on.
+\begin{center}
+\begin{sideways}
+\rule{1in}{0pt}
+\begin{tabular}{|lr|}
+\begin{rotate}{-45}\emph{Word}\end{rotate} & \begin{rotate}{-90}%
+Occurrences\end{rotate}
+\\
+\hline
+hello & 33 \\
+goodbye & 34 \\
+\hline
+\end{tabular}
+\end{sideways}
+\end{center}
+ Here is some text after a \verb|sideways| environment.
+ And some more, and more and more garble gobble cluck
+click clack clock cluck and so on and on and on.
+\end{verbatim}
+produces:
+
+ Here is some text before a \verb|sideways| environment.
+And some more, and more and more garble gobble cluck
+click clack clock cluck and so on and on and on.
+\begin{center}
+\begin{sideways}
+%\rule{1in}{0pt}
+\begin{tabular}{|lr|}
+\begin{rotate}{-45}\emph{Word}\end{rotate} & \begin{rotate}{-90}%
+Occurrences\end{rotate} \\ \hline
+hello & 33 \\
+goodbye & 34 \\ \hline
+\end{tabular}
+\end{sideways}
+\end{center}
+ Here is some text after a \verb|sideways| environment.
+ And some more, and more and more garble gobble cluck
+click clack clock cluck and so on and on and on.
+\end{example} %end example
+
+
+
+\sclause{Rotations of tables and figures}
+
+ The previous examples have demonstrated the rotation of textual elements.
+For instance, example~\ref{ex:sidetabular} shows that tabular material can be rotated using
+the \verb|sideways|\ixenv{sideways}
+environment. (Actually, any of the previously
+mentioned environments may be used.)
+Two further environments are provided which rotate a \latex{} float through
+90 degrees. These are:
+\begin{itemize}
+\item \verb|sidewaystable|\ixenv{sidewaystable}, which
+ corresponds to the standard \latex{} \verb|table|\ixenv{table}
+ environment; and
+\item \verb|sidewaysfigure|\ixenv{sidewaysfigure}, which
+ corresponds to the standard \latex{} \verb|figure|\ixenv{figure}
+ environment.
+\end{itemize}
+There are also starred versions of these, namely
+\verb|sidewaystable*|\ixenvs{sidewaystable} and
+\verb|sidewaysfigure*|\ixenvs{sidewaysfigure}, for use in twocolumn mode.
+However, the correspondence with the standard environments is not strictly
+complete as a sideways float is alway placed on a page by itself.
+
+ The direction of rotation may be controlled by the
+\verb|\figuresright|\ixcom{figuresright} and
+\verb|\figuresleft|\ixcom{figuresleft} commands.
+
+\begin{example}Table~\ref{tab4} is produced by the code below: \label{ex:4}
+
+\begin{verbatim}
+\begin{sidewaystable}
+\centering
+\caption{The rotation facilities} \label{tab4}
+\begin{tabular}{|l|l|} \hline
+\textbf{Facility} & \textbf{Effect} \\ \hline
+\multicolumn{2}{|c|}{\textbf{Commands}} \\ \hline
+\verb|\rotdriver{<driver>}| &
+declare the name of the dvi to Postscript translator (default {\tt dvips}) \\
+......
+\verb|sidewaysfigure| &
+like the \verb|figure| environment, but rotated 90 degrees \\ \hline
+\end{tabular}
+\end{sidewaystable}
+\end{verbatim}
+\end{example} % end example
+
+
+
+\sclause{Rotation of float captions and bodies}
+
+ Sometimes it may be useful to rotate a caption independently of the
+rotation of a figure or table. The command
+\verb|\rotcaption|\ixcom{rotcaption} is analogous
+to the normal \verb|\caption|\ixcom{caption} command,
+and inserts the caption rotated
+by 90~degrees. There is also the companion command
+\verb|\controtcaption|\ixcom{controtcaption}, analagous to the
+\verb|\contcaption|\ixcom{contcaption} command,
+for continuation captions.
+
+%\newsavebox{\picbox}
+
+\begin{figure}
+\centering
+\caption{Example figure with a standard caption.} \label{fig:nocrot}
+\setlength{\unitlength}{0.2in}
+\footnotesize
+\begin{picture}(17,2)
+\thicklines
+\put(0,0){\begin{picture}(4,1)
+ \put(1.5,0.5){\oval(3,1)}
+ \put(1.5,0.5){\makebox(0,0){2,5 (1)}}
+ \put(3,0.5){\line(1,0){1.0}}
+ \put(4.25,0.5){\circle{0.5}}
+ \end{picture}}
+
+\put(4.5,0){\begin{picture}(8,1)
+ \put(0,0){\dashbox{0.25}(4,1){date}}
+ \put(4,0.5){\line(1,0){3.5}}
+ \put(7.75,0.5){\circle{0.5}}
+ \put(6,1){\makebox(0,0){A[1:3]}}
+ \end{picture}}
+
+\put(12.5,0){\begin{picture}(4,1)
+ \put(0,0){\framebox(4,1){INTEGER}}
+ \put(3.75,0){\line(0,1){1}}
+ \end{picture}}
+\end{picture}
+\normalsize
+\setlength{\unitlength}{1pt}
+\end{figure}
+
+
+\begin{example}Float with a regular caption.
+
+Figure~\ref{fig:nocrot} is produced by the code below:
+\begin{verbatim}
+\begin{figure}
+\centering
+\caption{Example figure with a standard caption.} \label{fig:nocrot}
+\setlength{\unitlength}{0.2in}
+\footnotesize
+\begin{picture}(17,2)
+\thicklines
+\put(0,0){\begin{picture}(4,1)
+ \put(1.5,0.5){\oval(3,1)}
+ \put(1.5,0.5){\makebox(0,0){2,5 (1)}}
+ \put(3,0.5){\line(1,0){1.0}}
+ \put(4.25,0.5){\circle{0.5}}
+ \end{picture}}
+\put(4.5,0){\begin{picture}(8,1)
+ \put(0,0){\dashbox{0.25}(4,1){date}}
+ \put(4,0.5){\line(1,0){3.5}}
+ \put(7.75,0.5){\circle{0.5}}
+ \put(6,1){\makebox(0,0){A[1:3]}}
+ \end{picture}}
+\put(12.5,0){\begin{picture}(4,1)
+ \put(0,0){\framebox(4,1){INTEGER}}
+ \put(3.75,0){\line(0,1){1}}
+ \end{picture}}
+\end{picture}
+\normalsize
+\setlength{\unitlength}{1pt}
+\end{figure}
+\end{verbatim}
+\end{example} % end example
+
+\begin{example}Float with a rotated caption.
+
+Figure~\ref{fig:crot} is produced by the code below:
+\begin{verbatim}
+\begin{figure}
+\centering
+\rotcaption{Figure~\protect\ref{fig:nocrot} with a rotated caption.}
+ \label{fig:crot}
+\setlength{\unitlength}{0.2in}
+\footnotesize
+\begin{picture}(17,2)
+...
+\end{picture}
+\normalsize
+\setlength{\unitlength}{1pt}
+\end{figure}
+\end{verbatim}
+\end{example} % end example
+
+
+\begin{figure}
+\centering
+\rotcaption{Figure~\protect\ref{fig:nocrot} with a rotated caption.}
+ \label{fig:crot}
+\setlength{\unitlength}{0.2in}
+\footnotesize
+\begin{picture}(17,2)
+\thicklines
+\put(0,0){\begin{picture}(4,1)
+ \put(1.5,0.5){\oval(3,1)}
+ \put(1.5,0.5){\makebox(0,0){2,5 (1)}}
+ \put(3,0.5){\line(1,0){1.0}}
+ \put(4.25,0.5){\circle{0.5}}
+ \end{picture}}
+\put(4.5,0){\begin{picture}(8,1)
+ \put(0,0){\dashbox{0.25}(4,1){date}}
+ \put(4,0.5){\line(1,0){3.5}}
+ \put(7.75,0.5){\circle{0.5}}
+ \put(6,1){\makebox(0,0){A[1:3]}}
+ \end{picture}}
+\put(12.5,0){\begin{picture}(4,1)
+ \put(0,0){\framebox(4,1){INTEGER}}
+ \put(3.75,0){\line(0,1){1}}
+ \end{picture}}
+\end{picture}
+\normalsize
+\setlength{\unitlength}{1pt}
+\end{figure}
+
+ As can be seen from \fref{fig:crot} the advisability of rotating a caption
+depends on the size of the body of the float. It may be better in certain
+cases to leave the caption in its regular position and rotate the body of
+the float instead.
+
+\def\prwrot#1{%
+\settowidth{\fool}{ISOROT}
+\savebox{\foo}{\parbox{\fool}{ISOROT ISOROT ISOROT ISOROT}}%
+\framebox{---\begin{turn}{#1}\framebox{\usebox{\foo}}\end{turn}---}}%
+\def\degrees{{\small$^{o}$}}
+
+\begin{figure}
+\centering
+\begin{tabular}{|c|c|c|} \hline
+\prwrot{0} &\prwrot{-40}&\prwrot{-80}\\
+0\degrees & -40\degrees & -80\degrees \\ \hline
+\prwrot{-120}&\prwrot{-160}&\prwrot{-200}\\
+-120\degrees & -160\degrees & -200\degrees \\ \hline
+\prwrot{-240}&\prwrot{-280}&\prwrot{-320}\\
+-240\degrees & -280\degrees & -320\degrees \\ \hline
+\end{tabular}
+\caption{Rotation of paragraphs between 0 and -320 degrees} \label{fig:angles1}
+\end{figure}
+
+
+\begin{example}Regular caption and float.
+
+Figure~\ref{fig:angles1} is a regular figure and caption. It is produced by
+the following code:
+\begin{verbatim}
+\def\prwrot#1{%
+\settowidth{\fool}{ISOROT}
+\savebox{\foo}{\parbox{\fool}{ISOROT ISOROT ISOROT ISOROT}}%
+\framebox{---\begin{turn}{#1}\framebox{\usebox{\foo}}\end{turn}---}}%
+\def\degrees{{\small$^{o}$}}
+\end{verbatim}
+
+\begin{verbatim}
+\begin{figure}
+\centering
+\begin{tabular}{|c|c|c|} \hline
+\prwrot{0} &\prwrot{-40}&\prwrot{-80}\\
+0\degrees & -40\degrees & -80\degrees \\ \hline
+\prwrot{-120}&\prwrot{-160}&\prwrot{-200}\\
+-120\degrees & -160\degrees & -200\degrees \\ \hline
+\prwrot{-240}&\prwrot{-280}&\prwrot{-320}\\
+-240\degrees & -280\degrees & -320\degrees \\ \hline
+\end{tabular}
+\caption{Rotation of paragraphs between 0 and -320 degrees} \label{fig:angles1}
+\end{figure}
+\end{verbatim}
+\end{example} % end example
+
+
+\begin{figure}
+\centering
+\begin{sideways}
+\begin{tabular}{|c|c|c|} \hline
+\prwrot{0} &\prwrot{40}&\prwrot{80}\\
+0\degrees & 40\degrees & 80\degrees \\ \hline
+\prwrot{120}&\prwrot{160}&\prwrot{200}\\
+120\degrees & 160\degrees & 200\degrees \\ \hline
+\prwrot{240}&\prwrot{280}&\prwrot{320}\\
+240\degrees & 280\degrees & 320\degrees \\ \hline
+\end{tabular}
+\end{sideways}
+\caption[Rotation of paragraphs between 0 and 320 degrees]%
+ {Rotation of paragraphs between 0 and 320 degrees (with figure
+ body turned sideways)}\label{fig:angles2}
+\end{figure}
+
+\begin{example}Regular caption and rotated float body.
+
+Figure~\ref{fig:angles2} is a regular figure and caption where the figure
+contents have been rotated. It was produced by the following code.
+\begin{verbatim}
+\begin{figure}
+\centering
+\begin{sideways}
+\begin{tabular}{|c|c|c|} \hline
+\prwrot{0} &\prwrot{40}&\prwrot{80}\\
+0\degrees & 40\degrees & 80\degrees \\ \hline
+\prwrot{120}&\prwrot{160}&\prwrot{200}\\
+120\degrees & 160\degrees & 200\degrees \\ \hline
+\prwrot{240}&\prwrot{280}&\prwrot{320}\\
+240\degrees & 280\degrees & 320\degrees \\ \hline
+\end{tabular}
+\end{sideways}
+\caption[Rotation of paragraphs between 0 and 320 degrees]%
+ {Rotation of paragraphs between 0 and 320 degrees (with figure
+ body turned sideways)}\label{fig:angles2}
+\end{figure}
+\end{verbatim}
+\end{example} % end example
+
+\begin{landscape}
+\sclause{Landscaping}
+
+ \latex{} normally prints in portrait mode.
+The \verb|landscape|\ixenv{landscape} environment
+prints all the enclosed stuff in landscape mode, except for headers
+and footers which are not rotated.
+
+\begin{example} Landscaping
+
+The source for this part of the document is:
+\begin{verbatim}
+\begin{landscape}
+\sclause{Landscaping}
+
+ \latex{} normally prints in portrait mode. The ...
+...
+... long, wide tables.
+\end{landscape}
+\end{verbatim}
+\end{example}
+
+ The environment starts by clearing the current page and then switches
+to portrait mode. At the end of the environment the current page is cleared
+and the next page is back to normal portrait mode.
+
+ All the other rotation commands and environments produce boxes and
+\latex{} will not break a box across a page. The \verb|landscape| environemt
+does not produce a box and so many pages can be printed in landscape mode
+with \latex{} taking care of the page breaking for you.
+
+ Landscape mode is not particularly useful for normal text as the
+lines are far too long for comfortable reading. Where it can be useful
+is where you have a table that is too wide to fit on a portrait page, so
+needs to be rotated, yet is also too long to fit on the page when it is
+rotated. The \file{supertabular}\ixpack{supertabular},
+the \file{longtable}\ixpack{longtable},
+and the \file{xtab}\ixpack{xtab}
+packages provide facilities for automatically breaking long tables across
+pages. Any of these can be used in conjunction with landscaping to both
+rotate and automatically page break long, wide tables.
+\end{landscape}
+
+\clause{The \file{xtab} package facility}
+
+ The \file{xtab} package is fully documented in \bref{bib:xtab}.
+This clause provides an overview of the package.
+
+ The \file{xtab}\ixpack{xtab} package facility is an extension
+of the \file{supertabular}\ixpack{supertabular} package originally
+developed by Johannes Braams and Theo Jurriens.
+The extension provides for the specification of a header to
+go on the last page of a long table.
+
+ The principal commands available are given in \tref{tab:xtab}.
+\ixenv{xtabular}
+\ixenv{mpxtabular}
+\ixcom{topcaption}
+\ixcom{bottomcaption}
+\ixcom{tablecaption}
+\ixcom{tablefirsthead}
+\ixcom{tablehead}
+\ixcom{tablelasthead}
+\ixcom{notablelasthead}
+\ixcom{tabletail}
+\ixcom{tablelasttail}
+
+\topcaption{The principal xtab package commands} \label{tab:xtab}
+\tablefirsthead{\hline \multicolumn{1}{|c|}{\textbf{Command}} &
+ \multicolumn{1}{c|}{\textbf{Effect}} \\ \hline }
+\tablehead{\multicolumn{2}{c}%
+ {{\captionsize\bfseries \tablename\ \thetable{} -- continued from previous page}} \\
+ \hline \multicolumn{1}{|c|}{\textbf{Command}} &
+ \multicolumn{1}{c|}{\textbf{Effect}} \\ \hline }
+\tablelasthead{\multicolumn{2}{c}%
+ {{\captionsize\bfseries \tablename\ \thetable{} -- concluded from previous page}} \\
+ \hline \multicolumn{1}{|c|}{\textbf{Command}} &
+ \multicolumn{1}{c|}{\textbf{Effect}} \\ \hline }
+\tabletail{\hline \multicolumn{2}{|r|}{{Continued on next page}} \\ \hline}
+\tablelasttail{\\ \hline \hline}
+
+\begin{center}
+\begin{xtabular}{|l|p{0.5\textwidth}|}
+\verb|\begin{xtabular}{...}| & This is equivalent to the normal
+ \verb|\begin{tabular}{...}| environment.
+ You supply the specification of the columns
+ just as for the normal tabular environment.
+ All commands that can be used within a tabular
+ environment can also be used within
+ the xtabular environment.
+ \\
+ &
+ Unlike the tabular environment which prevents page breaking
+within the tabular, the xtabular allows page breaking, so that
+tabulars can extend automatically across several pages. Xtabular
+starts off with a tabular environment and checks the amount of
+space left on the page as it adds each row to the tabular.
+If the space left on the page is too short for another row, then
+it ends the current tabular, performs a page break and starts
+another tabular on the following page. This process is repeated
+until all the rows have been output.
+ \\
+ &
+ There are special commands for captioning a xtabular as a
+table, and also elements can be automatically inserted after each
+(internal) \verb|\begin{tabular}| and immediately before each
+\verb|\end{tabular}|.
+ \\
+ &
+ Do not put a xtabular in a table environment, as the table
+environment keeps its contents on a single page (presumably you
+are using xtabular because its contents are longer than
+one page).
+ \\
+\verb|\end{xtabular}| & End the xtabular environment. \\ \hline
+\verb|\begin{mpxtabular}| & Like the xtabular environment
+except that each `page' is put into a \verb|minipage| first. Thus
+it is possible to have footnotes inside an \verb|mpxtabular|.
+The footnote text is printed at the end of each page.
+ \\
+\verb|\end{mpxtabular}| & End the mpxtabular environment. \\ \hline
+ & \textbf{Note:} If any of the following commands
+ are used, then they should be placed
+ before the particular xtabular
+ environment that they apply to. \\
+\verb|\topcaption{...}| & A command to provide a caption for the
+ table. The caption is placed at the top
+ of the table. \\
+\verb|\bottomcaption{...}| & A command to provide a caption for the
+ table. The caption is placed at the bottom
+ of the table. \\
+\verb|\tablecaption{...}| & A command to provide a caption for the
+ table. The caption is placed at the default
+ position, which is at the top
+ of the table.
+ \\
+ &
+ \textbf{Notes:} You cannot use the \verb|caption|
+ command but you can put a label after
+ any of these captioning commands. If you
+ want captioning, the command must be specified
+ before the start of the xtabular environment.
+ \\
+ &
+ The \verb|\...caption{}| command(s) remain
+ in effect until changed by another
+ \verb|\...caption| command.
+ \\
+\verb|\tablefirsthead{...}| & Defines the contents of the first occurence
+ of the tabular head. The tabular head is some
+ special treatment of the first row in the table.
+ This command is optional.
+ If used, the header must be closed by the
+ end of line command for tabulars (e.g., \verb|\\|). \\
+\verb|\tablehead{...}| & Defines the contents of the table head on
+ subsequent pages.
+ \\
+ &
+ For example, you might want to note that
+ this is a continuation of the table on
+ the previous page, as well as repeating
+ any column headings that were given
+ at the start of the xtabular by
+ \verb|\tablefirsthead|.
+ \\
+\verb|\tablelasthead{...}| & Defines the contents of the table head
+ on the last page of the table.
+ \\
+ &
+ This works by writing to the \file{.aux} file the number of
+pages that the xtabular extends over. When the xtabular
+comes to the last tabular (which it calculates from the
+information it reads from the \file{.aux} file) it replaces the
+contents of \verb|\tablehead| by the contents of \verb|\tablelasthead|.
+ \\
+ &
+It makes no attempt to measure the amount of space used by the last
+table head, so if this is more than for \verb|tablehead| then the
+tabular might be a litle too long.
+ \\
+ &
+ In any case, when using this command, the document has to
+be LaTeXed at least twice, just as it has to be to resolve
+references and so on.
+ \\
+\verb|\notablelasthead| & Switches off the last \verb|\tablelasthead|.
+ A \verb|tablelasthead| stays in effect until
+ overwritten by a new \verb|\tablelasthead|
+ or cancelled by this command.
+ \\
+\verb|\tabletail{...}| & The contents of this command are inserted before
+ the \verb|\end{tabular}| on each page except
+ for the last page of the table.
+ \\
+ &
+ For example, you might want to note that the
+ table is continued on the next page.
+ \\
+\verb|\tablelasttail{...}| & The contents of this command are inserted before
+ the final \verb|\end{tabular}| of the table.
+ \\
+ &
+ For example, you might want to note that
+ this is where the table ends.
+\end{xtabular}
+\end{center}
+
+ As well as the \verb|xtabular|\ixenv{xtabular} and
+\verb|mpxtabular|\ixenv{mpxtabular} environments there are
+the corresponding starred versions
+(i.e., \verb|xtabular*|\ixenvs{xtabular} and
+ \verb|mpxtabular*|\ixenvs{mpxtabular}) for use in
+two column\ixopt{twocolumn} mode where the table is meant to span
+both columns.
+
+\begin{example} \label{ex:xtab} Table~\ref{tab:xtab} was produced by
+the following code:
+\begin{verbatim}
+\topcaption{The principal xtab package commands} \label{tab:xtab}
+\tablefirsthead{\hline \multicolumn{1}{|c|}{\textbf{Command}} &
+ \multicolumn{1}{c|}{\textbf{Effect}} \\ \hline }
+\tablehead{\multicolumn{2}{c}%
+ {{\captionsize\bfseries \tablename\ \thetable{} --
+ continued from previous page}} \\
+ \hline \multicolumn{1}{|c|}{\textbf{Command}} &
+ \multicolumn{1}{c|}{\textbf{Effect}} \\ \hline }
+\tablelasthead{\multicolumn{2}{c}%
+ {{\captionsize\bfseries \tablename\ \thetable{} --
+ concluded from previous page}} \\
+ \hline \multicolumn{1}{|c|}{\textbf{Command}} &
+ \multicolumn{1}{c|}{\textbf{Effect}} \\ \hline }
+\tabletail{\hline \multicolumn{2}{|r|}{{Continued on next page}} \\ \hline}
+\tablelasttail{\\ \hline \hline}
+
+\begin{center}
+\begin{xtabular}{|l|p{0.5\textwidth}|}
+\verb|\begin{xtabular}{...}| & This is equivalent to the normal
+ \verb|\begin{tabular}{...}| environment.
+ You supply the specification of the columns
+ just as for the normal tabular environment.
+ All commands that can be used within a tabular
+ environment can also be used within
+ the xtabular environment.
+ \\
+ &
+ Unlike the tabular environment which prevents page breaking
+within the tabular, the xtabular allows page breaking, so that
+tabulars can extend automatically across several pages. Xtabular
+... ... ...
+\verb|\tablelasttail{...}| & The contents of this command are inserted before
+ the final \verb|\end{tabular}| of the table.
+ \\
+ &
+ For example, you might want to note that this is where
+the table ends.
+\end{xtabular}
+\end{center}
+\end{verbatim}
+\end{example}
+
+ The table is only broken between rows --- a row will not be split
+across pages. This can lead to some bad page breaks, especially if
+there are rows with a large vertical height (like some in \tref{tab:xtab}).
+It is best to keep rows not too tall.
+
+The command
+\verb|\shrinkheight{|\meta{length}\verb|}|\ixcom{shrinkheight} may be
+used after the first \verb|\\| in the table to modify the allowed
+height of the table on each page. A positive \meta{length} decreases
+the allowed space per page and a negative \meta{length} increases
+the allowed space.
+
+\begin{example}
+This example illustrates changing the natural height of the pages
+in a \verb|xtabular| and its relatives.
+
+\verb|\shrinkheight{2\baselineskip}| decreases the space per page by
+two lines.
+
+\verb|\shrinkheight{-\baselineskip}| increases the space per page by
+one line.
+\end{example}
+
+ You have to specify the font used for the
+\verb|\tablehead|\ixcom{tablehead} and
+\verb|tablelasthead|\ixcom{tablelasthead} yourself.
+Within ISO documents, captions shall
+be in bold font. The \file{iso}\ixclass{iso} class also provides
+a command for
+setting the size of the font used in captions, namely
+\verb|\captionsize|\ixcom{captionsize}.
+Note that this is used in~\eref{ex:xtab}.
+ The value of \verb|\captionsize|\ixcom{captionsize} is set by the
+class.
+
+\sclause{Options}
+
+ The \file{xtab} package has three options which control the amount of
+information that is written to the \file{.log}\index{file!.log} file. The
+options are:
+\begin{enumerate}
+\item The option \verb|errorshow|\ixopt{errorshow} (the default) does not
+ write any extra information;
+\item The option \verb|pageshow|\ixopt{pageshow} writes information
+ about when and why \verb|xtabular| decides to produce a new page;
+\item The option \verb|debugshow|\ixopt{debugshow}, which also includes
+ \verb|pageshow|, additionally writes information about each line
+ that is added to the table.
+\end{enumerate}
+
+ Under normal circumstances \file{xtab} is used without invoking any
+option. The \verb|pageshow| option may be useful when attempting to cure
+a bad page break. The \verb|debugshow| option, as its name implies, is
+principally of use to the \file{xtab} developer.
+
+ Independently of the options, the command
+\verb|\sstraceon|\ixcom{sstraceon} may be used at any
+point in the document to turn on printing of \verb|debugshow| data. This
+can be turned off later by the \verb|\sstraceoff|\ixcom{sstraceoff}
+command, which will stop all \verb|...show| printing.
+
+\sclause{Caveats}
+
+ The authors of the original \file{supertabular} package note that
+it has the following weaknesses:
+\begin{itemize}
+\item Sometimes the body of the first page of a table gets moved to the
+following, leaving the caption behind;
+\item Sometimes the last page of a table consists of just the head and foot
+with no contents.
+\end{itemize}
+The weaknesses are caused by trying to guess where \tex{} will put a page
+break. The package has to guesstimate how long the next entry will be in
+the table and, if it is too long for the available space, it puts in its
+own page break. If its guess is off too much in one direction, \tex{} will
+break the page unexpectadly; if its off in the other direction
+\file{supertabular} will put in an unnecessary page break.
+
+ The \file{xtab} package has reduced, but perhaps not entirely
+eliminated, these weaknesses. Some hand tuning may still be required.
+
+
+%%%%%%%%%
+%%%%\end{document}
+%%%%%%%%%
+
+
+
+\clause{The \file{askinc} package facility}
+
+ The \file{askinc}\ixpack{askinc} package facility contains \latex{}
+code to enable the interactive
+input of files. This functionality is a cross between the \latex{}
+\verb|\include|\ixcom{include} and
+\verb|\includeonly|\ixcom{includeonly} commands, and the
+\verb|\input|\ixcom{input} command.
+
+In the body of the root source document, use the command
+\verb+\infile{+\meta{file}\verb+}+\ixcom{infile}
+for each \meta{file}
+that comprises the document. That is, the command \verb|\infile| is similar
+to the \verb|\input|\ixcom{input} and
+\verb|\include|\ixcom{include} commands.
+
+ When \latex ing the root document, you will be asked to provide a
+comma-separated list of the \verb|\infile|s to be processed (similar to the
+argument to the \verb|\includeonly|\ixcom{includeonly}
+command). If you want all the files to be processed, just hit the
+\verb|<RETURN>| key (or its equivalent).
+
+ Like \verb|\include|d files, a file that is \verb|\infile|d into a
+document shall not itself contain another \verb|\infile|d file.
+
+\begin{example}The following root file has three files that are \verb|\infile|d.
+\begin{verbatim}
+\documentclass[...]{...}
+\usepackage{askincv}
+% other preamble stuff
+\begin{document}
+% perhaps some stuff
+\infile{file1}
+\infile{file2}
+\infile{file3}
+% perhaps more stuff
+\end{document}
+\end{verbatim}
+\end{example} % end example
+
+\clause{The \file{hyphenat} package facility} \label{sec:uschyp}
+
+ The \file{hyphenat} package is fully described in~\bref{bib:hyphenat}.
+This clause provides an overview of the portions of the package that are
+most relevant to typesetting ISO standards.
+
+ In \latex{} if you need to use the underscore (\verb|_|)
+character in normal text, for example when documenting identifiers
+in a programming language code, you have to use the
+\verb|\_|\index{_ /@\verb?\_?} command,
+as in \verb|a\_multiword\_identifier|. \latex{} normally treats
+\verb|_|\index{_@\verb?_? (underscore)} as a math mode subscript command.
+Further, if you want
+the possibility of hyphenation\index{hyphenation}
+at the position of an underscore
+you have to use the command pairing
+\verb|\_\-|;\index{_ /@\verb?\_?}\ixcom{-} this has the side
+effect of disabling normal hyphenation in any succeeding `word' in
+the identifier.
+
+ The \file{hyphenat}\ixpack{hyphenat} package facility redefines the
+\verb|\_|\index{_ /@\verb?\_?} command
+so that hyphenationen is automatically enabled at the position
+of the underscore and in all succeeding words in the identifier.
+
+
+\begin{note}
+ Using the command pair \verb|\_\-| in conjunction with this facility
+disables automatic hyphenation of succeeding words, so don't do it.
+\end{note}
+
+
+
+\begin{example} \label{eg:uschyp}
+This set of \latex{} source
+\begin{verbatim}
+Amazingly An\_excessively\_long\_multiword\_identifier%
+\_demonstrating\_hyphenation
+
+\begin{minipage}{3cm}
+\begin{itemize}
+\item An\_excessively\_long\_multiword\_identifier%
+\_demonstrating\_hyphenation
+\item Underscore in math mode: $A_n$
+\item \verb|\_| command in math mode: $A\_n$
+\end{itemize}
+\end{minipage}
+\end{verbatim}
+prints as:
+
+Amazingly An\_excessively\_long\_multiword\_identifier%
+\_demonstrating\_hyphenation
+
+\begin{minipage}{3cm}
+\begin{itemize}
+\item An\_excessively\_long\_multiword\_identifier%
+\_demonstrating\_hyphenation
+\item Underscore in math mode: $A_n$
+\item \verb|\_| command in math mode: $A\_n$
+\end{itemize}
+\end{minipage}
+
+\end{example}
+
+\begin{example}
+Contrast this example with \eref{eg:uschyp}.
+This set of \latex{} source
+\begin{verbatim}
+Amazingly An\_\-excessively\_\-long\_\-multiword\_\-identifier%
+\_\-demonstrating\_\-hyphenation\_\-disabling
+
+\begin{minipage}{3cm}
+\begin{itemize}
+\item An\_\-excessively\_\-long\_\-multiword\_\-identifier%
+\_\-demonstrating\_\-hyphenation\_\-disabling
+\item Underscore in math mode: $A_n$
+\item \verb|\_| command in math mode: $A\_n$
+\end{itemize}
+\end{minipage}
+\end{verbatim}
+prints as:
+
+Amazingly An\_\-excessively\_\-long\_\-multiword\_\-identifier%
+\_\-demonstrating\_\-hyphenation\_\-disabling
+
+\begin{minipage}{3cm}
+\begin{itemize}
+\item An\_\-excessively\_\-long\_\-multiword\_\-identifier%
+\_\-demonstrating\_\-hyphenation\_\-disabling
+\item Underscore in math mode: $A_n$
+\item \verb|\_| command in math mode: $A\_n$
+\end{itemize}
+\end{minipage}
+
+\end{example}
+
+
+ The \file{hyphenat} package also provides some other commands for
+enabling hyphenation of words that include
+analphabetic\index{character!analphabetic}\footnote{An {\it analphabetic}
+character is any character
+that is not alphabetic. Typically it refers to punctuation characters.}
+characters. In this context, the phrase
+`breakable character'\index{character!breakable} is used
+to describe an analphabetic character that enables hyphenation immediately
+after it and does not prevent further hyphenation in the `word'
+in which it occurs. The \verb|\_|\index{_ /@\verb?\_?} command produces
+a breakable underscore. Table~\ref{tab:breakable} lists all the commands
+that generate breakable characters.
+
+\begin{table}
+\centering
+\caption{Commands producing breakable characters} \label{tab:breakable}
+\begin{tabular}{|l|c|} \hline
+\textbf{Command} & \textbf{Character} \\ \hline
+\verb|\_| & \_ \\
+%\verb|\?| & \? \\
+\verb|\bshyp| & \bshyp \\
+\verb|\colonhyp| & \colonhyp \\
+\verb|\dothyp| & \dothyp \\
+\verb|\fshyp| & \fshyp \\ \hline
+\end{tabular}
+\end{table}
+
+ The \verb|\bshyp|\ixcom{bshyp} command prodes a breakable backslash
+(\verb|\|), \verb|\fshyp|\ixcom{fshp} produces a breakable forward
+slash (\verb|/|), the \verb|\dothyp|\ixcom{dothyp} command produces a
+breakable full stop (\verb|.|), also known in some countries as a period,
+and the \verb|\colonhyp|\ixcom{colonhyp} command produces a breakable
+colon (:).
+
+\begin{example}
+This is similar to \eref{eg:uschyp} except that it demonstrates other
+breakable characters.
+
+This set of \latex{} source
+\begin{verbatim}
+Analphabetically an\bshyp{}excessively\fshyp{}long\dothyp{}multiword\bshyp{}identifier%
+\fshyp{}demonstrating\dothyp{}hyphenation
+
+\begin{minipage}{3cm}
+Analphabetically an\bshyp{}excessively\fshyp{}long\dothyp{}multiword\bshyp{}identifier%
+\fshyp{}demonstrating\dothyp{}hyphenation
+\end{minipage}
+\end{verbatim}
+prints as:
+
+Analphabetically an\bshyp{}excessively\fshyp{}long\dothyp{}multiword\bshyp{}identifier%
+\fshyp{}demonstrating\dothyp{}hyphenation
+
+\begin{minipage}{3cm}
+Analphabetically an\bshyp{}excessively\fshyp{}long\dothyp{}multiword\bshyp{}identifier%
+\fshyp{}demonstrating\dothyp{}hyphenation
+\end{minipage}
+
+\end{example}
+
+\begin{note}
+\latex{} will not hyphenate the first word in a paragraph.
+\end{note}
+
+ Just as with the \verb|\_|\index{_ /@\verb?\_?} command,
+the discretionary hyphen
+command (i.e., \verb|\-|\ixcom{-}) should not be used in conjunction with
+any of the breakable character commands as it will then inhibit any
+further potential hyphenation points. In general, any analphabetic
+character in a word will inhibit further hyphenation.
+
+\normannex{Additional commands} \label{anx:extraiso}
+
+\sclause{Language configuration commands}
+
+ There is an additional set of commands in the
+\file{iso}\ixclass{iso} class
+facility that
+are specified here. This set has been provided to enable the style to be
+easily configured for a non-English language.\index{non-English languages}
+
+ The modified commands may be put in the document
+preamble\index{preamble} or, preferably,
+placed in a separate \file{.sty}\index{file!.sty} file and
+called as a package. This latter option improves reuseability.
+
+\ssclause{Words and phrases}
+
+ To produce a non-English version of the \file{iso}\ixclass{iso}
+class the relevant commands
+from the following list may require re-definition together with
+the heading commands in \tref{tab:dsa}.
+
+\begin{note}In the listing, the default values are printed \emph{in this
+font} to distinguish them from the explanatory text.
+\end{note} % end note}
+
+\begin{itemize}
+\item \verb|\annexname|\ixcom{annexname}: Header for
+ an annex.
+ Default value is: \emph{\annexname}\index{Annex}
+\item \verb|\contentsname|\ixcom{contentsname}: Header
+ for table of contents listing.
+ Default value is: \emph{\contentsname}\index{Contents}
+\item \verb|\copyrightname|\ixcom{copyrightname}:
+ The copyright owner.
+ Default value is: \emph{\copyrightname}\index{ISO}
+\item \verb|\examplename|\ixcom{examplename}:
+ Identification of an example.
+ Default value is: \emph{\examplename}\index{EXAMPLE}
+%\item \verb|\examplesname|\ixcom{examplesname}:
+% Header for a list of examples.
+% Default value is: \emph{\examplesname}\index{EXAMPLES}
+\item \verb|\figurename|\ixcom{figurename}: Start of
+ the caption for a figure.
+ Default value is: \emph{\figurename}\index{Figure}
+\item \verb|\forewordname|\ixcom{forewordname}:
+ Title of the Foreword.
+ Default value is: \emph{\forewordname}\index{Foreword}
+\item \verb|\indexname|\ixcom{indexname}: Header for
+ the index.
+ Default value is: \emph{\indexname}\index{Index}
+\item \verb|\informativename|\ixcom{informativename}:
+ Identification of an informative annex.
+ Default value is: \emph{\informativename}\index{informative}
+\item \verb|\inscopename|\ixcom{inscopename}:
+ Introduction to in-scope listing.
+ Default value is: \emph{\inscopename}
+ \index{The following are within the scope of this}
+\item \verb|\ISname|\ixcom{ISname}:
+ `INTERNATIONAL STANDARD' as used in the header for an IS title page.
+ Default value is:
+ \emph{\ISname}\index{INTERNATIONAL STANDARD}
+\item \verb|\introductionname|\ixcom{introductionname}:
+ Title of the Introduction.
+ Default value is:
+ \emph{\introductionname}\index{Introduction}
+\item \verb|\listannexname|\ixcom{listannexname}:
+ Header for list of annexes listing.
+ Default value is: \emph{\listannexname}\index{Annexes}
+\item \verb|\listfigurename|\ixcom{listfigurename}:
+ Header for list of figures listing.
+ Default value is: \emph{\listfigurename}\index{Figures}
+\item \verb|\listtablename|\ixcom{listtablename}:
+ Header for list of tables listing.
+ Default value is: \emph{\listtablename}\index{Tables}
+\item \verb|\normativename|\ixcom{normativename}:
+ Identification of a normative annex.
+ Default value is: \emph{\normativename}\index{normative}
+\item \verb|\normrefsname|\ixcom{normrefsname}:
+ Title of normative references clause.
+ Default value is:
+ \emph{\normrefsname}\index{Normative references}
+\item \verb|\notename|\ixcom{notename}:
+ Identification of a note.
+ Default value is: \emph{\notename}\index{NOTE}
+%\item \verb|\notesname|\ixcom{notesname}:
+% Header for a list of notes.
+% Default value is: \emph{\notesname}\index{NOTES}
+\item \verb|\outofscopename|\ixcom{outofscopename}:
+ Introduction to out-of-scope listing.
+ Default value is: \emph{\outofscopename}
+ \index{The following are outside the scope of this}
+\item \verb|\pagename|\ixcom{pagename}:
+ The word for the page header in the table of contents.
+ Default value is: \emph{\pagename}\index{Page}
+\item \verb|\scopename|\ixcom{scopename}:
+ Title of the Scope.
+ Default value is: \emph{\scopename}\index{Scope}
+%\item \verb|\sectionname|\ixcom{sectionname}:
+% The word for a 'section'.
+% Default value is: \emph{\sectionname}\index{Section}
+\item \verb|\tablename|\ixcom{tablename}:
+ Start of the caption for a table.
+ Default value is: \emph{\tablename}\index{Table}
+\item \verb|\tbpname|\ixcom{tbpname}:
+ Footnote text for `to be published.'.
+ Default value is:
+ \emph{\tbpname}\index{To be published.}
+\end{itemize}
+
+ The following commands provide the names for referenced document elements.
+\begin{itemize}
+\item \verb|\annexrefname|\ixcom{annexrefname}:
+ Reference to an annex.
+ Default value is: \emph{\annexrefname}\index{annex}
+\item \verb|\clauserefname|\ixcom{clauserefname}:
+ Reference to a clause.
+ Default value is: \emph{\clauserefname}\index{clause}
+\item \verb|\examplerefname|\ixcom{examplerefname}:
+ Reference to an example.
+ Default value is: \emph{\examplerefname}\index{example}
+\item \verb|\figurerefname|\ixcom{figurerefname}:
+ Reference to a figure.
+ Default value is: \emph{\figurerefname}\index{figure}
+\item \verb|\noterefname|\ixcom{noterefname}:
+ Reference to a note.
+ Default value is: \emph{\noterefname}
+\item \verb|\tablerefname|\ixcom{tablerefname}:
+ Reference to a table.
+ Default value is: \emph{\tablerefname}\index{table}
+\item \verb|\pagerefname|\ixcom{pagerefname}:
+ Reference to a page.
+ Default value is: \emph{\pagerefname}\index{page}
+\end{itemize}
+
+
+
+\begin{note} The above commands,
+ may be changed via the \latex{}
+\verb|\renewcommand|\ixcom{renewcommand}.
+\end{note} % end note
+\begin{note}The \latex{} command \verb|\today|\ixcom{today}
+ will probably also require modification. This is not something
+ for the casual user to attempt.
+\end{note} % end note
+
+
+\begin{example}The following is a partial list of the commands to convert to a
+ French language\index{French language} style.
+\begin{verbatim}
+\renewcommand{\annexname}{Annexe}
+\renewcommand{\contentsname}{Sommaire}
+\renewcommand{\examplename}{EXEMPLE}
+%\renewcommand{\examplesname}{EXEMPLES}
+\renewcommand{\forewordname}{Avant-propos}
+\renewcommand{\ISname}{NORME INTERNATIONALE}
+\renewcommand{\listtablename}{Tableaux}
+\renewcommand{\scopename}{Domaine d'application}
+\renewcommand{\tablename}{Tableau}
+\end{verbatim}
+\end{example} % end example
+
+\ssclause{Boilerplate}
+
+ Some commands print boilerplate text; again, the default text is in English.
+For \file{iso}\ixclass{iso} there are several such commands. The first is
+\verb|\copyrightnotice|\ixcom{copyrightnotice}
+ which contains the text of the copyright notice
+for an International Standard. This can be changed via the
+\verb|\renewcommand|\ixcom{renewcommand} command.
+
+ The second is \verb|\normrefbp|\ixcom{normrefbp}
+which prints the boilerplate for the introduction to the Normative
+references clause. Like the \verb|\copyrightnotice| command, this can
+be redefined using the \verb|\renewcommand|.
+
+ Another is the \verb|\fwdbp|\ixcom{fwdbp} command which
+\verb|\input|s the boilerplate text from a file called \file{isofwdbp.tex}.
+\index{isofwdbp.tex@\file{isofwdbp.tex}} For non-English text either
+modify the contents of this
+file or create a new file and modify the \verb|\fwdbp| command to call in
+the new file.
+
+
+
+\begin{example}This is how \verb|\normrefbp| could be written for the
+French language and in accordance with the second edition of the
+ISO Directives.
+\label{eg:frenchnfbp}
+\begin{verbatim}
+\renewcommand{\normrefbp}[1]{%
+ Les normes suivantes contiennent des dispositions qui, par
+suite de la r\'{e}f\'{e}nce qui en est faite, constituent des
+dispositions valables pour la pr\'{e}sente #1.
+Au moment de la publication, les \'{e}ditions indiqu\'{e}es
+\'{e}taient en viguer. Toute norms est sujette \`{a} r\'{e}vision et
+les parties prenantes des accords fond\'{e}s sur la pr\'{e}sente #1
+sont invit\'{e}es \`{a} rechercher la possibilit\'{e} d'appliquer
+les \'{e}ditions les plus r\'{e}centes des normes indiqu\'{e}es
+ci-apr\`{e}s. Les membres de la CEI et de l'ISO poss\`{e}dent
+le registre des Normes Internationales en vigueur \`{a} un
+moment donn\'{e}.
+}% end renewcommand
+\end{verbatim}
+\end{example} % end example
+\begin{example}Given that \verb|\normrefbp| has been redefined as in \eref{eg:frenchnfbp},
+then the command \\
+ \verb|\normrefbp{norme internationale}| will print:
+
+\newcommand{\tempbp}[1]{%
+ Les normes suivantes contiennent des dispositions qui, par
+suite de la r\'{e}f\'{e}nce qui en est faite, constituent des
+dispositions valables pour la pr\'{e}sente #1.
+Au moment de la publication, les \'{e}ditions indiqu\'{e}es
+\'{e}taient en viguer. Toute norms est sujette \`{a} r\'{e}vision et
+les parties prenantes des accords fond\'{e}s sur la pr\'{e}sente #1
+sont invit\'{e}es \`{a} rechercher la possibilit\'{e} d'appliquer
+les \'{e}ditions les plus r\'{e}centes des normes indiqu\'{e}es
+ci-apr\`{e}s. Les membres de la CEI et de l'ISO poss\`{e}dent
+le registre des Normes Internationales en vigueur \`{a} un
+moment donn\'{e}.
+}% end newcommand
+
+\tempbp{norme internationale}
+\end{example} % end example
+
+
+
+ The \verb|\tspasfwdbp|\ixcom{tspasfwdbp} also maintains
+boilerplate text in the file
+\file{tspasfwdbp.tex}\index{tspasfwdbp.tex@\file{tspasfwdbp.tex}}.
+
+\sclause{Caption text size}
+
+ The size of the font used for typestting the captions of figures and
+tables is defined within the \file{iso}\ixclass{iso} class.
+% The
+%\verb|uglycaption|\ixopt{uglycaption} option resets the size to larger
+%than normal for the captioning text.
+
+ The size of the captioning font is controlled by the value of the
+\verb|\captionsize|\ixcom{captionsize} command. The default definition
+of \verb|\captionsize| is similar to:
+\verb|\captionsize{\normalsize}| \ixcom{normalsize}\\
+%The \verb|uglycaption| option resets this to (approximately): \\
+%\verb|\captionsize{\large}|. \ixcom{large}
+
+ You can reset the \verb|\captionsize| at any point in your
+document to change the size of captions from then onwards.
+
+ All the normal \latex{} font size commands are available.
+\begin{example}
+The following shows the effects of the font size commands. \\
+\verb|{\tiny tiny text}|\ixcom{tiny}
+prints: {\tiny tiny text} \\
+\verb|{\scriptsize scriptsize text}|\ixcom{scriptsize}
+prints: {\scriptsize scriptsize text} \\
+\verb|{\footnotesize footnotesize text}|\ixcom{footnotesize}
+prints: {\footnotesize footnotesize text} \\
+\verb|{\small small text}|\ixcom{small}
+prints: {\small small text} \\
+\verb|{\normalsize normalsize text}|\ixcom{normalsize}
+prints: {\normalsize normalsize text} \\
+\verb|{\large large text}|\ixcom{large}
+prints: {\large large text} \\
+\verb|{\Large Large text}|\ixcom{Large}
+prints {\Large Large text} \\
+\verb|{\LARGE LARGE text}|\ixcom{LARGE}
+prints: {\LARGE LARGE text} \\
+\verb|{\huge huge text}|\ixcom{huge}
+prints: {\huge huge text} \\
+\verb|{\Huge Huge text}|\ixcom{Huge}
+prints: {\Huge Huge text}
+\end{example}
+
+
+\normannex{Ordering of LaTeX commands} \label{anx:lord}
+
+ The \latex{} commands for the logical structuring of an ISO standard
+document are:
+\begin{verbatim}
+\documentclass[<options>]{isov2} % for LaTeX 2e
+\usepackage{<name>} % additional packages (LaTeX 2e)
+\standard{<standard identification>}
+\yearofedition{<year>}
+\languageofedition{<parenthesized code letter>}
+ % other preamble commands
+\begin{document}
+\begin{foreword} % start Foreword
+ \fwdbp % boilerplate
+ % other text and perhaps \fwdnopatents
+\end{foreword}
+\begin{introduction} % start Introduction
+ % text and perhaps \intropatents
+\end{introduction}
+\title{<intro>}{<main>}{<compl>} % the title
+\scopeclause % The Scope clause
+ \begin{inscope}{<document>} % in scope boilerplate
+ % \item list
+ \end{inscope}
+ % text
+ \begin{outofscope}{<document>} % out of scope boilerplate
+ % \item list
+ \end{outofscope}
+ % text
+\normrefsclause % The Normative references clause
+ \normrefbp{<document identifier>} % boilerplate
+ \begin{nreferences}
+ % \isref{<p1>}{<p2>} and/or \disref{<p1>}{<p2>} commands
+ \end{nreferences}
+% definitions, symbols, abbreviation clause as appropriate
+\clause{<Clause title>}
+% THE BODY OF THE DOCUMENT
+% ...
+% \normannex{<Normative annex title>}
+% ...
+% \infannex{<Infomative annex title>}
+% ...
+\bibannex % optional bibliography
+ % bibliography listing
+% the index
+\end{document}
+\end{verbatim}
+
+
+\infannex{Creating an index} \label{anx:indexing}
+
+ \latex, although providing some assistance in preparing the data for an
+index\index{index}, only does part of the job. Providing the command
+\verb|\makeindex|\ixcom{makeindex} is put in the document's
+preamble\index{preamble}
+the \latex{} command \verb|\index{text}|\ixcom{index}
+writes out \verb|text| to an \file{.idx}\index{file!.idx} file
+in the following format:\ixcom{indexentry}
+\begin{verbatim}
+\indexentry{text}{pg}
+\end{verbatim}
+where \verb|pg| is the page number in the document where the \verb|\index|
+command occurred.
+
+ The \verb|theindex|\ixenv{theindex} environment
+is used for printing an index. The format of this is:
+\begin{verbatim}
+\begin{theindex}
+\item <text and page numbers>
+ \subitem <text and page numbers>
+ \subsubitem <text and page numbers>
+.
+.
+\end{theindex}
+\end{verbatim}
+where \verb|\item|\ixcom{item} is a major topic entry,
+\verb|\subitem|\ixcom{subitem} is a sub-topic entry, and
+\verb|\subsubitem|\ixcom{subsubitem} is a sub-subtopic
+entry. The command \verb|\indexspace|\ixcom{indexspace}
+can be used to add space between the entries. Other text and commands can also
+occur within the environment.
+
+ \latex{} provides no help in going from an \file{.idx} file to the
+\verb|theindex| environment~\bref{lamport}. The data in the file has to be
+sorted, duplicate page numbers deleted, etc, and then re-written in the
+desired environment format.
+
+ The typical process for producing a document with an index is:
+\begin{enumerate}
+\item Prepare the source file, say \file{fred.tex}, with the command
+ \verb|\makeindex|\ixcom{makeindex} in the
+ preamble\index{preamble}, and \verb|\index|\ixcom{index}
+ commands within the body of the text.
+\item Run \latex. As well as producing the usual output files, it will also
+ produce the file \file{fred.idx}.
+\item By some means produce a file, let's call it \file{fredidx.tex}, from the
+ data in \file{fred.idx} that contains the appropriate \verb|theindex|
+ formatted data.
+\item Run \latex{} again on \file{fred.tex} which now has to contain (either
+ via \verb|\input|\ixcom{input} or \verb|\include|\ixcom{include})
+ the file \file{fredidx.tex}.
+\end{enumerate}
+
+ Chen and Harrison~\bref{chen} discuss the problems of creating an index
+in their
+paper \emph{Index preparation and processing} and also describe the
+{\sc MakeIndex}\index{makeIndex@{\sc MakeIndex}} program. Goosens, Mittelbach
+and Samarin~\bref{goosens} also describe how to use the {\sc MakeIndex}
+program for producing indexes for \latex{} documents. For users of
+{\sc MakeIndex} a style file called
+\file{iso.ist}\index{iso.ist@\file{iso.ist}}\index{file!.ist} is provided as
+part of this distribution.
+
+\sclause{The index command}\ixcom{index}
+
+ The \verb|\index| command is one of the standard \latex{} commands.
+The command format is \verb|\index{|\meta{str}\verb|}|, where \meta{str}
+ is any
+string of characters, and it writes an entry to the \file{.idx} file in
+the form \verb|\indexentry{<str>}{pg}|, where \verb|pg| is the page
+number in the document where the command is called.
+
+ Some points to note:
+\begin{itemize}
+\item The \verb|\index| command is, in \latex{} terminology,
+ \emph{fragile}\index{fragile}. That is, if it appears in a moving
+ argument (like the caption to a table or figure) it must be preceded
+ by the \latex{} \verb|\protect|\ixcom{protect}
+ command.
+\item Any of the ten \latex{} special characters\index{special characters}
+ (i.e., \verb|#|, \verb|$|, \verb|%|, \verb|&|, \verb|~|, \verb|_|,
+ \verb|^|, \verb|\|, \verb|{| and \verb|}|) may appear
+ within the argument, with the proviso that it must have no unmatched
+ braces (the braces in \verb|\{| and \verb|\}| are counted in the
+ matching process).
+\item The \verb|\index| command must not appear inside another command's
+ argument (e.g., within a
+ \verb|\footnote|\ixcom{footnote} or \verb|\clause|\ixcom{clause}
+ command) unless the argument of the \verb|\index| command contains
+ only letters, digits, and/or punctuation characters. In particular,
+ it should not contain any of the special characters.
+ \begin{note}This means that the argument of the \verb|\ix|\ixcom{ix}
+ command should not contain any special characters. Remember that the
+ \verb|\ix| command prints its argument in the body of the text and also
+ calls \verb|\index| to place its argument into the \file{.idx} file.
+ \end{note} % end note
+\end{itemize}
+
+\begin{note}Under some circumstances, an \verb|\index| command appearing in another
+command's argument may contain special characters, provided they are
+\verb|\protect|ed. Determination of when this is satisfactory is a process
+of trial and error.
+\end{note} % end note
+
+\begin{example}The command \verb|\ix{an\protect\_underscore}| will print the
+characters \emph{an\_undescore}
+in the text and also write the following to the \file{.idx} file:
+\begin{verbatim}
+\indexentry{an\_ underscore}{pg}
+\end{verbatim}
+Notice that there is a space between the underscore character and the word
+`underscore' in the \file{.idx} file (but there is no space in the printed
+body of the document text). This extraneous space may have to be edited out
+from the final index.
+\end{example} % end example
+
+
+\begin{comment}
+
+\sclause{The program GenIndex} \index{genindex@GenIndex}
+
+ GenIndex is a C program\index{C language} that converts \file{.idx}
+data to \verb|theindex|\ixenv{theindex} data.
+Source code for GenIndex is freely available from
+the NIST SOLIS\index{SOLIS} system (see \ref{anx:solis}).
+The GenIndex program is not
+as sophisticated as {\sc MakeIndex} but does a reasonable
+job.\footnote{These two programs are not completely compatible but do have
+a common subset of commands. The common subset excludes the {\tt SeeAlso}
+and {\tt See} commands. At some later time GenIndex may be rewritten to
+be compatible with {\sc MakeIndex}. It is probably advisable, therefore, not
+to use the GenIndex {\tt SeeAlso} and {\tt See} commands.}
+
+
+\ssclause{Input} \index{genindex@GenIndex!input}
+
+ GenIndex reads lines of data of the form:
+\begin{verbatim}
+\indexentry{IndexData}{Page}
+\end{verbatim}
+
+ \verb|Page| is a character string representing a page number. GenIndex only
+recognizes strings that represent integer values greater than or equal to zero,
+or (upper and lower case) roman numerals. For any other numbering system, the
+page number is treated as zero.
+
+ \verb|IndexData| is a string of characters and command characters that
+specify the data that is to be indexed. In the simplest case, this is just the
+word or phrase to appear in the index, but much more can be done than this, as
+is described below.
+
+ The general form of \verb|IndexData| is given by the following partial
+grammar:
+\begin{verbatim}
+IndexData = MainData ['!' SubData ['!' SubSubData ] ] .
+MainData = Data .
+SubData = Data .
+SubSubData = Data .
+Data = Key [ Entry ] [ SeeAlso ] [ See ] .
+Key = any string not containing the @, !, + or * characters .
+Entry = '@' any string not containing the !, + or * characters
+ (unless enclosed in braces {} ) .
+SeeAlso = '+' any string not containing the ! or * characters
+ (unless enclosed in braces {} ) .
+See = '*' any string not containing the ! character
+ (unless enclosed in braces {} ) .
+\end{verbatim}
+
+ Upto three levels of indexing are enabled --- a main topic entry, an optional
+sub-topic, and an optional sub-subtopic. The sub-topics for an entry are
+introduced by the \verb|!| character. \index{(33@{\verb?!?}}
+
+ Apart from \verb|Key|, braces within a string must be matched. That is,
+they must appear in pairs of an opening and a closing brace.
+Spaces are significant within the \verb|Key| string, but not in the others.
+That is, \verb*|\indexentry{A}| differs from \verb*|\indexentry{ A}|
+both of which differ from \verb*|\indexentry{A }|.
+
+
+\begin{example}Here is an index entry for a simple topic:
+\begin{verbatim}
+\indexentry{Topic}{27}
+\end{verbatim}
+\end{example} % end example
+\begin{example}And here is one where the key and the main entry are different, a
+sub-topic is being indexed, and the page is in roman numerals:
+\begin{verbatim}
+\indexentry{main@\textbf{Main}!sub topic}{xviii}
+\end{verbatim}
+\end{example} % end example
+\begin{example}This is how the characters \verb|@|, \verb|!|, \verb|+| and
+\verb|*| characters are indexed in this document.
+\begin{verbatim}
+\index{(64@{\verb?@?}}
+\index{(33@{\verb?!?}}
+\index{(43@{\verb?+?}}
+\index{(42@{\verb?*?}}
+\end{verbatim}
+\end{example} % end example
+
+
+\sssclause{Key} \index{genindex@GenIndex!input!key}
+
+ The indexed entries are sorted alphabetically on the value of \verb|Key|.
+Sorting is case-insensitive. A \verb|Key| value is required.
+
+ More precisely, the key entries are sorted according to the
+C language\index{C language} implementation collating sequence, which is usually ASCII.
+Table~\ref{tab:ascii} gives the ASCII collating sequence for the \latex\
+character set. \index{ASCII}
+
+
+\begin{table}
+\def\vissp{\hbox{\tt\char`\ }} % visible space
+\centering
+\caption{The \protect\latex{} ASCII character set} \label{tab:ascii}
+\begin{tabular}{|r|c|c|c|c|c|c|c|c|c|c|} \hline
+ & \textbf{0} & \textbf{1} & \textbf{2} & \textbf{3} & \textbf{4} &
+\textbf{5} & \textbf{6} & \textbf{7} & \textbf{8} & \textbf{9} \\ \hline\hline
+\textbf{30} & & & \vissp & \verb|!| & \verb|"| &
+ \verb|#| & \verb|$| & \verb|%| & \verb|&| & \verb|'| \\
+\textbf{40} & \verb|(| & \verb|)| & \verb|*| & \verb|+| & \verb|,| &
+ \verb|-| & \verb|.| & \verb|/| & \verb|0| & \verb|1| \\
+\textbf{50} & \verb|2| & \verb|3| & \verb|4| & \verb|5| & \verb|6| &
+ \verb|7| & \verb|8| & \verb|9| & \verb|:| & \verb|;| \\
+\textbf{60} & \verb|<| & \verb|=| & \verb|>| & \verb|?| & \verb|@| &
+ \verb|A| & \verb|B| & \verb|C| & \verb|D| & \verb|E| \\
+\textbf{70} & \verb|F| & \verb|G| & \verb|H| & \verb|I| & \verb|J| &
+ \verb|K| & \verb|L| & \verb|M| & \verb|N| & \verb|O| \\
+\textbf{80} & \verb|P| & \verb|Q| & \verb|R| & \verb|S| & \verb|T| &
+ \verb|U| & \verb|V| & \verb|W| & \verb|X| & \verb|Y| \\
+\textbf{90} & \verb|Z| & \verb|[| & \verb|\| & \verb|]| & \verb|^| &
+ \verb|_| & \verb|`| & \verb|a| & \verb|b| & \verb|c| \\
+\textbf{100} & \verb|d| & \verb|e| & \verb|f| & \verb|g| & \verb|h| &
+ \verb|i| & \verb|j| & \verb|k| & \verb|l| & \verb|m| \\
+\textbf{110} & \verb|n| & \verb|o| & \verb|p| & \verb|q| & \verb|r| &
+ \verb|s| & \verb|t| & \verb|u| & \verb|v| & \verb|w| \\
+\textbf{120} & \verb|x| & \verb|y| & \verb|z| & \verb|{| & \verb/|/ &
+ \verb|}| & \verb|~| & & & \\ \hline
+\end{tabular}
+\end{table}
+
+\sssclause{Entry} \index{genindex@GenIndex!input!entry}
+\index{(64@{\verb?@?}}
+
+ \verb|Entry| is optional and is introduced by the \verb|@| character. If present, this will form the indexed string.
+If absent, then the value of \verb|Key| is used instead.
+
+\sssclause{See also} \index{genindex@GenIndex!input!see also}
+ \index{(43@{\verb?+?}}
+
+ \verb|SeeAlso| is optional and is introduced by the \verb|+| character.
+Within a document, it should only be used once
+per entry. If used more than once, then only the last value is taken.
+
+ This is used to produce an entry that refers to another indexed entry in
+a \emph{see also \ldots} style.
+
+\sssclause{See} \index{genindex@GenIndex!input!see}
+\index{(42@{\verb?*?}}
+
+ \verb|See| is optional and is introduced by the \verb|*| character.
+Within a document, it should be used only once per
+entry. If used more than once, then only the last value is taken.
+
+ This is used to produce an entry that refers to another entry in a
+\emph{see \ldots} style. Use of this option prohibits printing page numbers
+for the entry.
+
+\ssclause{Output} \index{genindex@GenIndex!output}
+
+ The program GenIndex sorts the entries into alphabetical order (based on
+the \verb|Key| values), and produces a \verb|theindex| for the input data.
+Several formatting commands are included in the output file to enable
+adjustment of the appearance of the printed index. These are shown in
+\tref{tab:indexc}.
+
+\begin{table}
+\centering
+\caption{GenIndex formatting commands} \label{tab:indexc}
+\begin{tabular}{|l|l|} \hline
+\textbf{Command} & \textbf{Effect} \\ \hline
+\verb|\indexfill|\ixcom{indexfill} &
+ spacing style between main topic and page numbers \\
+\verb|\sindexfill|\ixcom{sindexfill} &
+ spacing style between subtopic and page numbers \\
+\verb|\ssindexfill|\ixcom{ssindexfill} &
+ spacing between sub-subtopic and page numbers \\
+\verb|\indexsee{text}|\ixcom{indexsee} &
+ produces \verb|text| as a \emph{see} entry \\
+\verb|\indexseealso{text}|\ixcom{indexseealso} &
+ produces \verb|text| as a \emph{see also} entry \\
+\verb|\otherindexspace{c}|\ixcom{otherindexspace} &
+ heading for non-alphabetic entry \\
+\verb|\alphaindexspace{c}|\ixcom{alphaindexspace} &
+ heading for an alphabetic entry \\ \hline
+\end{tabular}
+\end{table}
+
+
+\begin{note}The commands in \tref{tab:indexc} are defined in the
+ \file{iso}\ixclass{iso} class file.
+\end{note}
+\begin{note}If the commands are not defined in your system,
+ then you can define them
+ using the \latex{} \verb|\newcommand|\ixcom{newcommand}
+ command. On the other hand, if they are defined in your system,
+ you can change them using the
+ \latex{} \verb|\renewcommand|\ixcom{renewcommand} command.
+\end{note} % end note
+
+
+\begin{example}
+This input file:
+\begin{verbatim}
+\indexentry{Freddy+Fred}{27}
+\indexentry{Frederick*Fred}{29}
+\indexentry{Fred}{42}
+\indexentry{Fred}{52}
+\indexentry{Fred}{43}
+\end{verbatim}
+will produce output like:
+\begin{verbatim}
+\begin{theindex}
+\alphaindexspace{F}
+\item Fred \indexfill 42--43, 52
+\item Frederick \indexsee{Fred}
+\item Freddy \indexfill 27 \indexseealso{Fred}
+\end{theindex}
+\end{verbatim}
+\end{example} % end example
+
+\sssclause{Indexfill commands}
+
+ The commands \verb|\indexfill{|\meta{style}\verb|}|\ixcom{indexfill},
+\verb|\sindexfill{|\meta{style}\verb|}|\ixcom{sindexfill} and
+\verb|\ssindexfill{|\meta{style}\verb|}|\ixcom{ssindexfill}
+control the style of spacing between an indexed entry and its corresponding
+page numbers.
+
+\begin{example}
+If you want to have the page numbers right justified, with lines between the
+main topics and their numbers, dots between sub-topics and pages, and
+sub-subtopic numbers right justified, then you could define these commands as:
+\begin{verbatim}
+\newcommand{\indexfill}{\hrulefill}
+\newcommand{\sindexfill}{\dotfill}
+\newcommand{\ssindexfill}{\hfill}
+\end{verbatim}
+\end{example} % end example
+
+
+\begin{anote}The usual \latex{} style is to have a small gap between the
+topic and page number, the whole being set ragged right.
+If this is what you want, then define the commands as:
+\begin{verbatim}
+\newcommand{\indexfill}{}
+\newcommand{\sindexfill}{}
+\newcommand{\ssindexfill}{}
+\end{verbatim}
+\end{anote} % end note
+
+\sssclause{Indexsee and indexseealso commands}
+
+ The \verb?\indexsee{?\meta{text}\verb?}?\ixcom{indexsee} and
+\verb?\indexseealso{?\meta{text}\verb?}?\ixcom{indexseealso} commands
+control the appearance
+of the \emph{see} and \emph{see also} text.
+
+
+\begin{example}
+These commands could be defined as:
+\begin{verbatim}
+\newcommand{\indexsee}[1]{\par \hspace*{2em} \emph{see} #1}
+\newcommand{\indexseealso}[1]{\par \hspace*{2em} \emph{see also} #1}
+\end{verbatim}
+\end{example} % end example
+
+\sssclause{Index space commands}
+\ixcom{alphaindexspace}
+\ixcom{otherindexspace}
+
+ The commands
+\verb?\alphaindexspace{?\meta{c}\verb?}?\ixcom{alphaindexspace} and
+\verb?\otherindexspace{?\meta{c}\verb?}?\ixcom{otherindexspace}
+control the amount of space between blocks of index entries.
+These are an extension of the
+\latex{} \verb|\indexspace|\ixcom{indexspace}
+command, which just inserts some vertical space into the index listing.
+Both these commands take a single parameter, which is typically a single
+character.
+
+\begin{anote}
+GenIndex looks at the first character (call it \verb|c|) of the \verb|Key|
+and if this changes
+as it processes the ordered list of main topics, it puts that character
+as the parameter for these commands. It writes \verb|\alphaindexspace{c}| if
+the character is alphabetic (and \verb|c| is put into upper-case),
+otherwise it writes \verb|\otherindexspace{c}|.
+\end{anote} % end note
+
+\begin{example}
+These commands could be defined as:
+\begin{verbatim}
+\newcommand{\alphaindexspace}[1]{\indexspace
+ {\bfseries #1}}
+\newcommand{\otherindexspace}[1]{}
+\end{verbatim}
+which would result in the printing of a vertical space and a bold font text
+for an alphabetic header, or nothing for anything else.
+\end{example} % end example
+
+\ssclause{Running GenIndex} \index{genindex@GenIndex!run}
+
+ To run GenIndex, first obtain a copy of the program, and compile it if
+necessary. Execute the program on your data.
+
+ GenIndex takes zero, one or two file names as parameters. If no files are
+given then input and output is from and to \verb|stdin| and \verb|stdout|
+respectively.
+
+ If one file is given, then input is taken from this file, and output
+is to \verb|stdout|.
+
+ If two file names are given, then input is taken from the first and output
+is to the second.
+
+\begin{example}
+A typical usage would be:
+\begin{verbatim}
+GenIndex fred.idx fredidx.tex
+\end{verbatim}
+which would read the \file{fred.idx} file and write the resulting index data to
+file \file{fredidx.tex}.
+\end{example} % end example
+
+\end{comment}
+
+% sgmlannx.tex latex and SGML
+
+\infannex{LaTeX, the Web, and *ML} \label{anx:sgml} \index{SGML}
+
+ ISO are becoming more interested in electronic sources for their
+standards as well as the traditional camera-ready copy. Acronyms like
+PDF, HTML, SGML and XML have been bandied about. Fortunately documents
+written using \latex{} are well placed to be provided in a variety of
+electronic formats. A comprehensive treatment of \latex{} with respect
+to this topic is provided by Goossens and Rahtz~\bref{lwebcom}.
+
+ SGML (Standard Generalized Markup Language) is a document tagging
+language that is described in ISO~8879~\bref{sgml} and whose usage is described
+in~\bref{bryan}, among others. The principal
+mover behind SGML is Charles Goldfarb from IBM, who has authored a detailed
+handbook~\bref{goldfarb} on the SGML standard.
+
+ The concepts lying behind both \latex{} and SGML are similar, but on the face
+of it they are distinctly different in both syntax and capabilities. ISO is
+migrating towards electronic versions of its standard documents and, naturally,
+would prefer these to be SGML tagged.
+ Like \latex, SGML has a
+concept of style files, which are termed DTDs, and both systems support
+powerful macro-like capabilities. SGML provides for logical document
+markup and not typesetting --- commercial SGML systems often use
+\TeX{} or \latex{} as their printing engine, as does the NIST SGML
+environment for ISO~10303~\bref{pandl}.
+
+
+
+NIST have SGML tagged some ISO~10303 documents
+using manual methods, which are time consuming and expensive.
+About 1997 there was a NIST
+effort underway to develop an auto-tagger that would (semi-) automatically convert
+a \latex{} tagged document to one with SGML tags. This tool assumed a
+fixed set of \latex{} macros and a fixed DTD.
+ The design of an auto-tagger
+essentially boils down to being able to convert from a source document tagged
+according to a \latex{} style file to one which is tagged according to an
+SGML DTD.
+ Fully automatic conversion is really only possible if the authors'
+of the documents to be translated avoid using any `non-standard' macros within
+their documents. There is a program called \file{ltx2x}\index{ltx2x} available
+from SOLIS, which replaces \latex{} commands within a document with
+user-defined text strings~\bref{ltx2x}. This can be used as a basis for
+a \latex{} to whatever auto-tagger, provided the \latex{} commands are not
+too exotic.
+
+ HTML is a simple markup language, based on SGML, and is used for the
+publication of many documents on the Web. XML is a subset of SGML and appears
+to being taken up by every man and his dog as \emph{the} document markup
+language. HTML is being recast in terms of XML instead of SGML. PDF is a page
+description language that is a popular format for display of documents
+on the Web.
+
+ \latex{} documents can be output in PDF by using pdfLaTeX. Instead
+of a \file{.dvi} file being produced a \file{.pdf} file is output directly.
+The best
+results are obtained when PostScript fonts rather than Knuth's cm fonts
+are used. Noting that the \file{iso} class provides an \verb|\ifpdf| command,
+a general form for documents to be processed by either \latex{} or pdfLaTeX
+is
+\begin{verbatim}
+\documentclass{isov2}
+\usepackage{times} % PostScript fonts Times, Courier, Helvetica
+\ifpdf
+ \pdfoutput=1 % request PDF output
+ \usepackage[pdftex]{graphicx}
+\else
+ \usepackage{graphicx}
+\fi
+...
+\end{verbatim}
+
+ There are several converters available to transform a \latex{} document
+into an HTML document, but like \file{ltx2x} they generally do their own
+parsing of the source file, and unlike \file{ltx2x} are typically limited
+to only generating HTML. Eitan Gurari's \file{TeX4ht}\index{TeX4ht}
+suite is a notable
+exception (see Chapter~4 and Appendix~B of~\bref{lwebcom}). It uses the
+\file{.dvi} file as input, so that all the parsing is done by \TeX, and can be
+configured to generate a wide variety of output formats.
+A set of \file{TeX4ht} configuration files are available for converting
+ISO \latex{} documents into HTML\footnote{Later, configuration files for XML
+output will be developed.}.
+
+ Some points to watch when writing \latex{} documents that will assist
+in translations into *ML are given below. Typically, attention to these points
+will make it easier to parse the \latex{} source.
+
+\begin{itemize}
+\item Avoid using the \verb|\label|\ixcom{label} command within
+ clause headings or captions. It can just as easily be placed immediately
+ after these constructs.
+\item Avoid using the \verb|\index|\ixcom{index} command within
+ clause headings or captions. It can just as easily be placed immediately
+ after these constructs.
+\end{itemize}
+
+
+
+
+
+
+\infannex{Obtaining LaTeX and friends} \label{anx:getstuff}
+
+ \latex{} is a freely available document typesetting system. There are many
+public domain additions to the basic system.
+The information below gives pointers to where
+you can obtain \latex{} etc., from the\index{Internet} Internet.
+
+ \latex{} runs on a wide variety of hardware, from PCs to Crays.
+Source to build a \latex{} system is freely available via anonymous
+ftp\index{ftp} from what is called CTAN\index{CTAN}
+(Comprehensive \tex{} Archive Network).
+There are three sites; pick the one nearest to you.
+\begin{itemize}
+\item \url{ftp.dante.de} CTAN in Germany;
+\item \url{ftp.tex.ac.uk} CTAN in the UK;
+\item \url{ctan.tug.org} CTAN in the USA;
+\end{itemize}
+The top level CTAN directory for \latex{} and friends is
+\url{/tex-archive}. CTAN contains a wide variety
+of (La)TeX sources, style files, and software tools and scripts
+to assist in document processing.
+
+\begin{anote}
+ CTAN is maintained by the \tex{} Users Group (TUG). Their homepage
+\isourl{http://www.tug.org} should be consulted for the current
+list of CTAN sites and mirrors.
+\end{anote}
+
+\begin{comment}
+
+\sclause{SOLIS} \index{SOLIS} \label{anx:solis}
+
+ SOLIS is the \emph{SC4 On Line Information Service}. It contains many electronic
+sources of STEP related documents. The relevant top level directory is
+\url{pub/subject/sc4}.
+ In particular, SOLIS contains the source for this document
+and the \file{.sty} files, as well as other \latex{} related files.
+The \latex{} root directory is \url{sc4/editing/latex}. The latest
+versions of the \latex{} related files are kept in the sub-directory
+\url{latex/current}.
+Some \latex{} related programs are also available in the
+\url{latex/programs} sub-directory.
+
+ SOLIS can be reached at \isourl{http://www.nist.gov/sc4}.
+
+\end{comment}
+
+
+\infannex{Changes in this release} \label{anx:changes}
+
+ Many of the commands and environments have been redefined in order
+to match the change in requirements from the the third to the fourth
+edition of the ISO Directives. Usage of these is unaffected.
+
+ The following changes have been made in this release:
+\begin{itemize}
+\item The \verb|cover|\ixenv{cover} environment has been added;
+
+\item The boolean test \verb|\ifpdf|\ixcom{ifpdf} has been added;
+
+\item The command \verb|\fwdnopatents|\ixcom{fwdnopatents} has been added
+ for patent boilerplate in the Foreword.
+
+\item The command \verb|\tpasfwdbp|\ixcom{tpasfwdbp} has been added
+ for TS/PAS Foreword boilerplate.
+
+\item The command \verb|\intropatents|\ixcom{intropatents} has been added
+ for patent boilerplate in the Introduction.
+
+\item The commands \verb|\pref|\ixcom{pref} and
+ \verb|\pagerefname|\ixcom{pagerefname} have been added.
+
+\item The command \verb|\trwfwdbpi|\ixcom{trfwdbpi} for Foreword boilerplate
+ in a Technical Report has been deleted.
+
+\item The \verb|notes|\ixenv{notes} and \verb|examples|\ixenv{examples}
+ environments have been deleted.
+
+\item Support is provided for the \file{hyperref}\ixpack{hyperref}
+ package.
+
+\end{itemize}
+
+
+
+\bibannex
+%\label{biblio}
+
+\begin{references}
+\reference{LAMPORT, L.,}{LaTeX --- A Document Preparation System,}
+ {Addison-Wesley Publishing Co., 2nd edition, 1994.} \label{lamport}
+\reference{WILSON, P.R.,}{LaTeX files for typesetting ISO standards:
+ Source code,}
+ {NISTIR, National Institute of Standards and Technology,
+ Gaithersburg, MD 20899. June 1996.} \label{isoe}
+\reference{WILSON, P.R.,}{LaTeX package files for ISO~10303: User manual,}
+ {NISTIR, National Institute of Standards and Technology,
+ Gaithersburg, MD 20899. June 1996.} \label{stepsty}
+\reference{RAHTZ, S., and BARROCA, L.,}{A style option for rotated
+ objects in \latex,}{ TUGBoat, volume 13, number 2, pp 156--180,
+ July 1992.} \label{rahtz}
+\reference{GOOSSENS, M., MITTELBACH, F. and SAMARIN, A.,}{%
+ The LaTeX Companion,}
+ {Addison-Wesley Publishing Co., 1994.} \label{goosens}
+\reference{GOOSSENS, M., and RAHTZ, S.,}{%
+ The LaTeX Web Companion --- Integrating TeX, HTML and XML,}
+ {Addison-Wesley Publishing Co., 1999.} \label{lwebcom}
+\reference{CHEN, P. and HARRISON, M.A.,}{Index preparation and
+ processing,}{Software--Practice and Experience, 19(9):897--915,
+ September 1988.} \label{chen}
+%\reference{KOPKA, H. and DALY, P.W.,}{A Guide to LaTeX,}
+% {Addison-Wesley Publishing Co., 1993.} \label{kopka}
+%\reference{WALSH, N.,}{Making TeX Work,}{O'Reilly \& Associates, Inc.,
+% 103 Morris Street, Suite A, Sebastopol, CA 95472. 1994. } \label{walsh}
+\reference{ISO 8879:1986,}{Information processing ---
+ Text and office systems ---
+ Standard Generalized Markup Language (SGML).}{} \label{sgml}
+\reference{GOLDFARB, C.F.,}{The SGML Handbook,}
+ {Oxford University Press, 1990.} \label{goldfarb}
+\reference{BRYAN, M.,}{SGML --- An Author's Guide to the Standard Generalized
+ Markup Language,}{Addison-Wesley Publishing Co., 1988. } \label{bryan}
+\reference{PHILLIPS, L. and LUBELL, J.,}{An SGML Environment for STEP,}%
+ {NISTIR 5515, National Institute of Standards and Technology,
+ Gaithersburg, MD 20899. November 1994.} \label{pandl}
+\reference{WILSON, P. R.,}{LTX2X: A LaTeX to X Auto-tagger,}%
+ {NISTIR, National Institute of Standards and Technology,
+ Gaithersburg, MD 20899. June 1996.} \label{ltx2x}
+\begin{comment}
+\reference{RESSLER, S.,}{The National PDES Testbed Mail Server User's Guide,}
+ {NSTIR 4508, National Institute of Standards and Technology,
+ Gaithersburg, MD 20899. January 1991.} \label{ressler}
+\reference{RINAUDOT, G.R.,}{STEP On Line Information Service (SOLIS),}
+ {NISTIR 5511, National Institute of Standards and Technology,
+ Gaithersburg, MD 20899. October 1994. } \label{rinaudot}
+\reference{KROL, E.,}{The Whole Internet --- User's Guide \& Catalog,}
+ {O'Reilly \& Associates, Inc.,
+ 103 Morris Street, Suite A, Sebastopol, CA 95472. 1993. } \label{krol}
+\end{comment}
+\reference{WILSON, P.R.,}{The hyphenat package,}%
+ {1999. (Available from CTAN)} \label{bib:hyphenat}
+\reference{WILSON, P.R.,}{The xtab package,}%
+ {1998. (Available from CTAN)} \label{bib:xtab}
+\end{references}
+
+
+%%%%%%% here is the index at the end
+%%\input{isomanidx}
+\input{isoman.ind}
+
+
+
+\end{document}