ieee.cls

ieee.cls — TeX document, 57 kB (59142 bytes)

Continguts del fitxer

% =========================================================================
% -------------------------------------------------------------------------
%               XX                              X
%                                               X
%               XX    XXX   XXX   XXX      XXX  X  XXXX
%                X   X   X X   X X   X    X   X X X
%                X   XXXXX XXXXX XXXXX    X     X  XXX
%                X   X     X     X     XX X   X X     X
%               XXX   XXX   XXX   XXX  XX  XXX  X XXXX
% -------------------------------------------------------------------------
% =========================================================================
% ieee.cls --- For formatting IEEE conference & journal papers
%          --- Compiled by Gregory Plett, Sept 1997
%
% This class was inspired by one first compiled by Gerry Murray and
% Silvano Balemi for LaTeX209. It was later updated for use with 
% LaTeX2e, and some bugs were fixed, all by Istvan Kollar. Lastly,
% I have tried to make the class easier to use by paper authors. 
% Significant new functionality has been added. Many routines are
% "borrowed" from other people's packages and modified extensively.
% When I rembered where I got the routines from, I gave the author
% credit.
% 
% After I made many changes on my own, I found a version by Peter
% N"uchter, and tried to retain some amount of compatibility with his
% version.  To be completely compatible with him, you may need to 
% manually:
% \usepackage{rawfonts}\usepackage{oldlfont}
% \AtBeginDocument{\parindent1.0em} (?)
%
%===========================================================================
%
% Usage:
%	\documentclass[main-mode,sub-mode,misc-options]{ieee}
%	\usepackage{your own packages}
%	\begin{document}
%	\bibliographystyle{IEEEbib}
%	\title[short]{regular}
%	\author[short]{full}
%	\maketitle
%	\begin{abstract}...\end{abstract}
%	\begin{keywords}...\end{keywords}
%	\section{...}
%	  \PARstart ... or \PARstartCal ...
%	...
%	\begin{biography}[picname.ps]{Author's name}...\end{biography}
%	\end{document}
%
% The document class options are:
%
% main-mode: One of the following is required. (draft is the default)
%	draft: Double-spaced, single column with date/time stamp.
%	submission: Double-spaced, suitable for submission for review.
%	compressed: Same as "submission", only single spaced.
%	final: Double-column, for assessing page-length and
%		format of final version.
%
% sub-mode:
%       techreport: This can modify "final" to produce a two-col
%               technical report.
%	internal: This can modify "submission", "compressed" or "final".
%		It changes the header to notify the reader that
%		this is a version of the manuscript to be used for
%		internal review processes only, and not to be
%		distributed.
%	submitted: This can modify "compressed" or "final". It changes
%		the header to notify the reader that this 
%		is a preprint and not to be distributed.
%	inpress: This can modify "compressed" or "final". It changes the
%		header to notify the reader that this paper has
%		been accepted for publishing, but it is not yet to be
%		distributed.
%	reprint: This can modify "final". It changes the header
%		to notify the reader where the paper is reprinted from.
%
% misc-options:
%	narroweqnarray: Changes the spacing around the "=" sign in 
%		equation arrays to make it the same as in displayed math.
%	inline: Compresses the horizontal spacing of inline math equations.
%       notitlepage: No separate title page. (default)
%       titlepage: Separate title page.
%       anonymous: Omit all author information from main part of paper.
%		Author info only prints on titlepage.
%       9pt,10pt,11pt,12pt: Choose the appropriate type size. You should 
%               not need to do this as the "correct" size is automatically
%               chosen. However, if you want, you may use these to change
%               the type size of the main text. "9pt" is a bit of a hack
%               to retain backward-compatibility.
%       invited: If the paper is an "invited" paper, then this option
%               prints "(Invited Paper)" under the authors' names.
%   
% For regular IEEE submissions, define the journal name as:
% \journal{IEEE Trans. Inst. Meas.}
% 
% To specify the conference place and date:
% \confplacedate{Ottawa, Canada, May 19--21, 1997}
% 
% Before \maketitle, define:
% \title{Title of paper}
% \author{Author1\member{Fellow}\authorinfo{Department of
% Electrical Engineering\\ Some University, Somewhere, CA 94305
% USA} \and Author2\member{Senior Member}\authorinfo{Deptartment of 
% Measurement and Instrument Eng., Another University, ...}}
% 
% Note, the contents of \authorinfo tends to vary depending on if it is
% a conference or journal paper. The amount of manual changes are
% small, and must be done by a human anyway. The example given is for an
% IMTC conference.
% 
% See also IEEEbib.bst and ieeefig.sty
% Also very useful for document preparation is the style file "endfloat",
% available on all CTAN TeX archives.
%
%===========================================================================
% modified 14 October 2002:
% 	- fixed bibliography listing of [#] when # < 10 and number of
%	  references is greater than 9. Thanks for Janos Markus for finding
%	  this bug and suggesting a solution.
% modified 15 January 2000:
%	- "fixed" narroweqnarray. Never implemented! Now it is...
% modified 12 January 2000:
%	- modified so only first \title and \author commands are recognized.
%	  This allows LyX to have \title and \author with full syntax in 
%         header, but dummy \title and \author show up in GUI.
%	- added "\date" so the \date command can change "submitted" and 
%         "draft" date headers. 
% modified 11 January 2000:
% 	- added PARstartLyX and PARstartCalLyX for LyX compatibility
% 	- added biographyLyX 
% modified 1 Dec 1997:
%       - fixed first page in reprint mode to be same length as other pages
%       - added "invited" misc-option
% modified 5 Sept 1997:
%	- added the inpress, reprint and internal sub-modes
%	- removed IMTC-conf and CDC-conf to separate files
% modified 1 Sept 1997:
%	- included Babel package compatibility
%	- removed paper title from header on first page of draft
%	  manuscript
%	- removed the fixed option "letterpaper" to allow a4paper (etc)
% modified 1 Aug 1997:
%	- included the CDC-conf option
%===========================================================================
% **************************************************************************
% ******                          ******************************************
% *****   LaTeX2e INITIALIZATION   *****************************************
% ******                          ******************************************
% **************************************************************************
\typeout{Document Class `ieee' <Modified: 2000, Gregory L. Plett>.}
\NeedsTeXFormat{LaTeX2e}[1993/11/11] % Oldest acceptable version of LaTeX2e
\ProvidesClass{ieee}[2000/01/11]     % Name of package provided, date
\def\i@@@cls{exists}

% Initial Code & Declaration of Options
% -------------------------------------
\newif\ifev@l \ev@lfalse             	% true if "final" mode.
\newif\ifsubm@t \subm@tfalse         	% true if "submission" mode.
\newif\ifdr@ft \dr@fttrue            	% true if "draft" mode.
\newif\ifc@mpress \c@mpressfalse       	% true if "compressed" mode.

\newif\if@technote \@technotefalse	% true if "technote" sub-mode.
\newif\ifintern@l  \intern@lfalse	% true if "internal" sub-mode.
\newif\ifprepr@nt \prepr@ntfalse	% true if "preprint" sub-mode.
\newif\ifinpr@ss \inpr@ssfalse		% true if "inpress" sub-mode.
\newif\ifrepr@nt \repr@ntfalse		% true if "reprint" sub-mode.

\newif\iftitlep@ge \titlep@gefalse     	% true if has own titlepage
\newif\if@non \@nonfalse		% true if anonymous
\newif\ifixpt \ixptfalse		% true if trying to do 9 pt
\newif\if@nvited \@nvitedfalse		% true if an invited paper

% Main options
% ------------
\DeclareOption{draft}{\ev@lfalse\subm@tfalse\dr@fttrue%
	\typeout{ieee: `Draft' mode selected.}}
\DeclareOption{submission}{\ev@lfalse\dr@ftfalse\subm@ttrue%
	\typeout{ieee: `Submission' mode selected.}}
\DeclareOption{compressed}{\ev@lfalse\dr@ftfalse\subm@tfalse\c@mpresstrue%
	\typeout{ieee: `Compressed' mode selected.}}
\DeclareOption{final}{\ev@ltrue\dr@ftfalse\subm@tfalse%
	\typeout{ieee: `Final' mode selected.}}
\DeclareOption{evaluation}{\ev@ltrue\dr@ftfalse\subm@tfalse%
	\typeout{ieee: `Final' mode selected.}} % synonym for final

% Sub options
% -----------
\DeclareOption{technote}{\@technotetrue%
	\typeout{ieee: `Technote' sub-mode selected.}}
\DeclareOption{internal}{\intern@ltrue\prepr@ntfalse\inpr@ssfalse\repr@ntfalse%
	\typeout{ieee: `Internal-Review' sub-mode selected.}}
\DeclareOption{submitted}{\intern@lfalse\prepr@nttrue\inpr@ssfalse\repr@ntfalse%
	\typeout{ieee: `Submitted' sub-mode selected.}}
\DeclareOption{preprint}{\intern@lfalse\prepr@nttrue\inpr@ssfalse\repr@ntfalse%
	\typeout{ieee: `Submitted' sub-mode selected.}} % synonym for submitted
\DeclareOption{inpress}{\intern@lfalse\prepr@ntfalse\inpr@sstrue\repr@ntfalse%
	\typeout{ieee: `Inpress' sub-mode selected.}}
\DeclareOption{reprint}{\intern@lfalse\prepr@ntfalse\inpr@ssfalse\repr@nttrue%
	\typeout{ieee: `Reprint' sub-mode selected.}}

% Misc options
% ------------
                                     	% regular or compressed "=" spacing in
\def\eqnarr@ysep{\arraycolsep}       	% eqnarray (this is the default)
                                     	% NOTE: we must use "def" and not "="
                                     	% as arraycolsep not yet defined.
\DeclareOption{narroweqnarray}{\gdef\eqnarr@ysep{0.28em\relax}%
	\typeout{ieee: Narrow equation arrays selected.}}
\DeclareOption{inline}{\everymath{\thinmuskip=2mu plus 1mu
        \medmuskip=3mu plus 1mu minus 2mu
        \thickmuskip=4mu plus 2mu\relax}%
	\typeout{ieee: Narrower inline equations selected.}}
\DeclareOption{notitlepage}{\titlep@gefalse%
	\typeout{ieee: No separate title page.}}
\DeclareOption{titlepage}{\titlep@getrue%
	\typeout{ieee: Use separate title page.}}
\DeclareOption{anonymous}{\@nontrue\AtBeginDocument{\glpexclude{biography}}
	\typeout{ieee: Omit author information from paper.}}
\DeclareOption{invited}{\@nvitedtrue%
	\typeout{ieee: (Invited Paper).}}

\DeclareOption{9pt}{\ixpttrue%
	\typeout{ieee: Trying to emulate old `9pt' document class.}}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}

% Execution of Options/Package Loading
% ------------------------------------
\newlength\narrowcol 
\newlength\parindentsave 		% recover parindent in blsone text

\ProcessOptions
\ifev@l			     	% if "final" mode...
  \if@technote\ixpttrue\typeout{ieee: Trying to emulate old `9pt' 
	document class.}\fi%
  \LoadClass[twoside,final,twocolumn,10pt]{article}
\else			     	% if "draft"/"submission"/(compressed) mode...
  \ifixpt
    \LoadClass[oneside,final,onecolumn,10pt]{article}
  \else
    \LoadClass[oneside,final,onecolumn,12pt]{article}
  \fi
\fi
\RequirePackage[final]{graphicx}
\RequirePackage{ifthen}

% Re-Definitions of English words which must be done before
% the Babel package (optional) is loaded.
% ---------------------------------------------------------
\def\keywordsname{Index Terms}
\def\indexterms#1{\def\keywordsname{#1}}
\def\appendicesname{Appendices}
\def\figurename{Fig.}

% **************************************************************************
% *****   Check Sub-Options for Compatibility w/ Main-Options   ************
% **************************************************************************
\if@technote\ifev@l\else\ClassError{ieee}{`technote' sub-mode may be
	used only with the `final' ^^Jmain-mode. It may not be used
	with either the `draft,' `submission,' or ^^J`compressed' 
	main-modes}{}\endinput\fi\fi
\ifintern@l\ifdr@ft\ClassError{ieee}{`internal' sub-mode may be
	used only with the ^^J`submission,' `compressed,' or `final' main-modes.
	It may not be used ^^Jwith the `draft' main-mode}{}\endinput\fi\fi
\ifprepr@nt\ifc@mpress\else\ifev@l\else\ClassError{ieee}{`submitted'
	sub-mode may be used only with the ^^J`compressed' or `final' 
	main-modes. It may not be used with either the ^^J`draft' or
	`submission' main-modes}{}\endinput\fi\fi\fi
\ifinpr@ss\ifc@mpress\else\ifev@l\else\ClassError{ieee}{`inpress'
	sub-mode may be used only with the `compressed' ^^Jor `final' 
	main-modes. It may not be used with either the `draft' or
	^^J`submission' main-modes}{}\endinput\fi\fi\fi
\ifrepr@nt\ifev@l\else\ClassError{ieee}{`reprint'
	sub-mode may be used only with the `final' ^^Jmain-mode. It may not be 
	used with either the `draft,' `submission,' or ^^J`compressed'
	main-modes}{}\endinput\fi\fi

% **************************************************************************
% *****   Page Layout Definition   *****************************************
% **************************************************************************
%% Layout definitions (mostly) common to all options.

\hoffset 0in 			\voffset 0in
\headheight        12pt 	\headsep            7mm
\marginparsep      10pt 	\marginparwidth    20pt
\marginparpush     25pt
\columnsep        4mm
\parindent        1.0em
\lineskip           1pt
\normallineskip     1pt
\def\baselinestretch{1}

\partopsep          \z@
\topsep           1.3ex
\parsep             \z@
\itemsep            \z@

\setlength{\parindentsave}{\parindent}

\ifev@l					% if "evaluation" mode
    % if camera-ready or A4paper ...
    \ifdim\paperwidth<211mm
      \oddsidemargin -11.4mm	\evensidemargin -11.4mm
    % for regular US Letter, not camera-ready
    \else
      \oddsidemargin -8.45mm	\evensidemargin -8.45mm
    \fi
    \ifrepr@nt
      \textheight 237.5mm		% leave 6mm for cpyright on first page
    \else
      \textheight 243.5mm		
    \fi
    \voffset -0.5in
    \textwidth 182.0mm
    \topmargin -12pt
    \setlength{\narrowcol}{89mm}
\else				     	% if "draft"/"submission" mode...
  \ifc@mpress				% and "compressed"
    \oddsidemargin -0.25in	\evensidemargin -0.25in
    \textheight 9in 		\textwidth 7in
    \topmargin -0.25in
    \setlength{\narrowcol}{7in}
  \else 				% and NOT "compressed"
    \renewcommand\baselinestretch{1.8}\renewcommand{\arraystretch}{0.8}
    \parindent=1.8\parindent
    \oddsidemargin 0pt 		\evensidemargin 0pt
    \headheight 12pt 		\headsep 0.375in
    \topmargin 0pt 		
    \textheight 8.5in 		\textwidth 6.5in
    \marginparsep 0in 		\marginparwidth 0pt
    \marginparpush 5pt
    \setlength{\narrowcol}{6.5in}
  \fi
\fi

\def\normalstyle{\rmfamily}

% **************************************************************************
% *****   Font Definition   ************************************************
% **************************************************************************
%% The 9-point option is being faked since it is not supported by the
%% article base class.

%% Check if we have selected 9 points
\ifixpt
\typeout{-- This is a 9 point document}
\gdef\@ptsize{9}
\def\@normalsize{\@setsize\normalsize{10.7pt}\ixpt\@ixpt
\abovedisplayskip 1em plus2pt minus5pt\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip .6em plus3pt minus3pt
\topsep \belowdisplayshortskip%!PN
}
\def\small{\@setsize\small{9.12pt}\viiipt\@viipt}
\def\footnotesize{\@setsize\footnotesize{8.15pt}\viipt\@vipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vpt}
\def\tiny{\@setsize\tiny{5pt}\vpt\@vpt}
\def\large{\@setsize\large{12pt}\xpt\@xpt}
\def\Large{\@setsize\Large{14pt}\xiipt\@xiipt}
\def\LARGE{\@setsize\LARGE{18pt}\xivpt\@xivpt}
\def\huge{\@setsize\huge{22pt}\xviipt\@xviipt}
\def\Huge{\@setsize\Huge{25pt}\xxpt\@xxpt}
\fi
%%
%% Check if we have selected 10 points
\def\@tempa{0}\if\@ptsize\@tempa
\typeout{-- This is a 10 point document}
\def\@normalsize{\@setsize\normalsize{11.9pt}\xpt\@xpt
\abovedisplayskip 1em plus2pt minus5pt\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip .6em plus3pt minus3pt
\topsep \belowdisplayshortskip%!PN
}
\def\small{\@setsize\small{9.2pt}\viiipt\@viiipt}
\def\footnotesize{\@setsize\footnotesize{8.8pt}\viiipt\@viiipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\normalsize{\@setsize\normalsize{11.9pt}\xpt\@xpt}
\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
\def\huge{\@setsize\huge{22pt}\xxpt\@xxpt}
\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
\fi
%%
%% Check if we have selected 11 points
\def\@tempa{1}\if\@ptsize\@tempa
\typeout{-- This is an 11 point document}
\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
\abovedisplayskip 1em plus2pt minus5pt\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip .6em plus3pt minus3pt
\topsep \belowdisplayshortskip%!PN
}
\def\small{\@setsize\small{12pt}\xpt\@xpt}
\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt}
\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
\def\normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt}
\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
\fi
%%
%% Check if we have selected 12 points
\def\@tempa{2}\if\@ptsize\@tempa
\typeout{-- This is a 12 point document}
\def\@normalsize{\@setsize\normalsize{14pt}\xiipt\@xiipt
\abovedisplayskip 1em plus3pt minus6pt\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip .6em plus4pt minus4pt
\topsep \belowdisplayshortskip%!PN
}
\def\small{\@setsize\small{11.4pt}\xpt\@xpt}
\def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
\def\scriptsize{\@setsize\scriptsize{9pt}\viiipt\@viiipt}
\def\tiny{\@setsize\tiny{8pt}\vipt\@vipt}
\def\normalsize{\@setsize\normalsize{14pt}\xiipt\@xiipt}
\def\large{\@setsize\large{18pt}\xivpt\@xivpt}
\def\Large{\@setsize\Large{22pt}\xviipt\@xviipt}
\def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
\def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt}
\let\Huge=\huge
\fi

\AtBeginDocument{\normalsize\normalstyle\ps@headings\pagenumbering{arabic}}

% **************************************************************************
% *****   List Definition   ************************************************
% **************************************************************************
%% Change aspect of lists with
%% 1) \itemindent,  label indentation  wrt to left list margin
%% 2) \leftmargini, the indentation of the whole list (on left, first level)
\ifev@l
  \itemindent        -1em
  \leftmargini        2em
  \leftmarginii       1em
  \leftmarginiii    1.5em
  \leftmarginiv     1.5em
  \leftmarginv      1.0em
  \leftmarginvi     1.0em
\else
  \itemindent         -1em
  \leftmargini        3em
  \leftmarginii       3em
  \leftmarginiii      3em
  \leftmarginiv       3em
  \leftmarginv        3em
  \leftmarginvi       3em
\fi
%\itemindent        2em  % Alternative values: sometimes used..
%\leftmargini       0em
\labelsep           5pt
\leftmargin\leftmargini
\labelwidth         \z@

\def\@listI{\leftmargin\leftmargini} \@listI
\def\@listi{\leftmargin\leftmargini  \topsep \z@ plus 1pt minus 1pt}
\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii
    \advance\labelwidth-\labelsep    \topsep \z@}
\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii
    \advance\labelwidth-\labelsep    \topsep \z@}
\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv
    \advance\labelwidth-\labelsep    \topsep \z@}
\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv
    \advance\labelwidth-\labelsep    \topsep \z@}
\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi
    \advance\labelwidth-\labelsep    \topsep \z@}

\def\labelenumi{\theenumi.}     \def\theenumi{\arabic{enumi}}
\def\labelenumii{(\theenumii)}  \def\theenumii{\alph{enumii}}
\def\labelenumiii{\theenumiii.} \def\theenumiii{\roman{enumiii}}
\def\labelenumiv{\theenumiv.}   \def\theenumiv{\Alph{enumiv}}
\def\p@enumii{\theenumi}
\def\p@enumiii{\theenumi(\theenumii)}
\def\p@enumiv{\p@enumiii\theenumiii}

\def\labelitemi{$\scriptstyle\bullet$}
\def\labelitemii{\bf --}
\def\labelitemiii{$\ast$}
\def\labelitemiv{$\cdot$}

%% \itemindent is set to \z@ by list, so define new temporary variable
\newdimen\tmpitemindent
\def\verse{\let\\=\@centercr
    \list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent
    \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
\let\endverse\endlist
\def\quotation{\list{}{\listparindent 1.5em \itemindent\listparindent
    \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
\let\endquotation=\endlist
\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
\let\endquote=\endlist
\def\@mklab#1{#1}
\def\description{\tmpitemindent\itemindent\list{}{\itemindent\tmpitemindent
    \labelwidth\z@\def\makelabel##1{\hspace\labelsep\emph{##1}}}}
\def\enddescription{\endlist\par}
\def\enumerate{\tmpitemindent\itemindent\ifnum \@enumdepth >3 \@toodeep\else
    \advance\@enumdepth \@ne \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
    \list{\csname label\@enumctr\endcsname}{\itemindent\tmpitemindent
    \usecounter{\@enumctr}\def\makelabel##1{\hspace\labelsep\hfil{##1}}}\fi}
\def\endenumerate{\endlist\par}
\def\itemize{\tmpitemindent\itemindent\ifnum \@itemdepth >3 \@toodeep\else
    \advance\@itemdepth\@ne
    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
    \list{\csname\@itemitem\endcsname}{\itemindent\tmpitemindent
    \def\makelabel##1{\hspace\labelsep\hfil\emph{##1}}}\fi}
\def\enditemize{\endlist\par}

\newif\if@restonecol
\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
    \else \newpage \fi \thispagestyle{coverpagestyle}\c@page\z@}
\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi%
\if@twoside\mbox{}\thispagestyle{coverpagestyle}\c@page\z@\cleardoublepage\fi}

\arraycolsep     5pt
\tabcolsep       6pt
\arrayrulewidth .4pt
\doublerulesep   2pt
\tabbingsep\labelsep

% **************************************************************************
% *****   Footnote Definition   ********************************************
% **************************************************************************
\skip\footins 10pt plus 5pt minus 2pt
\footnotesep 7pt 
\footskip 6mm
\skip\@mpfootins = \skip\footins
\fboxsep = 3pt \fboxrule = .4pt
\long\def\@makefntext#1{\parindent .8em\indent$^{\@thefnmark}$#1}
\def\footnoterule{}

% Reset baselinestretch within footnotes.
% Originally stolen from Stanford University thesis style.
% --------------------------------------------------------
\long\def\@footnotetext#1{\insert\footins{\blsone%
    \footnotesize\interlinepenalty\interfootnotelinepenalty
    \splittopskip\footnotesep
    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
    \hsize\columnwidth \@parboxrestore
    \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
    \let\par\\
    {\rule{\z@}{\footnotesep}\ignorespaces
      #1\strut}}}

% **************************************************************************
% *****   Keep track of Sections   *****************************************
% **************************************************************************
\if@technote
   \setcounter{secnumdepth}{3}
\else
   \setcounter{secnumdepth}{4}
\fi

\def\thesection{\@Roman\c@section}
\def\thesubsection{\Alph{subsection}}
\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
\def\thesubsubsectiondis{\Alph{subsection}.\arabic{subsubsection}}
\def\theparagraph{\thesubsubsection.\alph{paragraph}}
\def\theparagraphdis{\thesubsubsectiondis.\alph{paragraph}}

\def\theequation{\arabic{equation}}

% **************************************************************************
% *****   Table of Contents, List of Figures/Tables Definitions   **********
% **************************************************************************
\def\@pnumwidth{1.55em}
\def\@tocrmarg {2.55em}
\def\@dotsep{4.5}
\setcounter{tocdepth}{3}

\def\tableofcontents{\section*{\contentsname}\@starttoc{toc}}
\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
    \@tempdima 1.8em \begingroup \parindent \z@ \rightskip \@pnumwidth
    \parfillskip-\@pnumwidth \bf\leavevmode #1\hfil\hbox to\@pnumwidth{\hss #2}
    \par \endgroup}
\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\def\listoffigures{\section*{\listfigurename}\@starttoc{lof}}
\def\l@figure{\@dottedtocline{1}{1em}{1.8em}}
\def\listoftables{\section*{\listtablename}\@starttoc{lot}}
\let\l@table\l@figure

% **************************************************************************
% *****   Float Definitions   **********************************************
% **************************************************************************
%% Normal Floats                      %% Double Column Floats
\floatsep 12pt plus 2pt minus 2pt     \dblfloatsep 12pt plus 2pt minus 2pt
\textfloatsep 20pt plus 2pt minus 4pt \dbltextfloatsep 20pt plus 2pt minus 4pt
%\@maxsep 20pt                         \@dblmaxsep 20pt %!PN
\@fptop 0pt plus 1fil                 \@dblfptop 0pt plus 1fil
\@fpsep 8pt plus 2fil                 \@dblfpsep 8pt plus 2fil
\@fpbot 0pt plus 1fil                 \@dblfpbot 0pt plus 1fil
\def\topfraction{1.0}                 \def\dbltopfraction{1.0}
\def\floatpagefraction{0.8}           \def\dblfloatpagefraction{0.8}
\setcounter{topnumber}{2}             \setcounter{dbltopnumber}{4}
%
\intextsep 12pt plus 2pt minus 2pt
\setcounter{bottomnumber}{2}
\def\bottomfraction{.4}
\setcounter{totalnumber}{4}
\def\textfraction{.2}

% Reset baselinestretch within floats.
% Originally stolen from Stanford University thesis style.
% --------------------------------------------------------
\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
    \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
      \@parmoderr\@floatpenalty\z@
     \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
       \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
       \@tfor \@tempa :=#2\do
                        {\if\@tempa h\advance\@tempcnta \@ne\fi
                         \if\@tempa t\advance\@tempcnta \tw@\fi
                         \if\@tempa b\advance\@tempcnta 4\relax\fi
                         \if\@tempa p\advance\@tempcnta 8\relax\fi
         }\global\count\@currbox\@tempcnta}\@fltovf\fi
    \global\setbox\@currbox\vbox\bgroup
    \def\baselinestretch{1}\small\normalsize
    \hsize\columnwidth \@parboxrestore}

% **************************************************************************
% *****   Caption Definition   *********************************************
% **************************************************************************
% some journals do not have centered captions for figures.
\newif\ifc@ptionleft \c@ptionlefttrue
\def\leftfigcaptions{\c@ptionlefttrue}
\def\centerfigcaptions{\c@ptionleftfalse}

\long\def\caption{\refstepcounter\@captype \@dblarg{\@caption\@captype}}

\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname ext@#1\endcsname}{#1}{%
   \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}
   \begingroup \@parboxrestore \normalsize
     \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}{#1}\par
   \endgroup}

\def\tablestring{table}
\def\figurestring{figure}

% changed by GLP to allow table captions to be set to a specific maximum
% width "\captionwidth", if defined.
\newlength{\captionindent}
\long\def\@makecaption#1#2#3{
\ifx\figurestring#3
    \vskip 5pt
    \setbox\@tempboxa\hbox{\small #1.~ #2}
    \ifdim \wd\@tempboxa >\hsize
       \setbox\@tempboxa\hbox{\small #1.~ }
       %\setlength\captionindent{\wd\@tempboxa} \divide\captionindent by 2
       %\parbox[t]{\hsize}{\small \hangindent \captionindent \hangafter=1%
       \parbox[t]{\hsize}{\small 
       \unhbox\@tempboxa#2}
    \else \hbox 
	to\hsize{\small\ifc@ptionleft\else\hfil\fi\box\@tempboxa\hfil}
    \fi
\else
  \begin{center}
  \ifx\captionwidth\undefined {\small #1}\\{\small\scshape #2}
  \else
    \begin{minipage}{\captionwidth}
    \begin{center}{\small #1}\\{\small\scshape #2}\end{center}
    \end{minipage}
  \fi
  \end{center}\vskip 4pt
\fi}

\def\thefigure{\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename\ \thefigure}
%\def\figure{\@float{figure}}		% GLP 
%\let\endfigure\end@float
\@namedef{figure*}{\@dblfloat{figure}}
\@namedef{endfigure*}{\end@dblfloat}

\def\thetable{\@Roman\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}

% **************************************************************************
% *****   Header/Footer Definition   ***************************************
% **************************************************************************
% compute the time in hours and minutes; make new vars \timehh and \timemm
\newcount\timehh\newcount\timemm\timehh=\time\divide\timehh by 60
\timemm=\time\count255=\timehh\multiply\count255 by-60
\advance\timemm by \count255
\ifnum\timehh=12\def\apm{pm}\else
\ifnum\timehh>12\def\apm{pm}\advance\timehh by-12\else
\def\apm{am}\fi\fi
\def\t@me{\number\timehh\,:\,\ifnum\timemm<10 0\fi\number\timemm\,\apm}

% default definitions
% -------------------
\def\theevenhe@d{\footnotesize\thepage \hfil \leftmark\hbox{}}
\def\theoddhe@d{\hbox{}\footnotesize\rightmark \hfil \thepage}
\def\theevenf@@t{}
\def\theoddf@@t{}

\def\theeventphe@d{\footnotesize\thepage \hfil \hbox{}}
\def\theoddtphe@d{\hbox{}\footnotesize \hfil \thepage}
\def\theeventpf@@t{}
\def\theoddtpf@@t{}

\def\theevencphe@d{}
\def\theoddcphe@d{}
\def\theevencpf@@t{}
\def\theoddcpf@@t{}

\def\internalmsg{Preliminary version for evaluation: Please do not 
	circulate without the permission of the author(s)}
\def\submittedmsg{SUBMITTED FOR PUBLICATION TO:}
\def\acceptedmsg{ACCEPTED FOR PUBLICATION:}
\def\inpressmsg{(IN PRESS)}
\def\reprintmsg{REPRINTED FROM:}

% default cover page style (optional cover page)
% ----------------------------------------------
\def\ps@coverpagestyle{
  \def\@oddhead{\theoddcphe@d} \def\@evenhead{\theevencphe@d}
  \def\@oddfoot{\theoddcpf@@t} \def\@evenfoot{\theevencpf@@t}
}

% default title page style (first page of paper)
% ----------------------------------------------
\def\ps@titlepagestyle{
  \def\@oddhead{\theoddtphe@d} \def\@evenhead{\theeventphe@d}
  \def\@oddfoot{\theoddtpf@@t} \def\@evenfoot{\theeventpf@@t}
}

% default regular page style
% --------------------------
\if@twoside
  \def\ps@headings{
    \def\@oddhead{\theoddhe@d}
    \def\@evenhead{\theevenhe@d}
    \def\@oddfoot{\theoddf@@t} \def\@evenfoot{\theevenf@@t}
  }
\else
  \def\ps@headings{
    \def\@oddhead{\theoddhe@d}
    \def\@oddfoot{\theoddf@@t} 
    \def\@evenhead{} \def\@evenfoot{}
  }
\fi

% For draft mode (no sub-modes allowed)
% -------------------------------------
\ifdr@ft
  \def\leftmark{\sh@rttitle}\let\rightmark\leftmark
  \def\theoddf@@t{\footnotesize\today---\t@me\hfil DRAFT}
  \def\theevenf@@t{\footnotesize DRAFT\hfil\today---\t@me}
  \def\theoddtpf@@t{\footnotesize\today---\t@me\hfil DRAFT}
  \def\theeventpf@@t{\footnotesize DRAFT\hfil\today---\t@me}
\fi

% For submission mode (default plus internal sub-modes allowed)
% -------------------------------------------------------------
\ifsubm@t
  \def\leftmark{\sh@rttitle}\def\rightmark{\titl@line}
  \ifintern@l
    \def\theeventphe@d{\footnotesize\thepage \hfil \rightmark\hbox{}}
    \def\theoddtphe@d{\hbox{}\footnotesize\rightmark \hfil \thepage}
    \def\rightmark{\vbox to 0pt{\vss\hbox{\internalmsg} \hbox{\sh@rttitle}}}
    \def\leftmark{\vbox to 0pt{\vss\hbox{\internalmsg}
	\hbox{\phantom{\internalmsg}\llap{\sh@rttitle}}}}
  \else % put date on first page.
    \edef\TODAY{\uppercase{\today}}
    \def\theeventphe@d{\footnotesize\thepage \hfil \submittedmsg\ 
	\@journal\@titletext, \TODAY}
    \def\theoddtphe@d{\footnotesize\submittedmsg\ 
	\@journal\@titletext, \TODAY\hfil \thepage}
    \def\theevencphe@d{\footnotesize\hbox{} \hfil \submittedmsg\ 
	\@journal\@titletext, \TODAY}
    \def\theoddcphe@d{\footnotesize\submittedmsg\ 
	\@journal\@titletext, \TODAY\hfil \hbox{}}
  \fi
\fi

% For compressed mode (default, internal, submitted and  
% inpress sub-modes allowed)
% -----------------------------------------------------
\ifc@mpress
  \def\leftmark{\sh@rttitle}\def\rightmark{\titl@line}
  \ifintern@l
    \def\theeventphe@d{\footnotesize\thepage \hfil \rightmark\hbox{}}
    \def\theoddtphe@d{\hbox{}\footnotesize\rightmark \hfil \thepage}
    \def\rightmark{\vbox to 0pt{\vss\hbox{\internalmsg} \hbox{\sh@rttitle}}}
    \def\leftmark{\vbox to 0pt{\vss\hbox{\internalmsg}
	\hbox{\phantom{\internalmsg}\llap{\sh@rttitle}}}}
  \fi
  \ifprepr@nt
    \edef\TODAY{\uppercase{\today}}
    \def\theeventphe@d{\footnotesize\thepage \hfil \submittedmsg\ 
	\@journal\@titletext, \TODAY}
    \def\theoddtphe@d{\footnotesize\submittedmsg\ 
	\@journal\@titletext, \TODAY\hfil \thepage}
    \def\theevencphe@d{\footnotesize\hbox{} \hfil \submittedmsg\ 
	\@journal\@titletext, \TODAY}
    \def\theoddcphe@d{\footnotesize\submittedmsg\ 
	\@journal\@titletext, \TODAY\hfil \hbox{}}
  \fi
  \ifinpr@ss
    \def\leftmark{\acceptedmsg\ \@journal\@titletext, \inpressmsg}
    \def\theeventphe@d{\footnotesize\thepage \hfil \leftmark\hbox{}}
    \def\theoddtphe@d{\hbox{}\footnotesize\leftmark \hfil \thepage}
  \fi
\fi

% For final (evaluate) mode (default, techreport, internal, 
% submitted, inpress and reprint sub-modes allowed)
% ---------------------------------------------------------
\ifev@l
  \edef\TODAY{\uppercase{\today}}
  \def\leftmark{\@journal\@titletext}\def\rightmark{\titl@line}
  \def\theeventphe@d{\footnotesize\thepage \hfil \leftmark\hbox{}}
  \def\theoddtphe@d{\hbox{}\footnotesize\leftmark \hfil \thepage}
  \if@technote % make header a little bigger
    \def\theevenhe@d{\small\thepage \hfil \leftmark\hbox{}}
    \def\theoddhe@d{\hbox{}\small\rightmark \hfil \thepage}
    \def\theeventphe@d{\small\thepage \hfil \leftmark\hbox{}}
    \def\theoddtphe@d{\hbox{}\small\leftmark \hfil \thepage}
  \fi
  \ifintern@l
    \def\theeventphe@d{\footnotesize\thepage \hfil \rightmark\hbox{}}
    \def\theoddtphe@d{\hbox{}\footnotesize\rightmark \hfil \thepage}
    \def\rightmark{\vbox to 0pt{\vss\hbox{\internalmsg} \hbox{\sh@rttitle}}}
    \def\leftmark{\vbox to 0pt{\vss\hbox{\internalmsg}
	\hbox{\phantom{\internalmsg}\llap{\sh@rttitle}}}}
  \fi
  \ifprepr@nt
    \def\leftmark{\submittedmsg\ \@journal\@titletext, \TODAY}
  \fi
  \ifinpr@ss
    \def\leftmark{\acceptedmsg\ \@journal\@titletext, \inpressmsg}
  \fi
  \ifrepr@nt
    % reset page size on second and following pages b/c no copyright info
    \let\oldshipout\shipout
    \gdef\shipout{\global\textheight 243.5mm\oldshipout}
    \def\theeventpf@@t{\footnotesize\hfil\@ieeecopyright\hfil}
    \def\theoddtpf@@t{\footnotesize\hfil\@ieeecopyright\hfil}
    \def\leftmark{\reprintmsg\ \@journal\@titletext}
  \fi
\fi

%% Defines the command for putting the header. footernote{TEXT} is the same
%% as markboth{TEXT}{TEXT}. Here for compatibility with other style files.
\def\markboth#1#2{\def\leftmark{#1}\def\rightmark{#2}}
\def\footernote#1{\markboth{#1}{#1}}

% **************************************************************************
% *****   Citation/Bibliography Definitions   ******************************
% **************************************************************************
%% separate citations with "], ["
\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
\def\@citea{}\@cite{\@for\@citeb:=#2\do {\@citea\def\@citea{],
[}\@ifundefined {b@\@citeb}{{\bf ?}\@warning {Citation `\@citeb' on
page \thepage \space undefined}}%
{\csname b@\@citeb\endcsname}}}{#1}}

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

%% Allow short (name-less) citations, when used in conjunction with a
%% bibliography style that creates labels like \citename{<names>, }<year>
\let\@internalcite\cite
\def\cite{\def\citename##1{##1}\@internalcite}
\def\shortcite{\def\citename##1{}\@internalcite}
\def\@biblabel#1{\def\citename##1{##1}[#1]\hfill}

\def\thebibliography#1{\section*{\refname}\footnotesize\list
    {\hss[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
    \advance\leftmargin\labelsep \itemsep 0pt plus .5pt
    \usecounter{enumi}}
    \def\newblock{\hskip .11em plus .33em minus .07em}
    \sloppy\clubpenalty4000\widowpenalty4000
    \sfcode`\.=1000\relax
    \ifev@l\else\normalsize\fi %added by GLP
}
\let\endthebibliography=\endlist

% **************************************************************************
% *****   Appendix/Appendices Definitions   ********************************
% **************************************************************************
\newcounter{numappendices}\setcounter{numappendices}{0}
\newif\ifappendix \appendixfalse
%% appendix command for one single appendix
\def\appendix{\par
    \appendixtrue
    \typeout{appendices: \arabic{numappendices}}
    \setcounter{section}{0}\setcounter{subsection}{0}
    \gdef\thesection{\Alph{section}} 
    \ifnum \value{numappendices}>1 
       \section*{\appendicesname}
    \else
       \section*{\appendixname}
    \fi
    \setcounter{numappendices}{0}
}
%% appendices command for multiple appendicies
\def\appendices{\par
    \appendixtrue
    \typeout{appendices: \arabic{numappendices}}
    \setcounter{section}{0}\setcounter{subsection}{0}
    \gdef\thesection{\Alph{section}} \section*{\appendicesname}
    \setcounter{numappendices}{0}
}
\AtEndDocument{\if@filesw\immediate\write\@auxout{\string\setcounter{numappendices}{\arabic{numappendices}}}\fi}

% **************************************************************************
% *****   Title Definitions   **********************************************
% **************************************************************************
\def\titl@line{\sh@rttitle}	%for the header at the top of the page.

\def\@title{\typeout{ieee: Warning! No \noexpand\title given!}}
\def\title{\@ifnextchar [{\titlea}{\titleb}}%]

\def\set@title#1{\gdef\@title{#1}\global\def\set@title##1{}}
\def\setsh@rttitle#1{\gdef\sh@rttitle{#1}\global\def\setsh@rttitle##1{}}
\def\titlea[#1]#2{\set@title{#2}\setsh@rttitle{\uppercase{#1}}}
\def\titleb#1{\set@title{#1}\setsh@rttitle{\uppercase{#1}}}

\def\authorinfo#1{\let\\\relax\thanks{#1}}

\ifev@l
  \if@technote
    \def\member#1{}
  \else
    \def\member#1{, \emph{#1, IEEE}}
  \fi
\else
  \def\member#1{}
\fi 

\def\and{\unskip%                  % \begin{tabular}
\end{tabular}%
\hskip 0pt plus 0.1pt%
\begin{tabular}[t]{@{}c@{}}\ }%

\def\@author{\typeout{ieee: Warning! No \noexpand\author given!}}
\def\author{\@ifnextchar [{\authora}{\authorb}}%]
\def\set@author#1{\gdef\@author{#1}\global\def\set@author##1{}}
\def\settitl@line#1{\gdef\titl@line{#1}\global\def\settitl@line##1{}}
\def\authora[#1]#2{\set@author{#2}\if@non\else\settitl@line{#1: \sh@rttitle}\fi}
\def\authorb#1{\set@author{#1}}

\def\date#1{\def\today{#1}\edef\TODAY{\uppercase{\today}}}

\long\def\maketitle{%
  \begingroup
    \let\@thanks\@empty
    \renewcommand\thefootnote{} % the \thanks{} mark type is empty
    \iftitlep@ge\begin{titlepage}\@maketitlepage\@thanks\end{titlepage}%
	\let\@thanks\@empty\fi
    \thispagestyle{titlepagestyle}
    \if@twocolumn
      \if@technote
         %\if@twoside\newpage\cleardoublepage\else\newpage\fi%
         \newpage\global\@topnum\z@
         \ifrepr@nt
           \ifx\@loginfo\undefined\typeout{ieee: Warning! No \noexpand\loginfo 
           given!}\else\let\\\relax\thanks{\@loginfo}\fi%
         \fi
         \@maketitle
      \else
        \ifnum \col@number=\@ne 
          \ifrepr@nt
            \ifx\@loginfo\undefined\typeout{ieee: Warning! No \noexpand\loginfo 
	    given!}\else\let\\\relax\thanks{\@loginfo}\fi%
         \fi
         \@maketitle
        \else \twocolumn[%
          \ifrepr@nt%
            \ifx\@loginfo\undefined\typeout{ieee: Warning! No \noexpand\loginfo%
	    given!}\else\let\\\relax\thanks{\@loginfo}\fi%
         \fi%
         \@maketitle]%
        \fi
      \fi
    \else
      \newpage
      \global\@topnum\z@   % Prevents figures from going at top of page.
      \ifrepr@nt 
        \ifx\@loginfo\undefined\typeout{ieee: Warning! No \noexpand\loginfo 
        given!}\else\let\\\relax\thanks{\@loginfo}\fi
      \fi
      \@maketitle
    \fi
    \thispagestyle{titlepagestyle}%
    \@thanks
  \endgroup
  \setcounter{footnote}{0}%
  \global\let\thanks\relax \global\let\maketitle\relax
  \global\let\@maketitle\relax \global\let\@thanks\@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
}

\long\def\@maketitle{\unskip\newpage%
    \begin{center}\blsone
    \let \footnote \thanks
    \if@technote
      {\bfseries\@title\par}\if@non\else\vskip 1.3em{\lineskip .5em
	\noindent\begin{tabular}[t]{@{}c@{}}\@author\end{tabular}}\fi\par
    \else\unskip
      \noindent{\Huge\@title\par}%
      \if@non\else\vskip1.0em%
        \noindent{\large\lineskip .5em%
        \begin{tabular}[t]{@{}c@{}}\@author\end{tabular}}%
      \fi\par%
      \if@nvited\vskip1.0em\noindent\emph{\large(Invited Paper)}\par\fi
    \fi
    \ifrepr@nt
      \ifx\@lognumber\undefined\typeout{ieee: Warning! No 
      \noexpand\pubitemident or \noexpand\lognumber 
      given!}\else\thanks{\@lognumber}\fi%
    \fi
    \end{center}\par\vskip 0.5em}%

\long\def\@maketitlepage{\newpage%
    \mbox{}\vfil
    \begin{center}\blsone
    \let \footnote \thanks
    \if@technote
      {\bfseries\@title\par}\vskip 1.3em{\lineskip .5em
        \noindent\begin{tabular}[t]{@{}c@{}}\@author\end{tabular}\par}
    \else
      \vskip0.2em{\Huge\@title\par}\vskip1.0em%
      \iftitlep@ge\vfil\fi
      \noindent{\large\lineskip .5em%
      \begin{tabular}[t]{@{}c@{}}\@author\end{tabular}\par}%
    \fi
    \end{center}\par\vfil\mbox{}}

\def\@journal{\typeout{ieee: Warning! No \noexpand\journal given!}}
\def\journal#1{\def\@journal{\uppercase{#1}}}

\def\@ieeecopyright{\typeout{ieee: Warning! No \noexpand\ieeecopyright given!}}
\def\ieeecopyright#1{\def\@ieeecopyright{#1}}

\def\lognumber#1{\def\@lognumber{IEEE Log Number #1.}}
\def\pubitemident#1{\def\@lognumber{Publisher Item Identifier #1.}}
\long\def\loginfo#1{\long\def\@loginfo{\hbox{\vrule height 3ex width \z@}#1}}

\def\sh@rttitle{}
\def\@titletext{}
\def\titletext#1{\def\@titletext{#1}}

\def\firstpage#1{\setcounter{page}{#1}}

% **************************************************************************
% *****   Abstract Definition   ********************************************
% **************************************************************************
\def\abstract{%
  \if@twocolumn
    \small\bfseries{\itshape\abstractname\/---}%
  \else
    \begin{center}\vspace{-0.8em}\small\bf\abstractname\end{center}
    \quotation\small
  \fi\ignorespaces}
\def\endabstract{\vspace{0.6em}\par\if@twocolumn\else\endquotation\fi
  \normalsize\normalstyle}

% **************************************************************************
% *****   Keywords Definition   ********************************************
% **************************************************************************
\def\keywords{\vspace{-.3em}
  \if@twocolumn
    \small\bfseries{\itshape\keywordsname\/---}%
  \else
    \begin{center}\small\bf\keywordsname\end{center}\quotation\small
  \fi\ignorespaces}
\def\endkeywords{\vspace{0.6em}\par\if@twocolumn\else\endquotation\fi
    \normalsize\normalstyle}

% **************************************************************************
% *****   Fix Section Numbering   ******************************************
% **************************************************************************
\gdef\@punct{.\ \ }  % Punctuation after run-in section heading
\def\@sect#1#2#3#4#5#6[#7]#8{%
  \ifnum #2>\c@secnumdepth
     \def\@svsec\@empty
  \else
     \refstepcounter{#1}%
     \protected@edef\@svsec{%
     %\ifnum #2=1\Roman{#1}.\fi\ifnum #2=2\Alph{#1}.\fi
     \ifnum #2=1\thesection.\fi
     \ifnum #2=2\thesubsection.\fi
     \ifnum #2>2{\csname the#1dis\endcsname}\if@technote.\fi\fi \hskip .5em}
     \ifnum #2=1\ifappendix\stepcounter{numappendices}\fi\fi
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
     \begingroup #6\relax
       \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
     \endgroup
     \csname #1mark\endcsname{#7}
     \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\else
               \protect\numberline{\csname the#1\endcsname}\fi#7}
  \else
     \def\@svsechd{#6\hskip #3\@svsec #8\@punct\csname #1mark\endcsname{#7}
     \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth \else
               \protect\numberline{\csname the#1\endcsname}\fi#7}}
  \fi
  \@xsect{#5}}

\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
  \ifdim \@tempskipa>\z@
     \begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
  \else \def\@svsechd{#4\hskip #1\relax #5\@punct}\fi
  \@xsect{#3}}

% **************************************************************************
% *****   Section Definitions   ********************************************
% **************************************************************************
\def\section{\@startsection{section}{1}{\z@}{2.0ex plus .5ex
     minus .2ex}{1.0ex plus .2ex}{\centering\scshape}}
\def\subsection{\@startsection{subsection}{2}{\z@}{2.0ex plus .5ex
     minus .2ex}{1.0ex plus .2ex}{\itshape}}
\if@technote
  \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{2.0ex plus .5ex
     minus .1ex}{0pt}{\itshape}}
\else
  \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{2.0ex plus .5ex
     minus .2ex}{1.0ex plus .2ex}{\normalstyle}}
  \def\paragraph{\@startsection{paragraph}{4}{\z@}{1.0ex plus .5ex
     minus .2ex}{0ex}{\normalstyle}}
\fi

% **************************************************************************
% *****   Special Environment Definitions   ********************************
% **************************************************************************
\def\QED{\mbox{\rule[0pt]{1.5ex}{1.5ex}}}
\def\proof{\noindent\hspace{1em}{\it Proof: }}
\def\endproof{\hspace*{\fill}~\QED\par\endtrivlist\unskip}
\def\@begintheorem#1#2{\tmpitemindent\itemindent\topsep 0pt\normalstyle\trivlist
    \item[\hskip \labelsep{\indent\it #1\ #2:}]\itemindent\tmpitemindent}
\def\@opargbegintheorem#1#2#3{\tmpitemindent\itemindent\topsep 0pt\normalstyle \trivlist
    \item[\hskip\labelsep{\indent\it #1\ #2\ \normalstyle(#3)}]\itemindent\tmpitemindent}
\def\@endtheorem{\endtrivlist\unskip}

% **************************************************************************
% *****   Special Environment Definitions   ********************************
% **************************************************************************
\if@twoside\else\raggedbottom\fi

%% Definition for Big letter at the beginning of a paragraph
%%
\def\PARstart#1#2 {\begingroup\def\par{\endgraf\endgroup\lineskiplimit=0pt}
    \setbox2=\hbox{\uppercase{#2} }\newdimen\tmpht \tmpht \ht2
    \advance\tmpht by \baselineskip\font\hhuge=cmr10 at \tmpht
    \setbox1=\hbox{{\hhuge #1}}
    \count7=\tmpht \count8=\ht1\divide\count8 by 1000 \divide\count7 by\count8
    \tmpht=.001\tmpht\multiply\tmpht by \count7\font\hhuge=cmr10 at \tmpht
    \setbox1=\hbox{{\hhuge #1}} \noindent \hangindent1.05\wd1
    \hangafter=-2 {\hskip-\hangindent \lower1\ht1\hbox{\raise1.0\ht2\copy1}%
    \kern-0\wd1}\copy2\lineskiplimit=-1000pt}

\def\PARstartCal#1#2 {\begingroup\def\par{\endgraf\endgroup\lineskiplimit=0pt}
    \setbox2=\hbox{\uppercase{#2} }\newdimen\tmpht \tmpht \ht2
    \advance\tmpht by \baselineskip\font\hhuge=cmsy10 at \tmpht
    \setbox1=\hbox{{\hhuge #1\/}}
    \count7=\tmpht \count8=\ht1\divide\count8 by 1000 \divide\count7 by\count8
    \tmpht=.001\tmpht\multiply\tmpht by \count7\font\hhuge=cmsy10 at \tmpht
    \setbox1=\hbox{{\hhuge #1\/}} \noindent \hangindent1.05\wd1
    \hangafter=-2 {\hskip-\hangindent \lower1\ht1\hbox{\raise1.0\ht2\copy1}%
    \kern-0\wd1}\copy2\lineskiplimit=-1000pt}

\def\PARstartLyX#1{\PARstart #1}
\def\PARstartCalLyX#1{\PARstartCal #1}

\if@technote\def\PARstart#1#2{#1#2}\fi     % if technical note, disable it
\if@technote\def\PARstartCal#1#2{#1#2}\fi  % if technical note, disable it
\if@technote\def\PARstartLyX#1{#1}\fi      % if technical note, disable it
\if@technote\def\PARstartCalLyx#1{#1}\fi   % if technical note, disable it

% **************************************************************************
% *****   Misc. Definitions   **********************************************
% **************************************************************************
%Restore single spacing
\newcommand{\blsone}{\renewcommand\baselinestretch{1}%
  \renewcommand\arraystretch{1.2}\setlength{\parindent}{\parindentsave}%
  \normalsize}
\newcommand{\capitem}[1]{{\hspace{0.2ex}(#1)}~}
\newcommand{\insdate}{}

% **************************************************************************
% *****   MATH Definitions   ***********************************************
% **************************************************************************
\def\eqnarray{%  
   \stepcounter{equation}%
   \def\@currentlabel{\p@equation\theequation}%
   \global\@eqnswtrue
   \m@th
   \global\@eqcnt\z@
   \tabskip\@centering
   \let\\\@eqncr
   $$\everycr{}\halign to\displaywidth\bgroup
       \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
      &\global\@eqcnt\@ne\hskip \eqnarr@ysep\hfil${##}$\hfil
      &\global\@eqcnt\tw@ \hskip \eqnarr@ysep
         $\displaystyle{##}$\hfil\tabskip\@centering
      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
         \tabskip\z@skip
      \cr
}
\def\endeqnarray{%
      \@@eqncr  
      \egroup
      \global\advance\c@equation\m@ne
   $$\@ignoretrue
}

% **************************************************************************
% *****   Biography Definitions   ******************************************
% **************************************************************************
% This is the main code for the biography environment of the IEEE 
% transactions class. The previous biography code had some known
% problems which were difficult to fix. The crux of the issue was that
% the photo frame was overlaid by text when \baselinestretch>1 or when
% the biography consisted of multiple short paragraphs.
%
% The fix was done by extracting code from the excellent package:
% 'picinpar.sty' version 1.2a as of july 13, 1993
% by Friedhelm Sowa
%
% (At least most of) The bugs you find in this code were introduced
% unwittingly by myself.
%
%----------------
% Known problems:
%
%    - Don't use multiple blank lines to separate paragraphs. A single
%      blank line works well, but multiple blank lines will confuse
%      the code. This has something to do with the \def\par{\\\indent} 
%      line, but I can't think of an appropriate fix. Similarly, make
%      sure the environment doesn't end with an extra blank line.
%    - Don't use \samepage
%    - Use \footnotemark within and \footnotetext outside the
%      window-environment instead of \footnote
%    - When using the epic-package load picinpar before epic
%      like \documentstyle[...,picinpar,epic]{...}
%
% Counts
\newcount\br \newcount\nb \newcount\tcdsav \newcount\tcl \newcount\tcd
\newcount\tcn \newcount\cumtcl 
% Dimens
\newdimen\rtside \newdimen\hpic \newdimen\vpic \newdimen\strutilg
\newdimen\picwd \newdimen\topheight \newdimen\ilg \newdimen\lpic
\newdimen\lwindowsep \newdimen\rwindowsep	% VK 10 Feb 93
\lwindowsep0.5\baselineskip			% "
\rwindowsep0.5\baselineskip			% "
\newdimen\cumpar
% Tokens
\newtoks\twa \newtoks\la \newtoks\ra \newtoks\ha \newtoks\pictoc
% Boxes
\newbox\rawtext \newbox\holder \newbox\windowbox \newbox\wartext
\newbox\finaltext \newbox\aslice \newbox\bslice \newbox\wbox
\newbox\wstrutbox \newbox\picbox \newbox\waslice \newbox\wbslice
\newbox\fslice
 % Another strut
\def\wstrut{\relax\ifmmode\copy\wstrutbox\else\unhcopy\wstrutbox\fi}
%

\def\getpic#1{\sbox{\@tempboxa}{\includegraphics{#1}}%
\newcount\tmpcta \tmpcta=\ht\@tempboxa%
\newcount\tmpctb \tmpctb=\wd\@tempboxa%
\divide\tmpctb by 100%
\divide\tmpcta by\tmpctb%
\ifnum\tmpcta>133%
\typeout{ieee: Biography picture `#1' too tall.}%
\frame{\hbox to 25mm{\hfil\resizebox{!}{32mm}{\usebox{\@tempboxa}}\hfil}}%
\else \ifnum\tmpcta<123%
\typeout{ieee: Biography picture `#1' too wide.}%
\frame{\vbox to 32mm{\vss\hbox{\resizebox{25mm}{!}{\usebox{\@tempboxa}}}\vss}}%
\else%
\resizebox{25mm}{32mm}{\usebox{\@tempboxa}}
\fi\fi}

\long\def\biographyLyX#1{\if@non\else\begin{biography} #1\end{biography}\fi}

\if@non
  \long\def\biography{}
\else
  \long\def\biography{\@ifnextchar [{\@biographyb}{\@biographya[{\unitlength 
  1mm\hbox{\framebox(25,32){}}}]}}
\fi

\long\def\@biographyb[#1]{\@biographya[\getpic{#1}]}

\long\def\@biographya[#1]#2{\bgroup
\footnotesize\bigskip\bigskip\bigskip\parskip=0pt\par%
\rule{0pt}{35mm}\vspace*{-35mm}\par%   garantees correct page breaking
\begin{main@bio}[{#1}]%
\noindent{\bf #2}%
}
\def\endbiography{\if@non\else\end{main@bio}\egroup\fi}

\long\def\main@bio[#1]{% #1 is the material for setting a graphic box
\vskip\parskip\everypar{}
\global\cumpar=0pt
\global\cumtcl=0
    \tcd=0
    \rtside=0pt
%    \hpic=\linewidth
    \twa={} \la={} \ra={} \ha={}
\setbox\wbox=\hbox{(}
\computeilg
\pictoc={#1}
\setbox\windowbox=\vbox{\hbox{#1}}
\picwd=\wd\windowbox
\hpic=\picwd
\vpic=\ht\windowbox\advance\vpic\dp\windowbox
\rtside=\linewidth\advance\rtside-\picwd
\setbox\picbox=\vbox{\hsize=\hpic\vbox to\vpic{\box\windowbox}}% \vfill}}%

\vpic=\ht\picbox\advance\vpic\dp\picbox
\ifdim\rtside>0pt\advance\rtside-\rwindowsep\fi    % "
\global\br=\rtside
\ifnum\picwd=0
\ifdim\vpic>0pt\picwd=\hpic
\else\vpic=\ht\picbox\advance\vpic\dp\picbox
\fi
\fi
    \global\tcl=0 \lpic=0pt
    \loop\global\advance\tcl by 1 \lpic=\tcl\baselineskip
    \ifdim\lpic<\vpic\repeat
    \vpic=\lpic
    \global\cumtcl=\tcl
%
% Here we know exactly the number of indented lines and
% are able to generate the tokens for the \parshape list
%
    \ifnum\br>0\ra={ 0pt \rtside}\fi
    \ifnum\tcd>0\ha={ 0pt \linewidth}\fi
    \ifnum\tcl<1\global\tcl=1\fi
    \createparshapespec
    \tcd=0                        % restore the lintel
    \global\tcdsav=0
%
% This is a very tricky part of the package. Some day there
% will exist a detailed documentation.
%
\def\par{\\\indent}
%
% This is where we start to pick up the paragraph(s)
%
    \setbox\rawtext=\vbox\bgroup\unvbox\rawtext\unskip
    \clubpenalty=0\widowpenalty=0
    \ifnum\brokenpenalty<\maxdimen\else\brokenpenalty=9999\fi
    \tolerance=1000
    \parshape=\tcn \the\twa }
%
\def\endmain@bio{%
    %\par
    \global\tcd=\tcdsav
    \egroup\vskip\parskip\parshape=0 % reset parshape; end \box\rawtext
    \vbadness=10000
    \splittopskip=0pt
%
% Now we build the boxes beside the window
%
\global\topheight=\tcl\baselineskip
\ifnum\br>0\setbox\holder=\vsplit\rawtext to\topheight\fi
\tcn=\tcl \nb=0
\ifnum\br>0\nb=\tcn\fi
%
% text on the right side
%
\ifnum\nb>0
    \loop\advance\nb -1
    \setbox\bslice=\vsplit\holder to\baselineskip
    \prune\bslice\rtside
    \setbox\wbslice=\vbox{\unvbox\wbslice\hbox
    to\rtside{\box\bslice\hfil}}
    \ifdim\ht\holder>0pt\repeat
\fi
%GLP add fix to make sure bio starts at top of picture
\setbox\wbslice=\vbox to\topheight{\unvbox\wbslice\vfill\vss}
%
% fixing the dimensions of the window part
%
\topheight=\ht\wbslice
%
% ship out the window material to the main vertical list
%
\setbox\windowbox=\vbox{\hbox to\linewidth{%
\vbox to\topheight{\hrule width\picwd height0pt depth0pt\vskip0pt%
\vfill\unvbox\picbox%
\ifnum\picwd>0\vfill\fi%
\vss}\ifnum\br>0\hfill\vbox{\box\wbslice}\fi}}%
%
\unvbox\windowbox%
\loop% lines below picture....
 \setbox\bslice=\vsplit\rawtext to\baselineskip
 \prune\bslice\linewidth
 \setbox\wbslice=\vbox{\hbox to\linewidth{\box\bslice\hfil}}
 \unvbox\wbslice
 \ifdim\ht\rawtext>0pt
\repeat
%GLP
%\ifnum\nb>0\topheight=\nb\baselineskip %\advance\topheight by\ilg
%\vspace*{\topheight}
%\fi
}% FINITO
%
% What else do we need?
%
\def\prune#1#2{
% take a \vbox containing a single \hbox,
% \unvbox it, and cancel the \lastskip
% put in a \hbox of width #2
 \unvbox#1 \setbox#1=\lastbox % \box#1 now is an \hbox
 \ifdim\ht#1=\parskip
 \setbox#1=\hbox to#2{\vrule height\parskip depth0pt width0pt\hfill}
 \else\ifdim\ht#1=0pt\relax
 \else\setbox#1=\hbox to#2{\wstrut\unhbox#1\unskip}\fi\fi}
%
% Here the token \twa is generated.
% It's not so difficult as it looks like.
%
\def\createparshapespec{%
\global\tcn=0
\ifnum\br>0\global\tcn=\tcl\fi
\nb=0
\ifnum\br>0\nb=\tcn\fi
\global\advance\tcn by\tcd \global\advance\tcn by1
\ifnum\tcd>0
\loop\twa=\expandafter{\the\twa\the\ha}\advance\tcd -1
\ifnum\tcd>0\repeat
\fi
\ifnum\nb>0
\loop\twa=\expandafter{\the\twa\the\ra}\advance\nb -1
\ifnum\nb>0\repeat
\fi
\global\twa=\expandafter{\the\twa 0pt \the\linewidth}}
%
\def\computeilg{% compute the interline glue
 \tcl=0\ilg=0pt\strutilg=0pt
 \loop\setbox\wbox=\hbox{\char\tcl}
 \ifdim\ht\wbox>\ilg\ilg=\ht\wbox\fi
 \ifdim\dp\wbox>\strutilg\strutilg=\dp\wbox\fi
 \advance\tcl by 1
 \ifnum\tcl<128\repeat
 \ht\wbox=\ilg
 \dp\wbox=\strutilg
 \strutilg=\ht\wbox %\advance\strutilg by\ilg
 \ifdim\strutilg>\baselineskip
  \typeout{character with height greater baselineskip found in font}
  \typeout{baselineskip changed to 1.5 of that height!}
  \baselineskip=1.5\strutilg
 \fi
 \global\ilg=\baselineskip
 \global\advance\ilg-\ht\wbox \global\advance\ilg-\dp\wbox
 \strutilg=\ht\wbox \advance\strutilg by\ilg
 \setbox\wstrutbox=\hbox{\vrule height\strutilg depth\dp\wbox width0pt}}


% the following code from version.sty by Stephen Bellantoni 1990, loosely 
% based on "annotation.sty" by Tom Hofmann. Used to exclude "biography" from 
% anonymous mode.
\begingroup
\catcode`@=11\relax%
\catcode`{=12\relax\catcode`}=12\relax%
\catcode`(=1\relax \catcode`)=2\relax%
\gdef\glpinclude#1(%
  \expandafter\gdef\csname #1\endcsname%
    ()%
  \expandafter\gdef\csname end#1\endcsname%
    ()%
)%
\gdef\glpexclude#1(%
  \expandafter\gdef\csname #1\endcsname%
    (\@bsphack\catcode`{=12\relax\catcode`}=12\relax\csname #1@NOTE\endcsname)%
  \long\expandafter\gdef\csname #1@NOTE\endcsname ##1\end{#1}%
    (\csname #1END@NOTE\endcsname)%
  \expandafter\gdef\csname #1END@NOTE\endcsname%
    (\@esphack\end(#1))%
)%
\endgroup

%-------
\def\@confplacedate{\typeout{ieee: Warning! No \noexpand\confplacedate set!}
\bfseries `confplacedate' needs to be set. For example, to: Stanford, CA, USA, 
September 29--30, 1991}
\def\confplacedate#1{\def\@confplacedate{#1}}

%%%%%%%%%%%%%%%%%%%%%%%%% End of ieee.cls  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%