%%$Id: lncsppt.doc,v 1.1 1992/09/01 20:35:48 kris Exp kris $
%%
%% This is LNCSPPT.DOC, a document style for AMS-TeX based on the
%% standard AMSPPT document style with output compatible with the
%% format required for contributions to conference proceedings
%% published by Springer-Verlag in the LNCS (Lecture Notes in Computer
%% Science) series.  The design is described in the note "Lecture
%% Notes in Computer Science, Advice to Authors for the Preparation of
%% Camera-Ready Contributions" available from 
%%
%%	Springer-Verlag, Computer Science Editorial I
%%	Postfach 10 52 80, W-6900 Heildelberg, FRG
%%
%%	E-mail: SPRINGER@DHDSPRI6.bitnet; Fax: +49 6221 413 982
%%
%% DISCLAIMER: This file is distributed in the hope that it will be
%% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
%% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
%% For information on how to use AMS-TeX and the AMSPPT document style
%% you should consult Michael D. Spivak: "The Joy of {\TeX}---A
%% Gourmet Guide to Typesetting with the AMS-TeX Macro Package"
%% (second edition), AMS, 1982; AMS is reachable as
%%
%%     	American Mathematical Society,
%%	Technical Support Group,
%%	P. O. Box 6248,
%%	Providence, RI 02940,
%%	USA
%%
%%	Internet: Tech-Support@Math.AMS.com; Phone: +1 4014554080
%%
%% USAGE:  Make sure you have the AMSPPT document style version 2.1 in
%% a file "amsppt.sty" in your TEXINPUTS path.  Then store this file
%% as "lncsppt.sty" in a directory of your TEXINPUTS path and change
%% the style of your document to
%%
%%	\documentstyle{lncsppt}
%%
%% Then change your document to conform to the guidelines given in
%% comments of this file marked as LNCS NOTE.
%%
%% Modifications by
%%
%%	Kristoffer H{\o}gsbro ROSE
%%	DIKU, University of Copenhagen
%%	Universitetsparken 1
%%	DK-2100 Copenhagen {\O}
%%
%%	E-mail: kris@diku.dk; Phone: +45 35321420; Fax: +45 35321401
%%
%% Also thanks to Walter D. Neumann for providing corrected insertion
%% macros (in -11- below).
\immediate\write16{LNCSPPT.STY - version BETA (based on AMSPPT version 2.1)}%
\expandafter\ifx\csname lncsppt.sty\endcsname\relax
\else \message{[already loaded]}\endinput \fi
\input amsppt.sty
\def\next{AMSPPT}\ifx\next\styname\else
 \errmessage{LNCSPPT requires AMSPPT version 2.1}\endinput\fi
\def\next{2.1}\ifx\next\styversion\else
 \errmessage{LNCSPPT requires AMSPPT version 2.1}\endinput\fi
\expandafter\edef\csname lncsppt.sty\endcsname{%
   \catcode`\noexpand\@\the\catcode`\@\space
   \expandafter\let\csname lncsppt.sty\endcsname\empty}
