%%  A LaTeX2e class for doing INTERACT conference proceedings.

%%

%%  Copyright (c) 1999, Russel Winder

%%

\def \fileversion{v1.3}

\def \filedate{1999/01/15}

\def \docdate{\filedate}

%

%  Essentially a standard looking LaTeX2e document with a few preamble

%  additions:

%

%  \documentclass{interact_vol2}

%  \usepackage{rnmdt}  %%  Remove if not using BibTeX.

%  \title{...}

%  \author{...}

%  \address{...}

%  \telephone{...}

%  \fax{...}

%  \email{...}

%  \url{...}

%  \keywords{...}

%  \begin{document}

%  \bibliographystyle{rnmdt}  %%  Remove if not using BibTeX.

%  \maketitle

%  \begin{abstract}

%   ...

%  \end{abstract}

%  \begin{multicols}{2}

%   ...

%  {\small \bibliography{...}}  %%  Remove if not using BibTeX but note that

%                               %%  references are typeset in \small font.

%  \end{multicols}

%  \end{document}

%

%  \title{..} and \author{...} can actually appear as \title[...]{...}

%  and \author[...]{...}.  The part inside the square brackets will be

%  used for the running heads instead of the part in the curly braces

%  which is the title and author list used on the title page; this is

%  for the cases where the title and/or author list are too long to be

%  running heads, running heads can be defined explicitly.

%

%  This style is not the one used for real and, in fact, does not

%  quite replicate the formatting achieved using  the ``real''

%  macros.  I haven't had time to investigate this but really ought to

%  be cured.

%

%  The rnmdt.bst and rnmdt.sty files required for correct formatting

%  of citations should be in the same FTP directory that you found

