Find file
Fetching contributors…
Cannot retrieve contributors at this time
2461 lines (2290 sloc) 99.7 KB
%%
%% IEEEtran.cls 7/2001 version V1.5 (IEEE release)
%% (file is named IEEEtran_v15.cls for distribution purposes)
%% Provides formatting for authors of the Institute of Electrical
%% and Electronics Engineers (IEEE) Transactions Journals.
%% See:
%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/
%% for the latest version.
%%
%%
%% IT IS IMPORTANT THAT YOU READ THE DOCS BELOW EVEN IF YOU ARE
%% FAMILIAR WITH OTHER VERSIONS OF IEEEtran.cls! This version's
%% itemize, enumerate and description list environments, and
%% \appendix(ces) have new controls and behavior.
%%
%%
%% Contributors:
%% Gerry Murray (1993), Silvano Balemi (1993),
%% Jon Dixion (1996), Peter N"uchter (1996),
%% Juergen von Hagen (2000), and Michael Shell (2001)
%%
%%
%% Copyright 1993-2001 by Gerry Murray, Silvano Balemi,
%% Jon Dixion, Peter N"uchter,
%% Juergen von Hagen and Michael Shell
%%
%% Special thanks to Peter Wilson (CUA) and Donald Arseneau
%% for allowing the inclusion of the \@ifmtarg command
%% from their ifmtarg LaTeX package.
%%
%%**********************************************************************
%% Legal Notice:
%% This code is offered as-is without any warranty either
%% expressed or implied; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE!
%% User assumes all risk.
%% In no event shall IEEE or any contributor to this code
%% be liable for any damages or losses, including, but not limited to,
%% incidental, consequential, or any other damages, resulting from the
%% use or misuse of any information contained here.
%%
%% All statements made here are the opinions of their respective
%% authors and are not necessarily endorsed by the IEEE.
%%
%% This code is distributed under the Perl Artistic License
%% ( http://language.perl.com/misc/Artistic.html )
%% and may be freely used, distributed and modified.
%% Please retain the contribution notices and credits.
%%
%% Major changes to the user interface should be indicated by an
%% increase in the version numbers. If a version is a beta, it will
%% be indicated with a BETA suffix, i.e., 1.4BETA.
%% Small changes can be indicated by appending letters to the version
%% such as "IEEEtran_v14a.cls".
%% In ALL cases, the distribution filename, \Providesclass, any \typeout
%% messages to the user, \IEEEtransversionmajor and \IEEEtransversionminor
%% must reflect the correct version information.
%% The changes should also be documented via source comments.
%%**********************************************************************
%%
%
%
%*******
% 7/2001 V1.5 (MDS) changes:
%
% 1) Fixed \and within \author bug: (! Misplaced \crcr. \endtabular ->\crcr)
% NOTICE: A side effect of this change is that you will have to repeat
% fontsize commands for each line in the author information as font size
% changes will be confined to that line (or at least it does on my TeTeX
% system). Do not attempt enclose multiple lines within a pair of braces
% as an error may occur (or at least it does on my system).
% This is because the author data is now printed from within the tabular
% environment exactly as is done in article.cls (which also exhibits the
% same limitations). The \and feature is most useful when IEEEtran.cls is
% used for conferences. For example:
%
% \author{\large First Author\\
% \normalsize First School\\
% \normalsize City1\\
% \normalsize Email: first@nodomain.org
% \and
% \large Second Author\\
% \normalsize Second School\\
% \normalsize City2\\
% \normalsize Email: second@nulldomain.org}
%
% Thanks to Rainer Dorsch for discovering and reporting that \and
% did not work.
%
% 2) Fixed the biography environment so that if a biography's text is shorter
% than the area allocated for the photo, a collision with the next
% biography does not occur. You can now put real graphics (using the
% graphicx package) into the biography photo box with a new optional
% argument of the biography command! For example:
%
% \begin{biography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{./tux.eps}}]{Linux Penguin}
%
% will use the specified graphic as the author's photo. The photo area is
% exactly 1in wide by 1.25in high - as is done in IEEE Transactions. Try
% to keep the same 4:5 aspect ratio when scanning/cropping your photos.
% Note the need for the extra set of enclosing braces around the
% \includegraphics. Without it, The LaTeX parser gets confused when it
% sees the \includegraphics's brackets within the biography's optional
% argument. If you do not use the optional argument, or leave it empty,
% a standard frame box with the words "Place Photo Here" will be used.
% If you want the space to remain completely empty, you can do:
%
% \begin{biography}[\mbox{}]{The Invisible Man}
%
% The interface to biography's optional argument is into a
% 1in X 1.25in minipage in which the argument text is centered both
% horizontally and vertically:
%
% \begin{minipage}[b][1.25in][c]{1in}%
% \centering
% #1%
% \end{minipage}
%
% Within the biography environment, \unitlength is set to 1in.
% With this in mind, you can even design your own custom frameboxes.
% For instance:
%
% \begin{biography}[\framebox(1,1.25){\parbox[][\height][c]{0.9in}{\centering PLACE\\ PHOTO\\ HERE}}]{Author Name}
%
% will yield the same result as the default photo box.
%
% Thanks to Herbert Voss for discovering the collision bug, suggesting the ability
% to handle graphics and providing some prototype code.
%
% 3/2001 V1.4 (MDS) changes:
%
% 1) New "draftcls" and "final" options have been added. Draft mode
% is very popular. Authors requested that there should be a way
% for a draft mode paper to display the figures so that the
% reviewer can see them. Traditionally, this has been accomplished
% by invoking all packages with the "final" option. Hence:
%
% \documentclass[draft]{IEEEtran}
% .
% .
% \usepackage[final]{graphicx}
%
% Now, you can just use:
%
% \documentclass[draftcls]{IEEEtran}
% .
% .
% \usepackage{graphicx}
%
% and only IEEEtran.cls will format as draft - the other packages
% will still act as though "final" had been selected.
% Thanks to Dragan Cvetkovic for suggesting this.
%
% Also, \documentclass now accepts "final" as an option. This
% really isn't needed as it defaults to "final" unless told
% otherwise. However, article.cls does accept "final" so IEEEtran.cls
% should do so as well.
%
% 2) Documentation changes to reflect the fact that this IEEEtran.cls
% is no longer beta test. Added usage notes #11, 12 and 13.
%
% 3) Slightly revised caption sizes. Figure and table captions are now
% in \footnotesize, not \small as before.
%
% 4) Allow user to control figure caption justification. IEEEtran.cls
% normally defaults to left justified as is done in Transactions.
% However, for conferences, you may wish to issue the command:
% \centerfigcaptionstrue
% in the preamble. Short (less than one line long) figure captions
% will then be centered. Multi-line figure captions will always be
% properly left justified.
%
%
%*******
% 1/2001 V1.3 (MDS) made extensive changes and additions:
%
% It is true that IEEEtran.cls is not really a formatting tool since
% IEEE does their own custom typesetting. However, there is a very
% real need for authors to be able to see their work in a form that
% closely resembles what IEEE will use. Content isn't supposed to
% follow format. However, in practice, the way a document lays out
% can influence the choice of words or the structure of equations.
% If the class file makes it difficult to get results close to
% that of IEEE, authors will pay even MORE attention to the details
% of document layout! Furthermore, when submitting work in PDF or PS
% form (to editors, conferences, colleagues, etc.) appearances do matter.
% The purpose of this version is to provide easier and better formatting
% so that authors have a few less headaches to deal with. See the
% companion file, IEEEtest.tex, (available on CTAN) for a demonstration
% of usage and of some of the issues addressed.
%
% I sincerely wish you all the best in your publication endeavors! ;)
%
% Enjoy!
%
% Michael Shell (MDS)
% mshell@ece.gatech.edu
%
%
%
% BUGS FIXED (and many others too numerous to mention!):
% 1) Fixed improper alignment with itemized, enumerated and
% description lists. Added new controls to these three
% environments so that it is easy to get the alignment IEEE
% uses. Furthermore, the itemize, enumerate and description lists
% no longer force a new paragraph to begin at the end the list
% (\par). (Sometimes lists are used within paragraphs.)
% See detailed list docs below.
%
% 2) JVH's fixes now allow things like $\mathbf{N}(0,P(0))$
% to work properly without needing the extra braces:
% ${\mathbf{N}}(0,P(0))$. There is no longer any dependence
% on the "rawfonts" and "oldlfont" packages. Thanks Juergen!
%
% 3) Fixed underfull hbox errors and incorrect reference number
% alignment when the number of references in the bibliography
% exceeded 9 entries (which is almost every paper!).
%
% 4) Removed dependence on the LaTeX sizexx.clo files.
% Now, 9pt documents should work correctly even on systems that
% lack a size9.clo file. This is most often used in conjunction
% with the option "technote" for "correspondence" papers like those
% in IEEE Transactions on Information Theory. For virtually all
% other papers, 10pt is used and so it is the default.
% Some improper font sizes have been corrected (one of which is that
% IEEE uses 9pt, not 8pt, for \small (Abstracts and Index Terms)
% in 10pt docs). \small and \footnotesize are now both 8pt in 9pt docs,
% so footnotes in technotes should be the correct size now.
%
% 5) Added \interlinepenalty within the bibliography section to discourage
% LaTeX from breaking within a reference. IEEE almost never breaks within
% a reference and when they do it is usually in technotes
% (correspondence papers). You may get an underfull vbox warning in the
% bibliography indicating that the spacing just before the "REFERENCES"
% section is larger than normal, but the final result will be more like
% what IEEE will publish. See the comments in the BIBLIOGRAPHY section
% around line 2034 below if you want to change this behavior.
%
% 6) No longer "blows up" when you use \paragraph and have a table
% of contents.
%
%
% USAGE NOTES:
% 1) The new IEEEtran.cls will change the length, layout and possibly fonts
% of your documents slightly as compared to that under the older
% IEEEtrans.cls. However, the final result should be much closer to what
% IEEE will actually publish.
%
% 2) This IEEEtran.cls does provide _some_ old LaTeX 2.09 font
% commands (\rm, \sf, \tt, \bf, \it, \sl, \sc, \cal and \mit).
% It accomplishes this in the same way as article.cls so
% there should be no problems here.
% If you need the complete outdated 2.09 font commands you can
% do a \usepackage{oldlfont} in your document, but note that
% this introduces the \mathcal{} problem mentioned in bug #2 above.
% So, you should try to avoid using oldlfont in LaTeX2e systems.
%
% ALSO: The current IEEE demo file "Using the Document
% Class IEEEtran.cls" will require \usepackage{rawfonts}
% to be added after the \documentclass{} to work with this
% IEEEtran.cls since the demo used an old 2.09 command \tenrm.
% Alternatively, you can provide just the definition of \tenrm:
% \DeclareFixedFont{\tenrm}{OT1}{cmr}{m}{n}{10}
%
% 3) Still will not allow you to leave whitespace between \cite
% entries like book class will. i.e., \cite{einstein24, knuth84}
% will not work, but \cite{einstein24,knuth84}
% is OK. This *may* be normal.
%
% 4) You may need a blank line before you \begin a list
% (or other environment) just after text that uses \PARstart.
% Otherwise, \PARstart somehow manages to swallow your
% \begin and LaTeX will complain about a lonely \item.
% \PARstart won't do anything when using technote or draft
% as these formats do not use a larger than normal starting letter.
%
% 5) If you invoke the draft option:
% \documentclass[10pt,draft,twocolumn]{IEEEtran}
% You will not be able to see your graphics in xdvi.
% This is normal.
%
% 6) Provides class IEEEtran (You may wish to rename this file
% to "IEEEtran.cls" after you save your original IEEEtran.cls)
%
% 7) Now defaults to using Times font (like IEEE uses).
% The 1997 IEEEtran.cls used by INFOCOM also defaulted
% to Times via inclusion of the times.sty package
% (which is "built-into" this IEEEtran.cls)
% If you have font problems and/or want to go back
% to the Computer Modern Fonts, just issue these commands
% in the preamble of your document:
%
% \renewcommand{\sfdefault}{cmss}
% \renewcommand{\rmdefault}{cmr}
% \renewcommand{\ttdefault}{cmtt}
%
% The big first letter of the document (\PARstart) now uses the
% Times font. It now looks VERY much like what IEEE uses.
% If you have font problems with Times, the Computer Modern
% version of \PARstart is provided as \CMPARstart.
%
% We forewarned that the typewriter font of Times seems to be wider
% than that of the Computer Modern. You'll only get about 42 characters
% (10pt) on a 21pica line. Some documents will have a problem with this.
% The current IEEEsample2e.tex, "Using the Document Class IEEEtran.cls"
% by Gerry Murray and Silvano Balemi, has problems when used with the
% Times typewriter font (overfull hboxes- Table I overfills too).
% However, it seems that this IS the correct typewriter font IEEE uses.
% You could try \small, but they might not like that.
% Better to shorten (or break) your lines of text.
%
% 8) TeX doesn't behave exactly like IEEE does (but close) when it comes
% to line and page breaks. It is true that TeX doesn't "look ahead"
% several pages to consider the overall document when deciding where to
% break (IEEE software may well do this). However, I think that with some
% more tweaking TeX can get even closer. It seems that IEEE lets the font
% glue stretch more, and shrink a little more, than what the TeX Times
% fonts do. More tweaking on this will have to wait for future versions.
% You can try:
%
% \hyphenpenalty=800
% \hbadness=2500
%
% in the preamble of your document and see if you like the result better.
% TeX will then try harder not to use hyphenation. The \hbadness=2500
% raises the box badness level required for a warning to be issued.
% If you try this, watch out for lines that are a little too packed
% for comfort.
% It may also help to build a \hyphenation list based on
% observations made from the IEEE Journal you plan to publish in.
%
% 9) When installing a class file into your <texmf> directory
% (<texmf> is /usr/share/texmf on my RedHat 6.0 Linux system),
% i.e., <texmf>/tex/latex/base/IEEEtran.cls
% on teTeX (UNIX) systems, you must refresh the hash table in
% order for LaTeX to see the new class. This is because teTeX
% systems do not actually parse the dir's for files as they
% use a high speed lookup table instead.
% The command:
%
% texhash
%
% will do the trick and refresh this table.
% Of course, you must be root to do all this.
% See "The teTeX Guide- Installation and Maintenance" by
% Thomas Esser and Dirk Hillbrech for details.
% Also, if there is a class, with the same name as the one
% you are using, present in the current working directory, it
% will override any class of the same name in the <texmf>
% tree. If you chose not to rename the distribution file
% (IEEEtran_vXX.cls) to "IEEEtran.cls", LaTeX will issue a
% warning because it worries that they are not the same class.
% The warning is harmless.
%
%10) The rightmark (ex: "Shell: Fixing IEEEtran.cls") will no longer
% be used if technote is selected as IEEE does not put the author's
% name and title of the paper in the headings of technotes.
% The Journal name (leftmark) will be used instead.
%
%11) IEEE likes the two columns on the last page of two column
% text to have the same length. A crude, but effective, way
% to achieve this is to shorten the page length of the first
% column of the last page via:
% \enlargethispage{-X.Xin}
% where X.X is the value you find that makes the columns equal.
% This hack will have to be adjusted if the document is
% altered. It is perhaps most useful for those who need to
% provide camera ready proofs (conferences, etc.). You may have
% to manually copy in your bibliography (*.bbl file) if this
% command needs to be located between \bibitems.
%
%12) To get pages without headings or page numbers (sometimes
% required when submitting camera ready proofs) just issue:
% \thispagestyle{empty}
% \pagestyle{empty}
% after \maketitle
%
%13) dvips note:
% Some LaTeX distributions have dvips configuration files (config.pdf)
% which assume that the user will be working only with Computer
% Modern fonts. These configuration files remap certain character
% positions via the use of the dvips -G1 option (older versions of
% dvips may not have a -Gx option). If this remapping is done to a
% document that contains other fonts, such as Times, a problem will
% develop in the PostScript or PDF output. One symptom will be that
% the ligature "fi" will appear as the British pound symbol.
% The dvips -G1 option should be used ONLY if the document is ENTIRELY
% in Computer Modern fonts. In all other cases, the -G0 option should
% be used. In particular, in MikTeX 2.0, you will have to use:
% dvips -Ppdf -G0 <filename>
% instead of:
% dvips -Ppdf <filename>
% if your document has any non Computer Modern fonts. This issue is
% not specific to IEEEtran.cls and is applicable to all LaTeX documents.
% Thanks to K. Sivakumar, A. Goreham, and K. Lee
% for identifying this problem and providing a solution
%
%
%
%
% CHANGES AND ENHANCEMENTS:
% 1) Now has the ability to give you a publisher ID mark at the
% bottom of the title page! Issue the command:
%
% \pubid{0000--0000/00\$00.00~\copyright~2001 IEEE}
%
% right AFTER \maketitle *AND* include the command:
%
% \pubidadjcol
%
% somewhere in the SECOND column text of the first (title)
% page to "pull up" its text by two lines to clear the
% ID text (as \pubid does for the first column).
% \pubidadjcol is one and two-column mode aware and there
% will be no problems if you later switch between one and
% two column modes.
% Future versions of IEEEtran.cls may not need \pubidadjcol,
% but I don't know any way of eliminating it without resorting
% to other packages like afterpage (on CTAN).
% Consider this an open problem.
% Note that, if in DRAFT mode, the publisher ID mark WILL NOT
% be printed at the bottom of the titlepage, but room will be
% cleared for it.
% If you want further "realism" you can put
% \thanks{Publisher Item Identifier X 0000-0000(00)00000-X.}
% as your last \thanks in the \author command (in which ALL
% \thanks belong). With this IEEEtran.cls, you can even fool
% yourself into thinking that your work has already been published. ;)
% Special thanks to Peter Wilson, Daniel Luecking, and the other
% gurus at comp.text.tex, for helping me to understand how best to
% implement this command in LaTeX.
%
% 2) If you are fortunate enough to have an invited paper, you can
% try the new \specialpapernotice command:
%
% \specialpapernotice{(Invited Paper)}
%
% BEFORE \maketitle. This will put the given text centered in
% italics after the author names.
%
% 3) The section, subsection, subsubsection and paragraph headings
% now actually work the way IEEE wants:
%
% I. SECTION HEADINGS ARE IN CAPS AND CENTERED
%
% A. subsections are not indented
%
% 1) subsubsections: are indented like a paragraph. The body text
% will wrap under the title.
% a) paragraph sections: are much like subsubsections, but are
% indented by twice that of a normal paragraph and use lowercase
% letters as labels.
%
% The headings for subsections and lower are all in italics. You
% can use the *-form of the section commands if you want something
% other than italics.
%
% Note that \paragraph sections are not available under technote,
% unless you \setcounter{secnumdepth}{4} which forces it back on
% (nonstandard IEEE).
% Rubber spacing lengths above section headings are now allowed to
% stretch more like IEEE sometimes does. These lengths could possibly
% tweaked more, but the current implementation seems OK.
%
% 4) For a single appendix, issue \appendix before the start of your
% appendix. If you wish your single appendix to have a title (heading),
% use the new optional argument like:
%
% \appendix[Proof of the Zonklar Equations]
%
% After issuing \appendix the \section command will be disabled
% and any attempt to use \section will be ignored and a warning message
% will be generated.
% (the single appendix marks the end of the enumerated sections and the
% section counter is fixed at zero - one does not state "see Appendix I"
% when there is only one appendix, instead use "see Appendix".)
%
% However, all lower \subsection commands and the \section* form
% will work as normal as you need \section* at the end for things
% like acknowledgments:
%
% \section*{Acknowledgment}
% \addcontentsline{toc}{section}{Acknowledgment}
%
% Use \appendices if you have more than one appendix.
% You then declare each appendix via:
%
% \section{Proof of First Zonklar Equation}
%
% You must remember to declare a \section before you create
% any additional \subsections or \labels which refer to section
% (or subsection, etc.) numbers!
% The title text of an appendix can be empty, if you don't want a title:
%
% \section{}
%
% This IEEEtran.cls will automatically detect the empty argument
% and "do the right thing" in the headings and table of contents
% (you won't have a blank line where the title should be or an
% ":" after the word Appendix in the table of contents.) As with
% \appendix, the section* command and the lower \subsection commands
% will still work as usual.
% There are two appendix numbering conventions used by IEEE.
% Capital letters (Appendix A) and Roman numbers (Appendix I).
% The former appears to be more popular. However, since subsection
% numbering conventions are preserved in the appendices, this creates
% rather awkward subsection references like "A-A". For this reason,
% I have decided to have this IEEEtran.cls default to using Roman numbers
% when labeling appendices. You can revert to using "A,B,.." if you wish
% by issuing the command:
% \useRomanappendicesfalse
% before you call \appendices.
%
% 5) Enumerated list labels are now terminated with ) like
% "1)", which IEEE now uses, rather than "1."
%
% 6) Theorem environment changed to display like
% "Theorem 1---Einstein:" which IEEE uses, instead of
% "Theorem 1 (Einstein):"
%
% 7) Figure captions adjusted: IEEE left (not center) justifies
% figure captions and does not indent figure caption text.
%
% 8) Adjusted some spacings in the table of contents(TOC))/list-of-figures/
% list-of-tables so that section/table numbers will not so easily
% collide with the titles. Section VIII was usually the worst offender.
% Still doesn't right justify the section numbers, but neither does
% article.cls (This must be why LaTeX likes the x.y.z section numbering
% scheme unlike I, II, III, etc. of IEEE. )
% It may be "normal" as it is (left justified). sigh.
%
% 9) Now uses "index terms" now as a heading instead of "keywords".
% Furthermore, the "index terms" and "abstract" headings are in bold
% italic. This seems to be how IEEE does things now.
%
%10) \thebibliography and \biography now put entries into
% the table of contents for you.
%
%11) The margins IEEE uses are, in my opinion, strange. I have included
% a new command, \overrideIEEEmargins, that when executed in the
% beginning of your document, will change the margins to ensure that
% the wider margin is always on the bound edge and that, when two
% side printing, the margins on the front and back will actually line
% up. \overrideIEEEmargins will have no effect if DRAFT is selected.
% See the comments around line 1182 below for more details.
%
%
% OTHER NOTES:
% 1) See the companion file "IEEEtest.tex" for a demo of the
% use some of the new features of this IEEEtran.cls. IEEEtest.tex
% also contains code which allows .tex files using the new V1.3 features
% to compile under the OLDER IEEEtran.cls (However, the formatting
% will not be correct.) This may be useful for "comparison" or
% within the IEEE editing department.
%
%
%
% LIST USAGE DOCS (long):
% The most important thing to know about this class is that the
% itemize, enumerate and description list environments (I'll use
% acronym IED for short) are controlled in a new manner. The lower
% level list environment, \list, remains virtually unchanged
% (except \topsep increased to 0.3ex from 0.0ex).
% In "normal" LaTeX, list layout is controlled via the lengths:
%
% \leftmargin determines the distance from the current left text
% margin to the left margin of the list text
%
% \labelwidth determines the width of the box reserved for the label
% to be justified in
%
% \labelsep determines the spacing between the label box and the
% list text
%
% Note that the \leftmargin forms the reference point of the list from
% the main text. This is an unfortunate choice for the way of doing things
% since IEEE normally aligns the LABEL in some relation to the main text
% and then references the remainder of the list to the label boxes. For the
% record, IEEE's way of looking at lists makes a lot more sense to me---
% Is it not the label which the reader considers to be the first
% characters of a list item? In order to get a LaTeX \list to do what
% IEEE does, you have to determine your \labelwidth and then solve
% for a \leftmargin that puts the start of the label where it needs
% to be (\labelsep is a constant). The IED environments are supposed to
% make all this easier for you by automatically taking care of some of
% these details. However, the IED environments of the older IEEEtran.cls
% are "nuked" in that they use generic lengths which pretty much ensure
% that the lists will be wrong almost all the time. The probable result is
% that authors then turn to the more general \list which defeats the entire
% point of having IED environments in the first place!
%
% Now consider the way this new IEEEtran.cls controls the IED
% environments via the lengths:
%
% \labelindent determines the indention of the label box from
% the current left text margin. Hence, THE
% LABEL IS THE REFERENCE POINT FOR THE LIST!
%
% \labelwidth as before, is the length of the label box.
%
% \labelsep as before, determines the spacing between the
% label box and the list text.
%
% Of course, it is a matter of trivial addition and subtraction to convert
% between the way the new IEEEtran.cls and the way LaTeX normally looks
% at lists (\leftmargin = \labelindent + \labelwidth + \labelsep).
% What is important is this:
%
% 1) You can now think directly in IEEE terms.
% 2) The length controls now are available in the IED environments
% so that you do not have to choose between good formatting (\list)
% and automation (itemize, enumerate, and description).
%
% \labelindent and \labelsep are constants for a given list
% circumstance under IEEE. So, all you really need to do is determine which
% of your labels in a list is the longest. Everything other than that
% is usually automated correctly.
%
% _side note_
% Having to specify the longest label is nothing new in LaTeX. Does
% \begin{thebibliography}{99} ring a bell? LaTeX, in its current,
% form cannot determine longest labels for you as this would require
% more than one pass through your code. With bibliographies, BiBTeX
% actually sets the sample label for you. It would be nice if LaTeX
% offered some type of integrated multipass service to users- LiSTeX
% anyone?.
%
%
%
% - How to Control IED Lists -
% The length of the explanation below may give some the impression
% that IED list control is complex. It isn't. In fact, you will
% find it to be extremely easy to get your lists in proper format,
% while at the same time giving you flexibility never before possible
% with IED lists.
%
% IF YOU DON'T READ ANYTHING ELSE, KNOW THAT YOU MUST MANUALLY
% SPECIFY THE LABELWIDTH IN THE LIST CONTROLS (discussed below)
% FOR THE LONGEST LABEL IN YOUR LISTS FOR DESCRIPTION LISTS,
% ENUMERATED LISTS OTHER THAN THE TOP LEVEL ENUMERATION (OR THOSE
% WITH MORE THAN 9) ITEMS) AND ITEMIZED LISTS IN WHICH YOU HAVE
% SPECIFIED A DIFFERENT LABEL IN ITEM[XX]. EVERYTHING ELSE WILL
% PRETTY MUCH RUN ITSELF ON "AUTOPILOT"!
%
% The new IED lists ignore "outside" changes to all list lengths
% such as \leftmargin, \labelwidth, etc. The control of IED lists
% is now done exclusively via two interfaces:
%
% 1. "group" control via the \iedlistdecl command. For example:
% \renewcommand{\iedlistdecl}{\settowidth{\labelwidth}{Hello}}
% at the start of your document will set the default width of the
% labels in ALL later IED lists to be equal to the width of "Hello".
% 2. "individual" control via the OPTIONAL argument is provided to itemize,
% enumerate, and description. For example,
% \begin{itemize}[\settowidth{\labelwidth}{$\gamma$}]
% Within the list, the individual control is executed just after the
% group control and therefore, the commands in the individual control
% can override those in the group control. Individual controls affect
% only the particular list they are given in.
%
% Note: Because setting a \labelwidth is so commonly performed, this
% IEEEtrans.cls provides a command: \setlabelwidth{XX}
% which is a shorter form of: \settowidth{\labelwidth}{XX}
%
% These two controls behave like the list_decl (The second
% argument to the standard \list environment). In fact, the group
% and individual commands are passed directly to the list_decl of the
% underlying \list. The rational for this interface is four-fold:
%
% 1. If a user doesn't like the default behavior, \iedlistdecl
% can be defined in the beginning of the document in order
% to affect every IED list after the definition.
% 2. The individual control can be used to override defaults for a
% single IED list without affecting other lists.
% 3. Format controls to lists are provided in only two places, so IEEE
% can easily redefine \iedlistdecl and provide a bogus
% option to IED lists- which will allow them to easily
% isolate your formatting from your content.
% 4. Changes to IED list behavior are confined to IED lists-
% You won't have other, seemingly unrelated, parts of the document
% go nuts when you are trying to alter some list parameter.
% Furthermore, you can easily create complex nested IED lists
% without "getting confused" as to what changes what.
%
%
%
% - Default IED Behavior -
% The default spacings the IED lists used are stored in lengths
% which begin with IEEE, i.e., \IEEEilabelindent. Changes to these
% "master" defaults are rarely needed. If you do need to change them,
% do so at the beginning of your document, NOT IN THE IED LIST
% CONTROLS. These constants will now be briefly explained:
%
% \IEEEilabelindent:
% IEEE seems to use at least two different values by
% which ITEMIZED list labels are indented to the right
% For The Journal of Lightwave Technology (JLT) and The Journal
% on Selected Areas in Communications (JSAC), they tend to use
% an indention equal to \parindent. For Transactions on Communications
% they tend to indent ITEMIZED lists a little more--- 1.3\parindent.
% The shorter length is stored as \IEEEilabelindentA the longer
% as \IEEEilabelindentB. The default is to use the shorter version.
% If you want to use the longer version do a
% setlength{\IEEEilabelindent}{\IEEEilabelindentB}
% at the beginning of your document.
%
% \IEEEelabelindent
% This length is the default amount the enumerated list labels
% are indented to the right. Normally, the same as \parindent.
%
% \IEEEdlabelindent
% ditto for description list labels. Normally, the same as \parindent.
%
% \IEEEiednormlabelsep
% This length is the normal default spacing between the end of the IED
% list labels and the list text which will be used unless you
% specify something else.
%
% \IEEEiedmathlabelsep
% For nomenclature lists (when you have a list of math symbols with
% their explanations, IEEE usually increases the separation between
% the labels and the explanations. This length is set to this longer
% than normal length. To invoke its use, just issue the command
% \usemathlabelsep in a list control.
%
% \IEEEiedtopsep
% This length is the extra vertical separation put above and
% below each IED list. IEEE usually puts a little extra spacing
% around each list. However, this extra spacing is barely noticeable.
%
% \IEEElabelindentfactori through \IEEElabelindentfactorvi
% IEEE normally decreases the amount of indention as the
% list nesting level increases (there isn't much room to indent
% with two column text). The actual amount labels will be indented is
% \labelindent multiplied by the factor above corresponding to the
% level of nesting depth. This provides a means by which the user can
% alter the effective \labelindent for deeper levels.
% There may not be such a thing as correct "standard IEEE"
% values. What IEEE actually does may depend on the specific
% circumstances.
% The first list level almost always has full indention.
% The second levels I've seen have only 75% of the normal indentation
% Three level or greater nestings are very rare. I am guessing
% that they don't use any indentation. These factors are not lengths
% but rather constant macros like \baselinestretch so you will
% have to use \renewcommand if you want to set them to something else.
% The default values are:
% \IEEElabelindentfactori 1.0 % almost always one
% \IEEElabelindentfactorii 0.75 % 0.0 or 1.0 may be used in some cases
% \IEEElabelindentfactoriii 0.0 % 0.75? 0.5? 0.0?
% \IEEElabelindentfactoriv 0.0
% \IEEElabelindentfactorv 0.0
% \IEEElabelindentfactorvi 0.0
% You may suspend the use of these factors in a list by issuing
% the command \nolabelindentfactortrue in a list control (which
% has the same effect as setting all the indent factors to 1.0).
%
%
%
% - Other IED List Commands -
%
% The \calcleftmargin command provides an easy way to set
% \leftmargin based on the \labelwidth, \labelsep and the
% argument which is the length you want to indent the label.
% Usage: \calcleftmargin{length-to-indent-the-label}
% output is in the \leftmargin variable, i.e., effectively:
% \leftmargin = argument + \labelwidth + \labelsep
% It is used internally by the IED lists, but it may be
% helpful to some users as well.
% You can't normally specify \leftmargin in a list control as
% the IED lists calculate this value based on the \labelindent
% \labelwidth and \labelsep. To stop this auto-calculation, so that
% the list will use the \leftmargin you specify, just put
% \nocalcleftmargintrue in a list control.
%
% The enhanced IED lists now allow you to override the
% default justification to perform on the labels by using the
% list control commands:
% \iedlabeljustifyl for left label justification
% \iedlabeljustifyc for center label justification
% \iedlabeljustifyr for right label justification
% HOWEVER, THE USE OF THESE JUSTIFICATION OVERRIDES IS NOT
% RECOMMENDED FOR .tex FILES TO BE TURNED IN TO IEEE AS
% THIS MAY BE CONSIDERED NONSTANDARD FORMAT AND THEY MAY WELL
% USE THEIR DEFAULT JUSTIFICATION.
% I include these commands as they may be helpful to
% those who are using these enhanced list controls for
% other non-IEEE related LaTeX work.
% itemize and enumerate automatically default to right
% justification, description defaults to left.
%
%
%
% - ITEMIZED List Notes -
% The itemized lists will normally automatically calculate the length
% of whatever symbol the current list level is using so you can just
% call \begin{itemize} ... \end{itemize} without doing anything special.
% Furthermore, the auto-label-length feature will work properly even
% if you have redefined \labelitem~ (where I use ~ to indicate
% i,ii,iii, or iv, whichever is appropriate) BEFORE you call the begin
% itemize. However, if you specify any item symbols via \item[X]
% (this is really, really rare and may well be nonstandard as far as
% IEEE is concerned) then you can do the following:
%
%
% \begin{itemize}[\setlabelwidth{Z}]
% \item[X] blah
% \item[Y] blah
% .
% .
% \end{itemize}
%
% where Z is the longest label in the list
%
%
%
% - ENUMERATE List Notes -
% The important thing to note about enumerate lists is that the
% \labelwidth will default to the length of 9) in normal size and font.
% Therefore, you will have to manually specify the length of
% your longest label if:
%
% 1. Your top level list has more than 9 items
% 2. You have redefined \labelenumi, have manually
% specified labels with item[XX], or are using labels
% other than the \normalfont \normalsize font.
% <or>
% 3. the enumerated list is nested (not at the top enumerate level, and is
% therefore not using arabic digits as labels).
%
% For example:
%
% \begin{enumerate}[\setlabelwidth{12)}]
% \item blah
% \item blah
% .
% % 12 items total
% \end{enumerate}
%
%
%
% - DESCRIPTION List Notes -
% You will always have to specify your longest label width under
% description lists. Furthermore, you may wish to use the
% \IEEEmathlabelsep for \labelsep when building a math symbol list.
% For example:
%
% \begin{description}[\setlabelwidth{$\alpha\omega\pi\theta\mu$}
% \usemathlabelsep]
% \item[$\gamma\delta\beta$] Is the index of..
% \item[$\alpha\omega\pi\theta\mu$] Gives the optimal..
% .
% .
% \end{description}
%
% Be sure to include the same font commands in \setlabelwidth as
% you used with the actual label so that width calculation will be
% accurate.
% The description labels will be in normal font unless you
% specify otherwise. IEEE doesn't seem to mandate the use of
% italics. Some authors use normal, others bold, etc.
%
% Here is how you could do a list in typewriter font:
%
% \begin{description}[\ttfamily \setlabelwidth{\texttt{10)}}
% \iedlabeljustifyr
% \settowidth{\labelsep}{\texttt{\ }}]
% \item[\texttt{1)}] Start the algorithm;
% .
% .
% \item[\texttt{10)}] Tabulate the results.
% \end{description}
%
% But, since the list is numbered and the justification needed to be changed
% (nonstandard IEEE), it would be better to use an enumerated list instead:
%
% \renewcommand{\labelenumi}{\ttfamily\theenumi)}
% \begin{enumerate}[\ttfamily \setlabelwidth{\texttt{10)}}
% \settowidth{\labelsep}{\texttt{\ }}]
% \item Start the algorithm;
% .
% .
% \item Tabulate the results.
% \end{enumerate}
%
%
% It is difficult to get things to line up "correctly" if you should
% mix font styles within the labels - which is nonstandard as far
% as IEEE work is concerned.
% This has nothing to do with limitations of the IED list implementation,
% but rather differences in what constitutes a box containing each
% font character. If you *have* to do something like this, I
% suggest you practice with \framebox first. Commands which may be of
% help here are \newlength, \settowidth, and \makebox.
%
%
% *** IEEE section headings can look like lists ***
% Don't confuse headings like \subsubsection, which look like:
%
% \par \textit{1) All-Optical Wavelength Conversion:} blah blah
%
% with enumerated lists. You can tell that it is not a list because
% the text margin is not indented at all.
% Also, sometimes they italicize the first few words in a list item
% text to make a "intralist-item-header".
%
%
%
%
% That's all folks.
%
% ***** end of MDS comments *****
% *******
%
%
%
%
%
%
% *******
% 9/2000 (JVH) changes:
%
% made some corrections to get closer to LaTeX2e
% 20000906 Juergen v.Hagen
% vonhagen@ihefiji.etec.uni-karlsruhe.de
%
% Permission to redistribute granted as of December 2000.
% *******
%
%
%
%
%
%
% *******
%
% original 1993 (JWD) LaTeX2e version:
%
% In the most recent TeXhax digest, there was a request for a copy of
% IEEEtrans.sty modified to work with LaTeX2e. I have a version I
% modified to make it IEEEtrans.cls, which I have sent to the person
% making the request and am now sending to you to consider posting to
% the archives.
% --
% Jon Dixon
% dixonj@colorado.edu
% http://spot.colorado.edu/~dixonj/
%
%*******
%
%
%
%
%
%
%*******
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%===========================================================================
%%% modified by JWD (dixonj@colorado.edu) to be IEEEtran.cls
%%%
%%% @LaTeX-style-file{
%%% author = "Gerry Murray and Silvano Balemi",
%%% version = "2.5.4",
%%% date = "30-August-1993",
%%% filename = "IEEEtran.sty"- now "IEEEtran.cls"
%%% address = "Automatic Control Lab, ETH Zurich, Switzerland"
%%% email = "balemi@aut.ee.ethz.ch,
%%% keywords = "LaTeX, IEEE Transactions, publisher style",
%%% mainserver = "via E-mail from balemi@aut.ee.ethz.ch ",
%%% docstring = "This is a LaTeX class file for preparation
%%% of submission and final versions of articles
%%% to be published in IEEE Transactions.
%%% The default font size is 10 points but 9pt,
%%% 11pt and 12pt are available too.
%%%
%%% Usage:
%%% \documentclass[..,Xpt,twoside]{IEEEtran}
%%% \author{..}
%%% \title{..}
%%% \maketitle
%%% \begin{abstract}...\end{abstract}
%%% \begin{keywords}...\end{keywords}
%%% ...
%%% \begin{biography}{Author's name}...\end{biography}
%%% \end{document}
%%%
%%% The command "\markboth{leftTEXT}{rightTEXT}"
%%% puts the text "leftTEXT" and "rightTEXT"
%%% with the page number on the even resp. odd
%%% headers when the "twoside" option is selected.
%%% (Attention: header of title page is
%%% always "leftTEXT" as it bears the journal name).
%%% In order to remove headers, insert
%%% \thispagestyle{empty}\pagestyle{empty} or
%%% \thispagestyle{plain}\pagestyle{plain}
%%% right after the \maketitle command!!
%%%
%%% See also IEEE.bst and IEEEsample2e.tex",
%%% }
%%% ===========================================================================
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\typeout{Document Class `IEEEtran' V1.5 <26-July-2001>}
\typeout{Read the source comments for docs.}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{IEEEtran}[2001/07/26 revision V1.5 by M. Shell and J. v.Hagen]
% define new needed boolean variables
\newif\if@tmptwocolumn \@tmptwocolumnfalse
\newif\if@draftversion \@draftversionfalse
\newif\if@draftclsmode \@draftclsmodefalse
\newif\if@technote \@technotefalse
% IEEE uses letter paper
\setlength\paperheight{11in}
\setlength\paperwidth{8.5in}
\def\@ptsize{10}
\@namedef{ds@9pt}{\def\@ptsize{9}}
\@namedef{ds@10pt}{\def\@ptsize{10}}
\@namedef{ds@11pt}{\def\@ptsize{11}}
\@namedef{ds@12pt}{\def\@ptsize{12}}
\@namedef{ds@twoside}{\@twosidetrue \@mparswitchtrue}
% If the user selects draft, then this class AND any packages
% will go into draft mode.
\@namedef{ds@draft}{\global\@draftversiontrue \global\@draftclsmodetrue}
% draftcls is for a draft mode which will not affect any packages
% used by the document.
\@namedef{ds@draftcls}{\global\@draftclsmodetrue}
% we provide a final option just for completeness (article.cls has one)
\@namedef{ds@final}{\global\@draftversionfalse \global\@draftclsmodefalse}
\@namedef{ds@technote}{\global\@technotetrue} % sets variable for techn. note
% the file twocolumn.sty is not read as it changes \textwidth.
\@namedef{ds@twocolumn}{\global\@tmptwocolumntrue}
\@options %execute the selected option commands
% The idea hinted here is for LaTeX to generate markleft{} and markright{}
% automatically for you after you enter \author{}, \journal{},
% \journaldate{}, journalvol{}, \journalnum{}, etc.
% However, there may be some backward compatibility issues here as
% well as some special applications for IEEEtran.cls like
% conferences and special issues that may require the flexible
% \markleft{}, \markright{} and/or \markboth{}.
% We'll leave this as an open future suggestion.
%\newcommand{\journal}[1]{\def\@journal{#1}}
%\def\@journal{}
% FONT DEFINITION (No sizexx.clo file needed)
% This actually works now.
%
% Check if we have selected 9 points
% used with technote
\def\@tempa{9}\ifx\@ptsize\@tempa
\typeout{-- This is a 9 point document}
%\def\@normalsize{\@setsize\normalsize{10.7pt}\ixpt\@ixpt
\def\@normalsize{\@setsize\normalsize{11.1pt}\ixpt\@ixpt
\abovedisplayskip 1em plus2pt minus5pt\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip .6em plus3pt minus3pt}
%\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}
% footnotes are 8pt, so we'll make small 8pt too.
\def\small{\@setsize\small{9.12pt}\viiipt\@viiipt}
\def\footnotesize{\@setsize\footnotesize{9.12pt}\viiipt\@viiipt}
% I am guessing here that they don't go all the way down to 5pt
\def\scriptsize{\@setsize\scriptsize{8.15pt}\viipt\@viipt}
\def\tiny{\@setsize\tiny{8pt}\vipt\@vipt}
% I think they actually use like 10.5pt for titles rather
% than 10pt (\xpt), sigh.
\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{10}\ifx\@ptsize\@tempa
\typeout{-- This is a 10 point document}
%\def\@normalsize{\@setsize\normalsize{11.9pt}\xpt\@xpt
% IEEE uses a little more baselineskip
\def\@normalsize{\@setsize\normalsize{12.00pt}\xpt\@xpt
\abovedisplayskip 1em plus2pt minus5pt\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip .6em plus3pt minus3pt}
% small should be 9pt, not 8pt
%\def\small{\@setsize\small{9.2pt}\viiipt\@viiipt}
\def\small{\@setsize\small{10pt}\ixpt\@ixpt}
\def\footnotesize{\@setsize\footnotesize{8.8pt}\viiipt\@viiipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\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{11}\ifx\@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}
\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\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{12}\ifx\@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}
\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\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
% define \normalsize to use what we set @normalsize to above
\renewcommand{\normalsize}{\@normalsize}
% now default to the normal size
\normalsize
% IEEE uses Times font, so we'll default to times.
% These three commands are the entire times.sty package.
\renewcommand{\sfdefault}{phv}
\renewcommand{\rmdefault}{ptm}
\renewcommand{\ttdefault}{pcr}
% set sizes and margins
% old values, metric is not popular in USA book printing.
% Heck, they don't even seem to use inches. It is a world
% where point and pica (12pt) reign supreme. IEEE textwidth
% is 21 pica. They have a colsep of 1 pica.
%\topmargin -16.0mm
%\oddsidemargin -11.0mm
%\evensidemargin -11.0mm
%\textheight 243.5mm
%\textwidth 183.0mm
%\columnsep 4.1mm
\topmargin -49.0pt
\textheight 58pc
\textwidth 43pc % 2 x 21pc + 1pc = 43pc
\columnsep 1pc
% IEEE MARGIN INFO and new \overrideIEEEmargins command
% The IEEE margins may look strange because they are.
% After binding, IEEE physically cuts off (I think!) about 0.16in
% from the OUTSIDE margin of the pages, yielding a finished book
% that is about 11in long and 8.34in wide.
% So, the wider margin goes on the OUTSIDE edge of the page.
% But, this doesn't explain everything. Looking at a reprint
% of a paper of mine, (circa 1997), I note that IEEE puts the
% "narrower" margin on the LEFT side ALWAYS- even when two side
% (duplex) printed! They even do this in the PDF files of
% the Journal Collection CDs I have. So, with the reprints and CDs,
% the margins on the front and back of the pages DO NOT LINE UP.
% Now, I understand that a paper could begin on an even page, and
% they have to make the title page the first page of the reprints, but
% this would be easy to fix by swapping the even and odd side margins.
% However, in the actual Journal, they get it right and the margins
% on the front and back of the pages line up! I guess the fellow
% that runs the printing press also sets the margins!
%
% However, this is really crappy if YOU want to print and bind a copy
% of work made with this class. So, here is a new command
% \overrideIEEEmargins
% which when executed in the beginning of the document or preamble,
% will ensure that the wider margin is always on the edge where the page
% is bound and that the margins of the front and back of the pages
% (twoside) will line up- like article.cls does.
\newdimen\@IEEEmarginA
\newdimen\@IEEEmarginB
\@IEEEmarginA -30.0pt % this is the normal IEEE left margin
% (after you add 1in) for odd and EVEN pages
% The OTHER (wider) margin = \paperwidth -2in -\textwidth - \@IEEEmarginA
% the 2in is due to the LaTeX margin offset
\setlength{\@IEEEmarginB}{\paperwidth}
\addtolength{\@IEEEmarginB}{-2in}
\addtolength{\@IEEEmarginB}{-1\textwidth}
\addtolength{\@IEEEmarginB}{-1\@IEEEmarginA}
\oddsidemargin \@IEEEmarginA
\evensidemargin \@IEEEmarginA
% execute \overrideIEEEmargins in your preamble and
% your document will have a "more normal" margins and will
% be much more agreeable to being bound and/or printed by
% a duplex printer (The margins on both sides of the page
% will line up.)
\def\overrideIEEEmargins{\if@draftclsmode\relax\else %
\if@twoside
\oddsidemargin\@IEEEmarginB
\evensidemargin\@IEEEmarginA
\else
\oddsidemargin\@IEEEmarginB
\evensidemargin\@IEEEmarginB
\fi
\fi}
\parindent 1.0em
\headsep 6.3mm
\headheight 12pt
\lineskip 1pt
\normallineskip 1pt
\def\baselinestretch{1}
% normally zero, should be relative to font height.
% put in a little rubber to help stop bad breaks
\parskip 0ex plus 0.2ex minus 0.2ex
\if@draftclsmode
\topmargin -6.0mm
\oddsidemargin 0mm
\evensidemargin 0mm
\textheight 223.5mm
\textwidth 161.0mm
\def\baselinestretch{1.5} % controls line spacing for draft version
\fi % some people may like 1.7 or greater
% so that there will be even more space
% for hand written comments
% margin note stuff
\marginparsep 10pt
\marginparwidth 20pt
\marginparpush 25pt
% SPACING CONTROLS
% equations
\abovedisplayskip 0pt plus2pt minus5pt%
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip 0pt plus3pt%
\belowdisplayshortskip 0pt plus3pt minus3pt%
% Controls the amount of EXTRA spacing
% above and below \trivlist
% Both \list and IED lists override this.
% However, \trivlist will use this as will most
% things built from \trivlist like the \center
% environment.
\topsep 1.3ex
% Controls the additional spacing around lists preceded
% or followed by blank lines. IEEE does not increase
% spacing before or after paragraphs so it is set to zero.
% \z@ is the same as zero, but faster.
\partopsep \z@
% Controls the spacing between paragraphs in lists.
% IEEE does not increase spacing before or after paragraphs
% so this is also zero.
% With IEEEtran.cls, global changes to
% this value DO affect lists (but not IED lists).
\parsep \z@
% Controls the extra spacing between list items.
% IEEE does not put extra spacing between items.
% With IEEEtran.cls, global changes to this value DO affect
% lists (but not IED lists).
\itemsep \z@
% \itemindent is the amount to indent the FIRST line of a list
% item. It is auto set to zero within the \list environment. To alter
% it, you have to do so when you call the \list.
% However, IEEE uses this for the theorem environment
% There is an alternative value for this near \leftmargini below
\itemindent -1em
% \leftmargin, the spacing from the left margin of the main text to
% the left of the main body of a list item is set by \list.
% Hence this statement does nothing for lists.
% But, quote and verse do use it for indention.
\leftmargin 2em
% we retain this stuff from the older IEEEtran.cls so that \list
% will work the same way as before. However, itemize, enumerate and
% description (IED) could care less about what these are as they
% all are overridden.
\leftmargini 2em
%\itemindent 2em % Alternative values: sometimes used.
%\leftmargini 0em
\leftmarginii 1em
\leftmarginiii 1.5em
\leftmarginiv 1.5em
\leftmarginv 1.0em
\leftmarginvi 1.0em
\labelsep 5pt % probably should be based on font size (Xem)
\labelwidth \z@
% The old IEEEtran.cls behavior of \list is retained.
% However, the new V1.3 IED list environments override all the
% @list stuff (\@listX is called within \list for the
% appropriate level just before the user's list_decl is called).
% \topsep is now 0.3ex as IEEE puts this little extra space around
% lists
% Note that \parsep and \itemsep are not redefined as in
% the sizexx.clo \@listX (which article.cls uses) so global changes
% of these values DO affect \list
%
\def\@listI{\leftmargin\leftmargini}
\def\@listi{\leftmargin\leftmargini \topsep 0.3ex plus 1pt minus 1pt}
\let\@listI\@listi
\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii
\advance\labelwidth-\labelsep \topsep 0.3ex}
\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep \topsep 0.3ex}
\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep \topsep 0.3ex}
\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv
\advance\labelwidth-\labelsep \topsep 0.3ex}
\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep \topsep 0.3ex}
% IEEE uses 5) not 5.
\def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}}
% IEEE uses a) not (a)
\def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}}
% IEEE uses iii) not iii.
\def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}}
% IEEE uses A) not A.
\def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}}
% exactly the same as in article.cls
\def\p@enumii{\theenumi}
\def\p@enumiii{\theenumi(\theenumii)}
\def\p@enumiv{\p@enumiii\theenumiii}
% itemized list label styles
\def\labelitemi{$\scriptstyle\bullet$}
\def\labelitemii{\textbf{--}}
\def\labelitemiii{$\ast$}
\def\labelitemiv{$\cdot$}
% IEEEtran.cls version numbers, provided as of V1.3
% These values serve as a way a .tex file can
% determine if the new features are provided.
% The version number of this IEEEtrans.cls can be obtained from
% these values. i.e., V1.4
% KEEP THESE AS INTEGERS! i.e., NO {4a} or anything like that-
% (no need to enumerate "a" minor changes here)
\def\IEEEtransversionmajor{1}
\def\IEEEtransversionminor{5}
% **** V1.3 ENHANCEMENTS ****
% Itemize, Enumerate and Description (IED) List Controls
% ***************************
%
%
% IEEE seems to use at least two different values by
% which ITEMIZED list labels are indented to the right
% For The Journal of Lightwave Technology (JLT) and The Journal
% on Selected Areas in Communications (JSAC), they tend to use
% an indention equal to \parindent. For Transactions on Communications
% they tend to indent ITEMIZED lists a little more--- 1.3\parindent.
% We'll provide both values here for you so that you can choose
% which one you like in your document using a command such as:
% setlength{\IEEEilabelindent}{\IEEEilabelindentB}
\newdimen\IEEEilabelindentA
\IEEEilabelindentA \parindent
\newdimen\IEEEilabelindentB
\IEEEilabelindentB 1.3\parindent
% However, we'll default to using \parindent
% which makes more sense to me
\newdimen\IEEEilabelindent
\IEEEilabelindent \IEEEilabelindentA
% This controls the default amount the enumerated list labels
% are indented to the right.
% Normally, this is the same as the paragraph indention
\newdimen\IEEEelabelindent
\IEEEelabelindent \parindent
% This controls the default amount the description list labels
% are indented to the right.
% Normally, this is the same as the paragraph indention
\newdimen\IEEEdlabelindent
\IEEEdlabelindent \parindent
% This is the value actually used within the IED lists.
% The IED environments automatically set its value to
% one of the three values above, so global changes do
% not have any effect
\newdimen\labelindent
\labelindent \parindent
% The actual amount labels will be indented is
% \labelindent multiplied by the factor below
% corresponding to the level of nesting depth
% This provides a means by which the user can
% alter the effective \labelindent for deeper
% levels
% There may not be such a thing as correct "standard IEEE"
% values. What IEEE actually does may depend on the specific
% circumstances.
% The first list level almost always has full indention.
% The second levels I've seen have only 75% of the normal indentation
% Three level or greater nestings are very rare. I am guessing
% that they don't use any indentation.
\def\IEEElabelindentfactori{1.0} % almost always one
\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases
\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0?
\def\IEEElabelindentfactoriv{0.0}
\def\IEEElabelindentfactorv{0.0}
\def\IEEElabelindentfactorvi{0.0}
% value actually used within IED lists, it is auto
% set to one of the 6 values above
% global changes here have no effect
\def\labelindentfactor{1.0}
% This controls the default spacing between the end of the IED
% list labels and the list text, when normal text is used for
% the labels.
\newdimen\IEEEiednormlabelsep
\IEEEiednormlabelsep 0.6em
% This controls the default spacing between the end of the IED
% list labels and the list text, when math symbols are used for
% the labels (nomenclature lists). IEEE usually increases the
% spacing in these cases
\newdimen\IEEEiedmathlabelsep
\IEEEiedmathlabelsep 1.2em
% This controls the extra vertical separation put above and
% below each IED list. IEEE usually puts a little extra spacing
% around each list. However, this spacing is barely noticeable.
\newdimen\IEEEiedtopsep
\IEEEiedtopsep 0.3ex
% This command is executed within each IED list environment
% at the beginning of the list. You can use this to set the
% parameters for some/all your IED list(s) without disturbing
% global parameters that affect things other than lists.
% i.e., renewcommand{\iedlistdecl}{\setlength{\labelsep}{5em}}
% will alter the \labelsep for the next list(s) until
% \iedlistdecl is redefined.
\def\iedlistdecl{\relax}
% This command provides an easy way to set \leftmargin based
% on the \labelwidth, \labelsep and the argument \labelindent
% Usage: \calcleftmargin{width-to-indent-the-label}
% output is in the \leftmargin variable, i.e., effectively:
% \leftmargin = argument + \labelwidth + \labelsep
\def\calcleftmargin#1{\setlength{\leftmargin}{#1}
\addtolength{\leftmargin}{\labelwidth}
\addtolength{\leftmargin}{\labelsep}}
% This command provides an easy way to set \labelwidth to the
% width of the given text. It is the same as
% \settowidth{\labelwidth}{label-text}
% and useful as a shorter alternative.
% Typically used to set \labelwidth to be the width
% of the longest label in the list
\def\setlabelwidth#1{\settowidth{\labelwidth}{#1}}
% When this command is executed, IED lists will use the
% IEEEiedmathlabelsep label separation rather than the normal
% spacing. To have an effect, this command must be executed via
% the \iedlistdecl or within the option of the IED list
% environments.
\def\usemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}}
% A flag which controls whether the IED lists automatically
% calculate \leftmargin from \labelindent, \labelwidth and \labelsep
% Useful if you want to specify your own \leftmargin
% This flag must be set (\nocalcleftmargintrue or \nocalcleftmarginfalse)
% via the \iedlistdecl or within the option of the IED list
% environments to have an effect.
\newif\ifnocalcleftmargin
\nocalcleftmarginfalse
% A flag which controls whether \labelindent is multiplied by
% the \labelindentfactor for each list level.
% This flag must be set via the \iedlistdecl or within the option
% of the IED list environments to have an effect.
\newif\ifnolabelindentfactor
\nolabelindentfactorfalse
% internal variable to indicate type of IED label
% justification
% 0 - left; 1 - center; 2 - right
\newcount\@iedjustify \@iedjustify=0
% commands to allow the user to control IED
% label justifications. Use these commands within
% the IED environment option or in the \iedlistdecl
% Note that changing the normal list justifications
% is nonstandard and IEEE may not like it if you do so!
% I include these commands as they may be helpful to
% those who are using these enhanced list controls for
% other non-IEEE related LaTeX work.
% itemize and enumerate automatically default to right
% justification, description defaults to left.
\def\iedlabeljustifyl{\@iedjustify=0} %left
\def\iedlabeljustifyc{\@iedjustify=1} %center
\def\iedlabeljustifyr{\@iedjustify=2} %right
% create temporary copies of all list parameters
\newdimen\@iedtopsep
\newdimen\@iedlabelwidth
\newdimen\@iedlabelsep
\newdimen\@iedleftmargin
\newdimen\@iedpartopsep
\newdimen\@iedparsep
\newdimen\@ieditemsep
\newdimen\@iedrightmargin
\newdimen\@iedlistparindent
\newdimen\@ieditemindent
% commands to save to and restore from the list parameter copies
% this allows us to set all the list parameters within
% the list_decl and prevent \list (and its \@list)
% from overriding any of our parameters
\def\@savelistparams{\@iedtopsep\topsep
\@iedlabelwidth\labelwidth
\@iedlabelsep\labelsep
\@iedleftmargin\leftmargin
\@iedpartopsep\partopsep
\@iedparsep\parsep
\@ieditemsep\itemsep
\@iedrightmargin\rightmargin
\@iedlistparindent\listparindent
\@ieditemindent\itemindent}
\def\@restorelistparams{\topsep\@iedtopsep
\labelwidth\@iedlabelwidth
\labelsep\@iedlabelsep
\leftmargin\@iedleftmargin
\partopsep\@iedpartopsep
\parsep\@iedparsep
\itemsep\@ieditemsep
\rightmargin\@iedrightmargin
\listparindent\@iedlistparindent
\itemindent\@ieditemindent}
% provide all these commands
% we will then override them later
% we have to do things this way since the base LaTeX
% (latex.ltx) defines itemize and enumerate,
% but not description and we want to use \renewenvironment
\def\itemize{\relax}
\let\enditemize =\relax
\def\enumerate{\relax}
\let\endenumerate =\relax
\def\description{\relax}
\let\enddescription =\relax
% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
% new itemized list MDS 1/2001
\renewenvironment{itemize}[1][\relax]
{\ifnum \@itemdepth >3 \@toodeep\else
\ifnum \@listdepth >5 \@toodeep\else
\advance\@itemdepth\@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
% get the labelindentfactor for this level
\advance\@listdepth\@ne % we need to know what the level WILL be
\edef\labelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}
\advance\@listdepth-\@ne % undo our increment
\@iedjustify=2 % right justified labels are default
% set other defaults
\nocalcleftmarginfalse
\nolabelindentfactorfalse
\topsep \IEEEiedtopsep
\labelindent\IEEEilabelindent
\labelsep\IEEEiednormlabelsep
\partopsep 0ex
\parsep 0ex
\itemsep 0ex
\rightmargin 0em
\listparindent 0em
\itemindent 0em
% calculate the label width
% the user can override this later if
% they specified a \labelwidth
\settowidth{\labelwidth}%
{\csname labelitem\romannumeral\the\@itemdepth\endcsname}
\@savelistparams % save our list parameters
\list{\csname\@itemitem\endcsname}{%
\@restorelistparams % override any list{} changes
% to our globals
\iedlistdecl % let user alter parameters
#1
% If the user has requested not to use the
% labelindent factor, don't revise \labelindent
\ifnolabelindentfactor \relax
\else \labelindent =\labelindentfactor\labelindent
\fi
% Unless the user has requested otherwise,
% calculate our left margin based
% on \labelindent, \labelwidth and
% \labelsep
\ifnocalcleftmargin \relax
\else \calcleftmargin{\labelindent}
\fi
% justify the label appropriately
\let\makelabel\@iedmakelabelright % right if don't know
% what else to do
\ifnum \@iedjustify =0 \let\makelabel\@iedmakelabelleft \fi
\ifnum \@iedjustify =1 \let\makelabel\@iedmakelabelcenter \fi
}\fi\fi}%
{\endlist}
% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
% new enumerate list MDS 1/2001
\renewenvironment{enumerate}[1][\relax]
{\ifnum \@enumdepth >3 \@toodeep\else
\ifnum \@listdepth >5 \@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
% get the labelindentfactor for this level
\advance\@listdepth\@ne % we need to know what the level WILL be
\edef\labelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}
\advance\@listdepth-\@ne % undo our increment
\@iedjustify=2 % right justified labels are default
% set other defaults
\nocalcleftmarginfalse
\nolabelindentfactorfalse
\topsep \IEEEiedtopsep
\labelindent\IEEEelabelindent
\labelsep\IEEEiednormlabelsep
\partopsep 0ex
\parsep 0ex
\itemsep 0ex
\rightmargin 0em
\listparindent 0em
\itemindent 0em
% calculate the label width
% We'll set it to the width suitable for all labels using
% normalfont 1) to 9)
% The user can override this later
\settowidth{\labelwidth}{9)}
\@savelistparams % save our list parameters
\list{\csname label\@enumctr\endcsname}{%
\usecounter{\@enumctr}
\@restorelistparams % override any list{} changes
% to our globals
\iedlistdecl % let user alter parameters
#1
% If the user has requested not to use the
% labelindent factor, don't revise \labelindent
\ifnolabelindentfactor \relax
\else \labelindent =\labelindentfactor\labelindent
\fi
% Unless the user has requested otherwise,
% calculate our left margin based
% on \labelindent, \labelwidth and
% \labelsep
\ifnocalcleftmargin \relax
\else \calcleftmargin{\labelindent}
\fi
% justify the label appropriately
\let\makelabel\@iedmakelabelright % right if don't know
% what else to do
\ifnum \@iedjustify =0 \let\makelabel\@iedmakelabelleft \fi
\ifnum \@iedjustify =1 \let\makelabel\@iedmakelabelcenter \fi
}\fi\fi}%
{\endlist}
% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS
% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS
% new description list MDS 1/2001
\renewenvironment{description}[1][\relax]
{\ifnum \@listdepth >5 \@toodeep\else
% get the labelindentfactor for this level
\advance\@listdepth\@ne % we need to know what the level WILL be
\edef\labelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}
\advance\@listdepth-\@ne % undo our increment
\@iedjustify =0 % left justified labels are default
% set other defaults
\nocalcleftmarginfalse
\nolabelindentfactorfalse
\topsep \IEEEiedtopsep
\labelindent\IEEEdlabelindent
% assume normal labelsep
\labelsep\IEEEiednormlabelsep
\partopsep 0ex
\parsep 0ex
\itemsep 0ex
\rightmargin 0em
\listparindent 0em
\itemindent 0em
% Bogus label width in case the user forgets
% to set it.
% TIP: If you want to see what a variable's width is you
% can use the TeX command \showthe\width-variable to
% display it on the screen during compilation
% (This might be helpful to know when you need to find out
% which label is the widest)
\settowidth{\labelwidth}{Hello}
\@savelistparams % save our list parameters
\list{}{\@restorelistparams % override any list{} changes
% to our globals
\iedlistdecl % let user alter parameters
#1
% If the user has requested not to use the
% labelindent factor, don't revise \labelindent
\ifnolabelindentfactor \relax
\else \labelindent =\labelindentfactor\labelindent
\fi
% Unless the user has requested otherwise,
% calculate our left margin based
% on \labelindent, \labelwidth and
% \labelsep
\ifnocalcleftmargin \relax
\else \calcleftmargin{\labelindent}
\fi
% justify the label appropriately
\let\makelabel\@iedmakelabelleft % left if don't know
% what else to do
\ifnum \@iedjustify =1 \let\makelabel\@iedmakelabelcenter \fi
\ifnum \@iedjustify =2 \let\makelabel\@iedmakelabelright \fi}
\fi}%
{\endlist}
\newcommand*\@iedmakelabelleft[1]{\makebox[\labelwidth][l]{\normalfont #1}}
\newcommand*\@iedmakelabelright[1]{\makebox[\labelwidth][r]{\normalfont #1}}
\newcommand*\@iedmakelabelcenter[1]{\makebox[\labelwidth][c]{\normalfont #1}}
% VERSE and QUOTE
\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
% Titlepage
\newif\if@restonecol
\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
\else \newpage \fi \thispagestyle{empty}\c@page\z@}
\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
\arraycolsep 5pt
\tabcolsep 6pt
\arrayrulewidth .4pt
\doublerulesep 2pt
\tabbingsep\labelsep
%% FOOTNOTES
%
\skip\footins 10pt plus 4pt minus 2pt
\footnotesep 7pt
\footskip 10mm
\skip\@mpfootins = \skip\footins
\fboxsep = 3pt \fboxrule = .4pt
\long\def\@makefntext#1{\parindent .8em\indent$^{\@thefnmark}$#1}
\def\footnoterule{}
\if@technote
\setcounter{secnumdepth}{3}
\else
\setcounter{secnumdepth}{4}
\fi
\newcounter{section}
\newcounter{subsection}[section]
\newcounter{subsubsection}[subsection]
\newcounter{paragraph}[subsubsection]
% as shown in table of contents and when called by user from \ref, \label
\def\theequation{\arabic{equation}} % 1
\def\thesection{\Roman{section}} % I
\def\thesubsection{\thesection-\Alph{subsection}} % I-A
\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} % I-A.1
\def\theparagraph{\thesubsubsection.\alph{paragraph}} % I-A.1.a
% Main text forms (how shown in main text headings)
\def\thesectiondis{\Roman{section}.} % I.
\def\thesubsectiondis{\Alph{subsection}.} % B.
\def\thesubsubsectiondis{\arabic{subsubsection})} % 3)
\def\theparagraphdis{\alph{paragraph})} % d)
% LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS
%
\def\@pnumwidth{1.55em}
\def\@tocrmarg{2.55em}
\def\@dotsep{4.5}
\setcounter{tocdepth}{3}
% adjusted some spacings here so that section numbers will not easily
% collide with the section titles.
% VIII; VIII-A; and VIII-A.1 are usually the worst offenders.
% MDS 1/2001
\def\tableofcontents{\section*{Contents}\@starttoc{toc}}
\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
\@tempdima 2.75em \begingroup \parindent \z@ \rightskip \@pnumwidth
\parfillskip-\@pnumwidth {\bfseries\leavevmode #1}\hfil\hbox to\@pnumwidth{\hss #2}
\par \endgroup}
% argument format #1:level, #2:labelindent,#3:labelsep
\def\l@subsection{\@dottedtocline{2}{2.75em}{3.75em}}
\def\l@subsubsection{\@dottedtocline{3}{6.5em}{4.5em}}
% must provide \l@ defs for ALL sublevels EVEN if tocdepth
% is such as they will not appear in the table of contents
% these defs are how TOC knows what level these things are!
\def\l@paragraph{\@dottedtocline{4}{6.5em}{5.5em}}
\def\l@subparagraph{\@dottedtocline{5}{6.5em}{6.5em}}
\def\listoffigures{\section*{List of Figures}\@starttoc{lof}}
\def\l@figure{\@dottedtocline{1}{0em}{2.75em}}
\def\listoftables{\section*{List of Tables}\@starttoc{lot}}
\let\l@table\l@figure
\newdimen\@maxsep
\newdimen\@dblmaxsep
%% Definitions for floats
%%
%% 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
\@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}
%% redefine CAPTION
% V1.4 add user control for short figure caption justification
\newif\ifcenterfigcaptions
\centerfigcaptionsfalse
\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}
\newlength{\captionindent}
\long\def\@makecaption#1#2#3{
\ifx\figurestring#3
% \ifx tests if is a for a figure
\vskip 5pt
% 3/2001 use footnotesize, not small; use two nonbreaking spaces, not one
\setbox\@tempboxa\hbox{\footnotesize #1.~~ #2}
\ifdim \wd\@tempboxa >\hsize
% 3/2001 use footnotesize, not small
\setbox\@tempboxa\hbox{\footnotesize #1.~~ }
\setlength\captionindent{\wd\@tempboxa} \divide\captionindent by 2
\captionindent 0em % IEEE does not indent captions MDS 1/2001
% 3/2001 use footnotesize, not small
\parbox[t]{\hsize}{\footnotesize \hangindent \captionindent \hangafter=1%
\unhbox\@tempboxa#2}
%\else \hbox to\hsize{\small\hfil\box\@tempboxa\hfil}
% 3/2001 use footnotesize, not small
% allow user to control short figure caption justification (left or center)
\else
\ifcenterfigcaptions \hbox to\hsize{\footnotesize\hfil\box\@tempboxa\hfil}
\else \hbox to\hsize{\footnotesize\box\@tempboxa\hfil}
\fi
\fi
\else
% or a table
% 3/2001 use \footnotesize, instead of \small for table caption
\begin{center}{\small #1}\\{\footnotesize\scshape #2}\end{center}
\vskip 8pt
\fi}
\newcounter{figure}
\def\thefigure{\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{Fig.~\thefigure}
\def\figure{\@float{figure}}
\let\endfigure\end@float
\@namedef{figure*}{\@dblfloat{figure}}
\@namedef{endfigure*}{\end@dblfloat}
\newcounter{table}
\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}
\if@twoside
\if@technote
\def\ps@headings{
\def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}
\def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}
\if@draftclsmode
\def\@oddfoot{\scriptsize\@date\hfil DRAFT}
\def\@evenfoot{\scriptsize DRAFT\hfil\@date}
\else
\def\@oddfoot{}\def\@evenfoot{}
\fi}
\else % not a technote
\def\ps@headings{
\def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage}
\def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}
\if@draftclsmode
\def\@oddfoot{\scriptsize\@date\hfil DRAFT}
\def\@evenfoot{\scriptsize DRAFT\hfil\@date}
\else
\def\@oddfoot{}\def\@evenfoot{}
\fi}
\fi
\else % single side
\def\ps@headings{
\def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}
\def\@evenhead{}
\if@draftclsmode
\def\@oddfoot{\scriptsize \@date \hfil DRAFT}
\else
\def\@oddfoot{}
\fi
\def\@evenfoot{}}
\fi
\def\ps@titlepagestyle{
\def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}
\def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}
\if@draftclsmode
\def\@oddfoot{\scriptsize \@date\hfil DRAFT}
\def\@evenfoot{\scriptsize DRAFT\hfil \@date}
\else
\def\@oddfoot{}\def\@evenfoot{}
\fi}
\def\rightmark{}\def\leftmark{}
%% 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{\uppercase{#1}}\def\rightmark{\uppercase{#2}}}
\def\footernote#1{\markboth{#1}{#1}}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
%% BIBLIOGRAPHY
%
%% 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}{{\bfseries ?}\@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*{References}%
\addcontentsline{toc}{section}{References}
\footnotesize\list
{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
\advance\leftmargin\labelsep \itemsep 0pt plus .5pt
\usecounter{enumi}}
\def\newblock{\hskip .11em plus .33em minus .07em}
% originally:
% \sloppy\clubpenalty4000\widowpenalty4000%
% by adding the \interlinepenalty here, we make it much more
% difficult, but not impossible, for LaTeX to break within a reference.
% IEEE almost never breaks a reference (but they do it more often with
% technotes). You may get an underfull vbox warning around the bibliography,
% but the final result will be much more like what IEEE will publish.
% You can remove the \interlinepenalty if you want references to be split.
% MDS 11/2000
\if@technote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100%
\else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi%
\sfcode`\.=1000\relax}
\let\endthebibliography=\endlist
\def\maketitle{\par
\begingroup
\def\thefootnote{} % the \thanks{} mark type is empty
\if@twocolumn
\if@technote
\newpage\global\@topnum\z@ \@maketitle
\else\twocolumn[\@maketitle]\fi
\else\newpage\global\@topnum\z@ \@maketitle \fi
\thispagestyle{titlepagestyle}\@thanks
\endgroup
\setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
\let\thanks\relax
\if@draftclsmode \vfil\mbox{}\newpage\fi}
\def\@maketitle{\newpage\if@draftclsmode\mbox{}\vfil\fi\begin{center}
\if@technote
% V1.4a
%{\textbf{\large\@title}\par}\vskip 1.3em{\lineskip .5em\@author\@specialpapernotice\par}
{\textbf{\large\@title}\par}\vskip 1.3em{\lineskip .5em\begin{tabular}[t]{c}\@author\end{tabular}\@specialpapernotice\par}
\else
\vskip0.2em{\Huge\@title\par}\vskip1.0em%
\if@draftclsmode\vfil\fi%
%{\lineskip.5em\large\@author\par}
% V1.4a
% {\lineskip.5em\large\@author\@specialpapernotice\par}
{\lineskip.5em\large\begin{tabular}[t]{c}\@author\end{tabular}\@specialpapernotice\par}
\fi
% \end{center}\par\vskip 1.4em}
\end{center}
\if@technote
\par\normalfont\normalsize\vskip 1\baselineskip plus 2ex minus 1ex
\else
\par\normalfont\normalsize\vskip 2.5\baselineskip plus 2ex minus 1ex
\fi}
\def\abstract{%
\if@twocolumn
% IEEE puts heading in bold
% \small\textit{Abstract}\bfseries---$\!$%
\small\bfseries\textit{Abstract}---$\!$%
\else
\begin{center}\vspace{-0.8em}\small\textbf{Abstract}\end{center}\quotation\small
\fi}
\def\endabstract{\vspace{0.6em}\par\if@twocolumn\else\endquotation\fi
\normalfont\normalsize}
\def\keywords{%\vspace{-.3em}
% IEEE uses the term (in bold italics) "Index Terms" now.
\if@twocolumn
% \small\textit{Keywords}\bfseries---$\!$%
\small\bfseries\textit{Index Terms}---$\!$%
\else
% \begin{center}\small\bfseries Keywords\end{center}\quotation\small
\begin{center}\small\bfseries Index Terms\end{center}\quotation\small
\fi}
\def\endkeywords{\if@technote\vspace{0.6em}\else\vspace{0.3em}\fi
\par\if@twocolumn\else\endquotation\fi
\normalsize\normalfont}
% titling of sections
\gdef\@punct{:\ \,} % Punctuation after run-in section heading (headings which are
% part of the paragraphs), need little bit more than a space
%\gdef\@punct{.\ \ } % old way, they needed two spaces because one got eaten,
% but puts too much space in the old nonstar section form.
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
\def\@svsec{}
\else
\refstepcounter{#1}\edef\@svsec{%
% load section label into \@svsec
% A. section title
\ifnum #2=1\thesectiondis\fi\ifnum #2=2\thesubsectiondis\fi
\ifnum #2>2{\csname the#1dis\endcsname}\fi \hskip .5em}
\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@ % tempskipa determines whether is treated as a high
\begingroup #6\relax % or low level heading
\noindent % subsections are NOT indented
% print top level headings. \@svsec is label, #8 is heading title
%\@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
% IEEE does not block indent the section title text, it flows like normal
\relax{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
\endgroup
% got rid of sectionmark stuff
% \csname #1mark\endcsname{#7}
\addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\else
\protect\numberline{\csname the#1\endcsname}\fi#7}
\else % printout low level headings
% svsechd seems to swallow the trailing space, protect it with \mbox{}
% got rid of sectionmark stuff
\def\@svsechd{#6\hskip #3\@svsec #8\@punct\mbox{} %\csname #1mark\endcsname{#7}
\addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi#7}}
\fi %skip down
\@xsect{#5}}
% section* handler
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
%\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
% IEEE does not block indent the section title text, it flows like normal
\begingroup \noindent #4\relax{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
% svsechd seems to swallow the trailing space, protect it with \mbox{}
\else \def\@svsechd{#4\hskip #1\relax #5\@punct\mbox{}}\fi
\@xsect{#3}}
%% SECTION heading spacing and font
%%
% arguments are: #1 - sectiontype name
% (for \@sect) #2 - section level
% #3 - indent
% #4 - top separation
% #5 - tempskipa, bottom separation
% #6 - font control
%\def\section{\@startsection{section}{1}{\z@}{2.8ex plus 4ex
% IEEE sometimes REALLY stretches the area before a section
% heading by up to about 0.5in. However, it may not be a good
% idea to let LaTeX have quite this much rubber.
% You've got to have \normalfont\normalsize in the font spec to prevent
% trouble when you do something like:
% \section{Note}{\ttfamily TT-TEXT} is known to ...
%\def\section{\@startsection{section}{1}{\z@}{2.8ex plus 2ex minus 1.4ex}%
\def\section{\@startsection{section}{1}{\z@}{3.5ex plus 1.5ex minus 1.5ex}%
{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}
%\def\subsection{\@startsection{subsection}{2}{\z@}{2.5ex plus 1.5ex minus 1ex}%
\def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}%
{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}
% decided to put in a little rubber above the section, might help somebody
\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}{0ex plus 0.1ex minus 0.1ex}%
{0ex}{\normalfont\normalsize\itshape}}
\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}%
{0ex}{\normalfont\normalsize\itshape}}
%% ENVIRONMENTS
%\itemindent is set to \z@ by list, so define new temporary variable
\newdimen\tmpitemindent
\def\QED{\mbox{\rule[0pt]{1.5ex}{1.5ex}}}
\def\proof{\noindent\hspace{2em}{\itshape Proof: }}
\def\endproof{\hspace*{\fill}~\QED\par\endtrivlist\unskip}
\def\@begintheorem#1#2{\tmpitemindent\itemindent\topsep 0pt\rmfamily\trivlist
\item[\hskip \labelsep{\indent\itshape #1\ #2:}]\itemindent\tmpitemindent}
\def\@opargbegintheorem#1#2#3{\tmpitemindent\itemindent\topsep 0pt\rmfamily \trivlist
% IEEE uses a long dash between the theorem number and name and does not
% put () around the name
% \item[\hskip\labelsep{\indent\itshape #1\ #2\ \rmfamily(#3)}]\itemindent\tmpitemindent}
\item[\hskip\labelsep{\indent\itshape #1\ #2\rmfamily---#3:}]\itemindent\tmpitemindent}
\def\@endtheorem{\endtrivlist\unskip}
%% sets up default PAGESTYLE
\ps@headings
\pagenumbering{arabic}
\if@twoside\else\raggedbottom\fi
\if@tmptwocolumn \twocolumn \sloppy \flushbottom \fi
% \APPENDIX and \APPENDICES definitions
% This is the \@ifmtarg command from the LaTeX ifmtarg package
% by Peter Wilson (CUA) and Donald Arseneau
% \@ifmtarg is used to determine if an argument to a command
% is present or not.
% For instance:
% \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}}
% \@ifmtarg is used with our redefined \section command if
% \appendices is invoked.
% The command \section will behave slightly differently depending
% on whether the user specifies a title:
% \section{My appendix title}
% or not:
% \section{}
% This way, we can eliminate the blank lines where the title
% would be, and the unneeded : after Appendix in the table of
% contents
\begingroup
\catcode`\Q=3
\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}
\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}
\endgroup
% end of \@ifmtarg defs
% save the "original" meaning of \section so we can redefine
% \section after a call to \appendix or \appendices
\let\@ppendixsavesection\section
% neat trick to grab and process the argument from \section{argument}
% we process differently if the user invoked \section{} with no
% argument (title)
% note we reroute the call to the old \section*
\def\@processthesectionargument#1{%
\@ifmtarg{#1}{
\@ppendixsavesection*{Appendix \thesectiondis}
\addcontentsline{toc}{section}{Appendix \thesection}}{%
\@ppendixsavesection*{Appendix \thesectiondis \\* #1}
\addcontentsline{toc}{section}{Appendix \thesection: #1}}}
% we use this if the user calls \section{} after
% \appendix-- which has no meaning. So, we ignore the
% command and its argument. Then, warn the user.
\def\@destroythesectionargument#1{\typeout{WARNING: Ignoring useless
\protect\section {\noexpand#1} in Appendix.}}
% remember \thesection forms will be displayed in \ref calls
% and in the Table of Contents.
% The \sectiondis form is used in the actual heading itself
% appendix command for one single appendix
% normally has no heading. However, if you want a
% heading, you can do so via the optional argument:
% \appendix[Optional Heading]
\def\appendix{\relax}
\renewcommand{\appendix}[1][]{\par
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\def\thesection{}
\def\thesectiondis{}
\def\thesubsection{\Alph{subsection}}
\refstepcounter{section} % update the \ref counter
\@ifmtarg{#1}{\@ppendixsavesection*{Appendix}
\addcontentsline{toc}{section}{Appendix}}{%
\@ppendixsavesection*{Appendix \\* #1}
\addcontentsline{toc}{section}{Appendix: #1}}
% redefine \section command for appendix
% leave \section* as is
\def\section{\@ifstar{\@ppendixsavesection*}{%
\@destroythesectionargument}}% throw out the argument
% of the normal form
}
% provides the user a way to choose between
% Appendix A
% and
% Appendix I
% notation
% defaults to Roman.
\newif\ifuseRomanappendices
\useRomanappendicestrue
% appendices command for multiple appendices
% user then calls \section with an argument (possibly empty) to
% declare the individual appendices
\def\appendices{\par
\setcounter{section}{-1} % we want \refstepcounter to use section 0
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\ifuseRomanappendices
\def\thesection{\Roman{section}}
\def\thesectiondis{\Roman{section}}
\else
\def\thesection{\Alph{section}}
\def\thesectiondis{\Alph{section}}
\fi
\refstepcounter{section} % update the \ref counter
\setcounter{section}{0} % NEXT \section will be the FIRST appendix
% redefine \section command for appendices
% leave \section* as is
\def\section{\@ifstar{\@ppendixsavesection*}{% process the *-form
\refstepcounter{section} % or is a new section so,
\@processthesectionargument}}% process the argument
% of the normal form
}
%%
%% Definition for Big letter at the beginning of a paragraph
% for folks that have trouble with Times fonts, here is the old PARstart
% that uses the Computer Modern fonts.
\def\CMPARstart#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
% first letter of parstart is BOLD, use cmbx10
\tmpht=.001\tmpht\multiply\tmpht by \count7\font\hhuge=cmbx10 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}
% The new default PARstart uses Times font
\def\PARstart#1#2{\begingroup\def\par{\endgraf\endgroup\lineskiplimit=0pt}
\setbox2=\hbox{\uppercase{#2} }\newdimen\tmpht \tmpht \ht2
% by making it 1.1\baselineskip, we get a first letter that drops a
% little below the baseline. The result is extremely close to what
% IEEE uses.
\advance\tmpht by 1.1\baselineskip\font\hhuge=ptmr 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=ptmb 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}
\if@technote\def\PARstart#1#2{#1#2}\def\CMPARstart#1#2{#1#2}\fi % if technical note, disable it
\if@draftclsmode\def\PARstart#1#2{#1#2}\def\CMPARstart#1#2{#1#2}\fi % if draft, disable it
%% Allows user to enter BIOGRAPHY leaving place for picture (adapts to font size)
%% As of V1.5, a new optional argument allows you to have a real graphic!
%% V1.5 and later also fixes the "colliding biographies" which could happen when a
%% biography's text was shorter than the space for the photo.
%% MDS 7/2001
\newenvironment{biography}[2][]{%
\addcontentsline{toc}{section}{Biography}
\footnotesize\unitlength 1in\bigskip\parskip=0pt\par%
\rule{0pt}{1.54in}\vspace{-1.54in}\par% guarantees correct page breaking
\noindent
% the default box for where the photo goes
\def\@tempbiographybox{\hbox{\framebox(1,1.25){\parbox[][\height][c]{0.9in}{\centering PLACE\\ PHOTO\\ HERE}}}}%
% detect if the optional argument was supplied, this requires the
% \@ifmtarg command as defined in the appendix section above
\@ifmtarg{#1}{\relax}{%
% % The user supplied the optional argument
% % override the default box with what they want
\def\@tempbiographybox{\hbox{%
\begin{minipage}[b][1.25in][c]{1in}%
\centering
#1%
\end{minipage}
}}%
}% end if optional argument supplied
\setbox0\@tempbiographybox%
\ht0=1.45in\count10=\ht0\divide\count10 by\baselineskip% calculates lines
\global\hangindent1.14in\global\hangafter-\count10%
\hskip-1.12in\setbox0\hbox to 1.12in {\raise-1.2in\box0\hss}%
\dp0=0in\ht0=0in\box0\noindent{\bfseries#2}\rmfamily}{\par%
% 7/2001 V1.5 detect when the biography text is shorter than the photo area
% and pad the unused area - preventing a collision from the next biography entry
% MDS
\ifnum \prevgraf <\count10 % detect when the biography text is shorter than the photo
\count11=\count10
\advance\count11 by -\prevgraf % calculate how many lines we need to pad
\dimen10=\baselineskip % calculate the length of the padding
\multiply\dimen10 by \count11
\noindent\rule{0pt}{\dimen10} % insert an invisible support strut
\fi
\par\normalfont}
% provide the user with some old font commands
% got this from article.cls
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
% SPECIAL PAPER NOTICE COMMANDS
%
% holds the special notice text
\def\@specialpapernotice{\relax}
% for special papers, like invited papers, the user can do:
% \specialpapernotice{(Invited Paper)} before \maketitle
\def\specialpapernotice#1{\def\@specialpapernotice{%
\\*[1.5ex]\textit{#1}\vspace*{-2ex}}}
% PUBLISHER ID COMMANDS
% save the normalsize baselineskip
% so that we can reduce the textheight by exactly two normal
% lines when we put in the publisher's ID footer
\let\@normalbaselineskipsave\baselineskip
% holds the ID text
\def\@pubid{\relax}
% issue this command in the page to have the ID at the bottom
\def\pubid#1{\def\@pubid{#1} \thispagestyle{pubidtitlepagestyle}
\enlargethispage{-1.3\@normalbaselineskipsave}}
% command which will pull up (shorten) the column it is executed in
% to make room for the publisher ID
% Is smart enough not to do anything when in single column text.
% currently needed in for the second column of a page with the
% publisher ID. If not needed in future releases, please provide this
% command and define it as \relax for backward compatibility
\def\pubidadjcol{\if@twocolumn\enlargethispage{-1.3\@normalbaselineskipsave}\fi}
% new pagestyle for pages that have a publisher's ID
% we bring the footer ID text up into the last line of the
% main text
% publisher's ID will not be printed when in DRAFT mode.
\def\ps@pubidtitlepagestyle{
\def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}
\def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}
\if@draftclsmode
\def\@oddfoot{\scriptsize \@date\hfil DRAFT}
\def\@evenfoot{\scriptsize DRAFT\hfil \@date}
\else
\footskip 0pt
\def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@pubid}\hss}
\def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@pubid}\hss}
\fi}
\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%