\catcode`\@=11
\let\endtopmatter\relax
\let\specialhead\relax
\let\head\relax
\let\subhead\relax
\let\subsubhead\relax
\let\Refs\relax
\let\enddocument\relax
\message{More utility definitions,}
\def\raggedcenter@{\leftskip \indenti plus.4\hsize \rightskip\leftskip
 \parfillskip\z@ \parindent\z@ \spaceskip.3333em \xspaceskip.5em
 \pretolerance9999\tolerance9999 \exhyphenpenalty\@M
 \hyphenpenalty\@M \let\\\linebreak}
\def\raggedleft@{\leftskip\z@ \rightskip\z@ plus\hsize
 \parfillskip\z@ \parindent\z@ \spaceskip.3333em \xspaceskip.5em
 \pretolerance9999\tolerance9999 \exhyphenpenalty\@M \hyphenpenalty\@M
 \let\\\linebreak}
\message{more fonts,}
\font@\fourteenb=cmb10 scaled \magstep2
\font@\fourteeni=cmmi10 scaled \magstep2	\skewchar\fourteeni='177
\font@\fourteensy=cmsy10 scaled \magstep2	\skewchar\fourteensy='60
\font@\fourteenex=cmex10 scaled \magstep2
\font@\fourteenbf=cmbx10 scaled \magstep2
\font@\fourteenit=cmti10 scaled \magstep2
\font@\fourteensl=cmsl10 scaled \magstep2
\font@\fourteensmc=cmcsc10 scaled \magstep2
\font@\fourteentt=cmtt10 scaled \magstep2
\font@\twelveb=cmb10 scaled \magstep1
\font@\twelvei=cmmi10 scaled \magstep1		\skewchar\twelvei='177
\font@\twelvesy=cmsy10 scaled \magstep1		\skewchar\twelvesy='60
\font@\twelveex=cmex10 scaled \magstep1
\font@\twelvebf=cmbx10 scaled \magstep1
\font@\twelveit=cmti10 scaled \magstep2
\font@\twelvesl=cmsl10 scaled \magstep2
\font@\twelvesmc=cmcsc10 scaled \magstep1
\font@\twelvett=cmtt10 scaled \magstep1
\font@\ninerm=cmr9
\font@\ninei=cmmi9    \skewchar\ninei='177
\font@\ninesy=cmsy9   \skewchar\ninesy='60
\font@\nineex=cmex9
%%\font@\nineex=cmex10 at9pt
\font@\ninebf=cmbx9
\font@\nineit=cmti9
\font@\ninesl=cmsl9
\font@\ninesmc=cmcsc9
\font@\ninett=cmtt9
\def\tenpoint{\normalbaselineskip12\p@
 \abovedisplayskip8\p@ plus3\p@ minus3\p@
 \belowdisplayskip\abovedisplayskip
 \abovedisplayshortskip\z@ plus3\p@
 \belowdisplayshortskip6\p@ plus3\p@ minus3\p@
 \textonlyfont@\rm\tenrm \textonlyfont@\it\tenit
 \textonlyfont@\sl\tensl \textonlyfont@\bf\tenbf
 \textonlyfont@\smc\tensmc \textonlyfont@\tt\tentt
 \ifsyntax@ \def\big##1{{\hbox{$\left##1\right.$}}}%
  \let\Big\big \let\bigg\big \let\Bigg\big
 \else
  \textfont\z@\tenrm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm
  \textfont\@ne\teni \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei
  \textfont\tw@\tensy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy
  \textfont\thr@@\tenex \scriptfont\thr@@\sevenex
   \scriptscriptfont\thr@@\sevenex
  \textfont\itfam\tenit \scriptfont\itfam\sevenit
   \scriptscriptfont\itfam\sevenit
  \textfont\bffam\tenbf \scriptfont\bffam\sevenbf
   \scriptscriptfont\bffam\fivebf
  \setbox\strutbox\hbox{\vrule height8.5\p@ depth3.5\p@ width\z@}%
  \setbox\strutbox@\hbox{\lower.5\normallineskiplimit\vbox{%
   \kern-\normallineskiplimit\copy\strutbox}}%
  \setbox\z@\vbox{\hbox{$($}\kern\z@}\bigsize@1.2\ht\z@
 \fi
 \normalbaselines\rm\dotsspace@1.5mu\ex@.2326ex\jot3\ex@
 \the\tenpoint@}
\let\ninepoint@\eightpoint@ \ninepoint@={}
\let\eightpoint@\undefined \def\eightpoint{\ninepoint}
\def\ninepoint{\normalbaselineskip11\p@
 \abovedisplayskip7\p@ plus3\p@ minus3\p@
 \belowdisplayskip\abovedisplayskip
 \abovedisplayshortskip\z@ plus3\p@
 \belowdisplayshortskip5\p@ plus3\p@
 \textonlyfont@\rm\ninerm \textonlyfont@\it\nineit
 \textonlyfont@\sl\ninesl \textonlyfont@\bf\ninebf
 \textonlyfont@\smc\ninesmc \textonlyfont@\tt\ninett
 \ifsyntax@\def\big##1{{\hbox{$\left##1\right.$}}}%
  \let\Big\big \let\bigg\big \let\Bigg\big
 \else
  \textfont\z@\ninerm \scriptfont\z@\sevenrm \scriptscriptfont\z@\fiverm
  \textfont\@ne\ninei \scriptfont\@ne\seveni \scriptscriptfont\@ne\fivei
  \textfont\tw@\ninesy \scriptfont\tw@\sevensy \scriptscriptfont\tw@\fivesy
  \textfont\thr@@\nineex \scriptfont\thr@@\sevenex
   \scriptscriptfont\thr@@\sevenex
  \textfont\itfam\nineit \scriptfont\itfam\sevenit
   \scriptscriptfont\itfam\sevenit
  \textfont\bffam\ninebf \scriptfont\bffam\sevenbf
   \scriptscriptfont\bffam\fivebf
  \setbox\strutbox\hbox{\vrule height7.5\p@ depth3.5\p@ width\z@}%
  \setbox\strutbox@\hbox{\raise.5\normallineskiplimit\vbox{%
   \kern-\normallineskiplimit\copy\strutbox}}%
  \setbox\z@\vbox{\hbox{$($}\kern\z@}\bigsize@1.2\ht\z@
 \fi
 \normalbaselines\ninerm\dotsspace@1.5mu\ex@.2326ex\jot3\ex@
 \the\ninepoint@}
\newtoks\fourteenpoint@
\def\fourteenpoint{\normalbaselineskip16\p@
 \textonlyfont@\rm\fourteenb \textonlyfont@\it\fourteenit
 \textonlyfont@\sl\fourteensl \textonlyfont@\bf\fourteenbf
 \textonlyfont@\smc\fourteensmc \textonlyfont@\tt\fourteentt
 \ifsyntax@ \def\big##1{{\hbox{$\left##1\right.$}}}%
  \let\Big\big \let\bigg\big \let\Bigg\big
 \else
  \textfont\z@\fourteenb \scriptfont\z@\tenrm \scriptscriptfont\z@\sevenrm
  \textfont\@ne\fourteeni \scriptfont\@ne\teni \scriptscriptfont\@ne\seveni
  \textfont\tw@\fourteensy \scriptfont\tw@\tensy \scriptscriptfont\tw@\sevensy
  \textfont\thr@@\fourteenex \scriptfont\thr@@\tenex
   \scriptscriptfont\thr@@\sevenex
  \textfont\itfam\fourteenit \scriptfont\itfam\tenit
   \scriptscriptfont\itfam\sevenit
  \textfont\bffam\fourteenbf \scriptfont\bffam\tenbf
   \scriptscriptfont\bffam\sevenbf
  \setbox\strutbox\hbox{\vrule height11.9\p@ depth4.9\p@ width\z@}%
  \setbox\strutbox@\hbox{\lower.5\normallineskiplimit\vbox{%
   \kern-\normallineskiplimit\copy\strutbox}}%
  \setbox\z@\vbox{\hbox{$($}\kern\z@}\bigsize@=1.2\ht\z@
 \fi
 \normalbaselines\rm\ex@.2326ex\jot3\ex@
 \the\fourteenpoint@}
\newtoks\twelvepoint@
\def\twelvepoint{\normalbaselineskip14\p@
 \textonlyfont@\rm\twelveb \textonlyfont@\it\twelveit
 \textonlyfont@\sl\twelvesl \textonlyfont@\bf\twelvebf
 \textonlyfont@\smc\twelvesmc \textonlyfont@\tt\twelvett
 \ifsyntax@ \def\big##1{{\hbox{$\left##1\right.$}}}%
  \let\Big\big \let\bigg\big \let\Bigg\big
 \else
  \textfont\z@\twelveb \scriptfont\z@\ninerm \scriptscriptfont\z@\sevenrm
  \textfont\@ne\twelvei \scriptfont\@ne\ninei \scriptscriptfont\@ne\seveni
  \textfont\tw@\twelvesy \scriptfont\tw@\ninesy \scriptscriptfont\tw@\sevensy
  \textfont\thr@@\twelveex \scriptfont\thr@@\nineex
   \scriptscriptfont\thr@@\sevenex
  \textfont\itfam\twelveit \scriptfont\itfam\nineit
   \scriptscriptfont\itfam\sevenit
  \textfont\bffam\twelvebf \scriptfont\bffam\ninebf
   \scriptscriptfont\bffam\sevenbf
  \setbox\strutbox\hbox{\vrule height10\p@ depth5\p@ width\z@}%
  \setbox\strutbox@\hbox{\lower.5\normallineskiplimit\vbox{%
   \kern-\normallineskiplimit\copy\strutbox}}%
  \setbox\z@\vbox{\hbox{$($}\kern\z@}\bigsize@1.2\ht\z@
 \fi
 \normalbaselines\rm\dotsspace@2mu\ex@.2326ex\jot3\ex@
 \the\twelvepoint@}
\message{page dimension settings,}
\indenti=1cm
\pagewidth{12.2cm} \pageheight{19.3cm}
\hcorrection{-1truein} \hcorrection{105truemm} \hcorrection{-.5\hsize}
\vcorrection{-1truein} \vcorrection{148.5truemm} \vcorrection{-.5\vsize}
\message{top matter,}
\def\topmatter{%
 \ifx\undefined\msafam
 \else \font@\ninemsa=msam9 \font@\twelvemsa=msam10 scaled \magstep1
   \font@\fourteenmsa=msam10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\msafam\tenmsa
       \scriptfont\msafam\sevenmsa \scriptscriptfont\msafam\fivemsa}%
     \addto\ninepoint{\textfont\msafam\ninemsa
       \scriptfont\msafam\sevenmsa \scriptscriptfont\msafam\fivemsa}%
     \addto\fourteenpoint{\textfont\msafam=\fourteenmsa
       \scriptfont\msafam=\tenmsa \scriptscriptfont\msafam=\sevenmsa}%
     \addto\twelvepoint{\textfont\msafam=\twelvemsa
       \scriptfont\msafam=\ninemsa \scriptscriptfont\msafam=\sevenmsa}%
   \fi
 \fi
 \ifx\undefined\msbfam
 \else \font@\ninemsb=msbm9 \font@\twelvemsb=msbm10 scaled \magstep1
   \font@\fourteenmsb=msbm10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\msbfam\tenmsb
       \scriptfont\msbfam\sevenmsb \scriptscriptfont\msbfam\fivemsb}%
     \addto\ninepoint{\textfont\msbfam\ninemsb
       \scriptfont\msbfam\sevenmsb \scriptscriptfont\msbfam\fivemsb}%
     \addto\fourteenpoint{\textfont\msbfam=\fourteenmsb
       \scriptfont\msbfam=\tenmsb \scriptscriptfont\msbfam=\sevenmsb}%
     \addto\twelvepoint{\textfont\msbfam=\twelvemsb
       \scriptfont\msbfam=\ninemsb \scriptscriptfont\msbfam=\sevenmsb}%
   \fi
 \fi
 \ifx\undefined\eufmfam
 \else \font@\nineeufm=eufm9 \font@\twelveeufm=eufm10 scaled \magstep1
   \font@\fourteeneufm=eufm10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\eufmfam\teneufm
       \scriptfont\eufmfam\seveneufm \scriptscriptfont\eufmfam\fiveeufm}%
     \addto\ninepoint{\textfont\eufmfam\nineeufm
       \scriptfont\eufmfam\seveneufm \scriptscriptfont\eufmfam\fiveeufm}%
     \addto\fourteenpoint{\textfont\eufmfam=\fourteeneufm
       \scriptfont\eufmfam=\teneufm \scriptscriptfont\eufmfam=\seveneufm}%
     \addto\twelvepoint{\textfont\eufmfam=\twelveeufm
       \scriptfont\eufmfam=\nineeufm \scriptscriptfont\eufmfam=\seveneufm}%
   \fi
 \fi
 \ifx\undefined\eufbfam
 \else \font@\nineeufb=eufb9 \font@\twelveeufb=eufb10 scaled \magstep1
   \font@\fourteeneufb=eufb10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\eufbfam\teneufb
      \scriptfont\eufbfam\seveneufb \scriptscriptfont\eufbfam\fiveeufb}%
    \addto\ninepoint{\textfont\eufbfam\nineeufb
      \scriptfont\eufbfam\seveneufb \scriptscriptfont\eufbfam\fiveeufb}%
    \addto\fourteenpoint{\textfont\eufbfam=\fourteeneufb
      \scriptfont\eufbfam=\teneufb \scriptscriptfont\eufbfam=\seveneufb}%
    \addto\twelvepoint{\textfont\eufbfam=\twelveeufb
      \scriptfont\eufbfam=\nineeufb \scriptscriptfont\eufbfam=\seveneufb}%
   \fi
 \fi
 \ifx\undefined\eusmfam
 \else \font@\nineeusm=eusm9 \font@\twelveeusm=eusm10 scaled \magstep1
   \font@\fourteeneusm=eusm10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\eusmfam\teneusm
       \scriptfont\eusmfam\seveneusm \scriptscriptfont\eusmfam\fiveeusm}%
     \addto\ninepoint{\textfont\eusmfam\nineeusm
       \scriptfont\eusmfam\seveneusm \scriptscriptfont\eusmfam\fiveeusm}%
     \addto\fourteenpoint{\textfont\eusmfam=\fourteeneusm
       \scriptfont\eusmfam=\teneusm \scriptscriptfont\eusmfam=\seveneusm}%
     \addto\twelvepoint{\textfont\eusmfam=\twelveeusm
       \scriptfont\eusmfam=\nineeusm \scriptscriptfont\eusmfam=\seveneusm}%
   \fi
 \fi
 \ifx\undefined\eusbfam
 \else \font@\nineeusb=eusb9 \font@\twelveeusb=eusb10 scaled \magstep1
   \font@\fourteeneusb=eusb10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\eusbfam\teneusb
       \scriptfont\eusbfam\seveneusb \scriptscriptfont\eusbfam\fiveeusb}%
     \addto\ninepoint{\textfont\eusbfam\nineeusb
       \scriptfont\eusbfam\seveneusb \scriptscriptfont\eusbfam\fiveeusb}%
     \addto\fourteenpoint{\textfont\eusbfam=\fourteeneusb
       \scriptfont\eusbfam=\teneusb \scriptscriptfont\eusbfam=\seveneusb}%
     \addto\twelvepoint{\textfont\eusbfam=\twelveeusb
       \scriptfont\eusbfam=\nineeusb \scriptscriptfont\eusbfam=\seveneusb}%
   \fi
 \fi
 \ifx\undefined\eurmfam
 \else \font@\nineeurm=eurm9 \font@\twelveeurm=eurm10 scaled \magstep1
   \font@\fourteeneurm=eurm10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\eurmfam\teneurm
       \scriptfont\eurmfam\seveneurm \scriptscriptfont\eurmfam\fiveeurm}%
     \addto\ninepoint{\textfont\eurmfam\nineeurm
       \scriptfont\eurmfam\seveneurm \scriptscriptfont\eurmfam\fiveeurm}%
     \addto\fourteenpoint{\textfont\eurmfam=\fourteeneurm
       \scriptfont\eurmfam=\teneurm \scriptscriptfont\eurmfam=\seveneurm}%
     \addto\twelvepoint{\textfont\eurmfam=\twelveeurm
       \scriptfont\eurmfam=\nineeurm \scriptscriptfont\eurmfam=\seveneurm}%
   \fi
 \fi
 \ifx\undefined\eurbfam
 \else \font@\nineeurb=eurb9 \font@\twelveeurb=eurb10 scaled \magstep1
   \font@\fourteeneurb=eurb10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\eurbfam\teneurb
       \scriptfont\eurbfam\seveneurb \scriptscriptfont\eurbfam\fiveeurb}%
     \addto\ninepoint{\textfont\eurbfam\nineeurb
       \scriptfont\eurbfam\seveneurb \scriptscriptfont\eurbfam\fiveeurb}%
     \addto\fourteenpoint{\textfont\eurbfam=\fourteeneurb
       \scriptfont\eurbfam=\teneurb \scriptscriptfont\eurbfam=\seveneurb}%
     \addto\twelvepoint{\textfont\eurbfam=\twelveeurb
       \scriptfont\eurbfam=\nineeurb \scriptscriptfont\eurbfam=\seveneurb}%
   \fi
 \fi
 \ifx\undefined\cmmibfam
 \else \font@\ninecmmib=cmmib9 \font@\twelvecmmib=cmmib10 scaled \magstep1
   \font@\fourteencmmib=cmmib10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\cmmibfam\tencmmib
       \scriptfont\cmmibfam\sevencmmib \scriptscriptfont\cmmibfam\fivecmmib}%
     \addto\ninepoint{\textfont\cmmibfam\ninecmmib
       \scriptfont\cmmibfam\sevencmmib \scriptscriptfont\cmmibfam\fivecmmib}%
     \addto\fourteenpoint{\textfont\cmmibfam=\fourteencmmib
       \scriptfont\cmmibfam=\tencmmib \scriptscriptfont\cmmibfam=\sevencmmib}%
     \addto\twelvepoint{\textfont\cmmibfam=\twelvecmmib
       \scriptfont\cmmibfam=\ninecmmib \scriptscriptfont\cmmibfam=\sevencmmib}%
   \fi
 \fi
 \ifx\undefined\cmbsyfam
 \else \font@\ninecmbsy=cmbsy9 \font@\twelvecmbsy=cmbsy10 scaled \magstep1
   \font@\fourteencmbsy=cmbsy10 scaled \magstep2
   \ifsyntax@\else \addto\tenpoint{\textfont\cmbsyfam\tencmbsy
       \scriptfont\cmbsyfam\sevencmbsy \scriptscriptfont\cmbsyfam\fivecmbsy}%
     \addto\ninepoint{\textfont\cmbsyfam\ninecmbsy
       \scriptfont\cmbsyfam\sevencmbsy \scriptscriptfont\cmbsyfam\fivecmbsy}%
     \addto\fourteenpoint{\textfont\cmbsyfam=\fourteencmbsy
       \scriptfont\cmbsyfam=\tencmbsy \scriptscriptfont\cmbsyfam=\sevencmbsy}%
     \addto\twelvepoint{\textfont\cmbsyfam=\twelvecmbsy
       \scriptfont\cmbsyfam=\ninecmbsy \scriptscriptfont\cmbsyfam=\sevencmbsy}%
   \fi
 \fi
 \let\topmatter\relax}
\def\title{\let\savedef@\title
 \def\title##1\endtitle{\let\title\savedef@
   \global\setbox\titlebox@\vtop{\fourteenpoint \raggedcenter@
    \frills@\relax{##1}\endgraf}\relaxnext@
   \ifmonograph@ \edef\next{\the\leftheadtoks}%
    \ifx\next\empty \leftheadtext{##1}\fi\fi
   \edef\next{\the\rightheadtoks}\ifx\next\empty \rightheadtext{##1}\fi
 }%
 \nofrillscheck\title}
%%	LNCS NOTE: LNCS has all author information grouped on the first
%%	page.  This requires a separate block like the following for each
%%	author (or group of authors at the same adress):
%%
%%		\author ... \endauthor			REQUIRED
%%		\affil ... \endaffil			IGNORED
%%		\address ... \endaddress		REQUIRED
%%		\curraddr ... \endcurraddr		OPTIONAL
%%		\email ... \endemail			OPTIONAL
%%
%%	This works by collecting all the entries in a box as they
%%	should appear in the final output.  Fortunately there are no
%%	running heads in LNCS, otherwise we would be in trouble
%%	(putting the various authors together with , or and, etc.)
%%	Each author is formatted as follows:
%%
%%	               +--------+
%%	               | AUTHOR |
%%	               +--------+
%%	                  1pc
%%	              +----------+
%%	              | ADDRESS  |
%%	              | [E-MAIL] |
%%	              +----------+
%%
%%	with the current address added as a topmatter footnote to the
%%	address if specified.
\def\lastauthor@{}
\def\author#1\endauthor{\ifx\lastauthor@\empty\else
  \W@{LNCSPPT warning: An \string\author...\string\endauthor\space given
	without matching address}\fi
 \global\setbox\authorbox@\vbox{%
  \ifvoid\authorbox@\else\unvbox\authorbox@\vskip2pc\relax\fi
  \tenpoint\raggedcenter@#1\endgraf}\gdef\lastauthor@{#1}}
\def\affil#1\endaffil{\W@{LNCSPPT warning:
	\string\affil...\string\endaffils\space ignored
	(use \string\address...\string\endaddress)}%
 \gdef\affil##1\endaffil{}}
\def\address#1\endaddress{\ifx\lastauthor@\empty
  \W@{LNCSPPT warning: An \string\address...\string\endaddress\space given
	without a preceeding author}\fi
 \global\setbox\authorbox@\vbox{\unvbox\authorbox@\vskip1pc \relax%
  \ninepoint\raggedcenter@#1\endgraf}\gdef\lastauthor@{}}
\def\addressfootnotemarker@#1{{%
 \count@=#1\relax \advance\count@\m@ne \count@@\@ne
 \loop \ifnum \count@>9 \advance\count@-10 \advance\count@@\@ne \repeat
 \loop \ifnum \count@@>\z@ \advance\count@@\m@ne
	\ifcase\count@ *\or \dag\or \ddag\or $^\heartsuit$\or
	$^\diamondsuit$\or $^\clubsuit$\or $^\spadesuit$\or $^\sharp$\or
	$^\natural$\or $^\flat$ \fi
 \repeat}}
\def\curraddr#1\endcurraddr{\global\advance\addresscount@\@ne
 \global\setbox\authorbox@\vbox{%
  \unvbox\authorbox@ \skip@=\lastskip\unskip \setbox\z@=\lastbox
  \line{\hfil\unhbox\z@\unskip
   \addressfootnotemarker@\addresscount@ \hskip 1cm plus 1fil}%
  \vskip\skip@}%
 \expandafter\gdef\csname curraddr\number\addresscount@\endcsname{#1}}
\def\email{\let\savedef@\email
 \def\email##1\endemail{\let\email\savedef@
  \global\setbox\authorbox@\vbox{\unvbox\authorbox@
  \skip@=\lastskip\unskip \setbox\z@=\lastbox \boxz@ \vskip\skip@
   \ninepoint\raggedcenter@
   \frills@{{\it E-mail\/}:\enspace}\strut\ignorespaces##1\endgraf}}%
 \nofrillscheck\email}
\def\abstract{\let\savedef@\abstract
 \def\abstract{\let\abstract\savedef@
  \setbox\abstractbox@\vbox\bgroup\noindent$$\vbox\bgroup
  \def\envir@end{\endabstract}\advance\hsize-2\indenti
  \def\usualspace{{\bf\enspace}}\ninepoint\noindent
  \frills@{{\bf Abstract.\enspace}}}%
 \nofrillscheck\abstract}
\def\setwidest@#1#2{%
   \ifx#1\head\setbox\tocheadbox@\hbox{#2.\enspace}%
   \else\ifx#1\subhead\setbox\tocsubheadbox@\hbox{#2.\enspace}%
   \else\ifx#1\subsubhead\setbox\tocsubheadbox@\hbox{#2.\enspace}%
   \else\ifx#1\key\refstyle A%
       \setbox\keybox@\hbox{\refsfont@\keyformat{#2}}%
       \refindentwd\wd\keybox@
   \else\ifx#1\no\refstyle C%
       \setbox\keybox@\hbox{\refsfont@\keyformat{#2}}%
       \refindentwd\wd\keybox@
   \else\ifx#1\page\setbox\pagesbox@\hbox{\quad\bf#2}%
   \else\ifx#1\item
%% BUG...doesn't work!  But \endroster reinstalls default anyway...
%%       \edef\next@{\the\revert@\rosteritemwd\the\rosteritemwd\relax
%%              \revert@{\the\revert@}}%
%%       \revert@\expandafter{\next@}%
       \setboxz@h{#2}\rosteritemwd\wdz@
   \else\message{\string\widestnumber\space not defined for this
      option (\string#1)}%
\fi\fi\fi\fi\fi\fi\fi}
\def\newtocdefs{%
   \def \title##1\endtitle{%
	\penaltyandskip@\z@\smallskipamount
	\hangindent\wd\tocheadbox@\noindent{\bf##1}%
	\def\specialheadintro{\par\smallskip\hang\noindent}%
	\def\headintro{\par\smallskip\noindent}}%
   \def \chapter##1{%
	Chapter \uppercase\expandafter{%
		\romannumeral##1.\unskip}\enspace}%
   \def\specialheadintro{}%
   \def \specialhead##1 ##2\endspecialhead{\specialheadintro
	\if\notempty{##1}{##1\unskip\enspace}\fi
        {\bf\ignorespaces##2\unskip}%
	\def\specialheadintro{\unskip;\par\smallskip\hang\noindent}%
	\if\notempty{##1##2}\def\headintro{\unskip,\hskip.5em plus.5em\relax}
	\else\def\headintro{\noindent}\fi}%
   \def\headintro{}%
   \def \head##1 ##2\endhead{\headintro
	\if\notempty{##1}{##1\unskip\enspace}\fi
        {\ignorespaces##2\unskip}%
	\def\specialheadintro{\unskip;\par\smallskip\hang\noindent}%
	\def\headintro{\unskip,\hskip.5em plus.5em\relax}}%
   \def \subhead##1 ##2\endsubhead{}%
   \def \subsubhead##1 ##2\endsubsubhead{}}
\def\toc@#1{\relaxnext@ \def\page##1{~{\rom{(##1)}}}%
 \DN@{\ifx\next\nofrills\DN@\nofrills{\nextii@}%
      \else\DN@{\nextii@{#1.\enspace\null}}\fi
      \next@}%
 \DNii@##1{\ifmonograph@\bgroup
  \else\setbox\tocbox@\vbox\bgroup\ninepoint
    \leftskip\indenti \rightskip\indenti plus\hsize
    \parfillskip\z@ \parindent\z@ \spaceskip.3333em \xspaceskip.5em %
    {\bf\ignorespaces##1\unskip}\fi
  \newtocdefs\ignorespaces}%
 \FN@\next@}
\def\endtoc{\egroup}
%%	LNCS NOTE: There is no support for affil.  Currently these
%%	print warning messages that they are being ignored.
\outer\def\endtopmatter{\add@missing\endabstract
 \ifx\thethanks@\empty\else \makefootnote@{}{\thethanks@}\fi
 \ifx\thekeywords@\empty\else \W@{LNCSPPT warning:
	\string\keywords...\string\endkeywords\space ignored}\fi
 \ifx\thesubjclass@\empty\else \W@{LNCSPPT warning:
	\string\subjclass...\string\endsubjclass\space ignored}\fi
 \pretitle
 {\topskip3pc \box\titlebox@}% title with localised topskip...
 \preauthor
 \ifx\preaffil\relax\else\W@{Warning: \string\preaffil\space ignored}\fi
 \ifvoid\authorbox@\else \vskip1.5pc plus1pc \box\authorbox@ \fi
 \count@\z@ \loop\ifnum\count@<\addresscount@\advance\count@\@ne
  \makefootnote@{\addressfootnotemarker@\count@}%
   {\csname curraddr\number\count@\endcsname}\repeat
 \predate
 \ifx\thedate@\empty\else \vskip.5pc plus.5pc\line{\hfil\thedate@\hfil}\fi
 \preabstract
 \ifvoid\abstractbox@\else \vskip1.5pc plus1pc \unvbox\abstractbox@\fi
 \ifvoid\tocbox@\else \vskip1.5pc plus1pc \unvbox\tocbox@\fi
 \prepaper
 \vskip1.5pc plus1pc\relax
}
\def\document{\let\fontlist@\relax\let\alloclist@\relax
  \tenpoint\vskip-\lastskip}
\message{section heads,}
%%	LNCS NOTE: Always use \head and \subhead like this to get the
%%	right hanging indentation of section numbers:
%%
%%		\head{NUMBER} TEXT \endhead
%%		\subhead{NUMBER} TEXT \endsubhead
%%
%%	Use just {} to get no hanging indentation.
\def\specialheadfont@{\fourteenpoint}
\aboveheadskip=2pc plus.5pc
\belowheadskip=1pc
\def\headfont@{\twelvepoint}
\outer\def\head{%
  \add@missing\endroster \add@missing\enddefinition
  \add@missing\enddemo \add@missing\endexample
  \add@missing\endproclaim
  \let\savedef@\head \let\head\relax
  \def\head##1##2\endhead{\restoredef@\head
    \penaltyandskip@{-200}\aboveheadskip
    {\headfont@\raggedleft@\interlinepenalty\@M\noindent
     \if\notempty{##1}\setboxz@h{##1\unskip\enspace}\hangindent=\wdz@\boxz@
     \def\usualspace{{}}\else\def\usualspace{{\headfont@\enspace}}\fi
     \frills@\relax{{\ignorespaces##2}}\endgraf}%
    \nobreak\vskip\belowheadskip\noindent\ignorespaces}%
  \nofrillscheck\head}
\newskip\abovesubheadskip       \abovesubheadskip=1pc plus.5pc
\newdimen\belowsubheadskip      \belowsubheadskip=.5pc
\def\subheadfont@{\bf}
\outer\def\subhead{%
  \add@missing\endroster \add@missing\enddefinition
  \add@missing\enddemo \add@missing\endexample
  \add@missing\endproclaim
  \let\savedef@\subhead \let\subhead\relax
  \def\subhead##1##2\endsubhead{\restoredef@\subhead
    \penaltyandskip@{-100}\abovesubheadskip
    {\subheadfont@\raggedleft@\interlinepenalty\@M\noindent
     \if\notempty{##1}\setboxz@h{##1\unskip\enspace}\hangindent=\wdz@\boxz@
     \def\usualspace{{}}\else\def\usualspace{{\subheadfont@\enspace}}\fi
     \frills@\relax{{\ignorespaces##2}}\endgraf}%
    \nobreak\vskip\belowsubheadskip\noindent\ignorespaces}%
  \nofrillscheck\subhead}
\outer\def\subsubhead{%
  \add@missing\endroster \add@missing\enddefinition
  \add@missing\enddemo
  \add@missing\endexample \add@missing\endproclaim 
  \let\savedef@\subsubhead \let\subsubhead\relax
  \def\subsubhead##1\endsubsubhead{\restoredef@\subsubhead
    \penaltyandskip@{-50}\medskipamount
      {\def\usualspace{\/{\enspace}}% 
    \noindent\bf##1\unskip\frills@{.\enspace}}}%
  \nofrillscheck\subsubhead}
\def\qed{\ifhmode\unskip\nobreak\fi\quad
 \hbox{\vrule width.6em height.5em depth.1em}\relax}
\message{rosters,}
\setboxz@h{\tenrm(iii)}\rosteritemwd\wdz@
\def\roster{%
  \envir@stack\endroster
 \edef\leftskip@{\leftskip\the\leftskip}%
 \relaxnext@
 \rostercount@\z@% Initialize \rostercount@ to 0.
 \def\item{\FN@\rosteritem@}%	\item, now redefined, has
 \DN@{\ifx\next\runinitem\let\next@\nextii@\else
  \let\next@\nextiii@\fi\next@}%
 \DNii@\runinitem% If \runinitem occurs, \nextii@ must kill it off.
  {\unskip% This unskips any space before the original \roster.
   \DN@{\ifx\next[\let\next@\nextii@\else
    \ifx\next"\let\next@\nextiii@\else\let\next@\nextiv@\fi\fi\next@}%
   \DNii@[####1]{\rostercount@####1\relax
    \enspace\therosteritem\rostercount@~\ignorespaces}%
   \def\nextiii@"####1"{\enspace{\rm####1}~\ignorespaces}%
   \def\nextiv@{\enspace\therosteritem1\rostercount@\@ne~}%
   \par@\firstitem@false% Before doing any of this we still change
   \FN@\next@}%	End of definition of \nextii@\runinitem.
 \def\nextiii@{\par\par@% End the present paragraph, change \everypar
  \penalty\@m\smallskip\vskip-\parskip
  \firstitem@true}
 \FN@\next@}
\def\rosteritem@{\iffirstitem@\firstitem@false
  \else\par\vskip-\parskip\fi
 \leftskip@ \advance\leftskip\rosteritemwd \advance\leftskip.5em \noindent
 \DNii@[##1]{\rostercount@##1\relax\itembox@}%
 \def\nextiii@"##1"{\def\therosteritem@{\rm##1}\itembox@}%
 \def\nextiv@{\advance\rostercount@\@ne\itembox@}%
 \def\therosteritem@{\therosteritem\rostercount@}%
 \ifx\next[\let\next@\nextii@\else\ifx\next"\let\next@\nextiii@\else
  \let\next@\nextiv@\fi\fi\next@}
\def\itembox@{\llap{\hbox to\rosteritemwd{\therosteritem@\hfil}\enspace}%
 \ignorespaces}
\def\therosteritem#1{{\count@=#1\relax\rom{(\romannumeral\count@)}}}
\def\endroster{\relaxnext@ 
 \revert@envir\endroster
 \par\leftskip@% End the paragraph, and restore the \leftskip.
 \setboxz@h{\tenrm(iii)}\global\rosteritemwd\wdz@
 \penalty-50 \vskip-\parskip\smallskip% Add a good break and
 \DN@{\ifx\next\Runinitem\let\next@\relax
  \else\nextRunin@false\let\item\plainitem@% Otherwise, set
   \ifx\next\par% moreover, if \endroster is followed by \par,
    \DN@\par{\everypar\expandafter{\the\everypartoks@}}%
   \else% but if the \endroster isn't followed by a new paragraph,
    \DN@{\noindent\everypar\expandafter{\the\everypartoks@}}%
  \fi\fi\next@}%
 \FN@\next@}
\message{footnotes,}
\def\makefootnote@#1#2{\insert\footins
 {\interlinepenalty\interfootnotelinepenalty
 \ninepoint\splittopskip\ht\strutbox\splitmaxdepth\dp\strutbox
 \floatingpenalty\@MM\leftskip\z@\rightskip\z@
 \spaceskip\z@\xspaceskip\z@\noindent\footstrut
 \setboxz@h{#1}\ifdim\wdz@>\z@
  \dimen@=\parindent \advance\dimen@-.5em \ifdim\wdz@<\dimen@ \wdz@=\dimen@ \fi
  \boxz@\enspace \fi
 \hangindent\parindent\ignorespaces#2\unskip
 \lower\dp\strutbox\vbox to\dp\strutbox{}}}
\message{figures and captions,}
\def\captionfont@{\bf}
\def\topcaption#1#2\endcaption{%
 \ninepoint
 {\dimen@\hsize \advance\dimen@-\captionwidth@
  \rm\raggedcenter@ \advance\leftskip.5\dimen@ \rightskip\leftskip
  {\captionfont@#1}%
  \if\notempty{#2}.\enspace\ignorespaces#2\fi
  \endgraf}\nobreak\bigskip}
\def\botcaption#1#2\endcaption{%
 {\ninepoint\normalbaselineskip12pt\normalbaselines
  \nobreak\bigskip
  \setboxz@h{\captionfont@#1\if\notempty{#2}.\enspace\rm#2\fi}%
  {\dimen@\hsize \advance\dimen@-\captionwidth@
   \leftskip.5\dimen@ \rightskip\leftskip
   \noindent \ifdim\wdz@>\captionwidth@
   \else\hfil\fi
   {\captionfont@#1}%
   \if\notempty{#2}.\enspace\rm#2\fi\endgraf}}}
%%% ====================================================================
%%%  @TeX-file{
%%%     author          = "Walter D. Neumann",
%%%     version         = "1.2",
%%%     date            = "22 July 1992",
%%%     time            = "15:57:20 EDT",
%%%     filename        = "newinsert.tex",
%%%     address         = "Department of Mathematics
%%%                        Ohio State University
%%%                        Columbus, OH 43201
%%%                        USA",
%%%     email           = "neumann@mps.ohio-state.edu (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "plain TeX, AMS-TeX, inserts, figures",
%%%     supported       = "yes",
%%%     abstract        = "Bug fixes to plain TeX macros \midinsert and 
%%%                        \topinsert",
%%%  }
%%% ====================================================================
\chardef\newinsCatAt\the\catcode `\@
\catcode `\@=11
\newskip\insertskipamount\newskip\inserthardskipamount
\insertskipamount 6pt plus2pt
\inserthardskipamount 6pt
\def\insertskip{\vskip\insertskipamount}
\newskip\LastSkip
\def\SaveLastSkip{\LastSkip\lastskip}
\def\RestoreLastSkip{\nobreak\vskip-\LastSkip\vskip\LastSkip}
\newcount\SplitTest%        will be set to -1 if a topinsert has split
\def\SetSplitTest{\SplitTest\insertpenalties
  \insert\topins{\floatingpenalty1}%
  \advance\SplitTest-\insertpenalties}
\def\midinsert{\par
 \SaveLastSkip\penalty-150\SetSplitTest\RestoreLastSkip
 \ifnum\SplitTest=-1
  \@midfalse\else\@midtrue\fi\@ins}
\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup%
  \vglue\inserthardskipamount}
\def\endinsert{\egroup
  \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@
    \advance\dimen@\insertskipamount%            was 12pt (wn)
    \advance\dimen@\pagetotal\advance\dimen@-\pageshrink
    \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
  \if@mid%
    \ifdim\lastskip<\insertskipamount\removelastskip\insertskip\fi
    \nointerlineskip\box\z@\penalty-200\insertskip
  \else%
    \SaveLastSkip%                                  added (wn)
    \insert\topins{\penalty100
    \splittopskip\z@skip
    \splitmaxdepth\maxdimen \floatingpenalty\z@
    \ifp@ge \dimen@\dp\z@
    \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
    \else \box\z@\nobreak\insertskip\fi}% was \bigskip\fi (wn)
    \RestoreLastSkip%                               added (wn)
   \fi\endgroup}
\catcode `\@=\newinsCatAt
%%% ====================================================================
\def\@ins{\par\begingroup\def\vspace##1{\vskip##1\relax}%
  \def\captionwidth##1{\captionwidth@##1\relax}%
  \setbox\z@\vbox\bgroup%
  \vglue\inserthardskipamount}
