diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/iso')
-rw-r--r-- | Master/texmf-dist/doc/latex/iso/README | 42 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/iso/isoman.pdf | bin | 0 -> 454669 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/iso/isoman.tex | 3874 |
3 files changed, 3916 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/iso/README b/Master/texmf-dist/doc/latex/iso/README new file mode 100644 index 00000000000..6f57204c0bd --- /dev/null +++ b/Master/texmf-dist/doc/latex/iso/README @@ -0,0 +1,42 @@ + 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 +iso4ht.dtx +iso4ht.ins +isoman.tex +isoman.pdf +isoman.ps + + To install the class (and packages) +o run: latex isoe.ins (which will generate *.cls, *.clo, *.sty and *.tex files) +o Optionally, to print 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 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 For the User Manual, either latex isoman.tex or print isoman.pdf or + isoman.ps + +o If you might use TeX4ht: + 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/Master/texmf-dist/doc/latex/iso/isoman.pdf b/Master/texmf-dist/doc/latex/iso/isoman.pdf Binary files differnew file mode 100644 index 00000000000..f024f5db575 --- /dev/null +++ b/Master/texmf-dist/doc/latex/iso/isoman.pdf diff --git a/Master/texmf-dist/doc/latex/iso/isoman.tex b/Master/texmf-dist/doc/latex/iso/isoman.tex new file mode 100644 index 00000000000..18eb6cf29da --- /dev/null +++ b/Master/texmf-dist/doc/latex/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} |