% ISO DOCUMENT STYLE <91/05/02> % for LaTeX version 2.09 % @(#)iso10.sty 2.6 dated 91/05/02 at 09:57:33 % File: iso10.sty % Author: Nicolas North % Email: ndn@seg.npl.co.uk % Date: 91/05/02 % % A rewrite of art10.doc to typeset in ISO central secretariat-approved % style. % This file is based on Leslie Lamport's art10.doc. % **************************************** % * FONTS * % **************************************** % \lineskip 1pt % \lineskip is 1pt for all font sizes. \normallineskip 1pt \def\baselinestretch{1} % Each size-changing command \SIZE executes the command % \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE % where: % BASELINESKIP = Normal value of \baselineskip for that size. (Actual % value will be \baselinestretch * BASELINESKIP.) % % \FONTSIZE = Name of font-size command. The currently available % (preloaded) font sizes are: \vpt (5pt), \vipt (6pt), % \viipt (etc.), \viiipt, \ixpt, \xpt, \xipt, \xiipt, % \xivpt, \xviipt, \xxpt, \xxvpt. % \@FONTSIZE = The same as the font-size command except with an % '@' in front---e.g., if \FONTSIZE = \xivpt then % \@FONTSIZE = \@xivpt. % % For reasons of efficiency that needn't concern the designer, % the document style defines \@normalsize instead of \normalsize . This is % done only for \normalsize, not for any other size-changing commands. \def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt \abovedisplayskip 10pt plus2pt minus5pt% \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ plus3pt% \belowdisplayshortskip 6pt plus3pt minus3pt% \let\@listi\@listI} \def\small{\@setsize\small{10pt}\ixpt\@ixpt \abovedisplayskip 8.5pt plus 3pt minus 4pt% \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ plus2pt% \belowdisplayshortskip 4pt plus2pt minus 2pt \def\@listi{\leftmargin\leftmargini% \let\isoclauseref\@currentlabel \itemindent\leftmargini}} \def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt \abovedisplayskip 6pt plus 2pt minus 4pt% \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ plus 1pt% \belowdisplayshortskip 3pt plus 1pt minus 2pt \def\@listi{\leftmargin\leftmargini% \let\isoclauseref\@currentlabel \itemindent\leftmargini}} \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} \def\tiny{\@setsize\tiny{6pt}\vpt\@vpt} \def\large{\@setsize\large{13pt}\xipt\@xipt} \def\Large{\@setsize\Large{15pt}\xiipt\@xiipt} \def\LArge{\@setsize\LArge{18pt}\xivpt\@xivpt} % used for annex headings \def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt} \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} % The size font in which the copyright notice is set. % This should be 9pt. \def\@copyrightsize{\small} \normalsize % Choose the normalsize font. % **************************************** % * PAGE LAYOUT * % **************************************** % % All margin dimensions measured from a point one inch from top and side % of page. % SIDE MARGINS: % These are the margins used for setting stuff before the title. % \maketitle calls \iso@setmargins to set margins for the body of the % standard. \if@twoside % Values for two-sided printing (the default): \oddsidemargin 59mm % Left margin on odd-numbered pages. \evensidemargin -14mm % Left margin on even-numbered pages. \marginparwidth 8mm % Width of marginal notes (none in ISO standards). \else % Values for one-sided printing: % (can't happen in ISO style) \oddsidemargin -23pt % Note that \oddsidemargin = \evensidemargin \evensidemargin -23pt \marginparwidth 90pt \fi \marginparsep 1mm % Horizontal space between outer margin and % marginal note % Allow the user to shift the page across if their laser printer is % mis-aligned. There should really be a vertical version of this as well. \newdimen\@leftoffset \@leftoffset=\z@ \def\leftoffset#1{ \setlength{\@leftoffset}{#1} \advance\oddsidemargin by\@leftoffset \advance\evensidemargin by \@leftoffset} % VERTICAL SPACING: % Top of page: \topmargin -54pt % Nominal distance from top of page to top of % box containing running head. \headheight 25pt % Height of box containing running head. \headsep 39pt % Space between running head and text. % \topskip = 10pt % '\baselineskip' for first line of page. % Bottom of page: \footskip 27pt % Distance from baseline of box containing foot % to baseline of last line of text. % DIMENSION OF TEXT: \textheight 240mm \textwidth 117mm % Width of text line. % For two-column mode: \columnsep 10mm % Space between columns \columnseprule 0pt % Width of rule between columns. % A \raggedbottom command causes 'ragged bottom' pages: pages set to % natural height instead of being stretched to exactly \textheight. % Page layout for the body of the standard \def\iso@setmargins{ \global\oddsidemargin -4mm \global\advance\oddsidemargin by\@leftoffset \global\evensidemargin -14mm \global\advance\evensidemargin by\@leftoffset \global\textwidth 180mm} % FOOTNOTES: \footnotesep 6.65pt % Height of strut placed at the beginning of every % footnote = height of normal \footnotesize strut, % so no extra space between footnotes. \skip\footins 9pt plus 4pt minus 2pt % Space between last line of text and % top of first footnote. % FLOATS: (a float is something like a figure or table) % % NDN: I haven't changed the float parameters for the iso style % % FOR FLOATS ON A TEXT PAGE: % % ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE: \floatsep 12pt plus 2pt minus 2pt % Space between adjacent floats moved % to top or bottom of text page. \textfloatsep 20pt plus 2pt minus 4pt % Space between main text and floats % at top or bottom of page. \intextsep 12pt plus 2pt minus 2pt % Space between in-text figures and % text. \@maxsep 20pt % The maximum of \floatsep, % \textfloatsep and \intextsep (minus % the stretch and shrink). % TWO-COLUMN FLOATS IN TWO-COLUMN MODE: \dblfloatsep 12pt plus 2pt minus 2pt % Same as \floatsep for double-column % figures in two-column mode. \dbltextfloatsep 20pt plus 2pt minus 4pt % \textfloatsep for double-column % floats. \@dblmaxsep 20pt % The maximum of \dblfloatsep and % \dbltexfloatsep. % FOR FLOATS ON A SEPARATE FLOAT PAGE OR COLUMN: % ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE: \@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be % 0pt plus ...) \@fpsep 8pt plus 2fil % Space between floats on float page/column. \@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be % 0pt plus ... ) % DOUBLE-COLUMN FLOATS IN TWO-COLUMN MODE. \@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...) \@dblfpsep 8pt plus 2fil % Space between floats on float page. \@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be % 0pt plus ... ) % MARGINAL NOTES: % \marginparpush 5pt % Minimum vertical separation between two marginal % notes. % **************************************** % * PARAGRAPHING * % **************************************** % \parskip \baselineskip % Extra vertical space between paragraphs. \parindent 0pt % Width of paragraph indentation. %\topsep 0pt plus 1pt minus 1pt % Extra vertical space, in addition to % \parskip, added above and below list and % paragraphing environments. \partopsep 0pt plus 1pt minus 1pt % Extra vertical space, in addition to % \parskip and \topsep, added when user % leaves blank line before environment. %\itemsep 2pt plus 1pt minus 1pt % Extra vertical space, in addition to % \parskip, added between list items. % The following page-breaking penalties are defined % NDN: unchanged from art10.doc \@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1] \@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2] \@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3] \@beginparpenalty -\@lowpenalty % Before a list or paragraph environment. \@endparpenalty -\@lowpenalty % After a list or paragraph environment. \@itempenalty -\@lowpenalty % Between list items. % \clubpenalty % 'Club line' at bottom of page. % \widowpenalty % 'Widow line' at top of page. % \displaywidowpenalty % Math display widow line. % \predisplaypenalty % Breaking before a math display. % \postdisplaypenalty % Breaking after a math display. % \interlinepenalty % Breaking at a line within a paragraph. % \brokenpenalty % Breaking after a hyphenated line. % **************************************** % * SECTIONS * % **************************************** % % NDN: note that section names have changed from the usual LaTeX ones. % \secdef{UNSTARCMDS}{STARCMDS} : % When defining a sectionioning command without using % \@startsection, you can use \secdef as follows: % \def\part { ... \secdef \CMDA \CMDB } % \def\CMDA [#1]#2{ ... } % Command to define \part[...]{...} % \def\CMDB #1{ ... } % Command to define \part*{...} % NDN: I haven't considered parts for the iso style yet, so this is just % as in art10.doc. \def\part{\par % New paragraph \addvspace{4ex} % Adds vertical space above title. \@afterindentfalse % Suppresses indent in first paragraph. Change \secdef\@part\@spart} % to \@afterindenttrue to have indent. \def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne % IF secnumdepth > -1 \refstepcounter{part} % THEN step part counter \addcontentsline{toc}{part}{\thepart % add toc line \hspace{1em}#1}\else % ELSE add unnumbered line \addcontentsline{toc}{part}{#1}\fi % FI { \parindent 0pt \raggedright \ifnum \c@secnumdepth >\m@ne % IF secnumdepth > -1 \Large \bf Part \thepart % THEN Print 'Part' and \par \nobreak % number in \Large boldface. \fi % FI \huge \bf % Select \huge boldface. #2\markboth{}{}\par } % Print title and set heading marks null. \nobreak % TeX penalty to prevent page break. \vskip 3ex % Space between title and text. \@afterheading % Routine called after part and } % section heading. % Heading for \part* command \def\@spart#1{{\parindent 0pt \raggedright \huge \bf #1\par} % Title. \nobreak % TeX penalty to prevent page break. \vskip 3ex % Space between title and text. \@afterheading % Routine called after part and } % section heading. % \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE} % optional * [ALTHEADING]{HEADING} % Generic command to start a section. % NAME : e.g., 'clause' % LEVEL : a number, denoting depth of section -- i.e., section=1, % clause = 2, etc. A section number will be printed if % and only if LEVEL < or = the value of the secnumdepth % counter. % INDENT : Indentation of heading from left margin % BEFORESKIP : Absolute value = skip to leave above the heading. % If negative, then paragraph indent of text following % heading is suppressed. % AFTERSKIP : if positive, then skip to leave below heading, % else - skip to leave to right of run-in heading. % STYLE : commands to set style % If '*' missing, then increments the counter. If it is present, then % there should be no [ALTHEADING] argument. A sectioning command % is normally defined to \@startsection + its first six arguments. % A definition needs to set its number and title in % different sizes so it manipulates its argument before passing it on % to \@startsection. % These spacings are provisional only. \def\section{\@startsection {section}{1}{\z@}{3ex plus 1ex minus .2ex}{.1ex plus .1ex}{\Large\bf}} \def\clause{\@startsection{clause}{2}{\z@}{2ex plus .5ex minus .2ex}{.1ex plus .1ex}{\large\bf}} \def\definition#1{\@startsection{definition}{2}{\z@}{2ex plus .5ex minus .2ex}{-.5em plus -.1em minus -.1em}{\large\bf}% {\protect{\normalsize\bf#1:\thinspace}}} \def\subclause{\@startsection{subclause}{3}{\z@}{2ex plus 1ex minus .2ex}{.1ex plus .1ex}{\normalsize\bf}} \def\subsubclause{\@startsection {subsubclause}{4}{\z@}{2ex plus 1ex minus .2ex}{.1ex plus .1ex} {\normalsize\bf}} \def\namelesssubsubclause{\@startsection{namelesssubsubclause}{4}{\z@}{ 2ex plus 1ex minus .2ex}{-.5em plus -.1em minus -.1em}{\normalsize\bf}{}} \def\subsubsubclause{\@startsection {subsubsubclause}{5}{\parindent}{2ex plus 1ex minus .2ex}{.1ex plus .1ex}{\normalsize\bf}} \def\namelesssubsubsubclause{\@startsection{namelesssubsubsubclause}{5}{\z@}{ 2ex plus 1ex minus .2ex}{-.5em plus -.1em minus -.1em}{\normalsize\bf}{}} % Header for introductory sections which are set in \LArge. % The spacing is provisional. \def\@introsection{\@startsection{section}{1}{\z@}{3ex plus 1ex minus .2ex}{.1ex plus .1ex}{\LArge\bf}*} % A special command for the foreword. This ensures that % a new page is started and the title is in \LArge, % starting 84mm from the top of the page. % If there is no foreword, we should skip a page number before the % introduction (if there is one). \if@foreword allows us to test whether % a foreword has appeared. \newif\if@foreword \@forewordfalse \def\foreword{ \@forewordtrue\newpage\vspace*{39mm}\@introsection{Foreword} \addcontentsline{toc}{iso@intro}{\bf Foreword}} % A special command for introductory sections. Ensures that % a new page is started, skipping a page number % if there was no foreword and camera-ready copy is being produced and the % title is in \LArge, starting 84mm from the top of the page. % The spacing around the header is currently that for sections. \def\introduction{ \newpage\vspace*{39mm}\@introsection{Introduction} \addcontentsline{toc}{iso@intro}{\bf Introduction} \if@cameraready\if@foreword\else\stepcounter{page}\fi\fi} % Default initializations of \...mark commands. (See below for their % use in defining page styles. % \def\sectionmark#1{} % Preloaded definitions \def\clausemark#1{} \def\definitionmark#1{} \def\subclausemark#1{} \def\subsubclausemark#1{} \def\namelesssubsubclausemark#1{} \def\subsubsubclausemark#1{} \def\namelesssubsubsubclausemark#1{} % The value of the counter secnumdepth gives the depth of the % highest-level sectioning command that is to produce section numbers. % \setcounter{secnumdepth}{5} % **************************************** % * LISTS * % **************************************** % % The following commands are used to set the default values for the list % environment's parameters. See the LaTeX manual for an explanation of % the meanings of the parameters. Defaults for the list environment are % set as follows. First, \rightmargin, \listparindent and \itemindent % are set to 0pt. Then, for a Kth level list, the command \@listK is % called, where 'K' denotes 'i', 'ii', ... , 'vi'. (I.e., \@listiii is % called for a third-level list.) By convention, \@listK should set % \leftmargin to \leftmarginK. % % For efficiency, level-one list's values are defined at top level, and % \@listi is defined to set only \leftmargin % NDN: list spacing is simple for ISO standards: everything is one line % apart, so listii, listiii etc are very simple. % ISO set all lists with a separation of 1em between label and text, % regardless of the label width - looks awful but there you are. \leftmargini 1em \leftmarginii 1em \leftmarginiii 1em \leftmarginiv 1em \leftmarginv 1em \leftmarginvi 1em \leftmargin\leftmargini \labelsep 1em \labelwidth 0pt % \parsep 4pt plus 2pt minus 1pt (Removed 9 Jun 87) % \@listI defines top level and \@listi values of % \leftmargin, \itemindent, \topsep, \parsep, and \itemsep % Sets up \isoclauseref so that enumerated lists can refer to it for labeling \def\@listI{\leftmargin\leftmargini \parsep\baselineskip% \itemindent\leftmargini \let\isoclauseref\@currentlabel \topsep 0pt plus 1pt minus 1pt% \itemsep 0pt plus 1pt minus 1pt} \let\@listi\@listI \@listi \def\@listii{\leftmargin\leftmarginii \let\isoclauseref\@currentlabel \itemindent\leftmarginii} \def\@listiii{\leftmargin\leftmarginiii \let\isoclauseref\@currentlabel \itemindent\leftmarginiii} \def\@listiv{\leftmargin\leftmarginiv \let\isoclauseref\@currentlabel \itemindent\leftmarginiv} \def\@listv{\leftmargin\leftmarginv \let\isoclauseref\@currentlabel \itemindent\leftmarginv} \def\@listvi{\leftmargin\leftmarginvi \let\isoclauseref\@currentlabel \itemindent\leftmarginvi}