\message{references,}
\def\refsfont@{\ninepoint}
\setboxz@h{\refsfont@99.\enspace}\refindentwd\wdz@
\outer\def\Refs{\add@missing\endroster \add@missing\endproclaim 
 \let\savedef@\Refs \let\Refs\relax
 \def\Refs##1{\restoredef@\Refs
   \if\notempty{##1}\penaltyandskip@{-200}\aboveheadskip
     \begingroup \raggedleft@\headfont@
       \ignorespaces##1\endgraf\endgroup
     \penaltyandskip@\@M\belowheadskip
   \fi
   \begingroup\def\envir@end{\endRefs}\refsfont@\sfcode`\.\@m\tolerance\@M}%
 \nofrillscheck{\csname Refs\expandafter\endcsname
  \frills@{{References}}}}
%%	LNCS NOTE: \bookinquotes and \paperinquotes work as
%%	described in Joy (2nd edition), p.263.
\def\paper{\makerefbox\paperbox@\paperfont@}
\def\paperfont@{\it}
\newif\ifpaperinquotes@
\def\paperinquotes{\paperinquotes@true\def\paperfont@{}}
\def\book{\makerefbox\bookbox@{\bookfont@\aftergroup\book@true}}
\def\inbook{\makerefbox\bookbox@{\bookfont@\aftergroup\procpaper@true}}
\def\bookfont@{\it}
\newif\ifbookinquotes@
\def\bookinquotes{\bookinquotes@true\def\bookfont@{}}
%%	LNCS NOTE: The default style for LNCS is style C.
\refstyle{C}
%%	LNCS NOTE: References on the form \paper...\inbook... have
%%	been changed to generate "..., in [<editors>,] <title>
%%	(\procinfo)..." to allow omission of editors and to avoid
%%	having two sets of parenthesis in case they are specified.
\def\endref@{%
  \keyhook@
  \def\nofrillscheck##1{%
    \def\do####1{\ifx##1####1\let\frills@\eat@\fi}%
    \let\frills@\identity@ \nofrills@list}%
  \ifvoid\bybox@
    \ifvoid\edbox@
    \else\setbox\bybox@\hbox{\unhbox\edbox@\breakcheck
      \nofrillscheck\edbox@\frills@{\space(\edtext)}\refbreak@}\fi
  \fi
  \ifvoid\keybox@\else\hbox to\refindentwd{%
       \keyformat{\unhbox\keybox@}}\fi 
  \commaunbox@\translbox@
  \ifbook@
    \ifvoid\bybox@
      \ifbookinquotes@ \ppunbox@\empty{``}\bookbox@\endquotes
      \else \ppunbox@\empty\empty\bookbox@\empty \fi
    \else \ppunbox@\empty\empty\bybox@\empty
      \ifbookinquotes@ \ppunbox@,{ ``}\bookbox@\endquotes
      \else \commaunbox@\bookbox@ \fi
    \fi
    \ppunbox@\empty{ (}\procinfobox@)%
    \ppunbox@,{ \voltext~}\volbox@\empty
    \commaunbox@\bookinfobox@
    \commaunbox@\publbox@ \commaunbox@\publaddrbox@
    \commaunbox@\yrbox@
  \else
    \ifvoid\bybox@
      \ifpaperinquotes@ \ppunbox@\empty{``}\paperbox@\endquotes
      \else \ppunbox@\empty\empty\paperbox@\empty \fi
    \else \ppunbox@\empty\empty\bybox@\empty
      \ifpaperinquotes@ \ppunbox@,{ ``}\paperbox@\endquotes
      \else \commaunbox@\paperbox@ \fi
    \fi
    \commaunbox@\paperinfobox@
    \ifprocpaper@
      \ifvoid\edbox@
	\ifbookinquotes@ \ppunbox@,{ in~``}\bookbox@\endquotes
        \else \ppunbox@,{ in~}\bookbox@\empty \fi
      \else
        \ppunbox@,{ in~}\edbox@{ (\edtext)}%
	\ifbookinquotes@ \ppunbox@,{ ``}\bookbox@\endquotes
        \else \commaunbox@\bookbox@ \fi
      \fi
      \ppunbox@\empty{ (}\procinfobox@)%
      \ppunbox@,{ \voltext~}\volbox@\empty
      \commaunbox@\bookinfobox@
      \commaunbox@\publbox@ \commaunbox@\publaddrbox@
      \commaunbox@\yrbox@
      \ppunbox@,{ \pagestext~}\pagesbox@\empty
    \else
      \commaunbox@\jourbox@
      \ppunbox@\empty{ }\volbox@\empty
      \ppunbox@\empty{ (}\yrbox@)%
      \ppunbox@,{ \issuetext~}\issuebox@\empty
      \commaunbox@\publbox@ \commaunbox@\publaddrbox@
      \commaunbox@\pagesbox@ 
    \fi
  \fi
  \commaunbox@\finalinfobox@
  \ppunbox@\empty{ (}\miscnotebox@)%
  \finalpunct\ppunbox@\empty{ (}\langbox@)%
  \defaultreftexts
}
\message{end of document,}
\outer\def\enddocument{\par% \par will do a runaway check for \endref
  \add@missing\endRefs
  \add@missing\endroster \add@missing\endproclaim
  \add@missing\enddefinition
  \add@missing\enddemo \add@missing\endremark \add@missing\endexample
 \nobreak \thetranslator@
 \vfill\supereject\end}
\message{output routine,}
\def\folio{{\foliofont@\ifnum\pageno<\z@ \romannumeral-\pageno
 \else\number\pageno \fi}}
\def\foliofont@{\sevenrm}
\def\output@{\shipout\vbox{%
 \pagebody
 \iffirstpage@ \global\firstpage@false \logo@
 \else \baselineskip4cm \line{\the\footline}\fi}%
 \advancepageno \ifnum\outputpenalty>-\@MM\else\dosupereject\fi}
\tenpoint
\W@{}
\csname lncsppt.sty\endcsname
\endinput
# Revision 1.1  1992/09/01  20:35:48  kris
# Initial revision
#
