From c4a18cc35b13311ec9424f499268be12a8b09eb6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 12 Jan 2007 01:27:18 +0000 Subject: IEEEtrans 1.7 git-svn-id: svn://tug.org/texlive/trunk@3354 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/IEEEtran/IEEEtran.cls | 2670 ++++++++++---------- .../tex/latex/IEEEtran/IEEEtrantools.sty | 394 +-- 2 files changed, 1646 insertions(+), 1418 deletions(-) (limited to 'Master/texmf-dist/tex/latex/IEEEtran') diff --git a/Master/texmf-dist/tex/latex/IEEEtran/IEEEtran.cls b/Master/texmf-dist/tex/latex/IEEEtran/IEEEtran.cls index 835c69bd29d..53bb4ff633e 100644 --- a/Master/texmf-dist/tex/latex/IEEEtran/IEEEtran.cls +++ b/Master/texmf-dist/tex/latex/IEEEtran/IEEEtran.cls @@ -1,23 +1,16 @@ %% -%% IEEEtran.cls 2005/09/13 version V1.6c -%% -%% NOTE: This text file uses UNIX line feed conventions. When (human) -%% reading this file on other platforms, you may have to use a text -%% editor that can handle lines terminated by the UNIX line feed -%% character (0x0A). +%% IEEEtran.cls 2007/01/11 version V1.7 %% %% %% This is the official IEEE LaTeX class for authors of the Institute of %% Electrical and Electronics Engineers (IEEE) Transactions journals and %% conferences. %% -%% The latest version and documentation of IEEEtran can be obtained at: -%% http://www.ieee.org -%% and/or +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ %% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ -%% -%% The CTAN page may have additional files related to obscure, -%% non-IEEE standard and/or platform dependent use of this tool. +%% and +%% http://www.ieee.org/ %% %% Based on the original 1993 IEEEtran.cls, but with many bug fixes %% and enhancements (from both JVH and MDS) over the 1996/7 version. @@ -26,40 +19,49 @@ %% Contributors: %% Gerry Murray (1993), Silvano Balemi (1993), %% Jon Dixon (1996), Peter N"uchter (1996), -%% Juergen von Hagen (2000), and Michael Shell (2001-2005) +%% Juergen von Hagen (2000), and Michael Shell (2001-2007) %% %% -%% Copyright (c) 1993-2005 by Gerry Murray, Silvano Balemi, -%% Jon Dixion, Peter N"uchter, -%% Juergen von Hagen and Michael Shell +%% Copyright (c) 1993-2000 by Gerry Murray, Silvano Balemi, +%% Jon Dixon, Peter N"uchter, +%% Juergen von Hagen +%% and +%% Copyright (c) 2001-2007 by Michael Shell %% -%% Current maintainer (V1.3 to V1.6): Michael Shell -%% mshell@ece.gatech.edu -%% See the CTAN website above +%% Current maintainer (V1.3 to V1.7): Michael Shell +%% See: +%% http://www.michaelshell.org/ %% for current contact information. %% %% 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! +%% 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. -%% +%% 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 comments 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. -%% Retain the contribution notices and credits. +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex, +%% bare_conf.tex, bare_jrnl.tex, bare_jrnl_compsoc.tex %% %% Major changes to the user interface should be indicated by an %% increase in the version numbers. If a version is a beta, it will @@ -70,11 +72,11 @@ %% \IEEEtransversionmajor and \IEEEtransversionminor must reflect the %% correct version information. %% The changes should also be documented via source comments. -%%********************************************************************** +%%************************************************************************* %% % % Available class options -% (e.g., \documentclass[10pt,conference]{IEEEtran} +% e.g., \documentclass[10pt,conference]{IEEEtran} % % *** choose only one from each category *** % @@ -124,7 +126,7 @@ % important to dvips users. Fix config.ps, config.pdf, or ~/.dvipsrc for % dvips, or use the dvips -t papersize option instead as needed. See the % testflow documentation -% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/testflow +% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/testflow % for more details on dvips paper size configuration. % The default is letterpaper. % @@ -139,6 +141,20 @@ % column mode is usually used only with draft papers. % The default is twocolumn. % +% compsoc +% Use the format of the IEEE Computer Society. +% +% romanappendices +% Use the "Appendix I" convention when numbering appendices. IEEEtran.cls +% now defaults to Alpha "Appendix A" convention - the opposite of what +% v1.6b and earlier did. +% +% captionsoff +% disables the display of the figure/table captions. Some IEEE journals +% request that captions be removed and figures/tables be put on pages +% of their own at the end of an initial paper submission. The endfloat +% package can be used with this class option to achieve this format. +% % nofonttune % turns off tuning of the font interword spacing. Maybe useful to those % not using the standard Times fonts or for those who have already "tuned" @@ -146,555 +162,93 @@ % The default is to enable IEEEtran to tune font parameters. % % -%******* -% 09/2005 V1.6c (MDS) changes: -% -% 1) Changed endfigure/endfloat definitions so as not to cause problems with -% preview-LaTeX and other packages. Thanks to Stephan Heuel and David -% Kastrup for reporting this problem. -% -% -%******* -% 11/2002 V1.6b (MDS) changes: -% -% 1) Fixed problem with figure captions when using hyperref. Thanks to -% Leandro Barajas and Michael Bassetti for reporting this bug. -% -% 2) Provide a fake nabib command \NAT@parse so that hyperref will not -% interfere with the operation of cite.sty. However, as a result citation -% numbers will not be hyperlinked. Also, natbib will not be able to work -% with IEEEtran. However, this is perhaps the best solution until cite.sty -% and hyperref.sty are able to co-exist with each other. -% It easy enough to override the fake command via: -% \makeatletter -% \let\NAT@parse\undefined -% \makeatother -% -% 3) Revised font selection method so as not to have problems when used -% with setspace.sty. Thanks to Zhang Yan for reporting this bug. -% -% 4) Added \special to feed papersize to dvips. Thanks to Moritz Borgmann -% for suggesting this feature. -% -% 5) In addition to the IEEE IED lists, the original IED style list -% environments (as is done in article.cls) are now provided as -% LaTeXitemize, LaTeXenumerate, and LaTeXdescription. Also, users can -% now redefine \makelabel within IEEE IED list controls. There may be -% some use for this in specialized applications. Thanks to Eli Barzilay -% for suggesting this feature. -% -% 6) \table* now defaults to \footnotesize text like \table. -% -% 7) The draft modes now no longer force a pagebreak after the title. -% Thanks to Christian Peel for suggesting this change. -% -% 8) New draftclsnofoot mode is like draftcls, but does not display the -% date and the word "DRAFT" at the foot of the page. Thanks to -% Christian Peel for suggesting this feature. -% -% 9) New peerreview and peerreviewca modes with \IEEEpeerreviewmaketitle -% command allows for a "cover" titlepage for anonymous peer review. -% Except for the cover titlepage, peerreview is much like journal mode. -% peerreviewca is like peerreview, but allows the author names to be -% entered and formatted as under conference mode so that author -% affiliations and contact information can be easily seen on the cover -% page. Thanks to Eric Benedict for suggesting this feature. -% -% -%******* -% 7/2002 V1.6 (MDS) changes: -% -% 1) Added conference mode via conference option. Defaults to the traditional -% journal mode. i.e., \documentclass[conference]{IEEEtran} -% -% 2) Added support for A4 paper via new a4paper option. Pdflatex's paper size -% lengths are now automatically set to the proper paper size being used. -% -% 3) Revised margins again. Page text is now horizontally centered. -% Conference mode increases the top and bottom margins with the bottom -% margin being slightly larger. For A4 paper, the top margin and text -% typesetting will not change from those of US letter paper, but the side -% margins will be smaller and the bottom margin will be larger than that of -% US letter. All per IEEE specs. -% -% 4) Fixed footnote line spacing anomaly in draft mode. -% Thanks to Alberto Rodriguez for reporting this bug. -% -% Also, slightly revised footnote and \thanks note spacing. -% Set \interfootnotelinepenalty=10000 to prevent LaTeX -% from breaking footnotes across multiple pages or columns. -% -% 5) Fixed bug that caused overwritten photo areas and sometimes anomalous -% spacing when a new paragraph was started within a biography. Also, -% the presence of \par's, new lines or spaces at the beginning of -% abstract, keywords, biography, or biographynophoto will no longer -% affect the first word spacing. -% Thanks to Eric Durant for reporting this bug. -% -% The biography environment now does a better job in preventing -% a biography photo area from being broken across pages or columns. -% -% 6) Fixed whitespace between \cite entries bug. i.e., -% both \cite{einstein24, knuth84} and \cite{einstein24,knuth84} -% are now valid. \cite is now a robust command as it should be. -% IEEEtran now no longer defines the old non-standard \shortcite or -% \citename. -% -% The base IEEEtran.cls does not sort citation numbers or produce ranges -% for three or more consecutive numbers. However, V1.6 of IEEEtran.cls -% now pre-defines the following format control macros to facilitate easy -% use with Donald Arseneau's cite.sty package (tested with cite.sty V3.9): -% -% \def\citepunct{], [} -% \def\citedash{]--[} -% -% cite.sty is standard on most LaTeX sytems and can be obtained from -% www.ctan.org. Thanks to Donald Arseneau for creating cite.sty, providing -% the required format arguments to produce the IEEE style. and -% designing a cite interface capable of handling the IEEE citation -% style. -% -% Note: Historically, IEEE has wanted authors to "hardcode" symbolics. -% (i.e., replace all \cite{} with fixed [x]). However, it now seems that -% most electronic manuscript submissions to IEEE are in .pdf format, and -% as such, do not require the LaTeX document reference numbers to be hard -% coded. If an author is required to submit actual LaTeX files, I do -% recommend that the bibliography file (.bbl) be copied into the .tex -% document and the \bibliographystyle{} and \bibliography{} commands be -% commented out so that the .tex file does not depend on (potentially -% lengthy and/or confidential) external bibliography database files. -% -% 7) Adjusted some spacing parameters. The spacing above and below equations -% has been revised (to a typical IEEE value). \jot now has a decent value. -% The title text is now exactly 24pt. (On a related note, \fontsubfuzz has -% been increased to 0.9pt to prevent annoying font substitution warnings -% when using the Computer Modern fonts that use the 24.88pt size.) -% In V1.6, \small is now 8.5pt in 9pt docs because \footnotesize is 8pt. -% For 9pt docs, you should probably go ahead and use \footnotesize when you -% need text a little smaller than \normalsize. -% The interword spacing has been adjusted to be extremely close to that -% which IEEE uses. You can use a new class option, nofonttune, if you need -% to disable the adjusting of the interword spacing. This adjustment and -% an increase to \hyphenpenalty have greatly reduced the amount of -% hyphenation in a typical paper. -% The baselineskip for the normalsize fonts has been tweaked to reduce -% underfull vboxes on journal paper columns with only paragraphs. -% Conference mode does the same thing but by also tweaking the \textheight -% slightly off 9.25in (IEEE spec) to ensure an integer number of lines per -% page. Draft (also draftcls) mode has also been revised to reduce -% underfull vbox warnings. However, draft mode can still produce underfull -% vboxes (a direct result of the increase in line spacing and margins) if: -% A non-normalsize font occupies an entire column (abstract and index terms -% take up a whole column by themselves); or the beginning of a section -% occurs near the end of a column and cannot be squeezed into the bottom, -% etc. This is normal as draft mode's liberal spacings cannot guarantee -% perfect formatting. -% -% 8) New biographynophoto environment for biographies without photos. -% Usage: -% -% \begin{biographynophoto}{author name} -% biography text here -% \end{biographynophoto} -% -% 9) Fixed bug that produced multiple table of contents entries for papers -% with more than one biography. Also, biography now works better with -% hyperref. -% -%10) New \sublargesize font size command provides for 11pt text in a 10pt -% document. (Needed for things like author names.) For documents not -% using 10pt normal size text, \sublargesize is currently identical -% to \large. -% -%11) New \IEEEmembership command to provide correct font to indicate IEEE -% membership for journal papers. -% -%12) Fixed author name line overflow problem when in journal mode. This -% problem had been introduced in V1.5 in my rush to get \and to work for -% conferences. \and is unneeded (and invalid) in journal mode. For -% conference mode, \and will work as expected and features an optional -% spacing argument. i.e., \and[\hspace{5ex}] -% \and will default (recommended) to using \hfill which will result in -% equal spacing between author blocks. -% -%13) New \authorblockN, \authorblockA and \authorrefmark commands to -% facilitate easy formatting of author names, affiliations and cross -% reference symbols, respectively, when in conference mode. These -% three commands are to be used only for conference papers. -% In conference mode, \author text is placed within a modified tabular -% environment (somewhat like article.cls). So, within \author in conference -% mode, you should not try to enclose multiple \\ within an environment or -% command (other than the argument braces of \authorblockX{}). For example: -% -% \author{\authorblockN{{John Doe \\ Jane Doe}}} % WRONG! -% -% will generate an error. -% -% Note that font size/attribute changes will now persists across \\ within -% \author. (But, not across author blocks nor across \and.) -% However, with the new commands, there should be no need to alter any -% font attributes within \author. All text sizing and spacing within -% \author{} and the author block commands is per IEEE specs for both -% conference and journal modes. (In conference mode, the author names -% are only very slightly larger than the affiliations which are in normal -% size.) For specialized applications you can alter the justification of -% author lines by placing \hfill at the beginning or at the end of a line. -% The interline spacing within \author is determined by the font attributes -% that are in effect at the end of each line within author. -% -%14) Because the titles and author name blocks use different font sizes/styles -% from the main text, it was possible that two column papers with titles that -% span both columns (standard journal and conference papers, but not technotes) -% with certain numbers of lines for the title and authors' name/affiliations -% can cause underfull vbox problems (paragraphs with large spacings between -% them) in the second column of the main text on the title page - if there were -% no new sections, equations or figures in this column (they would provide some -% needed rubber spacing). The use of things like special paper notices and -% publisher ID marks also affected this issue. The problem could not happen -% in the first column because the first column has a rubber length around the -% heading of the first section. Furthermore, problems seldom occurred on pages -% after the first as the margins had been chosen not to cause it with the popular -% font sizes. Rubber lengths after the author names would not fix this problem. -% Auto-calculating a "good" spacing after the title is a tad difficult -% to do in LaTeX. However, I am pleased to report that V1.6 has this new -% capability - "dynamically determined title spacing". IEEEtran will now -% measure the height of all the title and author text in \maketitle -% and then calculate a rigid (non-rubber) spacer to follow that meets -% IEEE specs and also produces a \textheight on the title page that ensures -% an integer number of normalsized lines on the rest of the page. Single -% column papers, and two column papers with the title entirely in column -% one (technotes) do not need dynamic rigid spacing and therefore use -% standard rubber spacers. -% -% Note: This problem can still crop up if you use floats that span both -% columns (i.e., figure*). It has been a decade+ long limitation with LaTeX -% that the stretchable portion of \dbltextfloatsep is ignored. -% If you get a problem with underful vbox warnings and paragraphs that "are -% pulled apart" on page with a float that spans both columns, tweak the -% space between the figure and the main text a little: -% -% \vskip 5pt -% \end{figure*} -% -% If you can't find a value that fixes both columns, you are going to -% have to put a rubber spacer somewhere in one or both of the columns. -% -%15) Because of change #14 above, those of you using \pubid will, as of V1.6, -% have to place it *before* \maketitle in order for it have the intended -% affect. The dynamic spacer algorithm must see if you are using \pubid when -% \maketitle is called. \pubidadjcol works as before except that it now -% has additional logic to prevent it from doing anything if \pubid was never -% called. -% -%16) In some unusual, non-standard circumstances, an author may desire to -% alter the spacing after the title area or put some unusual text above -% the main text. For instance, to stop a bad break when a new section -% occurs right at the start of the second page. This is difficult to do -% when the title spans both columns of two column text since LaTeX treats -% such title text as a type of float. A new command, \IEEEaftertitletext{}, -% gives access to the end of that produced by \maketitle. The types of -% things that can go into \IEEEaftertitletext are the same as those into -% \twocolumn[] - no \par, but \\ are OK. There is no restriction on the -% range of spacings that can be used. -% i.e., \IEEEaftertitletext{\vspace{-100pt}} will push the main text well -% into the title and \IEEEaftertitletext{\vspace{100pt}} will push it far down -% the page. You will have complete control. If used, place -% \IEEEaftertitletext{} before \maketitle like \title and \author. IEEEtran's -% dynamic title spacing intentionally does not take into consideration the -% contents of \IEEEaftertitletext{} when determining the spacer after the title -% area (otherwise it would try to second guess you), so the user will have -% manually adjust the height of the contents in \IEEEaftertitletext{} if the -% problem discussed in #14 above should develop. A safe bet is to keep -% the height of contents of \IEEEaftertitletext{} to integer multiples of -% \baselineskip, i.e., \IEEEaftertitletext{\vspace{-1\baselineskip}} -% -% Because it can result in an IEEE nonstandard format, the use of -% \IEEEaftertitletext{} is discouraged. Possible uses include (1) the use of -% IEEEtran for non-IEEE work with different title spacing requirements, -% or (2) as an emergency manual override if a problem should develop in -% IEEEtran's automatic spacing algorithm. -% -%17) completely rewritten \PARstart to: -% a. no longer have problems when the user begins an environment -% within the paragraph that uses \PARstart. -% b. auto-detect and use the current font family -% c. revise handling of the space at the end of the first word so that -% interword glue will now work as normal. -% d. produce correctly aligned edges for the (two) indented lines. -% -% Because the current font family is now auto-detected, there is no -% longer any need for \CMPARstart - it is now the same as \PARstart. -% -%18) There is now a new "open box" Q.E.D. symbol (\QEDopen) as well as the -% original default (\QED) closed one (\QEDclosed). Some journals use -% the open form. To make \proof use the open form, just do: -% \renewcommand{\QED}{\QEDopen} -% -%19) Additional \typeout{} notices added to warn the user when unusual -% settings/commands are detected or as reminders to avoid common errors -% when in conference mode. -% -%20) IEEEtran now provides \abovecaptionskip and \belowcaptionskip skip -% registers because article class provides them and some packages -% may error if they are missing. However, IEEEtran only uses -% \abovecaptionskip for actual caption spacing. -% -%21) Fixed bug that prevented users from redefining the section headings -% to use arabic digits. Thanks to Richardt H. Wilkinson for reporting -% this bug. -% -%22) Code cleaned up to be more efficient with the use of TeX registers; -% removed some old LaTeX 2.09 code; revised option processing to -% LaTeX2e standard; eliminated unwanted "phantom" spaces in some -% environments. -% -%23) Added new \IEEEeqnarray, \IEEEeqnarraybox, \IEEEeqnarrayboxm and -% \IEEEeqnarrayboxt environments to provide superior alternatives to the -% standard LaTeX \eqnarray, \array and \tabular. Additional new support -% commands include \IEEEeqnarraydecl, \IEEEeqnarrayboxdecl, -% \IEEEeqnarraymathstyle, \IEEEeqnarraytextstyle, \yesnumber. \IEEEnonumber, -% \IEEEyesnumber, \IEEEyessubnumber, \IEEEeqnarraynumspace, \IEEEeqnarraymulticol, -% \IEEEeqnarrayomit, \IEEEeqnarraydefcol, \IEEEeqnarraydefcolsep, \IEEEeqnarrayseprow, -% \IEEEeqnarrayseprowcut, \IEEEeqnarrayrulerow, \IEEEeqnarraydblrulerowcut, -% \IEEEeqnarraystrutmode, \IEEEeqnarraystrutsize, \IEEEeqnarraystrutsizeadd, -% \IEEEvisiblestrutstrue, \IEEEvisiblestrutsfalse and \IEEEstrut. -% These are documented in the user's guide. -% -%24) V1.6 changed back to using () around theorem names (which are also now in italics) -% as this is what IEEE is using now. Thanks to Christian Peel for reporting this. -% Also, when section numbers are used as the first part of theorem numbers, display -% them in arabic, not Roman. -% -%25) New \IEEEtriggeratref{X} command allows a page break to be triggered just -% before the given reference number "X". This is most useful when balancing -% the columns on the last page and a \newpage between references is desired. -% \IEEEtriggercmd{X} allows a different command to be executed at trigger. -% -% -%******* -% 7/2001 V1.5 (MDS) changes: -% -% -% 1) Fixed \and within \author bug: (! Misplaced \crcr. \endtabular ->\crcr) -% 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 if scanning/cropping your photos. -% Note the need for the extra set of enclosing braces around the -% \includegraphics. Without it, The LaTeX parser may get confused when it -% sees the \includegraphics's brackets within the biography's optional -% argument. Due to the length of the \includegraphics command, you may wish -% to define your own shorthand form of it. I have not done so with IEEEtran -% to prevent dependence on the graphicx package. 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 type of 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: -% +%---------- +% Available CLASSINPUTs provided (all are macros unless otherwise noted): +% \CLASSINPUTbaselinestretch +% \CLASSINPUTinnersidemargin +% \CLASSINPUToutersidemargin +% \CLASSINPUTtoptextmargin +% \CLASSINPUTbottomtextmargin % -% 1) New "draftcls" and "final" options have been added. -% Thanks to Dragan Cvetkovic for suggesting an option like draftcls. -% -% 2) Documentation changes to reflect the fact that this IEEEtran.cls -% is no longer beta test. +% Available CLASSINFOs provided: +% \ifCLASSINFOpdf (TeX if conditional) +% \CLASSINFOpaperwidth (macro) +% \CLASSINFOpaperheight (macro) +% \CLASSINFOnormalsizebaselineskip (length) +% \CLASSINFOnormalsizeunitybaselineskip (length) % -% 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. V1.6: This is already done for you when -% using the conference mode. -% -% -% -%******* -% 1/2001 V1.3 -% Michael Shell (MDS) made extensive changes and additions: -% -% -% 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.) -% -% 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. \footnotesize is -% now 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. -% -% 7) Theorem environment changed, (but for V1.6, back to the old way, sigh). -% -% 8) Figure captions adjusted: IEEE left (not center) justifies -% figure captions (for journals) and does not indent figure caption text. -% -% 9) 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. -% -%10) Now uses "index terms" now as a heading instead of "keywords". -% Furthermore, the "index terms" and "abstract" headings are in bold -% italic. This is how IEEE does things. -% -%11) \thebibliography and \biography now put entries into -% the table of contents for you. -% -% ******* -% -% -% -% -% -% ******* -% 9/2000 (JVH) changes: (now designated as V1.2) -% -% 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. -% ******* -% -% -% -% -% -% ******* -% -% 1996 (JWD) LaTeX2e version: (now designated as V1.1) -% -% 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/ -% -%******* -% -% -% -% -% -%******* -% -% 30-August-1993 original LaTeX 2.09 version (IEEEtran.sty), -% (now designated as V1.0): -% -% by Gerry Murray and Silvano Balemi -% Automatic Control Lab, ETH Zurich, Switzerland -% balemi@aut.ee.ethz.ch -% -%******* -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% -% -% -% -\ProvidesClass{IEEEtran}[2005/09/13 revision V1.6c by Michael Shell] +% Available CLASSOPTIONs provided: +% all class option flags (TeX if conditionals) unless otherwise noted, +% e.g., \ifCLASSOPTIONcaptionsoff +% point size options provided as a single macro: +% \CLASSOPTIONpt +% which will be defined as 9, 10, 11, or 12 depending on the document's +% normalsize point size. +% also, class option peerreviewca implies the use of class option peerreview +% and classoption draft implies the use of class option draftcls + + + + + +\ProvidesClass{IEEEtran}[2007/01/11 V1.7 by Michael Shell] \typeout{-- See the "IEEEtran_HOWTO" manual for usage information.} -\typeout{-- The source comments contain changelog notes.} +\typeout{-- http://www.michaelshell.org/tex/ieeetran/} \NeedsTeXFormat{LaTeX2e} -% define new needed flags to indicate document options -% and set a few "failsafe" defaults -\newif\if@twocolumnmode \global\@twocolumnmodetrue -\newif\if@draftversion \global\@draftversionfalse -\newif\if@draftclsmode \global\@draftclsmodefalse -\newif\if@draftclsmodefoot \global\@draftclsmodefootfalse -\newif\if@confmode \global\@confmodefalse -\newif\if@peerreviewoption \global\@peerreviewoptionfalse -\newif\if@peerreviewcaoption \global\@peerreviewcaoptionfalse +% 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{7} + +% These do nothing, but provide them like in article.cls +\newif\if@restonecol +\newif\if@titlepage + + +% class option conditionals +\newif\ifCLASSOPTIONonecolumn \CLASSOPTIONonecolumnfalse +\newif\ifCLASSOPTIONtwocolumn \CLASSOPTIONtwocolumntrue + +\newif\ifCLASSOPTIONoneside \CLASSOPTIONonesidetrue +\newif\ifCLASSOPTIONtwoside \CLASSOPTIONtwosidefalse + +\newif\ifCLASSOPTIONfinal \CLASSOPTIONfinaltrue +\newif\ifCLASSOPTIONdraft \CLASSOPTIONdraftfalse +\newif\ifCLASSOPTIONdraftcls \CLASSOPTIONdraftclsfalse +\newif\ifCLASSOPTIONdraftclsnofoot \CLASSOPTIONdraftclsnofootfalse + +\newif\ifCLASSOPTIONpeerreview \CLASSOPTIONpeerreviewfalse +\newif\ifCLASSOPTIONpeerreviewca \CLASSOPTIONpeerreviewcafalse -% we HAVE to turn off technote as there is no -% "not a tech note" option -\newif\if@technote \global\@technotefalse +\newif\ifCLASSOPTIONjournal \CLASSOPTIONjournaltrue +\newif\ifCLASSOPTIONconference \CLASSOPTIONconferencefalse +\newif\ifCLASSOPTIONtechnote \CLASSOPTIONtechnotefalse + +\newif\ifCLASSOPTIONnofonttune \CLASSOPTIONnofonttunefalse + +\newif\ifCLASSOPTIONcaptionsoff \CLASSOPTIONcaptionsofffalse + +\newif\ifCLASSOPTIONcompsoc \CLASSOPTIONcompsocfalse + +\newif\ifCLASSOPTIONromanappendices \CLASSOPTIONromanappendicesfalse + + +% class info conditionals + +% indicates if pdf (via pdflatex) output +\newif\ifCLASSINFOpdf \CLASSINFOpdffalse + + +% V1.6b internal flag to show if using a4paper +\newif\if@IEEEusingAfourpaper \@IEEEusingAfourpaperfalse -% V1.6 we allow the user to control whether or not the -% font interword spacings are tuned to be more like -% that of IEEE. The default is to tune things. -\newif\if@fonttunesettings \global\@fonttunesettingstrue -% V1.6b flag to show if using a4paper -\newif\if@IEEEusingAfourpaper \global\@IEEEusingAfourpaperfalse % IEEEtran class scratch pad registers % dimen @@ -706,92 +260,119 @@ % token list \newtoks\@IEEEtrantmptoksA -% we use \@IEEEptsize so that we can ID the point size (even for 9pt docs) +% we use \CLASSOPTIONpt so that we can ID the point size (even for 9pt docs) % as well as LaTeX's \@ptsize to retain some compatability with some % external packages -\def\@IEEEptsize{10} \def\@ptsize{0} % LaTeX does not support 9pt, so we set \@ptsize to 0 - same as that of 10pt -\DeclareOption{9pt}{\def\@IEEEptsize{9}\def\@ptsize{0}} -\DeclareOption{10pt}{\def\@IEEEptsize{10}\def\@ptsize{0}} -\DeclareOption{11pt}{\def\@IEEEptsize{11}\def\@ptsize{1}} -\DeclareOption{12pt}{\def\@IEEEptsize{12}\def\@ptsize{2}} +\DeclareOption{9pt}{\def\CLASSOPTIONpt{9}\def\@ptsize{0}} +\DeclareOption{10pt}{\def\CLASSOPTIONpt{10}\def\@ptsize{0}} +\DeclareOption{11pt}{\def\CLASSOPTIONpt{11}\def\@ptsize{1}} +\DeclareOption{12pt}{\def\CLASSOPTIONpt{12}\def\@ptsize{2}} + -% \@IEEEmarginE is the side margin for equal margins -% \@IEEEmarginW is the wider side margin when the margins are not equal -% NOTE: BOTH of the above margins are as they appear -% on the paper - they are NOT offset by 1 inch \DeclareOption{letterpaper}{\setlength{\paperheight}{11in}% \setlength{\paperwidth}{8.5in}% - \def\@IEEEmarginE{0.680in}% - \def\@IEEEmarginW{0.775in}% - \@IEEEusingAfourpaperfalse} + \@IEEEusingAfourpaperfalse + \def\CLASSOPTIONpaper{letter}% + \def\CLASSINFOpaperwidth{8.5in}% + \def\CLASSINFOpaperheight{11in}} \DeclareOption{a4paper}{\setlength{\paperheight}{297mm}% \setlength{\paperwidth}{210mm}% - \def\@IEEEmarginE{14.32mm}% - \def\@IEEEmarginW{17mm} - \@IEEEusingAfourpapertrue} + \@IEEEusingAfourpapertrue + \def\CLASSOPTIONpaper{a4}% + \def\CLASSINFOpaperwidth{210mm}% + \def\CLASSINFOpaperheight{297mm}} -\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} -\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse + \CLASSOPTIONonesidetrue\CLASSOPTIONtwosidefalse} +\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue + \CLASSOPTIONtwosidetrue\CLASSOPTIONonesidefalse} -\DeclareOption{onecolumn}{\global\@twocolumnmodefalse} -% the file twocolumn.sty is not read as it changes \textwidth. -\DeclareOption{twocolumn}{\global\@twocolumnmodetrue} +\DeclareOption{onecolumn}{\@twocolumnfalse + \CLASSOPTIONonecolumntrue\CLASSOPTIONtwocolumnfalse} +\DeclareOption{twocolumn}{\@twocolumntrue + \CLASSOPTIONtwocolumntrue\CLASSOPTIONonecolumnfalse} % If the user selects draft, then this class AND any packages % will go into draft mode. -\DeclareOption{draft}{\global\@draftversiontrue \global\@draftclsmodetrue -\global\@draftclsmodefoottrue} +\DeclareOption{draft}{\CLASSOPTIONdrafttrue\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} % draftcls is for a draft mode which will not affect any packages % used by the document. -\DeclareOption{draftcls}{\global\@draftversionfalse \global\@draftclsmodetrue -\global\@draftclsmodefoottrue} +\DeclareOption{draftcls}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} % draftclsnofoot is like draftcls, but without the footer. -\DeclareOption{draftclsnofoot}{\global\@draftversionfalse \global\@draftclsmodetrue -\global\@draftclsmodefootfalse} -% we provide a final option just for completeness (article.cls has one) -\DeclareOption{final}{\global\@draftversionfalse \global\@draftclsmodefalse -\global\@draftclsmodefootfalse} +\DeclareOption{draftclsnofoot}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofoottrue} +\DeclareOption{final}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclsfalse + \CLASSOPTIONdraftclsnofootfalse} + +\DeclareOption{journal}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournaltrue\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{conference}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencetrue\CLASSOPTIONtechnotefalse} + +\DeclareOption{technote}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotetrue} -\DeclareOption{journal}{\global\@peerreviewoptionfalse \global\@peerreviewcaoptionfalse -\global\@confmodefalse \global\@technotefalse} +\DeclareOption{peerreview}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} -\DeclareOption{conference}{\global\@peerreviewoptionfalse \global\@peerreviewcaoptionfalse -\global\@confmodetrue \global\@technotefalse} +\DeclareOption{peerreviewca}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcatrue + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} -\DeclareOption{technote}{\global\@peerreviewoptionfalse \global\@peerreviewcaoptionfalse -\global\@confmodefalse \global\@technotetrue} +\DeclareOption{nofonttune}{\CLASSOPTIONnofonttunetrue} -\DeclareOption{peerreview}{\global\@peerreviewoptiontrue \global\@peerreviewcaoptionfalse -\global\@confmodefalse \global\@technotefalse} +\DeclareOption{captionsoff}{\CLASSOPTIONcaptionsofftrue} -\DeclareOption{peerreviewca}{\global\@peerreviewoptiontrue \global\@peerreviewcaoptiontrue -\global\@confmodefalse \global\@technotefalse} +\DeclareOption{compsoc}{\CLASSOPTIONcompsoctrue} -\DeclareOption{nofonttune}{\global\@fonttunesettingsfalse} +\DeclareOption{romanappendices}{\CLASSOPTIONromanappendicestrue} -% IEEE uses Times font, so we'll default to times. +% default to US letter paper, 10pt, twocolumn, one sided, final, journal +\ExecuteOptions{letterpaper,10pt,twocolumn,oneside,final,journal} +% overrride these defaults per user requests +\ProcessOptions + + + +% Computer Society conditional execution command +\long\def\@IEEEcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\relax#1\relax\fi\relax} +% inverse +\long\def\@IEEEnotcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\else\relax#1\relax\fi\relax} +% compsoc conference +\long\def\@IEEEcompsocconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\relax#1\relax\fi\fi\relax} +% compsoc not conference +\long\def\@IEEEcompsocnotconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\else\relax#1\relax\fi\fi\relax} + + +% IEEE uses Times Roman font, so we'll default to Times. % These three commands make up the entire times.sty package. \renewcommand{\sfdefault}{phv} \renewcommand{\rmdefault}{ptm} \renewcommand{\ttdefault}{pcr} -% enable Times now - so that all class options can see the correct font families + +\@IEEEcompsoconly{\typeout{-- Using IEEE Computer Society mode.}} + +% V1.7 compsoc nonconference papers, use Palatino/Palladio as the main text font, +% not Times Roman. +\@IEEEcompsocnotconfonly{\renewcommand{\rmdefault}{ppl}} + +% enable Times/Palatino main text font \normalfont\selectfont -% default to US letter paper, 10pt, twocolumn, one sided, final, journal -\ExecuteOptions{letterpaper,10pt,twocolumn,oneside,final,journal} -% overrride these defaults per user requests -\ProcessOptions -% we can send console reminder messages to the user here -\AtEndDocument{\if@confmode% -\typeout{}% + + +% V1.7 conference notice message hook +\def\@IEEEconsolenoticeconference{\typeout{}% \typeout{** Conference Paper **}% \typeout{Before submitting the final camera ready copy, remember to:}% \typeout{}% @@ -800,33 +381,50 @@ \typeout{}% \typeout{ 2. Ensure that any PostScript and/or PDF output post-processing}% \typeout{ uses only Type 1 fonts and that every step in the generation}% -\typeout{ process uses the US letter (8.5in X 11in) paper size.}% -\typeout{}% -\fi} +\typeout{ process uses the appropriate paper size.}% +\typeout{}} + + +% we can send console reminder messages to the user here +\AtEndDocument{\ifCLASSOPTIONconference\@IEEEconsolenoticeconference\fi} % warn about the use of single column other than for draft mode -\if@twocolumnmode\else% - \if@draftclsmode\else% - \typeout{** ATTENTION: Single column mode is not normally used with IEEE publications.}% +\if@twocolumn\else% + \ifCLASSOPTIONdraftcls\else% + \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}% \fi% \fi -% V1.6, if the user is using pdflatex, go ahead and set the output paper size. -% Otherwise, we declare the papersize via a \special for dvips. -% We keep the tests within braces because otherwise, if not using pdflatex, -% \pdfpageheight and \pdfpagewidth will be set to \relax - possibly affecting -% similar tests of other packages. -{\@ifundefined{pdfpageheight}{% not using pdflatex, setup paper size for dvips -\if@IEEEusingAfourpaper -\special{papersize=210mm,297mm}% +% V1.7 improved paper size setting code. +% Set pdfpage and dvips paper sizes. Conditional tests are similar to that +% of ifpdf.sty. Retain within {} to ensure tested macros are never altered, +% even if only effect is to set them to \relax. +% if \pdfoutput is undefined or equal to relax, output a dvips special +{\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}}{% +% pdfoutput is defined and not equal to \relax +% check for pdfpageheight existence just in case someone sets pdfoutput +% under non-pdflatex. If exists, set them regardless of value of \pdfoutput. +\@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth +\global\pdfpageheight\paperheight}% +% if using \pdfoutput=0 under pdflatex, send dvips papersize special +\ifcase\pdfoutput +\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}% \else -\special{papersize=8.5in,11in}% -\fi}% -{% using pdftex, set paper size for pdftex -\global\pdfpageheight\paperheight\global\pdfpagewidth\paperwidth}} +% we are using pdf output, set CLASSINFOpdf flag +\global\CLASSINFOpdftrue +\fi}} +% let the user know the selected papersize +\typeout{-- Using \CLASSINFOpaperwidth\space x \CLASSINFOpaperheight\space +(\CLASSOPTIONpaper)\space paper.} + +\ifCLASSINFOpdf +\typeout{-- Using PDF output.} +\else +\typeout{-- Using DVI output.} +\fi % The idea hinted here is for LaTeX to generate markleft{} and markright{} @@ -863,13 +461,14 @@ % we need to store the nominal baselineskip for the given font size % in case baselinestretch ever changes. -\newskip\@IEEEnormalsizefontbaselineskip -\@IEEEnormalsizefontbaselineskip\baselineskip +% this is a dimen, so it will not hold stretch or shrink +\newdimen\@IEEEnormalsizeunitybaselineskip +\@IEEEnormalsizeunitybaselineskip\baselineskip -\ifx\@IEEEptsize\@IEEEptsizenine +\ifx\CLASSOPTIONpt\@IEEEptsizenine \typeout{-- This is a 9 point document.} \def\normalsize{\@setfontsize{\normalsize}{9}{11.0476pt}}% -\setlength{\@IEEEnormalsizefontbaselineskip}{11.0476pt}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.0476pt}% \normalsize \abovedisplayskip 1.5ex plus3pt minus1pt% \belowdisplayskip \abovedisplayskip% @@ -890,10 +489,10 @@ % Check if we have selected 10 points -\ifx\@IEEEptsize\@IEEEptsizeten +\ifx\CLASSOPTIONpt\@IEEEptsizeten \typeout{-- This is a 10 point document.} \def\normalsize{\@setfontsize{\normalsize}{10}{12.00pt}}% -\setlength{\@IEEEnormalsizefontbaselineskip}{12pt}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{12pt}% \normalsize \abovedisplayskip 1.5ex plus4pt minus2pt% \belowdisplayskip \abovedisplayskip% @@ -914,10 +513,10 @@ % Check if we have selected 11 points -\ifx\@IEEEptsize\@IEEEptsizeeleven +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven \typeout{-- This is an 11 point document.} \def\normalsize{\@setfontsize{\normalsize}{11}{13.3846pt}}% -\setlength{\@IEEEnormalsizefontbaselineskip}{13.3846pt}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.3846pt}% \normalsize \abovedisplayskip 1.5ex plus5pt minus3pt% \belowdisplayskip \abovedisplayskip% @@ -938,10 +537,10 @@ % Check if we have selected 12 points -\ifx\@IEEEptsize\@IEEEptsizetwelve +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve \typeout{-- This is a 12 point document.} \def\normalsize{\@setfontsize{\normalsize}{12}{13.92pt}}% -\setlength{\@IEEEnormalsizefontbaselineskip}{13.92pt}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.92pt}% \normalsize \abovedisplayskip 1.5ex plus6pt minus4pt% \belowdisplayskip \abovedisplayskip% @@ -970,45 +569,70 @@ % warn the user in case they forget to use the 9pt option with % technote -\if@technote% - \ifx\@IEEEptsize\@IEEEptsizenine\else% +\ifCLASSOPTIONtechnote% + \ifx\CLASSOPTIONpt\@IEEEptsizenine\else% \typeout{** ATTENTION: Technotes are normally 9pt documents.}% \fi% \fi -% set \baselinestretch +% V1.7 +% Improved \textunderscore to provide a much better fake _ when used with +% OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use +% available true _ glyph for those two typewriter fonts. +\def\@IEEEstringptm{ptm} % Times Roman family +\def\@IEEEstringppl{ppl} % Palatino Roman family +\def\@IEEEstringphv{phv} % Helvetica Sans Serif family +\def\@IEEEstringpcr{pcr} % Courier typewriter family +\def\@IEEEstringcmtt{cmtt} % Computer Modern typewriter family +\DeclareTextCommandDefault{\textunderscore}{\leavevmode +\ifx\f@family\@IEEEstringpcr\string_\else +\ifx\f@family\@IEEEstringcmtt\string_\else +\ifx\f@family\@IEEEstringptm\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringppl\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringphv\kern -0.03em\vbox{\hrule\@width 0.62em\@height 0.52pt\kern -0.33ex}\kern -0.03em\else +\kern 0.09em\vbox{\hrule\@width 0.6em\@height 0.44pt\kern -0.63pt\kern -0.42ex}\kern 0.09em\fi\fi\fi\fi\fi\relax} + + + + +% set the default \baselinestretch \def\baselinestretch{1} -\if@draftclsmode% draft mode uses larger than normal spacing -\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 +\ifCLASSOPTIONdraftcls + \def\baselinestretch{1.5}% default baselinestretch for draft modes +\fi + + +% process CLASSINPUT baselinestretch +\ifx\CLASSINPUTbaselinestretch\@IEEEundefined +\else + \edef\baselinestretch{\CLASSINPUTbaselinestretch} % user CLASSINPUT override + \typeout{** ATTENTION: Overriding \string\baselinestretch\space to + \baselinestretch\space via \string\CLASSINPUT.} +\fi \normalsize % make \baselinestretch take affect -% V1.6 + + % store the normalsize baselineskip -\newskip\normalsizebaselineskip -\normalsizebaselineskip=\baselineskip\relax +\newdimen\CLASSINFOnormalsizebaselineskip +\CLASSINFOnormalsizebaselineskip=\baselineskip\relax +% and the normalsize unity (baselinestretch=1) baselineskip +% we could save a register by giving the user access to +% \@IEEEnormalsizeunitybaselineskip. However, let's protect +% its read only internal status +\newdimen\CLASSINFOnormalsizeunitybaselineskip +\CLASSINFOnormalsizeunitybaselineskip=\@IEEEnormalsizeunitybaselineskip\relax % store the nominal value of jot -\newskip\normaljot -\normaljot=0.25\normalsizebaselineskip\relax +\newdimen\IEEEnormaljot +\IEEEnormaljot=0.25\baselineskip\relax % set \jot -\jot=\normaljot\relax +\jot=\IEEEnormaljot\relax -% abstract and keywords are in \small, except -% for 9pt docs in which they are in \footnotesize -% Since 9pt docs use an 8pt footnotesize, \small -% becomes a rather awkward 8.5pt -\let\@IEEEabskeysecsize=\small -\ifx\@IEEEptsize\@IEEEptsizenine - \let\@IEEEabskeysecsize=\footnotesize -\fi - % V1.6, we are now going to fine tune the interword spacing @@ -1080,13 +704,10 @@ \@@IEEEsetfontdimens }} -% if the nofonttune class option is not given, revise the interword spacing -% for each font size (and shape and weight). Only the \rmfamily is done here -% as \ttfamily uses a fixed spacing and \sffamily is not used as the main -% text of IEEE papers. -\def\@IEEEtunefonts{% -\if@fonttunesettings -{\selectfont\rmfamily +% command to revise the interword spacing for each font size (and shape +% and weight). Only the \rmfamily is done here as \ttfamily uses a +% fixed spacing and \sffamily is not used as the main text of IEEE papers. +\def\@IEEEtunefonts{{\selectfont\rmfamily \tiny\@IEEEsetfontdimens \scriptsize\@IEEEsetfontdimens \footnotesize\@IEEEsetfontdimens @@ -1096,14 +717,17 @@ \large\@IEEEsetfontdimens \LARGE\@IEEEsetfontdimens \huge\@IEEEsetfontdimens -\Huge\@IEEEsetfontdimens}\fi} +\Huge\@IEEEsetfontdimens}} -% if needed, revise the interword spacing now - in case IEEEtran makes any default -% length measurements, and make sure all the default fonts are loaded +% if the nofonttune class option is not given, revise the interword spacing +% now - in case IEEEtran makes any default length measurements, and make +% sure all the default fonts are loaded +\ifCLASSOPTIONnofonttune\else \@IEEEtunefonts +\fi % and again at the start of the document in case the user loaded different fonts -\AtBeginDocument{\@IEEEtunefonts} +\AtBeginDocument{\ifCLASSOPTIONnofonttune\else\@IEEEtunefonts\fi} @@ -1122,153 +746,208 @@ % IEEE does not use extra spacing after punctuation \frenchspacing +% V1.7 increase this a tad to discourage equation breaks +\binoppenalty=1000 % default 700 +\relpenalty=800 % default 500 -% we want to maintain textheight as an integer multiple of -% \baselineskip. Keep \topsep in with this game plan too. -\topskip=\baselineskip -% set sizes and margins -% Book typesetting is a world where point and pica (12pt) reign supreme. -% IEEE textwidth is 21 pica. They have a colsep of 1 pica. -% V1.6 conference mode margins -\if@confmode - \topmargin -0.25in - \textheight 9.25in % The standard for conferences - % However, we will adjust this a tad so that an integer number - % of lines will always fit on each page - % The baselineskip (leading) for each document point size is used - % to determine these values - % rounded up an extra 0.1pt or so to prevent trouble with any rounding errors - \ifx\@IEEEptsize\@IEEEptsizenine\textheight=674.0pt\fi %9.3261in 61 lines/page - \ifx\@IEEEptsize\@IEEEptsizeten\textheight=672.1pt\fi %9.2998in 56 lines/page - \ifx\@IEEEptsize\@IEEEptsizeeleven\textheight=669.3pt\fi %9.2611in 50 lines/page - \ifx\@IEEEptsize\@IEEEptsizetwelve\textheight=668.3pt\fi %9.2473in 48 lines/page -\else - \topmargin -49.0pt - \textheight 58pc % = 9.63in or 696pt -\fi +% margin note stuff +\marginparsep 10pt +\marginparwidth 20pt +\marginparpush 25pt -\textwidth 43pc % 2 x 21pc + 1pc = 43pc -\columnsep 1pc +% if things get too close, go ahead and let them touch +\lineskip 0pt +\normallineskip 0pt +\lineskiplimit 0pt +\normallineskiplimit 0pt +% The distance from the lower edge of the text body to the +% footline +\footskip 0.4in -% IEEE MARGIN INFO and new \overrideIEEEmargins command -% V1.6 revised margins again -% IEEE wants the side margins to be equal under both US letter -% and A4 paper -% -% However, for those of you who need to bind copies of your work -% (for review distribution, etc.) the \overrideIEEEmargins -% command will shift the text a tad away from the binding -% edge. -% -% +% normally zero, should be relative to font height. +% put in a little rubber to help stop some bad breaks (underfull vboxes) +\parskip 0ex plus 0.2ex minus 0.1ex +\parindent 1.0em -% the default side margins are equal -\oddsidemargin \@IEEEmarginE -\addtolength{\oddsidemargin}{-1in}% compensate for LaTeX's 1in offset -\evensidemargin \@IEEEmarginE -\addtolength{\evensidemargin}{-1in}% compensate for LaTeX's 1in offset - -% execute \overrideIEEEmargins in the preamble to make the side margin -% near the spine slightly wider so that the paper will be much more -% agreeable to being bound. \overrideIEEEmargins will have no effect -% when in draft or draftcls mode. -\def\overrideIEEEmargins{\if@draftclsmode\relax\else% - \typeout{** ATTENTION: Overriding IEEE standard margins (line \the\inputlineno).}% - \if@twoside - % for double sided, odd pages have the bound side on the left - % make this the wide margin - \oddsidemargin\@IEEEmarginW - % and even pages have the narrow margin on the left - % as they are bound on the right - % evensidemargin is to be the narrow margin - % calculate the narrow margin and set evensidemargin - \setlength{\evensidemargin}{\paperwidth}% - \addtolength{\evensidemargin}{-\@IEEEmarginW}% - \addtolength{\evensidemargin}{-\textwidth}% - \else - % for single sided the bound side is always on the left - % make this the wide margin - \oddsidemargin\@IEEEmarginW - \evensidemargin\@IEEEmarginW - \fi - \addtolength{\oddsidemargin}{-1.0in}% compensate for LaTeX's 1in offset - \addtolength{\evensidemargin}{-1.0in}% -\fi} +\topmargin -49.0pt +\headheight 12pt +\headsep 0.25in + +% use the normal font baselineskip +% so that \topskip is unaffected by changes in \baselinestretch +\topskip=\@IEEEnormalsizeunitybaselineskip +\textheight 58pc % 9.63in, 696pt +% Tweak textheight to a perfect integer number of lines/page. +% The normal baselineskip for each document point size is used +% to determine these values. +\ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=63\@IEEEnormalsizeunitybaselineskip\fi % 63 lines/page +\ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=58\@IEEEnormalsizeunitybaselineskip\fi % 58 lines/page +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=52\@IEEEnormalsizeunitybaselineskip\fi % 52 lines/page +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=50\@IEEEnormalsizeunitybaselineskip\fi % 50 lines/page -\parindent 1.0em +\columnsep 1pc +\textwidth 43pc % 2 x 21pc + 1pc = 43pc + -% conference papers do not have headers, other papers need -% to reserve space for them -\if@confmode -\headsep 0in -\headheight 0in +% the default side margins are equal +\if@IEEEusingAfourpaper +\oddsidemargin 14.32mm +\evensidemargin 14.32mm \else -\headsep 0.25in -\headheight 12pt +\oddsidemargin 0.680in +\evensidemargin 0.680in \fi +% compensate for LaTeX's 1in offset +\addtolength{\oddsidemargin}{-1in} +\addtolength{\evensidemargin}{-1in} -% V1.6, if things get too close, go ahead and let them touch -\lineskip 0pt -\normallineskip 0pt -\lineskiplimit 0pt -\normallineskiplimit 0pt -% The distance from the lower edge of the text body to the -% footline -\footskip 0.4in +% adjust margins for conference mode +\ifCLASSOPTIONconference + \topmargin -0.25in + % we retain the reserved, but unused space for headers + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \textheight 9.25in % The standard for conferences (668.4975pt) + % Tweak textheight to a perfect integer number of lines/page. + \ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=61\@IEEEnormalsizeunitybaselineskip\fi % 61 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=56\@IEEEnormalsizeunitybaselineskip\fi % 56 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=50\@IEEEnormalsizeunitybaselineskip\fi % 50 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=48\@IEEEnormalsizeunitybaselineskip\fi % 48 lines/page +\fi -% normally zero, should be relative to font height. -% put in a little rubber to help stop some bad breaks (underfull vboxes) -\parskip 0ex plus 0.2ex minus 0.1ex + +% compsoc conference +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference + % compsoc conference use a larger value for columnsep + \columnsep 0.375in + % compsoc conferences want 1in top margin, 1.125in bottom margin + \topmargin 0in + \addtolength{\topmargin}{-6pt}% we tweak this a tad to better comply with top of line stuff + % we retain the reserved, but unused space for headers + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \textheight 8.875in % (641.39625pt) + % Tweak textheight to a perfect integer number of lines/page. + \ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=58\@IEEEnormalsizeunitybaselineskip\fi % 58 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=53\@IEEEnormalsizeunitybaselineskip\fi % 53 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=48\@IEEEnormalsizeunitybaselineskip\fi % 48 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=46\@IEEEnormalsizeunitybaselineskip\fi % 46 lines/page + \textwidth 6.5in + % the default side margins are equal + \if@IEEEusingAfourpaper + \oddsidemargin 22.45mm + \evensidemargin 22.45mm + \else + \oddsidemargin 1in + \evensidemargin 1in + \fi + % compensate for LaTeX's 1in offset + \addtolength{\oddsidemargin}{-1in} + \addtolength{\evensidemargin}{-1in} +\fi\fi % draft mode settings override that of all other modes -% provides a nice 1" margin all around the paper and extra +% provides a nice 1in margin all around the paper and extra % space between the lines for editor's comments -\if@draftclsmode -\headsep 0.25in -\headheight 12pt -% want 1" from top of paper to text -\setlength{\topmargin}{-\headsep}% -\addtolength{\topmargin}{-\headheight}% - -% we want 1in side margins regardless of paper type -\oddsidemargin 0in -\evensidemargin 0in - -% set the text width - start with the entire page -\setlength{\textwidth}{\paperwidth}% -% subtract for the 1" top/bottom margins -\addtolength{\textwidth}{-2.0in}% -% give them a textheight that won't have underfull -% vbox problems, but can't help them if they later change -% baselinestretch from its default -\setlength{\textheight}{\paperheight}% -\addtolength{\textheight}{-2.0in}% -% subtract of first line taken by \topskip -\addtolength{\textheight}{-1\topskip}% -% now digitize \textheight so that the length after -% the first line is an integer multiple of \baselineskip -% to cut down on underfull vbox errors in draft mode -\divide\textheight by \baselineskip% -\multiply\textheight by \baselineskip% -% add back the first line -\addtolength{\textheight}{\topskip}% +\ifCLASSOPTIONdraftcls + % want 1in from top of paper to text + \setlength{\topmargin}{-\headsep}% + \addtolength{\topmargin}{-\headheight}% + % we want 1in side margins regardless of paper type + \oddsidemargin 0in + \evensidemargin 0in + % set the text width + \setlength{\textwidth}{\paperwidth}% + \addtolength{\textwidth}{-2.0in}% + \setlength{\textheight}{\paperheight}% + \addtolength{\textheight}{-2.0in}% + % digitize textheight to be an integer number of lines. + % this may cause the bottom margin to be off a tad + \addtolength{\textheight}{-1\topskip}% + \divide\textheight by \baselineskip% + \multiply\textheight by \baselineskip% + \addtolength{\textheight}{\topskip}% \fi -% margin note stuff -\marginparsep 10pt -\marginparwidth 20pt -\marginparpush 25pt +% process CLASSINPUT inner/outer margin +% if inner margin defined, but outer margin not, set outer to inner. +\ifx\CLASSINPUTinnersidemargin\@IEEEundefined +\else + \ifx\CLASSINPUToutersidemargin\@IEEEundefined + \edef\CLASSINPUToutersidemargin{\CLASSINPUTinnersidemargin} + \fi +\fi + +\ifx\CLASSINPUToutersidemargin\@IEEEundefined +\else + % if outer margin defined, but inner margin not, set inner to outer. + \ifx\CLASSINPUTinnersidemargin\@IEEEundefined + \edef\CLASSINPUTinnersidemargin{\CLASSINPUToutersidemargin} + \fi + \setlength{\oddsidemargin}{\CLASSINPUTinnersidemargin} + \ifCLASSOPTIONtwoside + \setlength{\evensidemargin}{\CLASSINPUToutersidemargin} + \else + \setlength{\evensidemargin}{\CLASSINPUTinnersidemargin} + \fi + \addtolength{\oddsidemargin}{-1in} + \addtolength{\evensidemargin}{-1in} + \setlength{\textwidth}{\paperwidth} + \addtolength{\textwidth}{-\CLASSINPUTinnersidemargin} + \addtolength{\textwidth}{-\CLASSINPUToutersidemargin} + \typeout{** ATTENTION: Overriding inner side margin to \CLASSINPUTinnersidemargin\space and + outer side margin to \CLASSINPUToutersidemargin\space via \string\CLASSINPUT.} +\fi + + + +% process CLASSINPUT top/bottom text margin +% if toptext margin defined, but bottomtext margin not, set bottomtext to toptext margin +\ifx\CLASSINPUTtoptextmargin\@IEEEundefined +\else + \ifx\CLASSINPUTbottomtextmargin\@IEEEundefined + \edef\CLASSINPUTbottomtextmargin{\CLASSINPUTtoptextmargin} + \fi +\fi + +\ifx\CLASSINPUTbottomtextmargin\@IEEEundefined +\else + % if bottomtext margin defined, but toptext margin not, set toptext to bottomtext margin + \ifx\CLASSINPUTtoptextmargin\@IEEEundefined + \edef\CLASSINPUTtoptextmargin{\CLASSINPUTbottomtextmargin} + \fi + \setlength{\topmargin}{\CLASSINPUTtoptextmargin} + \addtolength{\topmargin}{-1in} + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \setlength{\textheight}{\paperheight} + \addtolength{\textheight}{-\CLASSINPUTtoptextmargin} + \addtolength{\textheight}{-\CLASSINPUTbottomtextmargin} + % in the default format we use the normal baselineskip as topskip + % we only need 0.7 of this to clear typical top text and we need + % an extra 0.3 spacing at the bottom for descenders. This will + % correct for both. + \addtolength{\topmargin}{-0.3\@IEEEnormalsizeunitybaselineskip} + \typeout{** ATTENTION: Overriding top text margin to \CLASSINPUTtoptextmargin\space and + bottom text margin to \CLASSINPUTbottomtextmargin\space via \string\CLASSINPUT.} +\fi + + + + + % LIST SPACING CONTROLS @@ -1377,16 +1056,6 @@ \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{6} - % **** V1.3 ENHANCEMENTS **** % Itemize, Enumerate and Description (IED) List Controls @@ -1429,14 +1098,14 @@ % 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 +\newdimen\IEEElabelindent +\IEEElabelindent \parindent % The actual amount labels will be indented is -% \labelindent multiplied by the factor below +% \IEEElabelindent 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 +% alter the effective \IEEElabelindent for deeper % levels % There may not be such a thing as correct "standard IEEE" % values. What IEEE actually does may depend on the specific @@ -1455,7 +1124,7 @@ % 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} +\def\IEEElabelindentfactor{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 @@ -1481,18 +1150,18 @@ % 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}} +% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}} % will alter the \labelsep for the next list(s) until -% \iedlistdecl is redefined. -\def\iedlistdecl{\relax} +% \IEEEiedlistdecl is redefined. +\def\IEEEiedlistdecl{\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} +% on the \labelwidth, \labelsep and the argument \IEEElabelindent +% Usage: \IEEEcalcleftmargin{width-to-indent-the-label} % output is in the \leftmargin variable, i.e., effectively: % \leftmargin = argument + \labelwidth + \labelsep % Note controlled spacing here, shield end of lines with % -\def\calcleftmargin#1{\setlength{\leftmargin}{#1}% +\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}% \addtolength{\leftmargin}{\labelwidth}% \addtolength{\leftmargin}{\labelsep}} @@ -1502,41 +1171,41 @@ % 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}} +\def\IEEEsetlabelwidth#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 +% the \IEEEiedlistdecl or within the option of the IED list % environments. -\def\usemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} +\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} % A flag which controls whether the IED lists automatically -% calculate \leftmargin from \labelindent, \labelwidth and \labelsep +% calculate \leftmargin from \IEEElabelindent, \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 +% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse) +% via the \IEEEiedlistdecl or within the option of the IED list % environments to have an effect. -\newif\ifnocalcleftmargin -\nocalcleftmarginfalse +\newif\ifIEEEnocalcleftmargin +\IEEEnocalcleftmarginfalse -% 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 +% A flag which controls whether \IEEElabelindent is multiplied by +% the \IEEElabelindentfactor for each list level. +% This flag must be set via the \IEEEiedlistdecl or within the option % of the IED list environments to have an effect. -\newif\ifnolabelindentfactor -\nolabelindentfactorfalse +\newif\ifIEEEnolabelindentfactor +\IEEEnolabelindentfactorfalse % internal variable to indicate type of IED label % justification % 0 - left; 1 - center; 2 - right -\def\@iedjustify{0} +\def\@IEEEiedjustify{0} % commands to allow the user to control IED % label justifications. Use these commands within -% the IED environment option or in the \iedlistdecl +% the IED environment option or in the \IEEEiedlistdecl % 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 @@ -1544,9 +1213,9 @@ % other non-IEEE related LaTeX work. % itemize and enumerate automatically default to right % justification, description defaults to left. -\def\iedlabeljustifyl{\def\@iedjustify{0}}%left -\def\iedlabeljustifyc{\def\@iedjustify{1}}%center -\def\iedlabeljustifyr{\def\@iedjustify{2}}%right +\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left +\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center +\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right @@ -1638,14 +1307,14 @@ \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}% + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% \advance\@listdepth-\@ne% undo our increment - \def\@iedjustify{2}% right justified labels are default + \def\@IEEEiedjustify{2}% right justified labels are default % set other defaults - \nocalcleftmarginfalse% - \nolabelindentfactorfalse% + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% \topsep\IEEEiedtopsep% - \labelindent\IEEEilabelindent% + \IEEElabelindent\IEEEilabelindent% \labelsep\IEEEiednormlabelsep% \partopsep 0ex% \parsep 0ex% @@ -1662,19 +1331,19 @@ \@IEEErestorelistparams% override any list{} changes % to our globals \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel - \iedlistdecl% let user alter parameters + \IEEEiedlistdecl% let user alter parameters #1\relax% % If the user has requested not to use the % labelindent factor, don't revise \labelindent - \ifnolabelindentfactor\relax% - \else\labelindent=\labelindentfactor\labelindent% + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\labelindent% \fi% % Unless the user has requested otherwise, % calculate our left margin based - % on \labelindent, \labelwidth and + % on \IEEElabelindent, \labelwidth and % \labelsep - \ifnocalcleftmargin\relax% - \else\calcleftmargin{\labelindent}% + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% \fi}\fi\fi}% @@ -1689,14 +1358,14 @@ \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}% + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% \advance\@listdepth-\@ne% undo our increment - \def\@iedjustify{2}% right justified labels are default + \def\@IEEEiedjustify{2}% right justified labels are default % set other defaults - \nocalcleftmarginfalse% - \nolabelindentfactorfalse% + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% \topsep\IEEEiedtopsep% - \labelindent\IEEEelabelindent% + \IEEElabelindent\IEEEelabelindent% \labelsep\IEEEiednormlabelsep% \partopsep 0ex% \parsep 0ex% @@ -1714,19 +1383,19 @@ \@IEEErestorelistparams% override any list{} changes % to our globals \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel - \iedlistdecl% let user alter parameters + \IEEEiedlistdecl% let user alter parameters #1\relax% % If the user has requested not to use the - % labelindent factor, don't revise \labelindent - \ifnolabelindentfactor\relax% - \else\labelindent=\labelindentfactor\labelindent% + % IEEElabelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% \fi% % Unless the user has requested otherwise, % calculate our left margin based - % on \labelindent, \labelwidth and + % on \IEEElabelindent, \labelwidth and % \labelsep - \ifnocalcleftmargin\relax% - \else\calcleftmargin{\labelindent}% + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% \fi}\fi\fi}% @@ -1738,14 +1407,14 @@ \ifnum\@listdepth>5\relax\@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}% + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% \advance\@listdepth-\@ne% undo our increment - \def\@iedjustify{0}% left justified labels are default + \def\@IEEEiedjustify{0}% left justified labels are default % set other defaults - \nocalcleftmarginfalse% - \nolabelindentfactorfalse% + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% \topsep\IEEEiedtopsep% - \labelindent\IEEEdlabelindent% + \IEEElabelindent\IEEEdlabelindent% % assume normal labelsep \labelsep\IEEEiednormlabelsep% \partopsep 0ex% @@ -1766,39 +1435,40 @@ \list{}{\@IEEErestorelistparams% override any list{} changes % to our globals \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel - \iedlistdecl% let user alter parameters + \IEEEiedlistdecl% let user alter parameters #1\relax% % If the user has requested not to use the - % labelindent factor, don't revise \labelindent - \ifnolabelindentfactor\relax% - \else\labelindent=\labelindentfactor\labelindent% + % labelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% \fi% % Unless the user has requested otherwise, % calculate our left margin based - % on \labelindent, \labelwidth and + % on \IEEElabelindent, \labelwidth and % \labelsep - \ifnocalcleftmargin\relax% - \else\calcleftmargin{\labelindent}\relax% + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}\relax% \fi}\fi} % v1.6b we use one makelabel that does justification as needed. -\def\@IEEEiedmakelabel#1{\relax\if\@iedjustify 0\relax +\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax \makebox[\labelwidth][l]{\normalfont #1}\else -\if\@iedjustify 1\relax +\if\@IEEEiedjustify 1\relax \makebox[\labelwidth][c]{\normalfont #1}\else \makebox[\labelwidth][r]{\normalfont #1}\fi\fi} % VERSE and QUOTE -\def\verse{\let\\=\@centercr +% V1.7 define environments with newenvironment +\newenvironment{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 + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item\relax} + {\endlist} +\newenvironment{quotation}{\list{}{\listparindent 1.5em \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item\relax} + {\endlist} +\newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item\relax} + {\endlist} % \titlepage @@ -1835,8 +1505,8 @@ % use 0.7/baselineskip as a \footnotesep to maintain equal spacing % between all the lines of the footnotes. IEEE often uses a tad % more, so use 0.8\baselineskip. This slightly larger value also helps -% the text to clear the footnote marks. Note that \thanks now uses -% its own value of \footnotesep. +% the text to clear the footnote marks. Note that \thanks in IEEEtran +% uses its own value of \footnotesep which is set in \maketitle. {\footnotesize \global\footnotesep 0.8\baselineskip} @@ -1844,13 +1514,34 @@ \skip\@mpfootins = \skip\footins \fboxsep = 3pt \fboxrule = .4pt -% V1.6 use 1em, the use LaTeX2e's \@makefnmark +% V1.6 use 1em, then use LaTeX2e's \@makefnmark % Note that IEEE normally *left* aligns the footnote marks, so we don't need % box resizing tricks here. \long\def\@makefntext#1{\parindent 1em\indent\hbox{\@makefnmark}#1}% V1.6 use 1em +% V1.7 compsoc does not use superscipts for footnote marks +\ifCLASSOPTIONcompsoc +\def\@IEEEcompsocmakefnmark{\hbox{\normalfont\@thefnmark.\ }} +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@IEEEcompsocmakefnmark}#1} +\fi +% IEEE does not use footnote rules \def\footnoterule{} +% V1.7 for compsoc, IEEE uses a footnote rule only for \thanks. We devise a "one-shot" +% system to implement this. +\newif\if@IEEEenableoneshotfootnoterule +\@IEEEenableoneshotfootnoterulefalse +\ifCLASSOPTIONcompsoc +\def\footnoterule{\relax\if@IEEEenableoneshotfootnoterule +\kern-5pt +\hbox to \columnwidth{\hfill\vrule width 0.5\columnwidth height 0.4pt\hfill} +\kern4.6pt +\global\@IEEEenableoneshotfootnoterulefalse +\else +\relax +\fi} +\fi + % V1.6 do not allow LaTeX to break a footnote across multiple pages \interfootnotelinepenalty=10000 @@ -1859,12 +1550,15 @@ % but LaTeX2e normally uses 100. \interdisplaylinepenalty=2500 +% default allows section depth up to /paragraph +\setcounter{secnumdepth}{4} -\if@technote +% technotes do not allow /paragraph +\ifCLASSOPTIONtechnote \setcounter{secnumdepth}{3} -\else - \setcounter{secnumdepth}{4} \fi +% neither do compsoc conferences +\@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}} \newcounter{section} @@ -1877,20 +1571,53 @@ \newcounter{IEEEsubequation}[equation] % as shown when called by user from \ref, \label and in table of contents -\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 \def\theequation{\arabic{equation}} % 1 \def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} % 1a (used only by IEEEtran's IEEEeqnarray) +\ifCLASSOPTIONcompsoc +% compsoc is all arabic +\def\thesection{\arabic{section}} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} +\else +\def\thesection{\Roman{section}} % I +% V1.7, \mbox prevents breaks around - +\def\thesubsection{\mbox{\thesection-\Alph{subsection}}} % I-A +% V1.7 use I-A1 format used by IEEE rather than I-A.1 +\def\thesubsubsection{\thesubsection\arabic{subsubsection}} % I-A1 +\def\theparagraph{\thesubsubsection\alph{paragraph}} % I-A1a +\fi + +% From Heiko Oberdiek. Because of the \mbox in \thesubsection, we need to +% tell hyperref to disable the \mbox command when making PDF bookmarks. +% This done already with hyperref.sty version 6.74o and later, but +% it will not hurt to do it here again for users of older versions. +\@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}% +\g@addto@macro\pdfstringdefPreHook{\let\mbox\relax} + % Main text forms (how shown in main text headings) % V1.6, using \thesection in \thesectiondis allows changes % in the former to automatically appear in the latter -\def\thesectiondis{\thesection.} % I. -\def\thesubsectiondis{\Alph{subsection}.} % B. -\def\thesubsubsectiondis{\arabic{subsubsection})} % 3) -\def\theparagraphdis{\alph{paragraph})} % d) +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference + \def\thesectiondis{\thesection.} + \def\thesubsectiondis{\thesectiondis\arabic{subsection}.} + \def\thesubsubsectiondis{\thesubsectiondis\arabic{subsubsection}.} + \def\theparagraphdis{\thesubsubsectiondis\arabic{paragraph}.} + \else% compsoc not conferencs + \def\thesectiondis{\thesection} + \def\thesubsectiondis{\thesectiondis.\arabic{subsection}} + \def\thesubsubsectiondis{\thesubsectiondis.\arabic{subsubsection}} + \def\theparagraphdis{\thesubsubsectiondis.\arabic{paragraph}} + \fi +\else% not compsoc + \def\thesectiondis{\thesection.} % I. + \def\thesubsectiondis{\Alph{subsection}.} % B. + \def\thesubsubsectiondis{\arabic{subsubsection})} % 3) + \def\theparagraphdis{\alph{paragraph})} % d) +\fi + % just like LaTeX2e's \@eqnnum \def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1) % IEEEsubequation used only by IEEEtran's IEEEeqnarray @@ -1899,6 +1626,25 @@ % it, through IEEEtran's \theequationdis \def\@eqnnum{\theequationdis} + + +% V1.7 provide string macros as article.cls does +\def\contentsname{Contents} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\refname{References} +\def\indexname{Index} +\def\figurename{Fig.} +\def\tablename{TABLE} +\@IEEEcompsocconfonly{\def\figurename{Figure}\def\tablename{Table}} +\def\partname{Part} +\def\appendixname{Appendix} +\def\abstractname{Abstract} +% IEEE specific names +\def\IEEEkeywordsname{Index Terms} +\def\IEEEproofname{Proof} + + % LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS % \def\@pnumwidth{1.55em} @@ -1910,7 +1656,7 @@ % 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\tableofcontents{\section*{\contentsname}\@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% @@ -1923,9 +1669,9 @@ % 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\listoffigures{\section*{\listfigurename}\@starttoc{lof}} \def\l@figure{\@dottedtocline{1}{0em}{2.75em}} -\def\listoftables{\section*{List of Tables}\@starttoc{lot}} +\def\listoftables{\section*{\listtablename}\@starttoc{lot}} \let\l@table\l@figure @@ -1937,10 +1683,11 @@ \@fptop 0pt plus 1fil \@fpsep 0.75\baselineskip plus 2fil \@fpbot 0pt plus 1fil -\def\topfraction{1.0} -\def\bottomfraction{.4} +\def\topfraction{0.9} +\def\bottomfraction{0.4} \def\floatpagefraction{0.8} -\def\textfraction{.2} +% V1.7, let top floats approach 90% of page +\def\textfraction{0.1} %% Double Column Floats \dblfloatsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip @@ -1959,7 +1706,7 @@ \@dblfptop 0pt plus 1fil \@dblfpsep 0.75\baselineskip plus 2fil \@dblfpbot 0pt plus 1fil -\def\dbltopfraction{1.0} +\def\dbltopfraction{0.8} \def\dblfloatpagefraction{0.8} \setcounter{dbltopnumber}{4} @@ -1969,16 +1716,6 @@ \setcounter{totalnumber}{4} -%% redefine CAPTION -% V1.4 add user control for short figure caption justification -\newif\ifcenterfigcaptions - -% V1.6 set the default according to conference mode -\if@confmode -\centerfigcaptionstrue -\else -\centerfigcaptionsfalse -\fi % article class provides these, we should too. \newlength\abovecaptionskip @@ -1997,45 +1734,108 @@ % as with LaTeX2e. Otherwise, there will be problems when using hyperref. \def\@IEEEtablestring{table} +\ifCLASSOPTIONcompsoc +% V1.7 compsoc \@makecaption +\ifCLASSOPTIONconference% compsoc conference \long\def\@makecaption#1#2{% % test if is a for a figure or table \ifx\@captype\@IEEEtablestring% % if a table, do table caption -\begin{center}{\footnotesize #1}\\{\footnotesize\scshape #2}\end{center}% -\@IEEEtablecaptionsepspace% V1.6 was a hard coded 8pt +\normalsize\begin{center}{\normalfont\sffamily\normalsize {#1.}~ #2}\end{center}% +\@IEEEtablecaptionsepspace % if not a table, format it as a figure \else -\@IEEEfigurecaptionsepspace% V1.6 was a hard coded 5pt +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ }% +\parbox[t]{\hsize}{\normalfont\sffamily\normalsize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center +\else% +\hbox to\hsize{\normalfont\sffamily\normalsize\hfil\box\@tempboxa\hfil}% +\fi\fi} +\else% nonconference compsoc +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\normalsize\begin{center}{\normalfont\sffamily\normalsize #1}\\{\normalfont\sffamily\normalsize #2}\end{center}% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ }% +\parbox[t]{\hsize}{\normalfont\sffamily\normalsize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, left justify +\else% +\hbox to\hsize{\normalfont\sffamily\normalsize\box\@tempboxa\hfil}% +\fi\fi} +\fi + +\else% traditional noncompsoc \@makecaption +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\begin{center}{\normalfont\footnotesize #1}\\{\normalfont\footnotesize\scshape #2}\end{center}% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace % 3/2001 use footnotesize, not small; use two nonbreaking spaces, not one -\setbox\@tempboxa\hbox{\footnotesize #1.~~ #2}% +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}~~ #2}% \ifdim \wd\@tempboxa >\hsize% % if caption is longer than a line, let it wrap around -\setbox\@tempboxa\hbox{\footnotesize #1.~~ }% -\parbox[t]{\hsize}{\footnotesize \noindent\unhbox\@tempboxa#2}% -% if caption is shorter than a line, -% allow user to control short figure caption justification (left or center) +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}~~ }% +\parbox[t]{\hsize}{\normalfont\footnotesize\noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center if conference, left justify otherwise \else% -\ifcenterfigcaptions \hbox to\hsize{\footnotesize\hfil\box\@tempboxa\hfil}% -\else \hbox to\hsize{\footnotesize\box\@tempboxa\hfil}% +\ifCLASSOPTIONconference \hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}% +\else \hbox to\hsize{\normalfont\footnotesize\box\@tempboxa\hfil}% \fi\fi\fi} +\fi + + + +% V1.7 disable captions class option, do so in a way that retains operation of \label +% within \caption +\ifCLASSOPTIONcaptionsoff +\long\def\@makecaption#1#2{\vspace*{2em}\footnotesize\begin{center}{\footnotesize #1}\end{center}% +\let\@IEEEtemporiglabeldefsave\label +\let\@IEEEtemplabelargsave\relax +\def\label##1{\gdef\@IEEEtemplabelargsave{##1}}% +\setbox\@tempboxa\hbox{#2}% +\let\label\@IEEEtemporiglabeldefsave +\ifx\@IEEEtemplabelargsave\relax\else\label{\@IEEEtemplabelargsave}\fi} +\fi +% V1.7 define end environments with \def not \let so as to work OK with +% preview-latex \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\fnum@figure{\figurename~\thefigure} \def\figure{\@float{figure}} \def\endfigure{\end@float} \@namedef{figure*}{\@dblfloat{figure}} \@namedef{endfigure*}{\end@dblfloat} \newcounter{table} +\ifCLASSOPTIONcompsoc +\def\thetable{\arabic{table}} +\else \def\thetable{\@Roman\c@table} +\fi \def\fps@table{tbp} \def\ftype@table{2} \def\ext@table{lot} -\def\fnum@table{TABLE~\thetable} +\def\fnum@table{\tablename~\thetable} % V1.6 IEEE uses 8pt text for tables % to default to footnotesize, we hack into LaTeX2e's \@floatboxreset and pray \def\table{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@float{table}} @@ -2607,7 +2407,7 @@ Using a default centering column instead}% \lineskip=0pt\relax \lineskiplimit=0pt\relax \baselineskip=\normalbaselineskip\relax% - \jot=\normaljot\relax% + \jot=\IEEEnormaljot\relax% \mathsurround\z@\relax% no extra spacing around math \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses, % used in \IEEEeqnarraymulticol and in the preamble build @@ -2766,7 +2566,7 @@ $$\@ignoretrue} \lineskip=0pt\relax% \lineskiplimit=0pt\relax% \baselineskip=\normalbaselineskip\relax% - \jot=\normaljot\relax% + \jot=\IEEEnormaljot\relax% \mathsurround\z@\relax% no extra spacing around math % the default end glues are zero for an \IEEEeqnarraybox \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue @@ -3125,37 +2925,37 @@ between column types.}% % set up the running headings, this complex because of all the different % modes IEEEtran supports \if@twoside - \if@technote + \ifCLASSOPTIONtechnote \def\ps@headings{% \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} - \if@draftclsmode - \if@draftclsmodefoot + \ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else \def\@oddfoot{\scriptsize\@date\hfil DRAFT} \def\@evenfoot{\scriptsize DRAFT\hfil\@date} - \else - \def\@oddfoot{}\def\@evenfoot{}% \fi \else \def\@oddfoot{}\def\@evenfoot{} \fi} \else % not a technote \def\ps@headings{% - \if@confmode + \ifCLASSOPTIONconference \def\@oddhead{} \def\@evenhead{} \else \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} \fi - \if@draftclsmode + \ifCLASSOPTIONdraftcls \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} - \if@draftclsmodefoot + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else \def\@oddfoot{\scriptsize\@date\hfil DRAFT} \def\@evenfoot{\scriptsize DRAFT\hfil\@date} - \else - \def\@oddfoot{}\def\@evenfoot{}% \fi \else \def\@oddfoot{}\def\@evenfoot{}% @@ -3163,20 +2963,20 @@ between column types.}% \fi \else % single side \def\ps@headings{% - \if@confmode + \ifCLASSOPTIONconference \def\@oddhead{} \def\@evenhead{} \else \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} \def\@evenhead{} \fi - \if@draftclsmode + \ifCLASSOPTIONdraftcls \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} \def\@evenhead{} - \if@draftclsmodefoot - \def\@oddfoot{\scriptsize \@date \hfil DRAFT} - \else + \ifCLASSOPTIONdraftclsnofoot \def\@oddfoot{} + \else + \def\@oddfoot{\scriptsize \@date \hfil DRAFT} \fi \else \def\@oddfoot{} @@ -3186,18 +2986,18 @@ between column types.}% % title page style -\def\ps@titlepagestyle{\def\@oddfoot{}\def\@evenfoot{}% -\if@confmode +\def\ps@IEEEtitlepagestyle{\def\@oddfoot{}\def\@evenfoot{}% +\ifCLASSOPTIONconference \def\@oddhead{}% \def\@evenhead{}% \else \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}% \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}% \fi -\if@draftclsmode +\ifCLASSOPTIONdraftcls \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}% \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}% - \if@draftclsmodefoot + \ifCLASSOPTIONdraftclsnofoot\else \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% \fi @@ -3206,22 +3006,27 @@ between column types.}% \if@IEEEusingpubid % for title pages that are using a pubid % do not repeat pubid if using peer review option - \if@peerreviewoption + \ifCLASSOPTIONpeerreview \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}% + \ifCLASSOPTIONcompsoc + \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \else + \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \fi \fi \fi \fi} % peer review cover page style -\def\ps@peerreviewcoverpagestyle{% +\def\ps@IEEEpeerreviewcoverpagestyle{% \def\@oddhead{}\def\@evenhead{}% \def\@oddfoot{}\def\@evenfoot{}% -\if@draftclsmode - \if@draftclsmodefoot +\ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot\else \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% \fi @@ -3229,8 +3034,13 @@ between column types.}% % non-draft mode footers \if@IEEEusingpubid \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}% + \ifCLASSOPTIONcompsoc + \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \else + \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \fi \fi \fi} @@ -3245,7 +3055,8 @@ between column types.}% %% that needs to be in lower case, for instance et. al., then either manually %% set \leftmark and \rightmark or use \MakeLowercase{et. al.} within the %% arguments to \markboth. -\def\markboth#1#2{\def\leftmark{\MakeUppercase{#1}}\def\rightmark{\MakeUppercase{#2}}} +\def\markboth#1#2{\def\leftmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#1}}% +\def\rightmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#2}}} \def\footernote#1{\markboth{#1}{#1}} \def\today{\ifcase\month\or @@ -3290,27 +3101,24 @@ between column types.}% \def\citepunct{], [} \def\citedash{]--[} - -% V1.6b providing this command makes hyperref think the natbib package is -% in use so that it will not interfere with cite.sty. However, as a result, -% citation numbers will not be hyperlinked. -\def\NAT@parse{\typeout{IEEEtran error: Attempt to use fake Natbib command -which is provided to fool Hyperref.}} -% it easy enough to override via: -% \let\NAT@parse\undefined - +% V1.7 default to using same font for urls made by url.sty +\AtBeginDocument{\csname url@samestyle\endcsname} % V1.6 class files should always provide these \def\newblock{\hskip .11em\@plus.33em\@minus.07em} \let\@openbib@code\@empty - % Provide support for the control entries of IEEEtran.bst V1.00 and later. -\def\bstctlcite#1{\@bsphack - \@for\@citeb:=#1\do{% +% V1.7 optional argument allows for a different aux file to be specified in +% order to handle multiple bibliographies. For example, with multibib.sty: +% \newcites{sec}{Secondary Literature} +% \bstctlcite[@auxoutsec]{BSTcontrolhak} +\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +\def\@bstctlcite[#1]#2{\@bsphack + \@for\@citeb:=#2\do{% \edef\@citeb{\expandafter\@firstofone\@citeb}% - \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi}% + \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% \@esphack} % V1.6 provide a way for a user to execute a command just before @@ -3333,17 +3141,27 @@ which is provided to fool Hyperref.}} \advance\@IEEEtrantmpcountA by -1\relax% \ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi} + \def\@biblabel#1{[#1]} -\def\thebibliography#1{\section*{References}% - \addcontentsline{toc}{section}{References}% +% compsoc journals left align the reference numbers +\@IEEEcompsocnotconfonly{\def\@biblabel#1{[#1]\hfill}} + +% controls bib item spacing +\def\IEEEbibitemsep{0pt plus .5pt} + +\@IEEEcompsocconfonly{\def\IEEEbibitemsep{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}} + + +\def\thebibliography#1{\section*{\refname}% + \addcontentsline{toc}{section}{\refname}% % V1.6 add some rubber space here and provide a command trigger - \footnotesize \vskip 0.3\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip% + \footnotesize\@IEEEcompsocconfonly{\small}\vskip 0.3\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip% \list{\@biblabel{\@arabic\c@enumiv}}% {\settowidth\labelwidth{\@biblabel{#1}}% \leftmargin\labelwidth \advance\leftmargin\labelsep\relax - \itemsep 0pt plus .5pt\relax% + \itemsep \IEEEbibitemsep\relax \usecounter{enumiv}% \let\p@enumiv\@empty \renewcommand\theenumiv{\@arabic\c@enumiv}}% @@ -3358,7 +3176,7 @@ which is provided to fool Hyperref.}} % technotes). You may get an underfull vbox warning around the bibliography, % but the final result will be much more like what IEEE will publish. % MDS 11/2000 -\if@technote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100% +\ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100% \else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi% \sfcode`\.=1000\relax} \let\endthebibliography=\endlist @@ -3370,21 +3188,22 @@ which is provided to fool Hyperref.}} % % % \IEEEmembership is used to produce the sublargesize italic font used to indicate author -% IEEE membership. -\def\IEEEmembership#1{{\sublargesize\normalfont\textit{#1}}} +% IEEE membership. compsoc uses a large size sans slant font +\def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}} -% \authorrefmark{} produces a footnote type symbol to indicate author affiliation. -% When given an argument of 1 to 9, \authorrefmark{} follows the standard LaTeX footnote -% symbol sequence convention. However, for arguments 10 and above, \authorrefmark{} +% \IEEEauthorrefmark{} produces a footnote type symbol to indicate author affiliation. +% When given an argument of 1 to 9, \IEEEauthorrefmark{} follows the standard LaTeX footnote +% symbol sequence convention. However, for arguments 10 and above, \IEEEauthorrefmark{} % reverts to using lower case roman numerals, so it cannot overflow. Do note that you -% cannot use \footnotemark[] in place of \authorrefmark{} within \author as the footnote +% cannot use \footnotemark[] in place of \IEEEauthorrefmark{} within \author as the footnote % symbols will have been turned off to prevent \thanks from creating footnote marks. -% \authorrefmark{} produces a symbol that appears to LaTeX as having zero vertical +% \IEEEauthorrefmark{} produces a symbol that appears to LaTeX as having zero vertical % height - this allows for a more compact line packing, but the user must ensure that -% the interline spacing is large enough to prevent \authorrefmark{} from colliding +% the interline spacing is large enough to prevent \IEEEauthorrefmark{} from colliding % with the text above. -\def\authorrefmark#1{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or% +% V1.7 make this a robust command +\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or% \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger% \or \ddagger\ddagger \else\textsuperscript{\expandafter\romannumeral#1}\fi}}}} @@ -3392,14 +3211,16 @@ which is provided to fool Hyperref.}} % FONT CONTROLS AND SPACINGS FOR CONFERENCE MODE AUTHOR NAME AND AFFILIATION BLOCKS % % The default font styles for the author name and affiliation blocks (confmode) -\def\@IEEEauthorblockNstyle{\normalfont\sublargesize} -\def\@IEEEauthorblockAstyle{\normalfont\normalsize} +\def\@IEEEauthorblockNstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize\@IEEEcompsocconfonly{\large}} +\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize\@IEEEcompsocconfonly{\large}} % The default if the user does not use an author block -\def\@IEEEauthordefaulttextstyle{\normalfont\sublargesize} +\def\@IEEEauthordefaulttextstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize} % spacing from title (or special paper notice) to author name blocks (confmode) % can be negative \def\@IEEEauthorblockconfadjspace{-0.25em} +% compsoc conferences need more space here +\@IEEEcompsocconfonly{\def\@IEEEauthorblockconfadjspace{0.75\@IEEEnormalsizeunitybaselineskip}} % spacing between name and affiliation blocks (confmode) % This can be negative. @@ -3469,7 +3290,7 @@ which is provided to fool Hyperref.}} % % use real definitions in conference mode % name block -\def\authorblockN#1{\relax\@IEEEauthorblockNstyle% set the default text style +\def\IEEEauthorblockN#1{\relax\@IEEEauthorblockNstyle% set the default text style \gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row % the \expandafter hides the \cr in conditional tex, see the array.sty docs % for details, probably not needed here as the \cr is in a macro @@ -3486,7 +3307,7 @@ which is provided to fool Hyperref.}} \def\@IEEEauthorblockNtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockNtopspace}} % % affiliation block -\def\authorblockA#1{\relax\@IEEEauthorblockAstyle% set the default text style +\def\IEEEauthorblockA#1{\relax\@IEEEauthorblockAstyle% set the default text style \gdef\@IEEEauthorblockXinterlinespace{0pt}%disable strut for spacer row % the \expandafter hides the \cr in conditional tex, see the array.sty docs % for details, probably not needed here as the \cr is in a macro @@ -3505,12 +3326,12 @@ which is provided to fool Hyperref.}} % allow papers to compile even if author blocks are used in modes other % than conference or peerreviewca. For such cases, we provide dummy blocks. -\if@confmode +\ifCLASSOPTIONconference \else - \if@peerreviewcaoption\else + \ifCLASSOPTIONpeerreviewca\else % not conference or peerreviewca mode - \def\authorblockN#1{#1}% - \def\authorblockA#1{#1}% + \def\IEEEauthorblockN#1{#1}% + \def\IEEEauthorblockA#1{#1}% \fi \fi @@ -3558,10 +3379,10 @@ which is provided to fool Hyperref.}} \renewcommand{\and}[1][\relax]{\if@IEEEWARNand\typeout{** WARNING: \noexpand\and is valid only when in conference or peerreviewca}\typeout{modes (line \the\inputlineno).}\fi\global\@IEEEWARNandfalse} -\if@confmode% +\ifCLASSOPTIONconference% \renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% \fi -\if@peerreviewcaoption +\ifCLASSOPTIONpeerreviewca \renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% \fi @@ -3579,15 +3400,18 @@ which is provided to fool Hyperref.}} \normalfont% \def\thefootnote{}% the \thanks{} mark type is empty \def\footnotemark{}% and kill space from \thanks within author + \let\@makefnmark\relax% V1.7, must *really* kill footnotemark to remove all \textsuperscript spacing as well. \footnotesize% equal spacing between thanks lines \footnotesep 0.7\baselineskip%see global setting of \footnotesep for more info + % V1.7 disable \thanks note indention for compsoc + \@IEEEcompsoconly{\long\def\@makefntext##1{\parindent 1em\noindent\hbox{\@makefnmark}##1}}% \normalsize% - \if@peerreviewoption + \ifCLASSOPTIONpeerreview \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% - \thispagestyle{peerreviewcoverpagestyle}\@thanks% + \thispagestyle{IEEEpeerreviewcoverpagestyle}\@thanks% \else \if@twocolumn% - \if@technote% + \ifCLASSOPTIONtechnote% \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% \else \twocolumn[\@maketitle\@IEEEdynamictitlevspace\@IEEEaftertitletext]% @@ -3595,62 +3419,127 @@ which is provided to fool Hyperref.}} \else \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% \fi - \thispagestyle{titlepagestyle}\@thanks% + \thispagestyle{IEEEtitlepagestyle}\@thanks% \fi % pullup page for pubid if used. \if@IEEEusingpubid - \enlargethispage{-\@pubidpullup}% + \enlargethispage{-\@IEEEpubidpullup}% \fi \endgroup \setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax - \gdef\@thanks{} + \gdef\@thanks{}% % v1.6b do not clear these as we will need the title again for peer review papers % \gdef\@author{}\gdef\@title{}% \let\thanks\relax} + +% V1.7 parbox to format \@IEEEcompsoctitleabstractindextext +\long\def\@IEEEcompsoctitleabstractindextextbox#1{\parbox{0.915\textwidth}{#1}} + % formats the Title, authors names, affiliations and special paper notice % THIS IS A CONTROLLED SPACING COMMAND! Do not allow blank lines or unintentional % spaces to enter the definition - use % at the end of each line \def\@maketitle{\newpage \begin{center}% -\if@technote% - {\bfseries\large\@title\par}\vskip 1.3em{\lineskip .5em\@author\@specialpapernotice\par}% +\ifCLASSOPTIONtechnote% technotes + {\bfseries\large\@IEEEcompsoconly{\sffamily}\@title\par}\vskip 1.3em{\lineskip .5em\@IEEEcompsoconly{\sffamily}\@author + \@IEEEspecialpapernotice\par{\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par + \hfill\@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax \else% not a technote - \vskip0.2em{\Huge\@title\par}\vskip1.0em\par% + \vskip0.2em{\Huge\@IEEEcompsoconly{\sffamily}\@IEEEcompsocconfonly{\normalfont\normalsize\vskip 2\@IEEEnormalsizeunitybaselineskip + \bfseries\Large}\@title\par}\vskip1.0em\par% % V1.6 handle \author differently if in conference mode - \if@confmode% - {\@specialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% - \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}% + \ifCLASSOPTIONconference% + {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}\relax \else% peerreviewca, peerreview or journal - \if@peerreviewcaoption + \ifCLASSOPTIONpeerreviewca % peerreviewca handles author names just like conference mode - {\@specialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% - \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}% - \else % journal or peerreview - {\lineskip.5em\sublargesize\@author\@specialpapernotice\par}% + {\@IEEEcompsoconly{\sffamily}\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par\hfill + \@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax + \else% journal or peerreview + {\lineskip.5em\@IEEEcompsoconly{\sffamily}\sublargesize\@author\@IEEEspecialpapernotice\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par\hfill + \@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax \fi \fi \fi\end{center}} +% V1.7 Computer Society "diamond line" which follows index terms for nonconference papers +\def\@IEEEcompsocdiamondline{\vrule depth 0pt height 0.5pt width 4cm\hspace{7.5pt}% +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}% +\hspace{7.5pt}\vrule depth 0pt height 0.5pt width 4cm\relax} + +% V1.7 standard LateX2e \thanks, but with \itshape under compsoc. Also make it a \long\def +% We also need to trigger the one-shot footnote rule +\def\@IEEEtriggeroneshotfootnoterule{\global\@IEEEenableoneshotfootnoteruletrue} + + +\long\def\thanks#1{\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\@IEEEcompsoconly{\itshape + \protect\@IEEEtriggeroneshotfootnoterule\relax}\ignorespaces#1}}} +\let\@thanks\@empty + +% V1.7 allow \author to contain \par's. This is needed to allow \thanks to contain \par. +\long\def\author#1{\gdef\@author{#1}} + + +% in addition to setting up IEEEitemize, we need to remove a baselineskip space above and +% below it because \list's \pars introduce blank lines because of the footnote struts. +\def\@IEEEsetupcompsocitemizelist{\def\labelitemi{$\bullet$}% +\setlength{\IEEElabelindent}{0pt}\setlength{\parskip}{0pt}% +\setlength{\partopsep}{0pt}\setlength{\topsep}{0.5\baselineskip}\vspace{-1\baselineskip}\relax} + + +% flag for fake non-compsoc \IEEEcompsocthanksitem - prevents line break on very first item +\newif\if@IEEEbreakcompsocthanksitem \@IEEEbreakcompsocthanksitemfalse + +\ifCLASSOPTIONcompsoc +% V1.7 compsoc bullet item \thanks +% also, we need to redefine this to destroy the argument in \@IEEEdynamictitlevspace +\long\def\IEEEcompsocitemizethanks#1{\relax\@IEEEbreakcompsocthanksitemfalse\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\itshape\protect\@IEEEtriggeroneshotfootnoterule + {\let\IEEEiedlistdecl\relax\protect\begin{IEEEitemize}[\protect\@IEEEsetupcompsocitemizelist]\ignorespaces#1\relax + \protect\end{IEEEitemize}}\protect\vspace{-1\baselineskip}}}} +\DeclareRobustCommand*{\IEEEcompsocthanksitem}{\item} +\else +% non-compsoc, allow for dual compilation via rerouting to normal \thanks +\long\def\IEEEcompsocitemizethanks#1{\thanks{#1}} +% redirect to "pseudo-par" \hfil\break\indent after swallowing [] from \IEEEcompsocthanksitem[] +\DeclareRobustCommand{\IEEEcompsocthanksitem}{\@ifnextchar [{\@IEEEthanksswallowoptionalarg}% +{\@IEEEthanksswallowoptionalarg[\relax]}} +% be sure and break only after first item, be sure and ignore spaces after optional argument +\def\@IEEEthanksswallowoptionalarg[#1]{\relax\if@IEEEbreakcompsocthanksitem\hfil\break +\indent\fi\@IEEEbreakcompsocthanksitemtrue\ignorespaces} +\fi + + % V1.6b define the \IEEEpeerreviewmaketitle as needed -\if@peerreviewoption +\ifCLASSOPTIONpeerreview \def\IEEEpeerreviewmaketitle{\@IEEEcleardoublepage{empty}% -\if@twocolumnmode +\if@twocolumn \twocolumn[\@IEEEpeerreviewmaketitle\@IEEEdynamictitlevspace] \else \newpage\@IEEEpeerreviewmaketitle\@IEEEstatictitlevskip \fi -\thispagestyle{titlepagestyle}} +\thispagestyle{IEEEtitlepagestyle}} \else % \IEEEpeerreviewmaketitle does nothing if peer review option has not been selected \def\IEEEpeerreviewmaketitle{\relax} \fi % peerreview formats the repeated title like the title in journal papers. -\def\@IEEEpeerreviewmaketitle{\begin{center}% +\def\@IEEEpeerreviewmaketitle{\begin{center}\@IEEEcompsoconly{\sffamily}% \normalfont\normalsize\vskip0.2em{\Huge\@title\par}\vskip1.0em\par \end{center}} @@ -3663,15 +3552,15 @@ which is provided to fool Hyperref.}} \def\@IEEEstatictitlevskip{{\normalfont\normalsize % adjust spacing to next text % v1.6b handle peer review papers -\if@peerreviewoption +\ifCLASSOPTIONpeerreview % for peer review papers, the same value is used for both title pages % regardless of the other paper modes \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip \else - \if@confmode% conference + \ifCLASSOPTIONconference% conference \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% \else% - \if@technote% technote + \ifCLASSOPTIONtechnote% technote \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% \else% journal uses more space \vskip 2.5\baselineskip plus 0.75\baselineskip minus 0.375\baselineskip% @@ -3688,48 +3577,49 @@ which is provided to fool Hyperref.}} % main text is an integer multiple of \baselineskip % otherwise underfull vbox problems may develop in the second column of the % text on the titlepage -% The possible use of \pubid must also be taken into account. +% The possible use of \IEEEpubid must also be taken into account. \def\@IEEEdynamictitlevspace{{% % we run within a group so that all the macros can be forgotten when we are done - \def\thanks##1{\relax}%don't allow \thanks to run when we evaluate the vbox height + \long\def\thanks##1{\relax}%don't allow \thanks to run when we evaluate the vbox height + \long\def\IEEEcompsocitemizethanks##1{\relax}%don't allow \IEEEcompsocitemizethanks to run when we evaluate the vbox height \normalfont\normalsize% we declare more descriptive variable names - \let\@maintextheight=\@IEEEtrantmpdimenA%height of the main text columns - \let\@INTmaintextheight=\@IEEEtrantmpdimenB%height of the main text columns with integer # lines + \let\@IEEEmaintextheight=\@IEEEtrantmpdimenA%height of the main text columns + \let\@IEEEINTmaintextheight=\@IEEEtrantmpdimenB%height of the main text columns with integer # lines % set the nominal and minimum values for the title spacer % the dynamic algorithm will not allow the spacer size to - % become less than \@MINtitlevspace - instead it will be + % become less than \@IEEEMINtitlevspace - instead it will be % lengthened % default to journal values - \def\@NORMtitlevspace{2.5\baselineskip}% - \def\@MINtitlevspace{2\baselineskip}% + \def\@IEEENORMtitlevspace{2.5\baselineskip}% + \def\@IEEEMINtitlevspace{2\baselineskip}% % conferences and technotes need tighter spacing - \if@confmode%conference - \def\@NORMtitlevspace{1\baselineskip}% - \def\@MINtitlevspace{0.75\baselineskip}% + \ifCLASSOPTIONconference%conference + \def\@IEEENORMtitlevspace{1\baselineskip}% + \def\@IEEEMINtitlevspace{0.75\baselineskip}% \fi - \if@technote%technote - \def\@NORMtitlevspace{1\baselineskip}% - \def\@MINtitlevspace{0.75\baselineskip}% + \ifCLASSOPTIONtechnote%technote + \def\@IEEENORMtitlevspace{1\baselineskip}% + \def\@IEEEMINtitlevspace{0.75\baselineskip}% \fi% % get the height that the title will take up - \if@peerreviewoption - \settoheight{\@maintextheight}{\vbox{\hsize\textwidth \@IEEEpeerreviewmaketitle}}% + \ifCLASSOPTIONpeerreview + \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@IEEEpeerreviewmaketitle}}% \else - \settoheight{\@maintextheight}{\vbox{\hsize\textwidth \@maketitle}}% + \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@maketitle}}% \fi - \@maintextheight=-\@maintextheight% title takes away from maintext, so reverse sign + \@IEEEmaintextheight=-\@IEEEmaintextheight% title takes away from maintext, so reverse sign % add the height of the page textheight - \advance\@maintextheight by \textheight% + \advance\@IEEEmaintextheight by \textheight% % correct for title pages using pubid - \if@peerreviewoption\else + \ifCLASSOPTIONpeerreview\else % peerreview papers use the pubid on the cover page only. % And the cover page uses a static spacer. - \if@IEEEusingpubid\advance\@maintextheight by -\@pubidpullup\fi + \if@IEEEusingpubid\advance\@IEEEmaintextheight by -\@IEEEpubidpullup\fi \fi% % subtract off the nominal value of the title bottom spacer - \advance\@maintextheight by -\@NORMtitlevspace% + \advance\@IEEEmaintextheight by -\@IEEENORMtitlevspace% % \topskip takes away some too - \advance\@maintextheight by -\topskip% + \advance\@IEEEmaintextheight by -\topskip% % calculate the column height of the main text for lines % now we calculate the main text height as if holding % an integer number of \normalsize lines after the first @@ -3737,37 +3627,37 @@ which is provided to fool Hyperref.}} % we subtracted the first line, because the first line % is placed \topskip into the maintext, not \baselineskip like the % rest of the lines. - \@INTmaintextheight=\@maintextheight% - \divide\@INTmaintextheight by \baselineskip% - \multiply\@INTmaintextheight by \baselineskip% + \@IEEEINTmaintextheight=\@IEEEmaintextheight% + \divide\@IEEEINTmaintextheight by \baselineskip% + \multiply\@IEEEINTmaintextheight by \baselineskip% % now we calculate how much the title spacer height will - % have to be reduced from nominal (\@REDUCEmaintextheight is always + % have to be reduced from nominal (\@IEEEREDUCEmaintextheight is always % a positive value) so that the maintext area will contain an integer % number of normal size lines % we change variable names here (to avoid confusion) as we no longer - % need \@INTmaintextheight and can reuse its dimen register - \let\@REDUCEmaintextheight=\@INTmaintextheight% - \advance\@REDUCEmaintextheight by -\@maintextheight% - \advance\@REDUCEmaintextheight by \baselineskip% + % need \@IEEEINTmaintextheight and can reuse its dimen register + \let\@IEEEREDUCEmaintextheight=\@IEEEINTmaintextheight% + \advance\@IEEEREDUCEmaintextheight by -\@IEEEmaintextheight% + \advance\@IEEEREDUCEmaintextheight by \baselineskip% % this is the calculated height of the spacer % we change variable names here (to avoid confusion) as we no longer - % need \@maintextheight and can reuse its dimen register - \let\@COMPENSATElen=\@maintextheight% - \@COMPENSATElen=\@NORMtitlevspace% set the nominal value + % need \@IEEEmaintextheight and can reuse its dimen register + \let\@IEEECOMPENSATElen=\@IEEEmaintextheight% + \@IEEECOMPENSATElen=\@IEEENORMtitlevspace% set the nominal value % we go with the reduced length if it is smaller than an increase - \ifdim\@REDUCEmaintextheight < 0.5\baselineskip\relax% - \advance\@COMPENSATElen by -\@REDUCEmaintextheight% + \ifdim\@IEEEREDUCEmaintextheight < 0.5\baselineskip\relax% + \advance\@IEEECOMPENSATElen by -\@IEEEREDUCEmaintextheight% % if the resulting spacer is too small back out and go with an increase instead - \ifdim\@COMPENSATElen<\@MINtitlevspace\relax% - \advance\@COMPENSATElen by \baselineskip% + \ifdim\@IEEECOMPENSATElen<\@IEEEMINtitlevspace\relax% + \advance\@IEEECOMPENSATElen by \baselineskip% \fi% \else% % go with an increase because it is closer to the nominal than a decrease - \advance\@COMPENSATElen by -\@REDUCEmaintextheight% - \advance\@COMPENSATElen by \baselineskip% + \advance\@IEEECOMPENSATElen by -\@IEEEREDUCEmaintextheight% + \advance\@IEEECOMPENSATElen by \baselineskip% \fi% % set the calculated rigid spacer - \vspace{\@COMPENSATElen}}} + \vspace{\@IEEECOMPENSATElen}}} @@ -3776,33 +3666,97 @@ which is provided to fool Hyperref.}} % useful in emergencies such as when a different spacing is needed % This text is NOT compensated for in the dynamic sizer. \let\@IEEEaftertitletext=\relax -\def\IEEEaftertitletext#1{\def\@IEEEaftertitletext{#1}} +\long\def\IEEEaftertitletext#1{\def\@IEEEaftertitletext{#1}} + +% V1.7 provide a way for users to enter abstract and keywords +% into the onecolumn title are. This text is compensated for +% in the dynamic sizer. +\let\@IEEEcompsoctitleabstractindextext=\relax +\long\def\IEEEcompsoctitleabstractindextext#1{\def\@IEEEcompsoctitleabstractindextext{#1}} +% V1.7 provide a way for users to get the \@IEEEcompsoctitleabstractindextext if +% not in compsoc journal mode - this way abstract and keywords can be placed +% in their conventional position if not in compsoc mode. +\def\IEEEdisplaynotcompsoctitleabstractindextext{% +\ifCLASSOPTIONcompsoc% display if compsoc conf +\ifCLASSOPTIONconference\@IEEEcompsoctitleabstractindextext\fi +\else% or if not compsoc +\@IEEEcompsoctitleabstractindextext\fi} + + +% command to allow alteration of baselinestretch, but only if the current +% baselineskip is unity. Used to tweak the compsoc abstract and keywords line spacing. +\def\@IEEEtweakunitybaselinestretch#1{{\def\baselinestretch{1}\selectfont +\global\@tempskipa\baselineskip}\ifnum\@tempskipa=\baselineskip% +\def\baselinestretch{#1}\selectfont\fi\relax} + + +% abstract and keywords are in \small, except +% for 9pt docs in which they are in \footnotesize +% Because 9pt docs use an 8pt footnotesize, \small +% becomes a rather awkward 8.5pt +\def\@IEEEabskeysecsize{\small} +\ifx\CLASSOPTIONpt\@IEEEptsizenine + \def\@IEEEabskeysecsize{\footnotesize} +\fi + +% compsoc journals use \footnotesize, compsoc conferences use normalsize +\@IEEEcompsoconly{\def\@IEEEabskeysecsize{\footnotesize}} +\@IEEEcompsocconfonly{\def\@IEEEabskeysecsize{\normalsize}} + + % V1.6 have abstract and keywords strip leading spaces, pars and newlines % so that spacing is more tightly controlled. -\def\abstract{\normalfont% - \if@twocolumn% - \@IEEEabskeysecsize\bfseries\textit{Abstract}---\,% - \else% - \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{Abstract}\end{center}\quotation\@IEEEabskeysecsize% +\def\abstract{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax + \else + \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\end{center}\quotation\@IEEEabskeysecsize \fi\@IEEEgobbleleadPARNLSP} % V1.6 IEEE wants only 1 pica from end of abstract to introduction heading when in % conference mode (the heading already has this much above it) -\def\endabstract{\relax\if@confmode\vspace{0ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi% +\def\endabstract{\relax\ifCLASSOPTIONconference\vspace{0ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi \normalfont\normalsize} - -\def\keywords{\normalfont% - % IEEE uses the term (in bold italics) "Index Terms" now. - \if@twocolumn% - \@IEEEabskeysecsize\bfseries\textit{Index Terms}---\,\relax% - \else% - \begin{center}\@IEEEabskeysecsize\bfseries Index Terms\end{center}\quotation\@IEEEabskeysecsize% +\def\IEEEkeywords{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\IEEEkeywordsname}---\relax + \else + \begin{center}\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\end{center}\quotation\@IEEEabskeysecsize \fi\@IEEEgobbleleadPARNLSP} -\def\endkeywords{\relax\if@technote\vspace{1.34ex}\else\vspace{0.67ex}\fi% +\def\endIEEEkeywords{\relax\ifCLASSOPTIONtechnote\vspace{1.34ex}\else\vspace{0.67ex}\fi \par\if@twocolumn\else\endquotation\fi% - \normalsize\normalfont} + \normalfont\normalsize} + +% V1.7 compsoc keywords index terms +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference +\def\abstract{\normalfont + \begin{center}\@IEEEabskeysecsize\textbf{\large\abstractname}\end{center}\vskip 0.5\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip + \if@twocolumn\else\quotation\fi\itshape\@IEEEabskeysecsize% + \par\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\vskip 1.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip + \begin{center}\@IEEEabskeysecsize\textbf{\large\IEEEkeywordsname}\end{center}\vskip 0.5\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip + \if@twocolumn\else\quotation\fi\itshape\@IEEEabskeysecsize% + \par\@IEEEgobbleleadPARNLSP} + \else% compsoc not conference +\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\noindent\textbf{\abstractname}---\relax + \else + \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\end{center}\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent + \textbf{\IEEEkeywordsname}---\relax + \else + \begin{center}\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\end{center}\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} + \fi +\fi + % gobbles all leading \, \\ and \par, upon finding first token that @@ -3842,48 +3796,63 @@ which is provided to fool Hyperref.}} % TITLING OF SECTIONS \def\@IEEEsectpunct{:\ \,} % Punctuation after run-in section heading (headings which are - % part of the paragraphs), need little bit more than a space + % part of the paragraphs), need little bit more than a single space + % spacing from section number to title +% compsoc conferences use regular period/space punctuation +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +\def\@IEEEsectpunct{.\ } +\fi\fi + \def\@seccntformat#1{\csname the#1dis\endcsname\hskip 0.5em\relax} +\ifCLASSOPTIONcompsoc +% compsoc journals need extra spacing +\ifCLASSOPTIONconference\else +\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 1em\relax} +\fi\fi + +%v1.7 put {} after #6 to allow for some types of user font control +%and use \@@par rather than \par \def\@sect#1#2#3#4#5#6[#7]#8{% - \ifnum #2>\c@secnumdepth% - \def\@svsec{}% - \else% - \refstepcounter{#1} + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% % load section label and spacer into \@svsec \protected@edef\@svsec{\@seccntformat{#1}\relax}% \fi% - \@tempskipa #5\relax% + \@tempskipa #5\relax \ifdim \@tempskipa>\z@% tempskipa determines whether is treated as a high - \begingroup #6\relax% or low level heading + \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\relax\else% + {\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\@@par}}% + \endgroup + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\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\@IEEEsectpunct\mbox{}%\csname #1mark\endcsname{#7} - \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else% - \protect\numberline{\csname the#1\endcsname}\fi#7}} + \def\@svsechd{#6{\hskip #3\relax\@svsec #8\@IEEEsectpunct\mbox{}}% + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\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@% +%v1.7 put {} after #4 to allow for some types of user font control +%and use \@@par rather than \par +\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% + \begingroup \noindent #4{\relax{\hskip #1}{\interlinepenalty \@M #5\@@par}}\endgroup % svsechd swallows the trailing space, protect it with \mbox{} - \else \def\@svsechd{#4\hskip #1\relax #5\@IEEEsectpunct\mbox{}}\fi% + \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi \@xsect{#3}} @@ -3904,7 +3873,7 @@ which is provided to fool Hyperref.}} % 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. -\if@confmode% +\ifCLASSOPTIONconference% % IEEE wants section heading spacing to decrease for conference mode \def\section{\@startsection{section}{1}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% {0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% @@ -3916,6 +3885,8 @@ which is provided to fool Hyperref.}} \def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}% {0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% \fi + +% for both journals and conferences % 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}}% @@ -3923,16 +3894,53 @@ which is provided to fool Hyperref.}} {0ex}{\normalfont\normalsize\itshape}}% +% compsoc +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +% compsoc conference +\def\section{\@startsection{section}{1}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\large\bfseries}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\sublargesize\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{0ex}{\normalfont\normalsize\bfseries}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize}}% +\else% compsoc journals +% use negative top separation as compsoc journals do not indent paragraphs after section titles +\def\section{\@startsection{section}{1}{\z@}{-3ex plus -2ex minus -1.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\large\sffamily\bfseries\scshape}}% +% Note that subsection and smaller may not be correct for the Computer Society, +% I have to look up an example. +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.5ex plus -1.5ex minus -1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\sffamily\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex plus -1ex minus -1ex}% +{0.5ex plus 0.5ex minus 0ex}{\normalfont\normalsize\sffamily\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{-0ex plus -0.1ex minus -0.1ex}% +{0ex}{\normalfont\normalsize}}% +\fi\fi + + + %% ENVIRONMENTS % "box" symbols at end of proofs -\def\QEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box +\def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box % V1.6 some journals use an open box instead that will just fit around a closed one -\def\QEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}} -\def\QED{\QEDclosed} % default to closed +\def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}} +\ifCLASSOPTIONcompsoc +\def\IEEEQED{\IEEEQEDopen} % default to open for compsoc +\else +\def\IEEEQED{\IEEEQEDclosed} % otherwise default to closed +\fi + +% v1.7 name change to avoid namespace collision with amsthm. Also add support +% for an optional argument. +\def\IEEEproof{\@ifnextchar[{\@IEEEproof}{\@IEEEproof[\IEEEproofname]}} +\def\@IEEEproof[#1]{\par\noindent\hspace{2em}{\itshape #1: }} +\def\endIEEEproof{\hspace*{\fill}~\IEEEQED\par} + -\def\proof{\noindent\hspace{2em}{\itshape Proof: }} -\def\endproof{\hspace*{\fill}~\QED\par\endtrivlist\unskip} %\itemindent is set to \z@ by list, so define new temporary variable \newdimen\@IEEEtmpitemindent \def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\topsep 0pt\rmfamily\trivlist% @@ -3941,20 +3949,38 @@ which is provided to fool Hyperref.}} % V1.6 IEEE is back to using () around theorem names which are also in italics % Thanks to Christian Peel for reporting this. \item[\hskip\labelsep{\indent\itshape #1\ #2\ (#3):}]\itemindent\@IEEEtmpitemindent} -\def\@endtheorem{\endtrivlist\unskip} +% V1.7 remove bogus \unskip that caused equations in theorems to collide with +% lines below. +\def\@endtheorem{\endtrivlist} % V1.6 % display command for the section the theorem is in - so that \thesection % is not used as this will be in Roman numerals when we want arabic. % LaTeX2e uses \def\@thmcounter#1{\noexpand\arabic{#1}} for the theorem number % (second part) display and \def\@thmcountersep{.} as a separator. -\def\@IEEEthmcounterin#1{\arabic{#1}} -% redefine the #1#2[#3] form of newtheorem to use a hook to \@IEEEthmcounterin +% V1.7 intercept calls to the section counter and reroute to \@IEEEthmcounterinsection +% to allow \appendix(ices} to override as needed. +% +% special handler for sections, allows appendix(ices) to override +\gdef\@IEEEthmcounterinsection#1{\arabic{#1}} +% string macro +\edef\@IEEEstringsection{section} + +% redefine the #1#2[#3] form of newtheorem to use a hook to \@IEEEthmcounterinsection +% if section in_counter is used \def\@xnthm#1#2[#3]{% \expandafter\@ifdefinable\csname #1\endcsname {\@definecounter{#1}\@newctr{#1}[#3]% + \edef\@IEEEstringtmp{#3} + \ifx\@IEEEstringtmp\@IEEEstringsection \expandafter\xdef\csname the#1\endcsname{% - \noexpand\@IEEEthmcounterin{#3}\@thmcountersep\@thmcounter{#1}}% + \noexpand\@IEEEthmcounterinsection{#3}\@thmcountersep + \@thmcounter{#1}}% + \else + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@thmcountersep + \@thmcounter{#1}}% + \fi \global\@namedef{#1}{\@thm{#1}{#2}}% \global\@namedef{end#1}{\@endtheorem}}} @@ -3968,7 +3994,7 @@ which is provided to fool Hyperref.}} \setcounter{page}{1} % however, for peerreview the cover sheet is page 0 or page -1 % (for duplex printing) -\if@peerreviewoption +\ifCLASSOPTIONpeerreview \if@twoside \setcounter{page}{-1} \else @@ -3981,9 +4007,9 @@ which is provided to fool Hyperref.}} \if@twoside\else\raggedbottom\fi % if two column - turn on twocolumn, allow word spacings to stretch more and % enforce a rigid position for the last lines -\if@twocolumnmode +\if@twocolumn % the peer review option delays invoking twocolumn - \if@peerreviewoption\else + \ifCLASSOPTIONpeerreview\else \twocolumn \fi \sloppy @@ -4018,9 +4044,14 @@ which is provided to fool Hyperref.}} \endgroup % end of \@ifmtarg defs -% save the "original" meaning of \section so we can redefine -% \section after a call to \appendix or \appendices -\let\@IEEEappendixsavesection\section + +% V1.7 +% command that allows the one time saving of the original definition +% of section to \@IEEEappendixsavesection for \appendix or \appendices +% we don't save \section here as it may be redefined later by other +% packages (hyperref.sty, etc.) +\def\@IEEEsaveoriginalsectiononce{\let\@IEEEappendixsavesection\section +\let\@IEEEsaveoriginalsectiononce\relax} % neat trick to grab and process the argument from \section{argument} % we process differently if the user invoked \section{} with no @@ -4028,10 +4059,10 @@ which is provided to fool Hyperref.}} % note we reroute the call to the old \section* \def\@IEEEprocessthesectionargument#1{% \@ifmtarg{#1}{% -\@IEEEappendixsavesection*{Appendix \thesectiondis}% -\addcontentsline{toc}{section}{Appendix \thesection}}{% -\@IEEEappendixsavesection*{Appendix \thesectiondis \\* #1}% -\addcontentsline{toc}{section}{Appendix \thesection: #1}}} +\@IEEEappendixsavesection*{\appendixname~\thesectiondis}% +\addcontentsline{toc}{section}{\appendixname~\thesection}}{% +\@IEEEappendixsavesection*{\appendixname~\thesectiondis \\* #1}% +\addcontentsline{toc}{section}{\appendixname~\thesection: #1}}} % we use this if the user calls \section{} after % \appendix-- which has no meaning. So, we ignore the @@ -4049,23 +4080,24 @@ which is provided to fool Hyperref.}} % heading, you can do so via the optional argument: % \appendix[Optional Heading] \def\appendix{\relax} -\renewcommand{\appendix}[1][]{\par% +\renewcommand{\appendix}[1][]{\@IEEEsaveoriginalsectiononce\par % v1.6 keep hyperref's identifiers unique - \def\theHsection{Appendix.A}% + \gdef\theHsection{Appendix.A}% % v1.6 adjust hyperref's string name for the section \xdef\Hy@chapapp{appendix}% \setcounter{section}{0}% \setcounter{subsection}{0}% \setcounter{subsubsection}{0}% \setcounter{paragraph}{0}% - \def\thesection{}% - \def\thesectiondis{}% - \def\thesubsection{\Alph{subsection}}% + \gdef\thesection{A}% + \gdef\thesectiondis{}% + \gdef\thesubsection{\Alph{subsection}}% + \gdef\@IEEEthmcounterinsection##1{A} \refstepcounter{section}% update the \ref counter - \@ifmtarg{#1}{\@IEEEappendixsavesection*{Appendix}% - \addcontentsline{toc}{section}{Appendix}}{% - \@IEEEappendixsavesection*{Appendix \\* #1}% - \addcontentsline{toc}{section}{Appendix: #1}}% + \@ifmtarg{#1}{\@IEEEappendixsavesection*{\appendixname}% + \addcontentsline{toc}{section}{\appendixname}}{% + \@IEEEappendixsavesection*{\appendixname~\\* #1}% + \addcontentsline{toc}{section}{\appendixname: #1}}% % redefine \section command for appendix % leave \section* as is \def\section{\@ifstar{\@IEEEappendixsavesection*}{% @@ -4074,34 +4106,29 @@ which is provided to fool Hyperref.}} } -% 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% +\def\appendices{\@IEEEsaveoriginalsectiononce\par % v1.6 keep hyperref's identifiers unique - \def\theHsection{Appendix.\Alph{section}}% + \gdef\theHsection{Appendix.\Alph{section}}% % v1.6 adjust hyperref's string name for the section \xdef\Hy@chapapp{appendix}% \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}}% + \ifCLASSOPTIONromanappendices% + \gdef\thesection{\Roman{section}}% + \gdef\thesectiondis{\Roman{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Roman{section}.}}% + \gdef\@IEEEthmcounterinsection##1{A\arabic{##1}} \else% - \def\thesection{\Alph{section}}% - \def\thesectiondis{\Alph{section}}% + \gdef\thesection{\Alph{section}}% + \gdef\thesectiondis{\Alph{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Alph{section}.}}% + \gdef\@IEEEthmcounterinsection##1{\Alph{##1}} \fi% \refstepcounter{section}% update the \ref counter \setcounter{section}{0}% NEXT \section will be the FIRST appendix @@ -4115,7 +4142,7 @@ which is provided to fool Hyperref.}} -% \PARstart +% \IEEEPARstart % Definition for the big two line drop cap letter at the beginning of the % first paragraph of journal papers. The first argument is the first letter % of the first word, the second argument is the remaining letters of the @@ -4123,7 +4150,7 @@ which is provided to fool Hyperref.}} % In V1.6 this has been completely rewritten to: % % 1. no longer have problems when the user begins an environment -% within the paragraph that uses \PARstart. +% within the paragraph that uses \IEEEPARstart. % 2. auto-detect and use the current font family % 3. revise handling of the space at the end of the first word so that % interword glue will now work as normal. @@ -4131,57 +4158,88 @@ which is provided to fool Hyperref.}} % % We generalize things via control macros - playing with these is fun too. % +% V1.7 added more control macros to make it easy for IEEEtrantools.sty users +% to change the font style. +% % the number of lines that are indented to clear it +% may need to increase if using decenders \def\@IEEEPARstartDROPLINES{2} -% minimum number of lines left on a page to allow a \@PARstart +% minimum number of lines left on a page to allow a \@IEEEPARstart % Does not take into consideration rubber shrink, so it tends to % be overly cautious \def\@IEEEPARstartMINPAGELINES{2} +% V1.7 the height of the drop cap is adjusted to match the height of this text +% in the current font (when \IEEEPARstart is called). +\def\@IEEEPARstartHEIGHTTEXT{T} % the depth the letter is lowered below the baseline % the height (and size) of the letter is determined by the sum -% of this value and the height of a capital "T" in the current +% of this value and the height of the \@IEEEPARstartHEIGHTTEXT in the current % font. It is a good idea to set this value in terms of the baselineskip % so that it can respond to changes therein. \def\@IEEEPARstartDROPDEPTH{1.1\baselineskip} -% This is the separation distance from the drop letter to the main text. -% Lengths that depend on the font (i.e., ex, em, etc.) will be referenced -% to the font that is active when PARstart is called. +% V1.7 the font the drop cap will be rendered in, +% can take zero or one argument. +\def\@IEEEPARstartFONTSTYLE{\bfseries} +% V1.7 any additional, non-font related commands needed to modify +% the drop cap letter, can take zero or one argument. +\def\@IEEEPARstartCAPSTYLE{\MakeUppercase} +% V1.7 the font that will be used to render the rest of the word, +% can take zero or one argument. +\def\@IEEEPARstartWORDFONTSTYLE{\relax} +% V1.7 any additional, non-font related commands needed to modify +% the rest of the word, can take zero or one argument. +\def\@IEEEPARstartWORDCAPSTYLE{\MakeUppercase} +% This is the horizontal separation distance from the drop letter to the main text. +% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced +% to the font that is active when \IEEEPARstart is called. \def\@IEEEPARstartSEP{0.15em} +% V1.7 horizontal offset applied to the left of the drop cap. +\def\@IEEEPARstartHOFFSET{0em} +% V1.7 Italic correction command applied at the end of the drop cap. +\def\@IEEEPARstartITLCORRECT{\/} + +% V1.7 compoc uses nonbold drop cap and small caps word style +\ifCLASSOPTIONcompsoc +\def\@IEEEPARstartFONTSTYLE{\mdseries} +\def\@IEEEPARstartWORDFONTSTYLE{\scshape} +\def\@IEEEPARstartWORDCAPSTYLE{\relax} +\fi - -% definition of \PARstart +% definition of \IEEEPARstart % THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES % % The token \@IEEEPARstartfont will be globally defined after the first use -% of \PARstart and will be a font command which creates the big letter +% of \IEEEPARstart and will be a font command which creates the big letter % The first argument is the first letter of the first word and the second % argument is the rest of the first word(s). -\def\PARstart#1#2{\par{% +\def\IEEEPARstart#1#2{\par{% % if this page does not have enough space, break it and lets start % on a new one \@IEEEtranneedspace{\@IEEEPARstartMINPAGELINES\baselineskip}{\relax}% +% V1.7 move this up here in case user uses \textbf for \@IEEEPARstartFONTSTYLE +% which uses command \leavevmode which causes an unwanted \indent to be issued +\noindent % calculate the desired height of the big letter -% it extends from the top of a capital "T" in the current font +% it extends from the top of \@IEEEPARstartHEIGHTTEXT in the current font % down to \@IEEEPARstartDROPDEPTH below the current baseline -\settoheight{\@IEEEtrantmpdimenA}{T}% +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEPARstartHEIGHTTEXT}% \addtolength{\@IEEEtrantmpdimenA}{\@IEEEPARstartDROPDEPTH}% % extract the name of the current font in bold % and place it in \@IEEEPARstartFONTNAME \def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}% -{\bfseries% -\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% -\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}% +{\@IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% +\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}% % define a font based on this name with a point size equal to the desired % height of the drop letter \font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax% % save this value as a counter (integer) value (sp points) \@IEEEtrantmpcountA=\@IEEEtrantmpdimenA% % now get the height of the actual letter produced by this font size -\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\MakeUppercase{#1}}% +\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\@IEEEPARstartCAPSTYLE{#1}}% % If something bogus happens like the first argument is empty or the % current font is strange, do not allow a zero height. \ifdim\@IEEEtrantmpdimenB=0pt\relax% -\typeout{** WARNING: PARstart drop letter has zero height! (line \the\inputlineno)}% +\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}% \typeout{ Forcing the drop letter font size to 10pt.}% \@IEEEtrantmpdimenB=10pt% \fi% @@ -4209,23 +4267,30 @@ which is provided to fool Hyperref.}} % Now set \@IEEEtrantmpdimenA to the width of the big letter % We need to carry this out of the local calculation area to set the % hanging indent -\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont\MakeUppercase{#1}}}% +\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont +\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}}}% % end of the isolated calculation environment % add in the extra clearance we want -\advance\@IEEEtrantmpdimenA by \@IEEEPARstartSEP% +\advance\@IEEEtrantmpdimenA by \@IEEEPARstartSEP\relax% +% add in the optional offset +\advance\@IEEEtrantmpdimenA by \@IEEEPARstartHOFFSET\relax% +% V1.7 don't allow negative offsets to produce negative hanging indents +\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA +\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi % \@IEEEtrantmpdimenA has the width of the big letter plus the % separation space and \@IEEEPARstartfont is the font we need to use % Now, we make the letter and issue the hanging indent command % The letter is placed in a box of zero width and height so that other % text won't be displaced by it. -\noindent\hangindent\@IEEEtrantmpdimenA\hangafter=-\@IEEEPARstartDROPLINES% -\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}\raisebox{-\@IEEEPARstartDROPDEPTH}[0pt][0pt]{\@IEEEPARstartfont\MakeUppercase{#1}}}\MakeUppercase{#2}} +\hangindent\@IEEEtrantmpdimenB\hangafter=-\@IEEEPARstartDROPLINES% +\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}% +\raisebox{-\@IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\@IEEEPARstartHOFFSET}% +\@IEEEPARstartfont\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}% +\hspace{\@IEEEPARstartSEP}}}% +{\@IEEEPARstartWORDFONTSTYLE{\@IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}} + -% V1.6 \CMPARstart is no longer needed as \PARstart now uses whatever -% the current font family is. -% \CMPARstart is provided here for backward compatability. -\let\CMPARstart=\PARstart @@ -4251,20 +4316,20 @@ which is provided to fool Hyperref.}} -% BIOGRAPHY ENVIRONMENT -% Allows user to enter BIOGRAPHY leaving place for picture (adapts to font size) +% IEEEbiography ENVIRONMENT +% 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 % V1.6 prevent multiple biographies from making multiple TOC entries -\newif\if@biographyTOCentrynotmade -\global\@biographyTOCentrynotmadetrue +\newif\if@IEEEbiographyTOCentrynotmade +\global\@IEEEbiographyTOCentrynotmadetrue % biography counter so hyperref can jump directly to the biographies % and not just the previous section -\newcounter{biography} -\setcounter{biography}{0} +\newcounter{IEEEbiography} +\setcounter{IEEEbiography}{0} % photo area size \def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area @@ -4276,7 +4341,7 @@ which is provided to fool Hyperref.}} % \baselineskip, rounded up \def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography -\newenvironment{biography}[2][]{\normalfont\footnotesize% +\newenvironment{IEEEbiography}[2][]{\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize% \unitlength 1in\parskip=0pt\par\parindent 1em\interlinepenalty500% % we need enough space to support the hanging indent % the nominal value of the spacer @@ -4290,7 +4355,8 @@ which is provided to fool Hyperref.}} % nominal spacer can strech, not shrink use 1fil so user can out stretch with \vfill \vskip \@IEEEBIOskipN plus 1fil minus 0\baselineskip% % the default box for where the photo goes -\def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}% +\def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{% +\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}% % % detect if the optional argument was supplied, this requires the % \@ifmtarg command as defined in the appendix section above @@ -4300,16 +4366,16 @@ which is provided to fool Hyperref.}} #1% \end{minipage}}}}% end if optional argument supplied % Make an entry into the table of contents only if we have not done so before -\if@biographyTOCentrynotmade% +\if@IEEEbiographyTOCentrynotmade% % link labels to the biography counter so hyperref will jump % to the biography, not the previous section -\setcounter{biography}{-1}% -\refstepcounter{biography}% +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% \addcontentsline{toc}{section}{Biographies}% -\global\@biographyTOCentrynotmadefalse% +\global\@IEEEbiographyTOCentrynotmadefalse% \fi% % one more biography -\refstepcounter{biography}% +\refstepcounter{IEEEbiography}% % Make an entry for this name into the table of contents \addcontentsline{toc}{subsection}{#2}% % V1.6 properly handle if a new paragraph should occur while the @@ -4329,7 +4395,8 @@ which is provided to fool Hyperref.}} % reference the top of the photo area to the top of a capital T \settoheight{\@IEEEtrantmpdimenB}{\mbox{T}}% % set the photo box, give it zero width and height so as not to disturb anything -\noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{\raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}% +\noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{% +\raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}% % now place the author name and begin the bio text \noindent\textbf{#2\ }\@IEEEgobbleleadPARNLSP}{\relax\let\par=\@IEEEBIOORGparCMD\par% % 7/2001 V1.5 detect when the biography text is shorter than the photo area @@ -4348,21 +4415,21 @@ which is provided to fool Hyperref.}} % V1.6 % added biography without a photo environment -\newenvironment{biographynophoto}[1]{% +\newenvironment{IEEEbiographynophoto}[1]{% % Make an entry into the table of contents only if we have not done so before -\if@biographyTOCentrynotmade% +\if@IEEEbiographyTOCentrynotmade% % link labels to the biography counter so hyperref will jump % to the biography, not the previous section -\setcounter{biography}{-1}% -\refstepcounter{biography}% +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% \addcontentsline{toc}{section}{Biographies}% -\global\@biographyTOCentrynotmadefalse% +\global\@IEEEbiographyTOCentrynotmadefalse% \fi% % one more biography -\refstepcounter{biography}% +\refstepcounter{IEEEbiography}% % Make an entry for this name into the table of contents \addcontentsline{toc}{subsection}{#1}% -\normalfont\footnotesize\interlinepenalty500% +\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500% \vskip 4\baselineskip plus 1fil minus 0\baselineskip% \parskip=0pt\par% \noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont} @@ -4384,14 +4451,14 @@ which is provided to fool Hyperref.}} % SPECIAL PAPER NOTICE COMMANDS % % holds the special notice text -\def\@specialpapernotice{\relax} +\def\@IEEEspecialpapernotice{\relax} % for special papers, like invited papers, the user can do: -% \specialpapernotice{(Invited Paper)} before \maketitle -\def\specialpapernotice#1{\if@confmode% -\def\@specialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}% +% \IEEEspecialpapernotice{(Invited Paper)} before \maketitle +\def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference% +\def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}% \else% -\def\@specialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}% +\def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}% \fi} @@ -4399,9 +4466,9 @@ which is provided to fool Hyperref.}} % PUBLISHER ID COMMANDS % to insert a publisher's ID footer -% V1.6 \pubid has been changed so that the change in page size and style -% occurs in \maketitle. \pubid must now be issued prior to \maketitle -% use \pubidadjcol as before - in the second column of the title page +% V1.6 \IEEEpubid has been changed so that the change in page size and style +% occurs in \maketitle. \IEEEpubid must now be issued prior to \maketitle +% use \IEEEpubidadjcol as before - in the second column of the title page % These changes allow \maketitle to take the reduced page height into % consideration when dynamically setting the space between the author % names and the maintext. @@ -4410,8 +4477,8 @@ which is provided to fool Hyperref.}} % publisher's ID footer % IEEE uses about 1.3\baselineskip for journals, % dynamic title spacing will clean up the fraction -\def\@pubidpullup{1.3\baselineskip} -\if@technote +\def\@IEEEpubidpullup{1.3\baselineskip} +\ifCLASSOPTIONtechnote % for technotes it must be an integer of baselineskip as there can be no % dynamic title spacing for two column mode technotes (the title is in the % in first column) and we should maintain an integer number of lines in the @@ -4420,35 +4487,42 @@ which is provided to fool Hyperref.}} % Information Theory") in which IEEE really pulls the text off the ID for % technotes - about 0.55in (or 4\baselineskip). We'll use 2\baselineskip % and call it even. -\def\@pubidpullup{2\baselineskip} +\def\@IEEEpubidpullup{2\baselineskip} +\fi + +% V1.7 compsoc does not use a pullup +\ifCLASSOPTIONcompsoc +\def\@IEEEpubidpullup{0pt} \fi % holds the ID text -\def\@pubid{\relax} +\def\@IEEEpubid{\relax} -% flag so \maketitle can tell if \pubid was called +% flag so \maketitle can tell if \IEEEpubid was called \newif\if@IEEEusingpubid \global\@IEEEusingpubidfalse % issue this command in the page to have the ID at the bottom % V1.6 use before \maketitle -\def\pubid#1{\def\@pubid{#1} \global\@IEEEusingpubidtrue} +\def\IEEEpubid#1{\def\@IEEEpubid{#1}\global\@IEEEusingpubidtrue} % command which will pull up (shorten) the column it is executed in % to make room for the publisher ID. Place in the second column of -% the title page when using \pubid +% the title page when using \IEEEpubid % Is smart enough not to do anything when in single column text or -% if the user hasn't called \pubid +% if the user hasn't called \IEEEpubid % 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 % v1.6b do not allow command to operate if the peer review option has been -% selected because \pubidadjcol will not be on the cover page. -\def\pubidadjcol{\if@peerreviewoption\else\if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@pubidpullup}\fi\fi\fi} +% selected because \IEEEpubidadjcol will not be on the cover page. +% V1.7 do nothing if compsoc +\def\IEEEpubidadjcol{\ifCLASSOPTIONcompsoc\else\ifCLASSOPTIONpeerreview\else +\if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@IEEEpubidpullup}\fi\fi\fi\fi} % Special thanks to Peter Wilson, Daniel Luecking, and the other % gurus at comp.text.tex, for helping me to understand how best to -% implement the pubid command in LaTeX. +% implement the IEEEpubid command in LaTeX. @@ -4459,23 +4533,19 @@ which is provided to fool Hyperref.}} % flags to prevent multiple warning messages \newif\if@IEEEWARNthanks -\newif\if@IEEEWARNPARstart -\newif\if@IEEEWARNCMPARstart -\newif\if@IEEEWARNkeywords -\newif\if@IEEEWARNbiography -\newif\if@IEEEWARNbiographynophoto -\newif\if@IEEEWARNpubid -\newif\if@IEEEWARNpubidadjcol +\newif\if@IEEEWARNIEEEPARstart +\newif\if@IEEEWARNIEEEbiography +\newif\if@IEEEWARNIEEEbiographynophoto +\newif\if@IEEEWARNIEEEpubid +\newif\if@IEEEWARNIEEEpubidadjcol \newif\if@IEEEWARNIEEEmembership \newif\if@IEEEWARNIEEEaftertitletext \@IEEEWARNthankstrue -\@IEEEWARNPARstarttrue -\@IEEEWARNCMPARstarttrue -\@IEEEWARNkeywordstrue -\@IEEEWARNbiographytrue -\@IEEEWARNbiographynophototrue -\@IEEEWARNpubidtrue -\@IEEEWARNpubidadjcoltrue +\@IEEEWARNIEEEPARstarttrue +\@IEEEWARNIEEEbiographytrue +\@IEEEWARNIEEEbiographynophototrue +\@IEEEWARNIEEEpubidtrue +\@IEEEWARNIEEEpubidadjcoltrue \@IEEEWARNIEEEmembershiptrue \@IEEEWARNIEEEaftertitletexttrue @@ -4485,49 +4555,45 @@ which is provided to fool Hyperref.}} % save commands which might be locked out % so that the user can later restore them if needed \let\@IEEESAVECMDthanks\thanks -\let\@IEEESAVECMDPARstart\PARstart -\let\@IEEESAVECMDCMPARstart\CMPARstart -\let\@IEEESAVECMDkeywords\keywords -\let\@IEEESAVECMDendkeywords\endkeywords -\let\@IEEESAVECMDbiography\biography -\let\@IEEESAVECMDendbiography\endbiography -\let\@IEEESAVECMDbiographynophoto\biographynophoto -\let\@IEEESAVECMDendbiographynophoto\endbiographynophoto -\let\@IEEESAVECMDpubid\pubid -\let\@IEEESAVECMDpubidadjcol\pubidadjcol +\let\@IEEESAVECMDIEEEPARstart\IEEEPARstart +\let\@IEEESAVECMDIEEEbiography\IEEEbiography +\let\@IEEESAVECMDendIEEEbiography\endIEEEbiography +\let\@IEEESAVECMDIEEEbiographynophoto\IEEEbiographynophoto +\let\@IEEESAVECMDendIEEEbiographynophoto\endIEEEbiographynophoto +\let\@IEEESAVECMDIEEEpubid\IEEEpubid +\let\@IEEESAVECMDIEEEpubidadjcol\IEEEpubidadjcol \let\@IEEESAVECMDIEEEmembership\IEEEmembership \let\@IEEESAVECMDIEEEaftertitletext\IEEEaftertitletext -% disable \PARstart when in draft mode +% disable \IEEEPARstart when in draft mode % This may have originally been done because the pre-V1.6 drop letter % algorithm had problems with a non-unity baselinestretch % At any rate, it seems too formal to have a drop letter in a draft % paper. -\if@draftclsmode -\def\PARstart#1#2{#1#2\if@IEEEWARNPARstart\typeout{** ATTENTION: \noexpand\PARstart is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNPARstartfalse} -\def\CMPARstart#1#2{#1#2\if@IEEEWARNPARstart\typeout{** ATTENTION: \noexpand\CMPARstart is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNCMPARstartfalse} +\ifCLASSOPTIONdraftcls +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** ATTENTION: \noexpand\IEEEPARstart + is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} \fi % and for technotes -\if@technote -\def\PARstart#1#2{#1#2\if@IEEEWARNPARstart\typeout{** WARNING: \noexpand\PARstart is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNPARstartfalse} -\def\CMPARstart#1#2{#1#2\if@IEEEWARNPARstart\typeout{** WARNING: \noexpand\CMPARstart is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNCMPARstartfalse} +\ifCLASSOPTIONtechnote +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} \fi % lockout unneeded commands when in conference mode -\if@confmode -% when locked out, \thanks, \keywords, \biography, \biographynophoto, \pubid, +\ifCLASSOPTIONconference +% when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid, % \IEEEmembership and \IEEEaftertitletext will all swallow their given text. -% \PARstart and \CMPARstart will output a normal character instead +% \IEEEPARstart will output a normal character instead % warn the user about these commands only once to prevent the console screen % from filling up with redundant messages -\def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse} -\def\PARstart#1#2{#1#2\if@IEEEWARNPARstart\typeout{** WARNING: \noexpand\PARstart is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNPARstartfalse} -\def\CMPARstart#1#2{#1#2\if@IEEEWARNPARstart\typeout{** WARNING: \noexpand\CMPARstart is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNCMPARstartfalse} +\def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse} +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} -\renewenvironment{keywords}[1]{\if@IEEEWARNkeywords\typeout{** WARNING: \noexpand\keywords is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNkeywordsfalse% -\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} % LaTeX treats environments and commands with optional arguments differently. % the actual ("internal") command is stored as \\commandname @@ -4539,19 +4605,25 @@ which is provided to fool Hyperref.}} % ever changes the way it names the internal names, the trick would break. % Instead let us just define a new environment so that the internal % name can be left undisturbed. -\newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNbiography\typeout{** WARNING: \noexpand\biography is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNbiographyfalse% +\newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNIEEEbiography\typeout{** WARNING: \noexpand\IEEEbiography + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographyfalse% \setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} % and make biography point to our bogus biography -\let\biography=\@IEEEbogusbiography -\let\endbiography=\end@IEEEbogusbiography +\let\IEEEbiography=\@IEEEbogusbiography +\let\endIEEEbiography=\end@IEEEbogusbiography -\renewenvironment{biographynophoto}[1]{\if@IEEEWARNbiographynophoto\typeout{** WARNING: \noexpand\biographynophoto is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNbiographynophotofalse% +\renewenvironment{IEEEbiographynophoto}[1]{\if@IEEEWARNIEEEbiographynophoto\typeout{** WARNING: \noexpand\IEEEbiographynophoto + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographynophotofalse% \setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} -\def\pubid#1{\if@IEEEWARNpubid\typeout{** WARNING: \noexpand\pubid is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNpubidfalse} -\def\pubidadjcol{\if@IEEEWARNpubidadjcol\typeout{** WARNING: \noexpand\pubidadjcol is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNpubidadjcolfalse} -\def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse} -\def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse} +\def\IEEEpubid#1{\if@IEEEWARNIEEEpubid\typeout{** WARNING: \noexpand\IEEEpubid + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidfalse} +\def\IEEEpubidadjcol{\if@IEEEWARNIEEEpubidadjcol\typeout{** WARNING: \noexpand\IEEEpubidadjcol + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidadjcolfalse} +\def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse} +\def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse} \fi @@ -4559,20 +4631,72 @@ which is provided to fool Hyperref.}} \def\IEEEoverridecommandlockouts{% \typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}% \let\thanks\@IEEESAVECMDthanks% -\let\PARstart\@IEEESAVECMDPARstart% -\let\CMPARstart\@IEEESAVECMDCMPARstart% -\let\keywords\@IEEESAVECMDkeywords% -\let\endkeywords\@IEEESAVECMDendkeywords% -\let\biography\@IEEESAVECMDbiography% -\let\endbiography\@IEEESAVECMDendbiography% -\let\biographynophoto\@IEEESAVECMDbiographynophoto% -\let\endbiographynophoto\@IEEESAVECMDendbiographynophoto% -\let\pubid\@IEEESAVECMDpubid% -\let\pubidadjcol\@IEEESAVECMDpubidadjcol% +\let\IEEEPARstart\@IEEESAVECMDIEEEPARstart% +\let\IEEEbiography\@IEEESAVECMDIEEEbiography% +\let\endIEEEbiography\@IEEESAVECMDendIEEEbiography% +\let\IEEEbiographynophoto\@IEEESAVECMDIEEEbiographynophoto% +\let\endIEEEbiographynophoto\@IEEESAVECMDendIEEEbiographynophoto% +\let\IEEEpubid\@IEEESAVECMDIEEEpubid% +\let\IEEEpubidadjcol\@IEEESAVECMDIEEEpubidadjcol% \let\IEEEmembership\@IEEESAVECMDIEEEmembership% \let\IEEEaftertitletext\@IEEESAVECMDIEEEaftertitletext} + +% need a backslash character for typeout output +{\catcode`\|=0 \catcode`\\=12 +|xdef|@IEEEbackslash{\}} + + +% hook to allow easy disabling of all legacy warnings +\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is depreciated (line \the\inputlineno). +Use \@IEEEbackslash #2 instead.}} + + +% provide for legacy commands +\def\authorblockA{\@IEEElegacywarn{authorblockA}{IEEEauthorblockA}\IEEEauthorblockA} +\def\authorblockN{\@IEEElegacywarn{authorblockN}{IEEEauthorblockN}\IEEEauthorblockN} +\def\authorrefmark{\@IEEElegacywarn{authorrefmark}{IEEEauthorrefmark}\IEEEauthorrefmark} +\def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart} +\def\pubid{\@IEEElegacywarn{pubid}{IEEEpubid}\IEEEpubid} +\def\pubidadjcol{\@IEEElegacywarn{pubidadjcol}{IEEEpubidadjcol}\IEEEpubidadjcol} +\def\QED{\@IEEElegacywarn{QED}{IEEEQED}\IEEEQED} +\def\QEDclosed{\@IEEElegacywarn{QEDclosed}{IEEEQEDclosed}\IEEEQEDclosed} +\def\QEDopen{\@IEEElegacywarn{QEDopen}{IEEEQEDopen}\IEEEQEDopen} +\def\specialpapernotice{\@IEEElegacywarn{specialpapernotice}{IEEEspecialpapernotice}\IEEEspecialpapernotice} + + + +% provide for legacy environments +\def\biography{\@IEEElegacywarn{biography}{IEEEbiography}\IEEEbiography} +\def\biographynophoto{\@IEEElegacywarn{biographynophoto}{IEEEbiographynophoto}\IEEEbiographynophoto} +\def\keywords{\@IEEElegacywarn{keywords}{IEEEkeywords}\IEEEkeywords} +\def\endbiography{\endIEEEbiography} +\def\endbiographynophoto{\endIEEEbiographynophoto} +\def\endkeywords{\endIEEEkeywords} + + +% provide for legacy IED commands/lengths when possible +\let\labelindent\IEEElabelindent +\def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin} +\def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth} +\def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep} +\def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc} +\def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl} +\def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr} + + + +% let \proof use the IEEEtran version even after amsthm is loaded +% \proof is now depreciated in favor of \IEEEproof +\AtBeginDocument{\def\proof{\@IEEElegacywarn{proof}{IEEEproof}\IEEEproof}\def\endproof{\endIEEEproof}} + +% V1.7 \overrideIEEEmargins is no longer supported. +\def\overrideIEEEmargins{% +\typeout{** WARNING: \string\overrideIEEEmargins \space no longer supported (line \the\inputlineno).}% +\typeout{** Use the \string\CLASSINPUTinnersidemargin, \string\CLASSINPUToutersidemargin \space controls instead.}} + + \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty b/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty index c5dec9d8e96..76ce3930c07 100644 --- a/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty +++ b/Master/texmf-dist/tex/latex/IEEEtran/IEEEtrantools.sty @@ -1,16 +1,11 @@ %% -%% IEEEtrantools.sty 2002/11/18 version V1.1 -%% -%% NOTE: This text file uses UNIX line feed conventions. When (human) -%% reading this file on other platforms, you may have to use a text -%% editor that can handle lines terminated by the UNIX line feed -%% character (0x0A). +%% IEEEtrantools.sty 2007/01/11 version V1.2 %% %% %% This package provides several popular and unique commands from the -%% IEEEtran.cls class (version 1.6b) file. +%% IEEEtran.cls class (version 1.7) file. %% -%% The provided commands include \PARstart, \IEEEitemize, \IEEEenumerate, +%% The provided commands include \IEEEPARstart, \IEEEitemize, \IEEEenumerate, %% \IEEEdescription as well as the \IEEEeqnarray, \IEEEeqnarraybox family %% of commands including support commands such as \IEEEstrut. %% Also provides the \bstctlcite command for the control entry types of @@ -18,35 +13,40 @@ %% %% IEEEtrantools.sty should not be used with IEEEtran.cls. %% -%% The latest version and documentation of IEEEtrantools can be obtained at: -%% http://www.ctan.org/tex-archive/macros/latex/contrib/supported/IEEEtran/ -%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% %% -%% Copyright (c) 2002 by Michael Shell -%% mshell@ece.gatech.edu -%% See the CTAN website above -%% for current contact information. +%% Copyright (c) 2002-2007 by Michael Shell +%% See: http://www.michaelshell.org/ +%% for current contact information. %% -%%********************************************************************** +%%************************************************************************* %% 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! +%% 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. -%% +%% 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 comments 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. -%% -%%********************************************************************** +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEtrantools.sty, IEEEtrantools_doc.txt +%%************************************************************************* %% %% %% @@ -59,7 +59,37 @@ %% always available as IEEEitemize, IEEEenumerate and IEEEdescription. %% %%******* -% 11/2002 V1.1 (v1.6b of IEEEtran.cls) changes: +% 1/2007 V1.2 (V1.7 of IEEEtran.cls) changes: +% +% 1) Several commands and environments have depreciated in favor of +% replacements with IEEE prefixes to better avoid potential future name +% clashes with other packages. Legacy code retained to allow +% use of the obsolete forms, but with an warning message to the +% console during compilation: +% \IEEEPARstart +% For IED lists: +% \IEEEiedlabeljustifyc, \IEEEiedlabeljustifyl, \IEEEiedlabeljustifyr, +% \IEEEnocalcleftmargin, \IEEElabelindent, \IEEEsetlabelwidth, +% \IEEEusemathlabelsep +% +% 2) These commands/lengths now require the IEEE prefix and do not have +% legacy support: \IEEEnormaljot. +% For IED lists: \ifIEEEnocalcleftmargin, \ifIEEEnolabelindentfactor, +% \IEEEiedlistdecl, \IEEElabelindentfactor +% +% 3) \normalsizebaselineskip no longer provided. +% +% 4) New \IEEEPARstart controls: +% \IEEEPARstartHEIGHTTEXT, \IEEEPARstartFONTSTYLE, \IEEEPARstartCAPSTYLE, +% \IEEEPARstartWORDFONTSTYLE, \IEEEPARstartWORDCAPSTYLE, +% \IEEEPARstartHOFFSET, \IEEEPARstartITLCORRECT +% and the (output) length \IEEEPARstartletwidth. +% +% 5) Provide for an optional argument to \bstctlcite to provide a way to +% specify a different aux file. +% +% +% 11/2002 V1.1 (V1.6b of IEEEtran.cls) changes: % % 1) In addition to the IEEE IED lists, the original LaTeX IED style list % environments are now preserved as LaTeXitemize, LaTeXenumerate, and @@ -70,8 +100,9 @@ %%********************************************************************** -\ProvidesPackage{IEEEtrantools}[2002/11/18 revision V1.1 by Michael Shell] +\ProvidesPackage{IEEEtrantools}[2007/01/11 V1.2 by Michael Shell] \typeout{-- See the "IEEEtrantools_doc.txt" manual for usage information.} +\typeout{-- http://www.michaelshell.org/tex/ieeetran/tools/} \NeedsTeXFormat{LaTeX2e} @@ -85,8 +116,8 @@ % define new needed flags to indicate document options % and set a few "failsafe" defaults -\newif\if@retainorgcmds -\global\@retainorgcmdsfalse +\newif\if@IEEETOOLSretainorgcmds +\global\@IEEETOOLSretainorgcmdsfalse @@ -102,27 +133,22 @@ % declare the options -\DeclareOption{retainorgcmds}{\@retainorgcmdstrue} +\DeclareOption{retainorgcmds}{\@IEEETOOLSretainorgcmdstrue} % get and process any supplied options \ProcessOptions -% store the normalsize baselineskip -\newskip\normalsizebaselineskip -{\normalsize \global\normalsizebaselineskip\baselineskip\relax} % store the nominal value of jot -\newskip\normaljot -\normaljot\jot\relax - - - +\newdimen\IEEEnormaljot +\IEEEnormaljot\jot\relax % 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 @@ -159,14 +185,14 @@ % 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 +\newdimen\IEEElabelindent +\IEEElabelindent \parindent % The actual amount labels will be indented is -% \labelindent multiplied by the factor below +% \IEEElabelindent 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 +% alter the effective \IEEElabelindent for deeper % levels % There may not be such a thing as correct "standard IEEE" % values. What IEEE actually does may depend on the specific @@ -185,7 +211,7 @@ % 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} +\def\IEEElabelindentfactor{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 @@ -211,18 +237,18 @@ % 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}} +% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}} % will alter the \labelsep for the next list(s) until -% \iedlistdecl is redefined. -\def\iedlistdecl{\relax} +% \IEEEiedlistdecl is redefined. +\def\IEEEiedlistdecl{\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} +% on the \labelwidth, \labelsep and the argument \IEEElabelindent +% Usage: \IEEEcalcleftmargin{width-to-indent-the-label} % output is in the \leftmargin variable, i.e., effectively: % \leftmargin = argument + \labelwidth + \labelsep % Note controlled spacing here, shield end of lines with % -\def\calcleftmargin#1{\setlength{\leftmargin}{#1}% +\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}% \addtolength{\leftmargin}{\labelwidth}% \addtolength{\leftmargin}{\labelsep}} @@ -232,41 +258,42 @@ % 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}} +\def\IEEEsetlabelwidth#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 +% the \IEEEiedlistdecl or within the option of the IED list % environments. -\def\usemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} +\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} % A flag which controls whether the IED lists automatically -% calculate \leftmargin from \labelindent, \labelwidth and \labelsep +% calculate \leftmargin from \IEEElabelindent, \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 +% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse) +% via the \IEEEiedlistdecl or within the option of the IED list % environments to have an effect. -\newif\ifnocalcleftmargin -\nocalcleftmarginfalse +\newif\ifIEEEnocalcleftmargin +\IEEEnocalcleftmarginfalse -% 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 +% A flag which controls whether \IEEElabelindent is multiplied by +% the \IEEElabelindentfactor for each list level. +% This flag must be set via the \IEEEiedlistdecl or within the option % of the IED list environments to have an effect. -\newif\ifnolabelindentfactor -\nolabelindentfactorfalse +\newif\ifIEEEnolabelindentfactor +\IEEEnolabelindentfactorfalse % internal variable to indicate type of IED label % justification % 0 - left; 1 - center; 2 - right -\def\@iedjustify{0} +\def\@IEEEiedjustify{0} + % commands to allow the user to control IED % label justifications. Use these commands within -% the IED environment option or in the \iedlistdecl +% the IED environment option or in the \IEEEiedlistdecl % 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 @@ -274,9 +301,9 @@ % other non-IEEE related LaTeX work. % itemize and enumerate automatically default to right % justification, description defaults to left. -\def\iedlabeljustifyl{\def\@iedjustify{0}}%left -\def\iedlabeljustifyc{\def\@iedjustify{1}}%center -\def\iedlabeljustifyr{\def\@iedjustify{2}}%right +\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left +\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center +\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right @@ -285,7 +312,7 @@ % 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 -% use \edefs instead of dimen's to conserve dimen registers +% V1.6 use \edefs instead of dimen's to conserve dimen registers % Note controlled spacing here, shield end of lines with % \def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}% \edef\@IEEEiedlabelwidth{\the\labelwidth}% @@ -298,7 +325,7 @@ \edef\@IEEEiedlistparindent{\the\listparindent}% \edef\@IEEEieditemindent{\the\itemindent}} -% Note controlled spacing here, shield end of lines with % +% Note controlled spacing here \def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax% \labelwidth\@IEEEiedlabelwidth\relax% \labelsep\@IEEEiedlabelsep\relax% @@ -325,7 +352,7 @@ % override LaTeX's default IED lists, unless the user requested they be retained -\if@retainorgcmds\relax\else +\if@IEEETOOLSretainorgcmds\relax\else \def\itemize{\@IEEEitemize} \def\enditemize{\@endIEEEitemize} \def\enumerate{\@IEEEenumerate} @@ -365,14 +392,14 @@ \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}% + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% \advance\@listdepth-\@ne% undo our increment - \def\@iedjustify{2}% right justified labels are default + \def\@IEEEiedjustify{2}% right justified labels are default % set other defaults - \nocalcleftmarginfalse% - \nolabelindentfactorfalse% + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% \topsep\IEEEiedtopsep% - \labelindent\IEEEilabelindent% + \IEEElabelindent\IEEEilabelindent% \labelsep\IEEEiednormlabelsep% \partopsep 0ex% \parsep 0ex% @@ -389,19 +416,19 @@ \@IEEErestorelistparams% override any list{} changes % to our globals \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel - \iedlistdecl% let user alter parameters + \IEEEiedlistdecl% let user alter parameters #1\relax% % If the user has requested not to use the % labelindent factor, don't revise \labelindent - \ifnolabelindentfactor\relax% - \else\labelindent=\labelindentfactor\labelindent% + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\labelindent% \fi% % Unless the user has requested otherwise, % calculate our left margin based - % on \labelindent, \labelwidth and + % on \IEEElabelindent, \labelwidth and % \labelsep - \ifnocalcleftmargin\relax% - \else\calcleftmargin{\labelindent}% + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% \fi}\fi\fi}% @@ -416,14 +443,14 @@ \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}% + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% \advance\@listdepth-\@ne% undo our increment - \def\@iedjustify{2}% right justified labels are default + \def\@IEEEiedjustify{2}% right justified labels are default % set other defaults - \nocalcleftmarginfalse% - \nolabelindentfactorfalse% + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% \topsep\IEEEiedtopsep% - \labelindent\IEEEelabelindent% + \IEEElabelindent\IEEEelabelindent% \labelsep\IEEEiednormlabelsep% \partopsep 0ex% \parsep 0ex% @@ -441,19 +468,19 @@ \@IEEErestorelistparams% override any list{} changes % to our globals \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel - \iedlistdecl% let user alter parameters + \IEEEiedlistdecl% let user alter parameters #1\relax% % If the user has requested not to use the - % labelindent factor, don't revise \labelindent - \ifnolabelindentfactor\relax% - \else\labelindent=\labelindentfactor\labelindent% + % IEEElabelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% \fi% % Unless the user has requested otherwise, % calculate our left margin based - % on \labelindent, \labelwidth and + % on \IEEElabelindent, \labelwidth and % \labelsep - \ifnocalcleftmargin\relax% - \else\calcleftmargin{\labelindent}% + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% \fi}\fi\fi}% @@ -465,14 +492,14 @@ \ifnum\@listdepth>5\relax\@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}% + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% \advance\@listdepth-\@ne% undo our increment - \def\@iedjustify{0}% left justified labels are default + \def\@IEEEiedjustify{0}% left justified labels are default % set other defaults - \nocalcleftmarginfalse% - \nolabelindentfactorfalse% + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% \topsep\IEEEiedtopsep% - \labelindent\IEEEdlabelindent% + \IEEElabelindent\IEEEdlabelindent% % assume normal labelsep \labelsep\IEEEiednormlabelsep% \partopsep 0ex% @@ -493,25 +520,25 @@ \list{}{\@IEEErestorelistparams% override any list{} changes % to our globals \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel - \iedlistdecl% let user alter parameters + \IEEEiedlistdecl% let user alter parameters #1\relax% % If the user has requested not to use the - % labelindent factor, don't revise \labelindent - \ifnolabelindentfactor\relax% - \else\labelindent=\labelindentfactor\labelindent% + % labelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% \fi% % Unless the user has requested otherwise, % calculate our left margin based - % on \labelindent, \labelwidth and + % on \IEEElabelindent, \labelwidth and % \labelsep - \ifnocalcleftmargin\relax% - \else\calcleftmargin{\labelindent}\relax% + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}\relax% \fi}\fi} % v1.6b we use one makelabel that does justification as needed. -\def\@IEEEiedmakelabel#1{\relax\if\@iedjustify 0\relax +\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax \makebox[\labelwidth][l]{\normalfont #1}\else -\if\@iedjustify 1\relax +\if\@IEEEiedjustify 1\relax \makebox[\labelwidth][c]{\normalfont #1}\else \makebox[\labelwidth][r]{\normalfont #1}\fi\fi} @@ -519,6 +546,10 @@ + + + + % used only by IEEEtran's IEEEeqnarray as other packages may % have their own, different, implementations \newcounter{IEEEsubequation}[equation] @@ -895,9 +926,6 @@ Using a default centering column instead}% \xdef\@IEEEeqnarrayTHEstrutdepth{\@IEEEeqnarrayTHEstrutdepth}% \global\@IEEEeqnarrayusemasterstrutfalse% \fi} - - - % usage: \IEEEeqnarraystrutsize{height}{depth}[font size commands] % If called outside the lines of an IEEEeqnarray, sets the height % and depth of both the master and local struts. If called inside @@ -1093,7 +1121,7 @@ Using a default centering column instead}% \lineskip=0pt\relax \lineskiplimit=0pt\relax \baselineskip=\normalbaselineskip\relax% - \jot=\normaljot\relax% + \jot=\IEEEnormaljot\relax% \mathsurround\z@\relax% no extra spacing around math \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses, % used in \IEEEeqnarraymulticol and in the preamble build @@ -1252,7 +1280,7 @@ $$\@ignoretrue} \lineskip=0pt\relax% \lineskiplimit=0pt\relax% \baselineskip=\normalbaselineskip\relax% - \jot=\normaljot\relax% + \jot=\IEEEnormaljot\relax% \mathsurround\z@\relax% no extra spacing around math % the default end glues are zero for an \IEEEeqnarraybox \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue @@ -1608,73 +1636,105 @@ between column types.}% - - - - - -% \PARstart +% \IEEEPARstart % Definition for the big two line drop cap letter at the beginning of the % first paragraph of journal papers. The first argument is the first letter % of the first word, the second argument is the remaining letters of the % first word which will be rendered in upper case. +% In V1.6 this has been completely rewritten to: +% +% 1. no longer have problems when the user begins an environment +% within the paragraph that uses \IEEEPARstart. +% 2. auto-detect and use the current font family +% 3. revise handling of the space at the end of the first word so that +% interword glue will now work as normal. +% 4. produce correctly aligned edges for the (two) indented lines. % % We generalize things via control macros - playing with these is fun too. +% % For IEEEtrantools, we do not use a "@" in the names as these are user % alterable controls. % +% V1.7 added more control macros to make it easy for IEEEtrantools.sty users +% to change the font style. % % the number of lines that are indented to clear it +% may need to increase if using decenders \providecommand{\IEEEPARstartDROPLINES}{2} -% minimum number of lines left on a page to allow a \@PARstart +% minimum number of lines left on a page to allow a \@IEEEPARstart % Does not take into consideration rubber shrink, so it tends to % be overly cautious \providecommand{\IEEEPARstartMINPAGELINES}{2} +% V1.7 the height of the drop cap is adjusted to match the height of this text +% in the current font (when \IEEEPARstart is called). +\providecommand{\IEEEPARstartHEIGHTTEXT}{T} % the depth the letter is lowered below the baseline % the height (and size) of the letter is determined by the sum -% of this value and the height of a capital "T" in the current +% of this value and the height of the \IEEEPARstartHEIGHTTEXT in the current % font. It is a good idea to set this value in terms of the baselineskip % so that it can respond to changes therein. \providecommand{\IEEEPARstartDROPDEPTH}{1.1\baselineskip} -% This is the separation distance from the drop letter to the main text. -% Lengths that depend on the font (i.e., ex, em, etc.) will be referenced -% to the font that is active when PARstart is called. +% V1.7 the font the drop cap will be rendered in, +% can take zero or one argument. +\providecommand{\IEEEPARstartFONTSTYLE}{\bfseries} +% V1.7 any additional, non-font related commands needed to modify +% the drop cap letter, can take zero or one argument. +\providecommand{\IEEEPARstartCAPSTYLE}{\MakeUppercase} +% V1.7 the font that will be used to render the rest of the word, +% can take zero or one argument. +\providecommand{\IEEEPARstartWORDFONTSTYLE}{\relax} +% V1.7 any additional, non-font related commands needed to modify +% the rest of the word, can take zero or one argument. +\providecommand{\IEEEPARstartWORDCAPSTYLE}{\MakeUppercase} +% This is the horizontal separation distance from the drop letter to the main text. +% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced +% to the font that is active when \IEEEPARstart is called. \providecommand{\IEEEPARstartSEP}{0.15em} +% V1.7 horizontal offset applied to the left of the drop cap. +\providecommand{\IEEEPARstartHOFFSET}{0em} +% V1.7 Italic correction command applied at the end of the drop cap. +\providecommand{\IEEEPARstartITLCORRECT}{\/} +% width of the letter output, set globally. Can be used in \IEEEPARstartSEP +% or \IEEEPARstartHOFFSET, but not the height lengths. +\newdimen\IEEEPARstartletwidth +\IEEEPARstartletwidth 0pt\relax -% definition of \PARstart +% definition of \IEEEPARstart % THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES % % The token \@IEEEPARstartfont will be globally defined after the first use -% of \PARstart and will be a font command which creates the big letter +% of \IEEEPARstart and will be a font command which creates the big letter % The first argument is the first letter of the first word and the second % argument is the rest of the first word(s). -\def\PARstart#1#2{\par{% +\def\IEEEPARstart#1#2{\par{% % if this page does not have enough space, break it and lets start % on a new one \@IEEEtranneedspace{\IEEEPARstartMINPAGELINES\baselineskip}{\relax}% +% V1.7 move this up here in case user uses \textbf for \IEEEPARstartFONTSTYLE +% which uses command \leavevmode which causes an unwanted \indent to be issued +\noindent % calculate the desired height of the big letter -% it extends from the top of a capital "T" in the current font +% it extends from the top of \IEEEPARstartHEIGHTTEXT in the current font % down to \IEEEPARstartDROPDEPTH below the current baseline -\settoheight{\@IEEEtrantmpdimenA}{T}% +\settoheight{\@IEEEtrantmpdimenA}{\IEEEPARstartHEIGHTTEXT}% \addtolength{\@IEEEtrantmpdimenA}{\IEEEPARstartDROPDEPTH}% % extract the name of the current font in bold % and place it in \@IEEEPARstartFONTNAME \def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}% -{\bfseries% -\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% -\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}% +{\IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% +\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}% % define a font based on this name with a point size equal to the desired % height of the drop letter \font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax% % save this value as a counter (integer) value (sp points) \@IEEEtrantmpcountA=\@IEEEtrantmpdimenA% % now get the height of the actual letter produced by this font size -\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\MakeUppercase{#1}}% +\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\IEEEPARstartCAPSTYLE{#1}}% % If something bogus happens like the first argument is empty or the % current font is strange, do not allow a zero height. \ifdim\@IEEEtrantmpdimenB=0pt\relax% -\typeout{** WARNING: PARstart drop letter has zero height! (line \the\inputlineno)}% +\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}% \typeout{ Forcing the drop letter font size to 10pt.}% \@IEEEtrantmpdimenB=10pt% \fi% @@ -1702,17 +1762,32 @@ between column types.}% % Now set \@IEEEtrantmpdimenA to the width of the big letter % We need to carry this out of the local calculation area to set the % hanging indent -\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont\MakeUppercase{#1}}}% +\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont +\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}}}% % end of the isolated calculation environment +\global\IEEEPARstartletwidth\@IEEEtrantmpdimenA\relax% % add in the extra clearance we want -\advance\@IEEEtrantmpdimenA by \IEEEPARstartSEP% +\advance\@IEEEtrantmpdimenA by \IEEEPARstartSEP\relax% +% add in the optional offset +\advance\@IEEEtrantmpdimenA by \IEEEPARstartHOFFSET\relax% +% V1.7 don't allow negative offsets to produce negative hanging indents +\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA +\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi % \@IEEEtrantmpdimenA has the width of the big letter plus the % separation space and \@IEEEPARstartfont is the font we need to use % Now, we make the letter and issue the hanging indent command % The letter is placed in a box of zero width and height so that other % text won't be displaced by it. -\noindent\hangindent\@IEEEtrantmpdimenA\hangafter=-\IEEEPARstartDROPLINES% -\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}\raisebox{-\IEEEPARstartDROPDEPTH}[0pt][0pt]{\@IEEEPARstartfont\MakeUppercase{#1}}}\MakeUppercase{#2}} +\hangindent\@IEEEtrantmpdimenB\hangafter=-\IEEEPARstartDROPLINES% +\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}% +\raisebox{-\IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\IEEEPARstartHOFFSET}% +\@IEEEPARstartfont\IEEEPARstartCAPSTYLE{#1\IEEEPARstartITLCORRECT}% +\hspace{\IEEEPARstartSEP}}}% +{\IEEEPARstartWORDFONTSTYLE{\IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}} + + + + % determines if the space remaining on a given page is equal to or greater @@ -1738,15 +1813,44 @@ between column types.}% + + % Provide support for the control entries of IEEEtran.bst V1.00 and later. -\providecommand{\bstctlcite}[1]{\@bsphack - \@for\@citeb:=#1\do{% +% V1.7 optional argument allows for a different aux file to be specified in +% order to handle multiple bibliographies. For example, with multibib.sty: +% \newcites{sec}{Secondary Literature} +% \bstctlcite[@auxoutsec]{BSTcontrolhak} +% V1.7 I see no need for \providecommand here. +\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +\def\@bstctlcite[#1]#2{\@bsphack + \@for\@citeb:=#2\do{% \edef\@citeb{\expandafter\@firstofone\@citeb}% - \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi}% + \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% \@esphack} +% need a backslash character for typeout output +{\catcode`\|=0 \catcode`\\=12 +|xdef|@IEEEbackslash{\}} + + +% hook to allow easy disabling of all legacy warnings +\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is depreciated (line \the\inputlineno). +Use \@IEEEbackslash #2 instead.}} + +% provide for legacy commands +\def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart} + +% provide for legacy IED commands/lengths when possible +\let\labelindent\IEEElabelindent +\def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin} +\def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth} +\def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep} +\def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc} +\def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl} +\def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr} + \endinput %%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtrantools.sty %%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.3