|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 32085 (0x7d55) Types: TextFile Names: »iso.sty«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦this⟧ »latex-style/iso.sty«
------------ % ISO DOCUMENT STYLE <17 Oct 88> % for LaTeX version 2.09 % @(#)iso.sty 1.15 dated 88/10/19 at 13:46:52 % This file is based on Leslie Lamport's article.doc \typeout{Document Style `iso' <17 Oct 88>.} % CHOOSING THE TYPE SIZE: % % The iso style only copes with 9pt at present, so gives error messages % for other sizes and reads iso9.sty regardless. % I may add support for 10pt one day. % % Unfortunately, many style files expect \@ptsize to be 0, 1 or 2 so it is % set to 0 as the closest approximation to 9pt. \def\@ptsize{0} % To keep other style files happy \@namedef{ds@11pt}{\typeout{11pt not available. Using 9pt.}} \@namedef{ds@12pt}{\typeout{12pt not available. Using 9pt.}} % Two-side printing. \@twosidetrue % Defines twoside option. \@mparswitchtrue % Marginpars go on outside of page. % draft option % % \overfullrule = 0pt % Default is don't mark overfull hboxes. \def\ds@draft{\overfullrule 5pt} % Causes overfull hboxes to be marked. % The \@options command causes the execution of every command \ds@FOO % which is defined and for which the user typed the FOO option in his % \documentstyle command. For every option BAR he typed for which % \ds@BAR is not defined, the file BAR.sty will be read after the present % (main) .STY file is executed. \@options \input iso9.sty\relax \f % **************************************** % * LISTS * % **************************************** % % LABELS % In the iso style, list labels are aligned with the list contents % i.e. the label is indented by \leftmargin. To achieve this we redefine % \makelabel in \enumerate and \itemize (see latex.tex). \def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else \advance\@enumdepth \@ne \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list {\csname label\@enumctr\endcsname}{\usecounter {\@enumctr}\def\makelabel##1{##1}}\fi} \def\itemize{\ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% \list{\csname\@itemitem\endcsname}{\def\makelabel##1{##1}}\fi} % ENUMERATE % Enumeration is done with four counters: enumi, enumii, enumiii % and enumiv, where enumN controls the numbering of the Nth level % enumeration. The label is generated by the commands \labelenumi % ... \labelenumiv. The expansion of \p@enumN\theenumN defines the % output of a \ref command. \def\labelenumi{\theenumi)} \def\theenumi{\alph{enumi}} \def\p@enumi{\theenumi} \def\labelenumii{\theenumii)} \def\theenumii{\arabic{enumii}} \def\p@enumii{\p@enumi\theenumii} % No ISO guidelines for deeper nesting of lists \def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}} \def\p@enumiii{\p@enumii\theenumiii} \def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}} \def\p@enumiv{\p@enumiii\theenumiv} % ITEMIZE % Itemization is controlled by four commands: \labelitemi, \labelitemii, % \labelitemiii, and \labelitemiv, which define the labels of the various % itemization levels. \def\labelitemi{---} % No ISO guidelines for deeper nesting so use the same symbol \def\labelitemii{---} \def\labelitemiii{---} \def\labelitemiv{---} % VERSE % The verse environment is defined by making clever use of the % list environment's parameters. The user types \\ to end a line. % This is implemented by \let'in \\ equal \@centercr. % \def\verse{\let\\=\@centercr \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} \let\endverse\endlist % QUOTATION % Fills lines % Indents paragraph % \def\quotation{\list{}{\listparindent 1.5em \itemindent\listparindent \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} \let\endquotation=\endlist % QUOTE -- same as quotation except no paragraph indentation, % \def\quote{\list{}{\rightmargin\leftmargin}\item[]} \let\endquote=\endlist % DESCRIPTION % % To change the formatting of the label, you must redefine % \descriptionlabel. \def\descriptionlabel#1{#1 ---} \def\description{\list{}{ \let\makelabel\descriptionlabel}} \let\enddescription\endlist %\newdimen\descriptionmargin %\descriptionmargin=3em \f % **************************************** % * OTHER ENVIRONMENTS * % **************************************** % % % THEOREM % \@begintheorem ... \@endtheorem are the commands executed at the % beginning and end of a (user-defined) theorem-like environment. % Except \@opargbegintheorem is executed when an optional argument is % given. Cf. LATEX.TEX. % % \def\@begintheorem#1#2{\it \trivlist \item[\hskip \labelsep{\bf #1\ #2}]} % \def\@opargbegintheorem#1#2#3{\it \trivlist % \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]} % \def\@endtheorem{\endtrivlist} % EQUATION and EQNARRAY % % \newcounter{equation} % Default is for left-hand side of equations to be flushleft. % To make them flushright, do: % \let\@eqnsel = \hfil % \def\theequation{\arabic{equation}} % \jot = 3pt % Extra space added between lines of an eqnarray environment % The macro \@eqnnum defines how equation numbers are to appear in equations. % % \def\@eqnnum{(\theequation)} % % TITLEPAGE % In the normal environments, the titlepage environment does nothing but % start and end a page, and inhibit page numbers. It also resets the % page number to zero. % I don't know if this should be in the iso style, but I'll leave it % until someone complains. \def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn \else \newpage \fi \thispagestyle{empty}\c@page\z@} \def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} % NOTES % There are two notes environments: `note' for producing a single note and % `notes' for producing multiple notes. Each is printed in typesize small. \newenvironment{note}{ \small\par NOTE ---}{\normalsize} \newcounter{notes} \newenvironment{notes}{\small \begin{list}{NOTE \arabic{notes}}{ \usecounter{notes}\setlength{\leftmargin}{0pt} \setlength{\labelwidth}{0pt} \setlength{\listparindent}{0pt}}}{ \end{list}\normalsize} % ARRAY AND TABULAR % \arraycolsep 5pt % Half the space between columns in an array environment. \tabcolsep 6pt % Half the space between columns in a tabular environment. \arrayrulewidth .4pt % Width of rules in array and tabular environment. \doublerulesep 2pt % Space between adjacent rules in array or tabular env. % TABBING % \tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.) % MINIPAGE % \@minipagerestore is called upon entry to a minipage environment to % set up things that are to be handled differently inside a minipage % environment. In the current styles, it does nothing. % \skip\@mpfootins : plays same role for footnotes in a minipage as % \skip\footins does for ordinary footnotes \skip\@mpfootins = \skip\footins % FRAMEBOX % \fboxsep = 3pt % Space left between box and text by \fbox and \framebox. \fboxrule = .4pt % Width of rules in box made by \fbox and \framebox. \f % **************************************** % * SECTIONS * % **************************************** % % Note that the LaTeX section names have been changed to comply with % ISO naming conventions. % % DEFINE COUNTERS: % % \newcounter{NEWCTR}[OLDCTR] : Defines NEWCTR to be a counter, which is % reset to zero when counter OLDCTR is stepped. % Counter OLDCTR must already be defined. \newcounter{part} \newcounter {section}[part] \newcounter {clause}[section] \newcounter {definition}[section] \newcounter {subclause}[clause] \newcounter {subsubclause}[subclause] \newcounter {namelesssubsubclause}[subclause] \newcounter {subsubsubclause}[subsubclause] \newcounter {namelesssubsubsubclause}[subsubclause] % A special command for introductory sections: if there is an introduction, % it is section 0, otherwise start at section 1. % The command resets the section counter so use halfway through a document % will give odd results. \def\introduction{\setcounter{section}{-1} \section{Introduction}} % A special command for the foreword. This ensures that no entry appears % in the table of contents. \def\foreword{\section*{Foreword}} % For any counter CTR, \theCTR is a macro that defines the printed version % of counter CTR. It is defined in terms of the following macros: % % \arabic{COUNTER} : The value of COUNTER printed as an arabic numeral. % \roman{COUNTER} : Its value printed as a lower-case roman numberal. % \Roman{COUNTER} : Its value printed as an upper-case roman numberal. % \alph{COUNTER} : Value of COUNTER printed as a lower-case letter: % 1 = a, 2 = b, etc. % \Alph{COUNTER} : Value of COUNTER printed as an upper-case letter: % 1 = A, 2 = B, etc. % \def\thepart{\arabic{part}} % Roman numeral part numbers. \def\thesection {\arabic{section}} \def\theclause {\thesection.\arabic{clause}} \def\thedefinition{\thesection.\arabic{definition}} \def\thesubclause {\theclause .\arabic{subclause}} \def\thesubsubclause {\thesubclause.\arabic{subsubclause}} \def\thenamelesssubsubclause {\thesubclause.\arabic{namelesssubsubclause}} \def\thesubsubsubclause {\thesubsubclause.\arabic{subsubsubclause}} \def\thenamelesssubsubsubclause{ \thesubsubclause.\arabic{namelesssubsubsubclause}} \f % **************************************** % * TABLE OF CONTENTS, ETC. * % **************************************** % % A \clause command writes a % \contentsline{clause}{TITLE}{PAGE} % command on the .toc file, where TITLE contains the contents of the % entry and PAGE is the page number. If clauses are being numbered, % then TITLE will be of the form % \numberline{NUM}{HEADING} % where NUM is the number produced by \theclause. Other sectioning % commands work similarly. % % A \caption command in a 'figure' environment writes % \contentsline{figure}{\numberline{NUM}{CAPTION}}{PAGE} % on the .lof file, where NUM is the number produced by \thefigure and % CAPTION is the figure caption. It works similarly for a 'table' environment. % % The command \contentsline{NAME} expands to \l@NAME. So, to specify % the table of contents, we must define \l@section, % \l@clause, ... ; to specify the list of figures, we must define % \l@figure; and so on. Most of these can be defined with the % \@dottedtocline command, which works as follows. % % \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE} % LEVEL : An entry is produced only if LEVEL < or = value of % 'tocdepth' counter. Note that \section is level 1, % \clause is level 2, etc. % INDENT : The indentation from the outer left margin of the start of % the contents line. % NUMWIDTH : The width of a box in which the section number is to go, % if TITLE includes a \numberline command. % % This command uses the following three parameters, which are set % with a \def (so em's can be used to make them depend upon the font). % \@pnumwidth : The width of a box in which the page number is put. % \@tocrmarg : The right margin for multiple line entries. One % wants \@tocrmarg > or = \@pnumwidth % \@dotsep : Separation between dots, in mu units. Should be \def'd to % a number like 2 or 1.7 % \numberline{NUMBER} : For use in a \contentsline command. % It puts NUMBER flushleft in a box of width \@tempdima % (Before 25 Jan 88 change, it also added \@tempdima to the hanging % indentation.) % In the ISO style, sets the number in bold. \def\numberline#1{\hbox to\@tempdima{\bf#1\hfil}} \def\@pnumwidth{1.55em} \def\@tocrmarg {2.55em} \def\@dotsep{2.8} \setcounter{tocdepth}{5} % TABLEOFCONTENTS % \def\tableofcontents{ \section*{Contents} \begingroup \parskip\z@ \@starttoc{toc} \endgroup} % \l@part is as in latex.tex - I haven't considered parts yet % \def\l@part#1#2{\addpenalty{\@secpenalty} \addvspace{2.25em plus 1pt} % space above part line \begingroup \@tempdima 3em % width of box holding part number, used by \parindent \z@ \rightskip \@pnumwidth %% \numberline \parfillskip -\@pnumwidth {\large \bf % set line in \large boldface \leavevmode % TeX command to enter horizontal mode. #1\hfil \hbox to\@pnumwidth{\hss #2}}\par \nobreak % Never break after part entry \endgroup} \def\l@section#1#2{\addpenalty{\@secpenalty} % good place for page break \addvspace{1.0em plus 1pt} % space above toc entry \@tempdima 1.5em % width of box holding section number \begingroup \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth {\bf % Boldface for section title. \leavevmode % TeX command to enter horizontal mode. #1}\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep mu$}\hfill \nobreak \hbox to\@pnumwidth{\bf\hss #2}\par \endgroup} % Some of these parameters may have to be increased if a document division % has more than 9 sub-parts (a two-digit subpart may encroach upon the % following text). \def\l@clause{\@dottedtocline{2}{1.5em}{2.3em}} \def\l@subclause{\@dottedtocline{3}{3.8em}{3.2em}} \def\l@subsubclause{\@dottedtocline{4}{7.0em}{4.1em}} \def\l@namelesssubsubclause{\@gobbletwo} \def\l@subsubsubclause{\@dottedtocline{5}{10em}{5em}} \def\l@namelesssubsubsubclause{\@gobbletwo} % Definitions produce no table of contents entry, so \l@definition just drops % its arguments \def\l@definition{\@gobbletwo} % LIST OF FIGURES % \def\listoffigures{\section*{Figures}\@starttoc{lof}} \def\l@figure{\@dottedtocline{1}{0em}{1.5em}} % LIST OF TABLES % \def\listoftables{\section*{Tables}\@starttoc{lot}} \let\l@table\l@figure \f % **************************************** % * BIBLIOGRAPHY * % **************************************** % % The thebibliography environment is left over from article.sty; the iso % style uses the references environment but I've left thebibiliography % in for old times' sake. % Note that the \cite command is changed later on, so citations look % different to those of article.sty. % % The thebibliography environment executes the following commands: % % \def\newblock{\hskip .11em plus .33em minus -.07em} -- % Defines the `closed' format, where the blocks (major units of % information) of an entry run together. % % \sloppy -- Used because it's rather hard to do line breaks in % bibliographies, % % \sfcode`\.=1000\relax -- % Causes a `.' (period) not toproduce an end-of-sentence space. \def\thebibliography#1{\section*{References\@mkboth {REFERENCES}{REFERENCES}}\list {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth \advance\leftmargin\labelsep \usecounter{enumi}} \def\newblock{\hskip .11em plus .33em minus -.07em} \sloppy\clubpenalty4000\widowpenalty4000 \sfcode`\.=1000\relax} \let\endthebibliography=\endlist % \def\@biblabel#1{[#1]\hfill} % Produces the label for a \bibitem[...] % command. % \def\@cite#1{[#1]} % Produces the output of the \cite command. \f % **************************************** % * REFERENCES * % **************************************** % % The references environment is the iso style equivalent of the % thebibliography environment. % % The references environment executes the following commands: % % \def\newblock{\hskip .11em plus .33em minus -.07em} -- % Defines the `closed' format, where the blocks (major units of % information) of an entry run together. % % \sloppy -- Used because it's rather hard to do line breaks in % bibliographies, % % \sfcode`\.=1000\relax -- % Causes a `.' (period) not to produce an end-of-sentence space. \def\references{\list {}{\labelwidth\z@\leftmargin\z@\labelsep\z@\itemindent\z@ \def\newblock{\hskip .11em plus .33em minus -.07em} \def\@biblabel##1{ {\rm##1,\hskip .5em\relax}}} % Produces the label for \bibitem[...] \sloppy\clubpenalty4000\widowpenalty4000 \sfcode`\.=1000\relax \it} \let\endreferences=\endlist \def\@cite#1{#1} % Produces the output of the \cite command. \f % **************************************** % * THE INDEX * % **************************************** % % THE THEINDEX ENVIRONMENT % Produces double column format, with each paragraph a separate entry. % The user commands \item, \subitem and \subsubitem are used to % produce the entries, and \indexspace adds an extra vertical space % that's the right size to put above the first entry with a new letter % of the alphabet. % NDN: ISO guidelines say nothing about indices so I've left this alone. \newif\if@restonecol \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi \columnseprule \z@ \columnsep 35pt\twocolumn[\section*{Index}] \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ \parskip\z@ plus .3pt\relax\let\item\@idxitem} \def\@idxitem{\par\hangindent 40pt} \def\subitem{\par\hangindent 40pt \hspace*{20pt}} \def\subsubitem{\par\hangindent 40pt \hspace*{30pt}} \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi} \def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} \f % **************************************** % * FOOTNOTES * % **************************************** % % \footnoterule is a macro to draw the rule separating the footnotes from % the text. It should take zero vertical space, so it needs a negative % skip to compensate for any positive space taken by the rule. (See % PLAIN.TEX.) \def\footnoterule{\kern-3\p@ \hrule width .4\columnwidth \kern 2.6\p@} % The \hrule has default height of .4pt . % ISO have the footnote counter reset after every page. % \newcounter{footnote} \@addtoreset{footnote}{page} % The numbering style (arabic, alph, etc.) for ordinary footnotes % is defined by the macro \thefootnote. \def\thefootnote{\arabic{footnote})} \def\thempfootnote{\arabic{mpfootnote})} % \@makefntext{NOTE} : % Must produce the actual footnote, using \@thefnmark as the mark % of the footnote and NOTE as the text. It is called when effectively % inside a \parbox of width \columnwidth (i.e., with \hsize = % \columnwidth). % % The following macro indents all lines of the footnote by 10pt, and % indents the first line of a new paragraph by 1em. To change these % dimensions, just substitute the desired value for '10pt' [in both % places] or '1em'. The mark is flushright against the footnote. % \long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize % \advance\@tempdima-10pt\parshape \@ne 10pt \@tempdima}\par % \parindent 1em\noindent \hbox to \z@{\hss$^{\@thefnmark}$}#1} % % A simpler macro is used, in which the footnote text is % set like an ordinary text paragraph, with no indentation. % I am not sure whether \hss is useful or not. \long\def\@makefntext#1{\noindent \hbox to 1.8em{\hss$^{\@thefnmark}$}#1} % \@makefnmark : A macro to generate the footnote marker that goes % in the text. Default definition used. \f % **************************************** % * FIGURES AND TABLES * % **************************************** % % Float placement parameters. See LaTeX manual for their definition. % \setcounter{topnumber}{2} \def\topfraction{.7} \setcounter{bottomnumber}{1} \def\bottomfraction{.3} \setcounter{totalnumber}{3} \def\textfraction{.2} \def\floatpagefraction{.5} \setcounter{dbltopnumber}{2} \def\dbltopfraction{.7} \def\dblfloatpagefraction{.5} % \@makecaption{NUMBER}{TEXT} : Macro to make a figure or table caption. % NUMBER : Figure or table number--e.g., 'Figure 3.2' % TEXT : The caption text. % Macro should be called inside a \parbox of right width, with \normalsize. % changed 25 Jun 86 to fix according to Howard Trickey: % instead of \unhbox\@tempboxa\par we do #1: #2\par % ISO wants the number separated from the text by a long dash so we put that % rather than a colon. \long\def\@makecaption#1#2{ \vskip 10pt \setbox\@tempboxa\hbox{\bf#1 --- #2} \ifdim \wd\@tempboxa >\hsize % IF longer than one line: {\bf#1 --- #2}\par % THEN set as ordinary paragraph. \else % ELSE center. \hbox to\hsize{\hfil\box\@tempboxa\hfil} \fi} % To define a float of type TYPE (e.g., TYPE = figure), the document style % must define the following. % % \fps@TYPE : The default placement specifier for floats of type TYPE. % % \ftype@TYPE : The type number for floats of type TYPE. Each TYPE has % associated a unique positive TYPE NUMBER, which is a power % of two. E.g., figures might have type number 1, tables type % number 2, programs type number 4, etc. % % \ext@TYPE : The file extension indicating the file on which the % contents list for float type TYPE is stored. For example, % \ext@figure = 'lof'. % % \fnum@TYPE : A macro to generate the figure number for a caption. % For example, \fnum@TYPE == Figure \thefigure. % % The actual float-making environment commands--e.g., the commands % \figure and \endfigure--are defined in terms of the macros \@float % and \end@float, which are described below. % % \@float{TYPE}[PLACEMENT] : Macro to begin a float environment for a % single-column float of type TYPE with PLACEMENT as the placement % specifier. The default value of PLACEMENT is defined by \fps@TYPE. % The environment is ended by \end@float. % E.g., \figure == \@float{figure}, \endfigure == \end@float. % FIGURE \newcounter{figure} \def\thefigure{\@arabic\c@figure} \def\fps@figure{tbp} \def\ftype@figure{1} \def\ext@figure{lof} \def\fnum@figure{Figure \thefigure} \def\figure{\@float{figure}} \let\endfigure\end@float \@namedef{figure*}{\@dblfloat{figure}} \@namedef{endfigure*}{\end@dblfloat} % TABLE % \newcounter{table} \def\thetable{\@arabic\c@table} \def\fps@table{tbp} \def\ftype@table{2} \def\ext@table{lot} \def\fnum@table{Table \thetable} \def\table{\@float{table}} \let\endtable\end@float \@namedef{table*}{\@dblfloat{table}} \@namedef{endtable*}{\end@dblfloat} \f % **************************************** % * TITLE AND ABSTRACT * % **************************************** % % \maketitle == % BEGIN % \par % \twocolumn % Earlier stuff (contents etc.) set in single column % \begingroup % redefine \@makefnmark so footnote marks take zero space (this make % centering look better) % \thefootnote == \fnsymbol{footnote} % to number by *, dagger, etc. % \twocolumn[\@maketitle] % \thispagestyle{firstpage} % \@thanks % \thanks defines \@thanks to have \footnotetext commands for % % producing footnotes. % \endgroup % \pagenumbering{arabic} % Earlier pages use Roman % END \def\maketitle{\par \twocolumn \begingroup \def\thefootnote{\fnsymbol{footnote}} \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} \twocolumn[\@maketitle] \thispagestyle{firstpage}\@thanks \endgroup \setcounter{footnote}{0} \pagenumbering{arabic} \let\maketitle\relax \let\@maketitle\relax \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} \def\@maketitle{\newpage \null \vskip 2em % Vertical space above title. \begin{flushleft} {\LARGE\bf \@title \par} % Title set in \LARGE size and bold font. \vskip 1.5em % Vertical space after title. \end{flushleft}} % \abstract removed as inappropriate to the iso style %\def\abstract{\if@twocolumn %\section*{Abstract} %\else \small %\begin{center} %{\bf Abstract\vspace{-.5em}\vspace{0pt}} %\end{center} %\quotation %\fi} % %\def\endabstract{\if@twocolumn\else\endquotation\fi} \f % **************************************** % * PAGE STYLES * % **************************************** % % The page style 'foo' is defined by defining the command \ps@foo. This % command should make only local definitions. There should be no stray % spaces in the definition, since they could lead to mysterious extra % spaces in the output. % % The \ps@... command defines the macros \@oddhead, \@oddfoot, % \@evenhead, and \@evenfoot to define the running heads and % feet---e.g., \@oddhead is the macro to produce the contents of the % heading box for odd-numbered pages. It is called inside an \hbox of % width \textwidth. % % To make headings determined by the sectioning commands, the page style % defines the commands \sectionmark, ... , where % \sectionmark{TEXT} is called by \section to set a mark, and so on. % The \...mark commands and the \...head macros are defined with the % help of the following macros. (All the \...mark commands should be % initialized to no-ops.) % % MARKING CONVENTIONS: % LaTeX extends TeX's \mark facility by producing two kinds of marks % a 'left' and a 'right' mark, using the following commands: % \markboth{LEFT}{RIGHT} : Adds both marks. % \markright{RIGHT} : Adds a 'right' mark. % \leftmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot % macro, gets the current 'left' mark. Works like TeX's % \botmark command. % \rightmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot % macro, gets the current 'right' mark. Works like TeX's % \firstmark command. % The marking commands work reasonably well for right marks 'numbered % within' left marks--e.g., the left mark is changed by a \section command and % the right mark is changed by a \clause command. However, it does % produce somewhat anomalous results if two \bothmark's occur on the same page. % % Commands like \tableofcontents that should set the marks in some page styles % use a \@mkboth command, which is \let by the pagestyle command (\ps@...) % to \markboth for setting the heading or \@gobbletwo to do nothing. \mark{{}{}} % Initializes TeX's marks % \ps@empty and \ps@plain defined in LATEX.TEX % Definition of 'headings' page style % Note the use of ##1 for parameter of \def\sectionmark inside the % \def\ps@headings. % NDN: another one that's left in for old times' sake. % \if@twoside % If two-sided printing. \def\ps@headings{\let\@mkboth\markboth \def\@oddfoot{}\def\@evenfoot{}% No feet. \def\@evenhead{\rm \thepage\hfil \sl \leftmark}% Left heading. \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}% Right heading. \def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}{}}% \def\clausemark##1{\markright {\ifnum \c@secnumdepth >\@ne \theclause\hskip 1em\relax \fi ##1}}} \else % If one-sided printing. \def\ps@headings{\let\@mkboth\markboth \def\@oddfoot{}\def\@evenfoot{}% No feet. \def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}% Heading. \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}}} \fi % Definition of 'myheadings' page style. % NDN: another one that's left in for old times' sake. % \def\ps@myheadings{\let\@mkboth\@gobbletwo \def\@oddhead{\hbox{}\sl\rightmark \hfil \rm\thepage}% \def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox {}}% \def\@evenfoot{}\def\sectionmark##1{}\def\clausemark##1{}} % Definition of the 'isoheadings' page style. % We allow the user to redefine the running header, should they wish. \def\runninghead#1{\def\@runninghead{{#1}}} \runninghead{{\thestandard -\theyear(E)}} % default running header \def\ps@isoheadings{\let\@mkboth\@gobbletwo \def\@oddhead{\hfil{\Large\bf\@runninghead}} \def\@evenhead{{\Large\bf\@runninghead}\hfil} \def\@oddfoot{\hfil{\Large\bf\thepage}} \def\@evenfoot{{\Large\bf\thepage}\hfil} \def\sectionmark##1{}\def\clausemark##1{}} % Definition of the 'firstpage' style. Used for the titlepage. % Allow the user to redefine the banner thingy. \def\documenttype#1{\def\@documenttype{{#1}}} \documenttype{{INTERNATIONAL STANDARD}} % default document type \def\ps@firstpage{\let\@mkboth\@gobbletwo \def\@oddhead{\vbox{\hrule height.3mm\vskip7pt\vfil {\hbox to \textwidth{\Large\bf\@documenttype\hfil \@runninghead} }\vskip5pt\vfil\hrule height.3mm}} \def\@evenhead{\vbox{\hrule height.3mm\vskip5pt\vfil {\hbox to \textwidth{\Large\bf\@documenttype\hfil \@runninghead} }\vfil\hrule height.3mm}} \def\@oddfoot{\hfil{\Large\bf\thepage}} \def\@evenfoot{{\Large\bf\thepage}\hfil} \def\sectionmark##1{}\def\clausemark##1{}} \f % **************************************** % * MISCELLANEOUS * % **************************************** % % DATE % \def\today{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year} \def\theyear{\number\year} % % STANDARD NUMBER % \def\standard#1{\def\@standard{{#1}} \def\thestandard{ISO \@standard}} \standard{XXXX} % default standard number % % PS-LaTeX COMPATIBILITY % % So that we can detect whether we are running PS-LaTeX, define the % following: \def\@pslfmtname{pslplain} % Some useful characters \ifx\fmtname\@pslfmtname %\def\backslash{\delimiter"05C30F } % use PS '\' rather than cmsy one \chardef\lquote="C1 % gives ` \chardef\rquote="C2 % gives ' \else \chardef\lquote="12 % gives ` \chardef\rquote="13 % gives ' \fi % % USEFUL CHARACTERS % \def\bslash{\mbox{$\backslash$}} \chardef\caret=`\^ \chardef\tilde="7E % % PROG % % The prog environment sets its contents in typewriter font and redefines % \bslash to give a typewriter backslash. % This definition also works in PS-LaTeX since "5C is the PostScript code for % backslash. \def\prog#1{\begingroup \chardef\bslash="5C \tt #1\endgroup} % % NEWVERBATIM % % \newverbatim{foo} creates a new environment, foo, which behaves exactly % like the verbatim environment except that it is delimited by % \begin{foo} ... \end{foo}. % See the VERBATIM section of latex.tex for the inspiration behind this. % \def\newverbatim#1{\expandafter\def\csname #1\endcsname{% \@verbatim \frenchspacing\@vobeyspaces \csname @x#1verbatim\endcsname} \expandafter\let\csname end#1\endcsname=\endtrivlist \new@xverbatim{#1}} \begingroup \catcode `|=0 \catcode `[= 1 \catcode`]=2 \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|new@xverbatim#1[ |expandafter|def|csname @x#1verbatim|endcsname##1\end{#1}[##1|end[#1]]] |endgroup % IDENTIFICATION % Documents may need to know what style they are using so we provide % \stylename to tell them (by analogy with \fmtname). % Other styles like article, report, ucthesis etc should also define % this macro for it to be useful. Perhaps, one day, who knows... % \def\stylename{iso} \f % **************************************** % * INITIALIZATION * % **************************************** % % Default initializations \ps@isoheadings % 'isoheadings' page style \pagenumbering{roman} % Roman page numbers (changed to Arabic by % \maketitle) \onecolumn % Single column (for table of contents etc.) % changed to twocolumn by \maketitle) \sloppy \flushbottom \if@twoside\else\raggedbottom\fi % Ragged bottom unless twoside option.