%  this file (ftp://ftp.dcs.kcl.ac.uk/pub/russel/).  Standard

%  citations use \cite{XXX} and result in (xxx, ddd) type citations.

%  If you want xxx (ddd) type citations use \citeasnoun{XXX}.

%

%  If anyone finds any errors or wants to comment on this file please

%  contact me: russel@dcs.kcl.ac.uk.

%

\NeedsTeXFormat{LaTeX2e}[1997/12/01]

\ProvidesClass{interact_vol2}[\filedate\space\fileversion\space INTERACT Proceedings class]

\DeclareOption{onecolumn}{%

    \ClassError{interact_vol2}{Option `onecolumn' not permitted for this style.}{}}

\DeclareOption{twocolumn}{%

    \ClassError{interact_vol2}{Option `twocolumn' is effectively on by default.}{}}

\PassOptionsToClass{10pt,a4paper}{book}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}

\ProcessOptions

\LoadClass{book}

\RequirePackage{times}

\RequirePackage{mathptm}

\RequirePackage{multicol}

\RequirePackage{a4}

\def \title{\@ifnextchar[{\@gettitletwo}{\@gettitleone}}

\def \@gettitleone#1{\@gettitletwo[#1]{#1}}

\def \@gettitletwo[#1]#2{{%

    \gdef \@title{#2}%

    \def \thanks##1{\relax}%

    \def \\{\unskip \space \ignorespaces}%

    \xdef \@titlehead{#1}%

}}

\def \author{\@ifnextchar[{\@getauthortwo}{\@getauthorone}}

\def \@getauthorone#1{\@getauthortwo[#1]{#1}}

\def \@getauthortwo[#1]#2{{%

    \global \let \latexand \and%

    \gdef \and{\space \@authorand \space \ignorespaces}%

    \gdef \@author{#2}%

    \def \and{\unskip \space \@authorand \space \ignorespaces}%

    \def \thanks##1{\relax}%

    \def \\{\unskip \space \ignorespaces}%

    \xdef \@authorhead{#1}%

    \gdef \@@author{#2}%

}}

\def \@name{}

\def \@address{}

\def \@telephone{}

\def \@fax{}

\def \@email{}

\def \@url{}

\newcommand \@contactdetails[6]{%

    \gdef \@name{#1}%

    \gdef \@address{#2}%

    \gdef \@telephone{#3}%

    \gdef \@fax{#4}%

    \gdef \@email{#5}%

    \gdef \@url{#6}%

}

\let \contactdetails \@contactdetails

\newcommand \address[1]{\gdef\@address{#1}}

\newcommand \telephone[1]{\gdef \@telephone{#1}}

\newcommand \fax[1]{\gdef \@fax{#1}}

\newcommand \email[1]{\gdef \@email{#1}}

\newcommand \url[1]{\gdef \@url{#1}}

\newcommand \keywords[1]{\gdef \@keywords{#1}}%

\renewcommand \thesection{\arabic{section}}%

\renewcommand \theequation{\arabic{equation}}%

\renewcommand \thefigure{\arabic{figure}}%

\renewcommand \thetable{\arabic{table}}%

\def \section{%

    \@ifstar{\@sectionstar}{\@sectionnostar}%

}

\def \@sectionstar#1{\@startsection{section}{1}{\z@}{-2ex \@plus -.4ex \@minus -.2ex}{1ex \@plus .1ex \@minus .1ex}{\sectionheadfont}*{\uppercase{#1}}}

\def \@sectionnostar#1{\@startsection{section}{1}{\z@}{-2ex \@plus -.4ex \@minus -.2ex}{1ex \@plus .1ex \@minus .1ex}{\sectionheadfont}{\uppercase{#1}}}

\def \subsection{\@startsection{subsection}{2}{\z@}{-1ex \@plus -.3ex \@minus 

 -.2ex}{.5ex \@plus .1ex \@minus .1ex}{\subsectionheadfont}}

\def \subsubsection{\@startsection{subsubsection}{3}{\z@}{-.75ex \@plus 

 -.2ex \@minus -.2ex}{.3ex \@plus .1ex \@minus .1ex}{\subsubsectionheadfont}}

\setcounter{secnumdepth}{3}

\newcommand \copyrightnotice{%

    \hbox to \z@{%

        \vbox to \z@{%

            \parbox{\columnwidth}{%

                Human--Computer Interaction --- INTERACT '99 (Volume 2)\\%

                S. Brewster, A. Cawsey and G. Cockton (Editors)\\%

                \copyright\ IFIP, 1999%

            }%

            \vss%

        }%

        \hss%

    }%

}

\def \ps@paper{%

    \let \@mkboth \papermarkboth%

    \def \@oddhead{\rightmark}%

    \def \@oddfoot{}%

    \def \@evenhead{\leftmark}%

    \def \@evenfoot{}%

    \let \chaptermark \@gobble%

    \let \sectionmark \@gobble%

}

\def \ps@papertitlepage{%

    \let \@mkboth \papermarkboth%

    \def \@oddhead{\small \itshape \copyrightnotice \hfill \thepage}%

    \def \@oddfoot{}%

    \def \@evenhead{\small \itshape \thepage \hfill \copyrightnotice}%

    \def \@evenfoot{}%

    \let \chaptermark \@gobble%

    \let \sectionmark \@gobble%

}

\let \ps@plain \ps@empty

\hyphenpenalty = \@M

\tolerance = \@m

\emergencystretch = 20\p@

\hfuzz = 2\p@

\vfuzz = 2\p@

\renewcommand \footnoterule {%

    \kern -3\p@%

    \hrule%

    \kern 2.6\p@%

}

\setlength \columnsep{8mm}%

\setlength \parskip{\z@ \@plus 1\p@}

\setlength \parindent{2em}

\setlength \headsep{16\p@}

\setlength \partopsep{1\p@ \@minus 1\p@}

\setlength \topsep{\z@}

\setlength \footskip{26\p@}

\renewcommand \topfraction{.85}

\renewcommand \textfraction{.15}

\renewcommand \floatpagefraction{.75}

\renewcommand \bibname{REFERENCES}

\renewenvironment{thebibliography}[1]{%

    \section*{\bibname}%

    \list{\@biblabel{\arabic{enumiv}}}%

         {\settowidth\labelwidth{\@biblabel{#1}}%

          \leftmargin \labelwidth%

          \advance \leftmargin \labelsep%

          \@openbib@code%

          \usecounter{enumiv}%

          \let \p@enumiv \@empty%

          \renewcommand \theenumiv{\arabic{enumiv}}}%

    \small%

    \sloppy%

    \clubpenalty 4000%

    \widowpenalty 4000%

    \sfcode `\.=\@m%

    \relax%

}{%

    \def \@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%

    \endlist%

}

\newcommand \papermarkboth[2]{%

    \markboth{\noexpand \small \itshape \noexpand \thepage \hfill #1}%

             {\noexpand \small \itshape #2\hfill \noexpand \thepage}%

}

\pagestyle{paper}

\setlength \textwidth{160 true mm}

\setlength \textheight{218 true mm}

\oddsidemargin -14mm

\evensidemargin -14mm

\topmargin -8.5mm



\newcommand \@authorand{\&}

\newlength \spaceAboveTitle

\setlength \spaceAboveTitle{5mm}

\renewcommand \maketitle{%

    \begingroup%

        \renewcommand \thefootnote{\fnsymbol{footnote}}%

        \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%

        \long\def\@makefntext##1{\parindent 1em\noindent%

            \hb@xt@1.8em{%

                \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%

        %\twocolumn[\@maketitle]%

        \@maketitle%

        \thispagestyle{papertitlepage}%

    \endgroup%

    \@mkboth{\@authorhead}{\@titlehead}%

    \setcounter{footnote}{0}%

    \global \let \thanks \relax%

    \global \let \@url \@empty%

    \global \let \@email \@empty%

    \global \let \@fax \@empty%

    \global \let \@telephone \@empty%

    \global \let \@address \@empty%

    \global \let \@authorhead \@empty%

    \global \let \@@author \@empty%

    \global \let \@author \@empty%

    \global \let \@date \@empty%

    \global \let \@title \@empty%

    \global \let \title \relax%

    \global \let \author \relax%

    \global \let \date \relax%

    \global \let \and \relax%

}

\def \@maketitle{%

    \vspace*{\spaceAboveTitle}%

    \begin{center}%

        {\LARGE \@title \par}%

        \vspace*{2\bigskipamount}%

        {\Large \@author \par}%

        \vspace*{\medskipamount}%

        \@docontactdetails{\@address}{\@telephone}{\@fax}{\@email}{\@url}%

    \end{center}%

}

\def\@makechapterhead#1{%

    \vspace*{\spaceAboveTitle}%

    {\LARGE \begin{center} #1 \end{center}}%

    \vspace*{3\bigskipamount}%

}

\let \@makeschapterhead \@makechapterhead

\newcommand \@@contactdetails[6]{%

    \vspace*{-\medskipamount}%

    \@docontactdetails{#2}{#3}{#4}{#5}{#6}%

}

\newcommand \@docontactdetails[5]{%

    {\Large%

     #1%

     \par%

     \vspace*{\smallskipamount}%

     \setbox0 = \hbox{#2}%

     \ifdim \wd0 > \z@%

        Tel: {\large #2}\\%

     \fi%

     \setbox0 = \hbox{#3}%

     \ifdim \wd0 > \z@%

        Fax: {\large #3}\\%

     \fi%

     \setbox0 = \hbox{#4}%

     \ifdim \wd0 > \z@%

        EMail: #4\\%

     \fi%

     \setbox0 = \hbox{#5}%

     \ifdim \wd0 > \z@%

        URL: #5\\%

     \fi%

    }%

    \global \let \contactdetails \@@contactdetails%

}

\newenvironment{abstract}{%

    \vspace*{\bigskipamount}%

    \let \acronym \aacronym%

    \noindent%

    \@ifnextchar{\ }{\@gobble}{}%

}{%

    \par%

    \bigskip%

    \noindent%

    Keywords: \@keywords%

    \medskip%

}

\newcommand \notsolarge {\@setfontsize\notsolarge{11}{13}}

\def \sectionheadfont{\large\bfseries}

\def \subsectionheadfont{\large\bfseries}

\def \subsubsectionheadfont{\large\bfseries}

\renewcommand \thefootnote{\fnsymbol{footnote}}%

\newcommand \acronym[1]{{\small #1}}

\newcommand \aacronym[1]{{\small\textit{#1}}}

\newcommand \facronym[1]{{\scriptsize #1}}

Content-Description: paper.ps

Content-MD5: 74XGsvPabGR8/QyjP7Z2FQ==

Content-Type: APPLICATION/postscript; name="paper.ps"; x-unix-mode="0644"



 paper1.ps 

Content-Description: rnmdt.bst

Content-MD5: LE6BaLoMsxOO9CzCykGOuA==

Content-Type: TEXT/plain; name="rnmdt.bst"; charset="us-ascii"; x-unix-mode="0644"



ENTRY {

  address

  annote

  author

  booktitle

  chapter

  edition

  editor

  howpublished

  institution

  journal

  key

  month

  note

  number

  organization

  pages

  publisher

  school

  series

  title

  type

  volume

  year

}

{ field.used }

{ extra.label sort.label list.year }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

FUNCTION {init.state.consts}

{ #0 'before.all :=

  #1 'mid.sentence :=

  #2 'after.sentence :=

  #3 'after.block :=

}

STRINGS { s t f }

FUNCTION {output.nonnull}

{ 's :=

  output.state mid.sentence =

    { ", " * write$ }

    { output.state after.block =

        { add.period$ write$

          newline$

          "\newblock " write$

        }

        { output.state before.all =

            'write$

            { add.period$ " " * write$ }

          if$

        }

      if$

      mid.sentence 'output.state :=

    }

  if$

  s

}

FUNCTION {output}

{ duplicate$ empty$

    'pop$

    'output.nonnull

  if$

}

FUNCTION {output.check}

{ 't :=

  duplicate$ empty$

    { pop$ "empty " t * " in " * cite$ * warning$ }

    'output.nonnull

  if$

}

FUNCTION {item.check}

{ 't :=

  empty$

    { "empty " t * " in " * cite$ * warning$ }

    { skip$ }

  if$

}

FUNCTION {fin.entry}

{ add.period$

  write$

  newline$

}

FUNCTION {new.block}

{ output.state before.all =

    'skip$

    { after.block 'output.state := }

  if$

}

FUNCTION {not}

{   { #0 }

    { #1 }

  if$

}

FUNCTION {and}

{   'skip$

    { pop$ #0 }

  if$

}

FUNCTION {or}

{   { pop$ #1 }

    'skip$

  if$

}

FUNCTION {field.or.null}

{ duplicate$ empty$

    { pop$ "" }

    'skip$

  if$

}

FUNCTION {emphasize}

{ duplicate$ empty$

    { pop$ "" }

    { "\emph{" swap$ * "}" * }

  if$

}

FUNCTION {embolden}

{ duplicate$ empty$

    { pop$ "" }

    { "\textbf{" swap$ * "}" * }

  if$

}

FUNCTION {quote}

{ duplicate$ empty$

    { pop$ "" }

    { "``" swap$ * "''" * }

  if$

}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}

{ 's :=

  'f :=

  #1 'nameptr :=

  s num.names$ 'numnames :=

  numnames 'namesleft :=

    { namesleft #0 > }

    { s nameptr f format.name$ 't :=

      nameptr #1 >

        { namesleft #1 >

            { ", " * t * }

            { t "others" =

                { " \refetal" * }

                { " \& " * t * }

              if$

            }

          if$

        }

        't

      if$

      nameptr #1 + 'nameptr :=

      namesleft #1 - 'namesleft :=

    }

  while$

}

FUNCTION {format.authors}

{ author empty$

    { "" }

    { "{vv~}{ll}{, jj}{, f.}" author format.names }

  if$

}

FUNCTION {format.editors}

{ editor empty$

    { "" }

    { "{vv~}{ll}{, jj}{, f.}" editor format.names

      editor num.names$ #1 >

        { " (eds.)" * }

        { " (ed.)" * }

      if$

    }

  if$

}

FUNCTION {format.editors.reverse}

{ editor empty$

    { "" }

    { "{f.~}{vv~}{ll}{, jj}" editor format.names

      editor num.names$ #1 >

        { " (eds.)" * }

        { " (ed.)" * }

      if$

    }

  if$

}

FUNCTION {format.title}

{ title

}

FUNCTION {n.dashify}

{ 't :=

  ""

    { t empty$ not }

    { t #1 #1 substring$ "-" =

        { t #1 #2 substring$ "--" = not

            { "--" *

              t #2 global.max$ substring$ 't :=

            }

            {   { t #1 #1 substring$ "-" = }

                { "-" *

                  t #2 global.max$ substring$ 't :=

                }

              while$

            }

          if$

        }

        { t #1 #1 substring$ *

          t #2 global.max$ substring$ 't :=

        }

      if$

    }

  while$

}

FUNCTION {format.btitle}

{ title emphasize

}

FUNCTION {tie.or.space.connect}

{ duplicate$ text.length$ #3 <

    { "~" }

    { " " }

  if$

  swap$ * *

}

FUNCTION {either.or.check}

{ empty$

    'pop$

    { "can't use both " swap$ * " fields in " * cite$ * warning$ }

  if$

}

FUNCTION {format.bvolume}

{ volume empty$

    { "" }

    { "Vol." volume tie.or.space.connect

      series empty$

        'skip$

        { " of " * series emphasize * }

      if$

      "volume and number" number either.or.check

    }

  if$

}

FUNCTION {format.number.series}

{ volume empty$

    { number empty$

        { series field.or.null }

        { output.state mid.sentence =

            { "number" }

            { "Number" }

          if$

          number tie.or.space.connect

          series empty$

            { "there's a number but no series in " cite$ * warning$ }

            { " \emph{in} " * series quote * }

          if$

        }

      if$

    }

    { "" }

  if$

}

FUNCTION {format.edition}

{ edition empty$

    { "" }

    { output.state mid.sentence =

        { edition "l" change.case$ " edition" * }

        { edition "t" change.case$ " edition" * }

      if$

    }

  if$

}

INTEGERS { multiresult }

FUNCTION {multi.page.check}

{ 't :=

  #0 'multiresult :=

    { multiresult not

      t empty$ not

      and

    }

    { t #1 #1 substring$

      duplicate$ "-" =

      swap$ duplicate$ "," =

      swap$ "+" =

      or or

        { #1 'multiresult := }

        { t #2 global.max$ substring$ 't := }

      if$

    }

  while$

  multiresult

}

FUNCTION {format.pages}

{ pages empty$

    { "" }

    { pages multi.page.check

        { "pp." pages n.dashify * }

        { "p." pages * }

      if$

    }

  if$

}

FUNCTION {format.vol.num}

{ volume embolden field.or.null

  number empty$

    'skip$

    { "(" number * ")" * *

      volume empty$

        { "there's a number but no volume in " cite$ * warning$ }

        'skip$

      if$

    }

  if$

}

FUNCTION {format.vol.num.pages}

{ format.vol.num

  pages empty$

    'skip$

    { duplicate$ empty$

        { pop$ format.pages }

        { ",~" * pages n.dashify * }

      if$

    }

  if$

}

FUNCTION {format.chapter.pages}

{ chapter empty$

    'format.pages

    { type empty$

        { "chapter" }

        { type "l" change.case$ }

      if$

      chapter tie.or.space.connect

      pages empty$

        'skip$

        { ", " * format.pages * }

      if$

    }

  if$

}

FUNCTION {format.in.ed.booktitle}

{ booktitle empty$

    { "" }

    { editor empty$

        { "\emph{in} " booktitle emphasize * }

        { "\emph{in} " format.editors.reverse * ", " * booktitle emphasize * }

      if$

    }

  if$

}

FUNCTION {empty.misc.check}

{ author empty$ title empty$ howpublished empty$

  month empty$ year empty$ note empty$

  and and and and and

  key empty$ not and

    { "all relevant fields are empty in " cite$ * warning$ }

    'skip$

  if$

}

FUNCTION {format.thesis.type}

{ type empty$

    'skip$

    { pop$

      type

    }

  if$

}

FUNCTION {format.tr.number}

{ type empty$

    { "Technical Report" }

    'type

  if$

  number empty$

    { }

    { number tie.or.space.connect }

  if$

}

FUNCTION {format.article.crossref}

{ key empty$

    { journal empty$

        { "need key or journal for " cite$ * " to crossref " * crossref *

          warning$

          ""

        }

        { "in \emph{" journal * "} \cite{" * crossref * "}" *}

      if$

    }

    { "\emph{in} \citeasnoun{" crossref * "}" * }

  if$

 

}

FUNCTION {format.book.crossref}

{ volume empty$

    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$

      "in "

    }

    { "Vol." volume tie.or.space.connect

      " of " *

    }

  if$

  editor empty$

  editor field.or.null author field.or.null =

  or

    { key empty$

        { series empty$

            { "need editor, key, or series for " cite$ * " to crossref " *

              crossref * warning$

              "" *

            }

            { "\emph{" * series * "} \cite{" * crossref * "}" *}

          if$

        }

        { " \citeasnoun{" * crossref * "}" * }

      if$

    }

    { " \citeasnoun{" * crossref * "}" * }

  if$

}

FUNCTION {format.incoll.inproc.crossref}

{ editor empty$

  editor field.or.null author field.or.null =

  or

    { key empty$

        { booktitle empty$

            { "need editor, key, or booktitle for " cite$ * " to crossref " *

              crossref * warning$

              ""

            }

            { "in \emph{" booktitle * "} \cite{" * crossref * "}" *}

          if$

        }

        { "\emph{in} \citeasnoun{" crossref * "}" * }

      if$

    }

    { "\emph{in} \citeasnoun{" crossref * "}" * }

  if$

  

}

INTEGERS { len }

FUNCTION {chop.word}

{ 's :=

  'len :=

  s #1 len substring$ =

    { s len #1 + global.max$ substring$ }

    's

  if$

}

FUNCTION {format.lab.names.abbr}

{ 's :=

  s num.names$ 'numnames :=

  numnames #1 >

    { numnames #2 >

        { s #1 "{vv~}{ll}" format.name$ " \refetal" * }

        { s #2 "{ff }{vv~}{ll}{ jj}" format.name$ "others" =

            { s #1 "{vv~}{ll}" format.name$ " \refetal" * }

            { s #1 "{vv~}{ll}" format.name$ " \& " *

              s #2 "{vv~}{ll}" format.name$ * 

            }

          if$

        }

      if$

    }

    { s #1 "{vv~}{ll}" format.name$ }

  if$

}

FUNCTION {format.lab.names.full}

{ 's :=

  #1 'nameptr :=

  s num.names$ 'numnames :=

  numnames 'namesleft :=

    { namesleft #0 > }

    { s nameptr "{vv~}{ll}" format.name$ 't :=

      nameptr #1 >

        { namesleft #1 >

            { ", " * t * }

            { t "others" =

                { " \refetal" * }

                { " \& " * t * }

              if$

            }

          if$

        }

        't

      if$

      nameptr #1 + 'nameptr :=

      namesleft #1 - 'namesleft :=

    }

  while$

}

INTEGERS { author.field editor.field organization.field title.field key.field }

FUNCTION {init.field.constants}

{ #0 'author.field :=

  #1 'editor.field :=

  #2 'organization.field :=

  #3 'title.field :=

  #4 'key.field :=

}

FUNCTION {make.list.label}

{ author.field field.used =

    { format.authors }

    { editor.field field.used =

        { format.editors }

        { organization.field field.used =

            { "The " #4 organization chop.word #12 text.prefix$ }

            { title.field field.used =

                { format.btitle }

                { key.field field.used =

                    { key #12 text.prefix$ }

                    { "Internal error :001 on " cite$ * " label" * warning$ }

                  if$

                }

              if$

            }

          if$

        }

      if$

    }

  if$

}

FUNCTION {make.full.label}

{ author.field field.used =

    { author format.lab.names.full }

    { editor.field field.used =

        { editor format.lab.names.full }

        { organization.field field.used =

            { "The " #4 organization chop.word #12 text.prefix$ }

            { title.field field.used =

                { format.btitle }

                { key.field field.used =

                    { key #12 text.prefix$ }

                    { "Internal error :001 on " cite$ * " label" * warning$ }

                  if$

                }

              if$

            }

          if$

        }

      if$

    }

  if$

}

FUNCTION {make.abbr.label}

{ author.field field.used =

    { author format.lab.names.abbr }

    { editor.field field.used =

        { editor format.lab.names.abbr }

        { organization.field field.used =

            { "The " #4 organization chop.word #12 text.prefix$ }

            { title.field field.used =

                { format.btitle }

                { key.field field.used =

                    { key #12 text.prefix$ }

                    { "Internal error :001 on " cite$ * " label" * warning$ }

                  if$

                }

              if$

            }

          if$

        }

      if$

    }

  if$

}

FUNCTION {output.bibitem}

{ newline$

  "\rwbibitem[" write$

  make.abbr.label write$

  "]{" write$

  make.full.label write$

  "}{" write$

  list.year write$

  "}{" write$

  cite$ write$

  "}" write$

  newline$

  ""

  before.all 'output.state :=

}

FUNCTION {list.label.output}

{ make.list.label " " * write$

}

FUNCTION {article}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  author "author" item.check

  title.field field.used =

    { skip$ }

    { format.title quote "title" output.check }

  if$

  crossref missing$

    { journal emphasize "journal" duplicate$ item.check

      pages empty$

        {

           " " *

           format.vol.num * output

        }

        {

           " " *

           format.vol.num.pages * output

        }

      if$

    }

    { format.article.crossref output.nonnull

      format.pages output

    }

  if$

  new.block

  note output

  fin.entry

}

FUNCTION {book}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  author empty$

    { editor "author and editor" item.check }

    { crossref missing$

        { "author and editor" editor either.or.check }

        'skip$

      if$

    }

  if$

  title.field field.used =

    { skip$ }

    { format.btitle "title" output.check }

  if$

  crossref missing$

    { format.bvolume output

      format.number.series output

      format.edition output

      publisher "publisher" output.check

      address output

    }

    { format.book.crossref output.nonnull

      format.edition output

    }

  if$

  new.block

  note output

  fin.entry

}

FUNCTION {booklet}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  title.field field.used =

    { skip$ }

    { format.title quote "title" output.check }

  if$

  howpublished output

  address output

  new.block

  note output

  fin.entry

}

FUNCTION {inbook}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  author empty$

    { editor "author and editor" item.check }

    { crossref missing$

        { "author and editor" editor either.or.check }

        'skip$

      if$

    }

  if$

  title.field field.used =

    { skip$ }

    { format.btitle "title" output.check }

  if$

  crossref missing$

    { format.bvolume output

      format.number.series output

      format.edition output

      publisher "publisher" output.check

      address output

    }

    { format.book.crossref output.nonnull

      format.edition output

    }

  if$

  format.chapter.pages "chapter and pages" output.check

  new.block

  note output

  fin.entry

}

FUNCTION {incollection}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  title.field field.used =

    { skip$ }

    { format.title "title" output.check }

  if$

  author "author" item.check

  crossref missing$

    { format.in.ed.booktitle "booktitle" output.check

      format.edition output

      format.bvolume output

      format.number.series output

      publisher "publisher" output.check

      address output

    }

    { format.incoll.inproc.crossref output.nonnull

    }

  if$

  format.chapter.pages output

  new.block

  note output

  fin.entry

}

FUNCTION {inproceedings}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  title.field field.used =

    { skip$ }

    { format.title "title" output.check }

  if$

  author "author" item.check

  crossref missing$

    { format.in.ed.booktitle "booktitle" output.check

      journal empty$

        { format.bvolume output

          format.number.series output

        }

        { journal emphasize "journal" duplicate$ item.check

          " " * format.vol.num * output

        }

      if$

      address empty$

        { organization output

          publisher output

        }

        { organization output

          publisher output

          address output.nonnull

         }

      if$

    }

    { format.incoll.inproc.crossref output.nonnull

    }

  if$

  format.pages output

  new.block

  note output

  fin.entry

}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  title.field field.used =

    { skip$ }

    { format.btitle "title" output.check }

  if$

  format.edition output

  author empty$

    { organization empty$

        { address output }

        'skip$

      if$

    }

    { organization output

      address output

    }

  if$

  new.block

  note output

  fin.entry

}

FUNCTION {mastersthesis}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  author "author" item.check

  title.field field.used =

    { skip$ }

    { format.title "title" output.check }

  if$

  "Master's thesis" format.thesis.type output.nonnull

  school "school" output.check

  address output

  new.block

  note output

  fin.entry

}

FUNCTION {misc}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  title.field field.used =

    { skip$ }

    { format.title quote output }

  if$

  howpublished output

  new.block

  note output

  fin.entry

  empty.misc.check

}

FUNCTION {phdthesis}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  author "author" item.check

  title.field field.used =

    { skip$ }

    { title "title" output.check }

  if$

  "PhD thesis" format.thesis.type output.nonnull

  school "school" output.check

  address output

  new.block

  note output

  fin.entry

}

FUNCTION {proceedings}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  title.field field.used =

    { skip$ }

    { format.btitle "title" output.check }

  if$

  journal empty$

    { format.bvolume output

      format.number.series output

    }

    { journal emphasize "journal" duplicate$ item.check

      " " * format.vol.num.pages * output

    }

  if$

  address empty$

    { editor empty$

        { skip$ }

        { organization output

        }

      if$

      publisher output

    }

    { editor empty$

        'skip$

        { organization output }

      if$

      publisher output

      address output.nonnull

    }

  if$

  new.block

  note output

  fin.entry

}

FUNCTION {techreport}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  author "author" item.check

  title.field field.used =

    { skip$ }

    { format.title "title" output.check }

  if$

  format.tr.number output.nonnull

  institution "institution" output.check

  address output

  new.block

  note output

  fin.entry

}

FUNCTION {unpublished}

{ output.bibitem

  list.label.output

  " (" list.year * ")" * output.nonnull

  author "author" item.check

  title.field field.used =

    { skip$ }

    { format.title "title" output.check }

  if$

  note "note" output.check

  fin.entry

}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}

 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

EXECUTE {init.field.constants}

FUNCTION {sortify}

{ purify$

  "l" change.case$

}

FUNCTION {author.key.label}

{ author empty$

    { key empty$

        { title.field 'field.used := }

        { key.field 'field.used := }

      if$

    }

    { author.field 'field.used := }

  if$

}

FUNCTION {author.editor.key.label}

{ author empty$

    { editor empty$

        { key empty$

            { title.field 'field.used := }

            { key.field 'field.used := }

          if$

          }

        { editor.field 'field.used := }

      if$

    }

    { author.field 'field.used := }

  if$

}

FUNCTION {author.key.organization.label}

{ author empty$

    { key empty$

        { organization empty$

            { title.field 'field.used := }

            { organization.field 'field.used := }

          if$

        }

        { key.field 'field.used := }

      if$

    }

    { author.field 'field.used := }

  if$

}

FUNCTION {editor.key.organization.label}

{ editor empty$

    { key empty$

        { organization empty$

            { title.field 'field.used := }

            { organization.field 'field.used := }

          if$

        }

        { key.field 'field.used := }

      if$

    }

    { editor.field 'field.used := }

  if$

}

FUNCTION {sort.format.title}

{ 't :=

  "A " #2

    "An " #3

      "The " #4 t chop.word

    chop.word

  chop.word

  sortify

  #1 global.max$ substring$ 

}

FUNCTION {calc.label}

{ type$ "book" =

  type$ "inbook" =

  type$ "incollection" =

  or or

    'author.editor.key.label

    { type$ "proceedings" =

        'editor.key.organization.label

        { type$ "manual" =

            'author.key.organization.label

            'author.key.label

          if$

        }

      if$

    }

  if$

  make.abbr.label

  title.field field.used =

    { sort.format.title }

    { sortify }

  if$

  year field.or.null purify$ #-1 #4 substring$ sortify

  *

  'sort.label :=

}

FUNCTION {first.presort}

{ calc.label

  sort.label

  title.field field.used =

    { skip$ }

    { "    "

      *

      make.list.label sortify

      *

      "    "

      *

      title field.or.null

      sort.format.title

      *

    }

  if$

  #1 entry.max$ substring$

  'sort.key$ :=

}

ITERATE {first.presort}

SORT

STRINGS { last.sort.label next.extra }

INTEGERS { last.extra.num }

FUNCTION {initialize.last.extra.num}

{ #0 int.to.chr$ 'last.sort.label :=

  "" 'next.extra :=

  #0 'last.extra.num :=

}

FUNCTION {forward.pass}

{ last.sort.label sort.label =

    { last.extra.num #1 + 'last.extra.num :=

      last.extra.num int.to.chr$ 'extra.label :=

    }

    { "a" chr.to.int$ 'last.extra.num :=

      "" 'extra.label :=

      sort.label 'last.sort.label :=

    }

  if$

}

FUNCTION {reverse.pass}

{ next.extra "b" =

    { "a" 'extra.label := }

    'skip$

  if$

  year empty$

    { "n.d." extra.label * 'list.year := }

    { year extra.label * 'list.year := }

  if$

  extra.label 'next.extra :=

}

EXECUTE {initialize.last.extra.num}

ITERATE {forward.pass}

REVERSE {reverse.pass}

FUNCTION {second.presort}

{ make.list.label

  title.field field.used =

    { sort.format.title }

    { sortify }

  if$

  "    "

  *

  list.year field.or.null sortify

  *

  "    "

  *

  title.field field.used =

    { skip$ }

    { title field.or.null

      sort.format.title

      *

    }

  if$

  #1 entry.max$ substring$

  'sort.key$ :=

}

ITERATE {second.presort}

SORT

FUNCTION {begin.bib}

{

 preamble$ empty$

    'skip$

    { preamble$ write$ newline$ }

  if$

  "\begin{thebibliography}{xx}" write$ newline$

}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}

{ newline$

  "\end{thebibliography}" write$ newline$

}

EXECUTE {end.bib}

Content-Description: rnmdt.sty

Content-MD5: aN4mW5hORkqlsYWKBalZlw==

Content-Type: TEXT/plain; name="rnmdt.sty"; charset="us-ascii"; x-unix-mode="0644"



%%

%% This is file `rnmdt.sty',

%% generated with the docstrip utility.

%%

%% The original source files were:

%%

%% rnmdt.dst  (with options: `rnmdt')

%% 

%% IMPORTANT NOTICE:

%% 

%% For the copyright see the source file.

%% 

%% You are *not* allowed to modify this file.

%% 

%% You are *not* allowed to distribute this file.

%% For distribution of the original source see the terms

%% for copying and modification in the file rnmdt.dst.

%% 

%%  BibTeX style file for Russel Winder's minor variation on the name

%%  date style:  this is essentially a minor variation on Harvard.

%%  This is also the CompSciNet style, not to mention the Taylor &

%%  Francis variation used for PAIS.

%%

%%  Copyright (c) 1997, Russel Winder.

%%

\def \fileversion{v1.4}

\def \filedate{1998/03/16}

\def \docdate{\filedate}

\newcommand \titlestring{RLW Citation style}

\newcommand \packagename{rnmdt}

\ifx \documentclass \undefined

    \wlog{LaTeX Package `\titlestring' \fileversion \space <\filedate>}

\fi

\NeedsTeXFormat{LaTeX2e}[1997/12/01]

\ProvidesPackage{\packagename}[\filedate \space \fileversion \space \titlestring]

\newcommand \rwbibcite[4]{%

    \global \@namedef{bhf@#1}{#2}%

    \global \@namedef{bha@#1}{#3}%

    \global \@namedef{bhy@#1}{#4}%

    \global \@namedef{b@#1}{\csname bha@#1\endcsname}%

}

\newcommand \rwbibitem{%

    \@ifnextchar[{\@rwiteml}%

                 {\@rwitem}%

}

\def \@rwiteml[#1]#2#3#4{%

    \item[]%

    \if@filesw{%

        \def \protect##1{\string ##1\space}%

        \immediate \write \@auxout{\string \rwbibcite{#4}{#2}{#1}{#3}}%

    }\fi%

    \protect \hspace*{-\labelwidth}%

    \protect \hspace*{-\labelsep}%

    \ignorespaces%

}

\def \@rwitem#1#2#3{%

    \item[]%

    \if@filesw{%

        \def \protect##1{\string ##1\space}%

        \immediate \write \@auxout{\string \rwbibcite{#3}{#1}{#1}{#2}}%

    }\fi%

    \protect\hspace*{-\labelwidth}%

    \protect\hspace*{-\labelsep}%

    \ignorespaces%

}

\@ifundefined{refetal}{\newcommand \refetal{et~al.}}{}

\newcommand \citeasnoun{%

    \gdef \@cite@ps{}%

    \@ifnextchar[{\@tempswatrue\@citexasnoun}%

                 {\@tempswafalse\@citexasnoun[]}%

}

\newcommand \citeasposnoun{%

    \gdef \@cite@ps{'s}%

    \@ifnextchar[{\@tempswatrue\@citexasnoun}%

                 {\@tempswafalse\@citexasnoun[]}%

}

\newcommand \citeasplposnoun{%

    \gdef \@cite@ps{'}%

    \@ifnextchar [{\@tempswatrue\@citexasnoun}%

                  {\@tempswafalse\@citexasnoun[]}%

}

\newcommand \ibidCite[1]{(\ibid~p.#1)}

\newcommand \ibidCiteRange[1]{(\ibid~pp.#1)}

\newcommand \@enamedef[1]{\expandafter \edef \csname #1\endcsname}

\def \@citex[#1]#2{%

    \if@filesw%

        \immediate \write \@auxout{\string \citation{#2}}%

    \fi%

    \def \@citea{}%

    \@cite{%

        \@for \@citeb :=#2\do {%

            \@citea%

            \def \@citea{; \penalty\@m\ }%

            \@ifundefined {b@\@citeb}{%

                \textbf{???}\@warning{Citation `\@citeb' on page \thepage \space undefined}%

            }%

            {%

                {\csname b@\@citeb \endcsname\@ , \csname bhy@\@citeb \endcsname}%

                \global \@enamedef{b@\@citeb}{\csname bha@\@citeb \endcsname}%

            }%

        }%

    }%

    {#1}%

}

\newif \if@firstelement

\@firstelementtrue

\def \@citexasnoun[#1]#2{%

    \if@filesw%

        \immediate \write \@auxout{\string \citation{#2}}%

    \fi%

    \@firstelementtrue%

    \def \@citea{}%

    \@citeasnoun{%

        \@for \@citeb :=#2\do {%

            \@citea%

            \def \@citea{; \penalty\@m\ }%

            \@ifundefined {b@\@citeb}{%

                \textbf{???}\@warning{Citation `\@citeb' on page \thepage \space undefined}%

            }%

            {%

                \if@firstelement%

                    \@firstelementfalse%

                    {\csname b@\@citeb\endcsname\@cite@ps\ (\csname bhy@\@citeb\endcsname}%

                    \global \@namedef{b@\@citeb}{\csname bha@\@citeb\endcsname}%

                \else%

                    {\csname b@\@citeb \endcsname\@ , \csname bhy@\@citeb \endcsname}%

                    \global \@enamedef{b@\@citeb}{\csname bha@\@citeb \endcsname}%

                \fi%

            }%

        }%

    }%

    {#1}%

}

\renewcommand \@cite[2]{({#1\if@tempswa , #2\fi})}

\newcommand \@citeasnoun[2]{{#1\if@tempswa , #2\fi})}

\newcommand \unfcite{%

    \@ifnextchar[{\@tempswatrue\@unfcite}%

                 {\@tempswafalse\@unfcite[]}%

}

\newcommand \unfshcite{%

    \@ifnextchar[{\@tempswatrue\@unfshcite}%

                 {\@tempswafalse\@unfshcite[]}%

}

\def \@unfcite[#1]#2{%

    \begingroup%

        \def \@cite##1##2{{##1\if@tempswa , ##2\fi}}%

        \@citex[#1]{#2}%

    \endgroup%

}

\def \@unfshcite[#1]#2{%

    \begingroup%

        \def \@cite##1##2{{##1\if@tempswa , ##2\fi}}%

        \@citexsh[#1]{#2}%

    \endgroup%

}

\def \@citexsh[#1]#2{%

    \if@filesw%

        \immediate \write \@auxout{\string \citation{#2}}%

    \fi%

    \def \@citea{}%

    \@cite{%

        \@for \@citeb :=#2\do {%

            \@citea%

            \def \@citea{; \penalty\@m\ }%

            \@ifundefined {b@\@citeb}{%

                \textbf{???}\@warning{Citation `\@citeb' on page \thepage \space undefined}%

            }%

            {%

                {\csname bhy@\@citeb \endcsname}%

                \global \@enamedef{b@\@citeb}{\csname bha@\@citeb \endcsname}%

            }%

        }%

    }%

    {#1}%

}

\def \enddocument{%

    \@enddocumenthook%

    \@checkend{document}%

    \clearpage%

    \begingroup%

        \if@filesw%

            \immediate \closeout \@mainaux%

            \let \@setckpt \@gobbletwo%

            \let \@newl@bel \@testdef%

            \def \rwbibcite{\@testrwbib}%%% <===  New line added. <=== %%%

            \@tempswafalse%

            \makeatletter%

            \input \jobname.aux%

        \fi%

        \@dofilelist%

\ifdim \font@submax >\fontsubfuzz%

    \relax%

    \@font@warning{Size substitutions with differences\MessageBreak

                           up to \font@submax\space have occured.\@gobbletwo}%

        \fi%

        \@defaultsubs%

        \@refundefined%

        \if@filesw%

            \ifx \@multiplelabels \relax%

                \if@tempswa%

                    \@latex@warning@no@line{Label(s) may have changed.

                                            Rerun to get cross-references right}%

                \fi%

            \else%

                \@multiplelabels%

            \fi%

        \fi%

    \endgroup%

    \deadcycles \z@%

    \@@end%

}

\newcommand \@testrwbib[3]{%

    \def \@tempa{#2}%

    \expandafter \ifx \csname bhf@#1\endcsname%

        \@tempa%

        \def \@tempa{#3}%

        \expandafter \ifx \csname bha@#1\endcsname%

            \@tempa%

        \else%

            \@tempswatrue%

        \fi%

    \else%

        \@tempswatrue%

    \fi%

}

\endinput

%%

%% End of file `rnmdt.sty'. 

