From 226c5bc683be2792da73ff119f2c73c210d9d0ed Mon Sep 17 00:00:00 2001 From: raphael couturier Date: Tue, 12 Aug 2014 08:36:50 +0200 Subject: [PATCH] new --- IEEEtran.cls | 4722 ++++++++++++++++++++++++++++ IEEEtranBST/IEEEabrv.bib | 451 +++ IEEEtranBST/IEEEexample.bib | 1203 +++++++ IEEEtranBST/IEEEfull.bib | 431 +++ IEEEtranBST/IEEEtran.bst | 2425 ++++++++++++++ IEEEtranBST/IEEEtran_bst_HOWTO.pdf | Bin 0 -> 306875 bytes IEEEtranBST/README | 110 + 7 files changed, 9342 insertions(+) create mode 100644 IEEEtran.cls create mode 100644 IEEEtranBST/IEEEabrv.bib create mode 100644 IEEEtranBST/IEEEexample.bib create mode 100644 IEEEtranBST/IEEEfull.bib create mode 100644 IEEEtranBST/IEEEtran.bst create mode 100644 IEEEtranBST/IEEEtran_bst_HOWTO.pdf create mode 100644 IEEEtranBST/README diff --git a/IEEEtran.cls b/IEEEtran.cls new file mode 100644 index 0000000..d7e02e3 --- /dev/null +++ b/IEEEtran.cls @@ -0,0 +1,4722 @@ +%% +%% IEEEtran.cls 2007/03/05 version V1.7a +%% +%% +%% This is the official IEEE LaTeX class for authors of the Institute of +%% Electrical and Electronics Engineers (IEEE) Transactions journals and +%% conferences. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% 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. +%% +%% +%% Contributors: +%% Gerry Murray (1993), Silvano Balemi (1993), +%% Jon Dixon (1996), Peter N"uchter (1996), +%% Juergen von Hagen (2000), and Michael Shell (2001-2007) +%% +%% +%% 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.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! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% 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 +%% be indicated with a BETA suffix, i.e., 1.4 BETA. +%% Small changes can be indicated by appending letters to the version +%% such as "IEEEtran_v14a.cls". +%% In all cases, \Providesclass, any \typeout messages to the user, +%% \IEEEtransversionmajor and \IEEEtransversionminor must reflect the +%% correct version information. +%% The changes should also be documented via source comments. +%%************************************************************************* +%% +% +% Available class options +% e.g., \documentclass[10pt,conference]{IEEEtran} +% +% *** choose only one from each category *** +% +% 9pt, 10pt, 11pt, 12pt +% Sets normal font size. The default is 10pt. +% +% conference, journal, technote, peerreview, peerreviewca +% determines format mode - conference papers, journal papers, +% correspondence papers (technotes), or peer review papers. The user +% should also select 9pt when using technote. peerreview is like +% journal mode, but provides for a single-column "cover" title page for +% anonymous peer review. The paper title (without the author names) is +% repeated at the top of the page after the cover page. For peer review +% papers, the \IEEEpeerreviewmaketitle command must be executed (will +% automatically be ignored for non-peerreview modes) at the place the +% cover page is to end, usually just after the abstract (keywords are +% not normally used with peer review papers). peerreviewca is like +% peerreview, but allows the author names to be entered and formatted +% as with conference mode so that author affiliation and contact +% information can be easily seen on the cover page. +% The default is journal. +% +% draft, draftcls, draftclsnofoot, final +% determines if paper is formatted as a widely spaced draft (for +% handwritten editor comments) or as a properly typeset final version. +% draftcls restricts draft mode to the class file while all other LaTeX +% packages (i.e., \usepackage{graphicx}) will behave as final - allows +% for a draft paper with visible figures, etc. draftclsnofoot is like +% draftcls, but does not display the date and the word "DRAFT" at the foot +% of the pages. If using one of the draft modes, the user will probably +% also want to select onecolumn. +% The default is final. +% +% letterpaper, a4paper +% determines paper size: 8.5in X 11in or 210mm X 297mm. CHANGING THE PAPER +% SIZE WILL NOT ALTER THE TYPESETTING OF THE DOCUMENT - ONLY THE MARGINS +% WILL BE AFFECTED. In particular, documents using the a4paper option will +% have reduced side margins (A4 is narrower than US letter) and a longer +% bottom margin (A4 is longer than US letter). For both cases, the top +% margins will be the same and the text will be horizontally centered. +% For final submission to IEEE, authors should use US letter (8.5 X 11in) +% paper. Note that authors should ensure that all post-processing +% (ps, pdf, etc.) uses the same paper specificiation as the .tex document. +% Problems here are by far the number one reason for incorrect margins. +% IEEEtran will automatically set the default paper size under pdflatex +% (without requiring a change to pdftex.cfg), so this issue is more +% 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/IEEEtran/testflow +% for more details on dvips paper size configuration. +% The default is letterpaper. +% +% oneside, twoside +% determines if layout follows single sided or two sided (duplex) +% printing. The only notable change is with the headings at the top of +% the pages. +% The default is oneside. +% +% onecolumn, twocolumn +% determines if text is organized into one or two columns per page. One +% column mode is usually used only with draft papers. +% The default is twocolumn. +% +% compsoc +% Use the format of the IEEE Computer Society. +% +% compsocconf +% Use the format of IEEE Computer Society conferencs (CPS) +% +% 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" +% their fonts. +% The default is to enable IEEEtran to tune font parameters. +% +% +%---------- +% Available CLASSINPUTs provided (all are macros unless otherwise noted): +% \CLASSINPUTbaselinestretch +% \CLASSINPUTinnersidemargin +% \CLASSINPUToutersidemargin +% \CLASSINPUTtoptextmargin +% \CLASSINPUTbottomtextmargin +% +% Available CLASSINFOs provided: +% \ifCLASSINFOpdf (TeX if conditional) +% \CLASSINFOpaperwidth (macro) +% \CLASSINFOpaperheight (macro) +% \CLASSINFOnormalsizebaselineskip (length) +% \CLASSINFOnormalsizeunitybaselineskip (length) +% +% 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/03/05 V1.7a by Michael Shell] +\typeout{-- See the "IEEEtran_HOWTO" manual for usage information.} +\typeout{-- http://www.michaelshell.org/tex/ieeetran/} +\NeedsTeXFormat{LaTeX2e} + +% 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 + +\newif\ifCLASSOPTIONjournal \CLASSOPTIONjournaltrue +\newif\ifCLASSOPTIONconference \CLASSOPTIONconferencefalse +\newif\ifCLASSOPTIONtechnote \CLASSOPTIONtechnotefalse + +\newif\ifCLASSOPTIONnofonttune \CLASSOPTIONnofonttunefalse + +\newif\ifCLASSOPTIONcaptionsoff \CLASSOPTIONcaptionsofffalse + +\newif\ifCLASSOPTIONcompsoc \CLASSOPTIONcompsocfalse + +\newif\ifCLASSOPTIONcompsocconf \CLASSOPTIONcompsocconffalse + +\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 + + + +% IEEEtran class scratch pad registers +% dimen +\newdimen\@IEEEtrantmpdimenA +\newdimen\@IEEEtrantmpdimenB +% count +\newcount\@IEEEtrantmpcountA +\newcount\@IEEEtrantmpcountB +% token list +\newtoks\@IEEEtrantmptoksA + +% 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\@ptsize{0} +% LaTeX does not support 9pt, so we set \@ptsize to 0 - same as that of 10pt +\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}} + + + +\DeclareOption{letterpaper}{\setlength{\paperheight}{11in}% + \setlength{\paperwidth}{8.5in}% + \@IEEEusingAfourpaperfalse + \def\CLASSOPTIONpaper{letter}% + \def\CLASSINFOpaperwidth{8.5in}% + \def\CLASSINFOpaperheight{11in}} + + +\DeclareOption{a4paper}{\setlength{\paperheight}{297mm}% + \setlength{\paperwidth}{210mm}% + \@IEEEusingAfourpapertrue + \def\CLASSOPTIONpaper{a4}% + \def\CLASSINFOpaperwidth{210mm}% + \def\CLASSINFOpaperheight{297mm}} + +\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse + \CLASSOPTIONonesidetrue\CLASSOPTIONtwosidefalse} +\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue + \CLASSOPTIONtwosidetrue\CLASSOPTIONonesidefalse} + +\DeclareOption{onecolumn}{\CLASSOPTIONonecolumntrue\CLASSOPTIONtwocolumnfalse} +\DeclareOption{twocolumn}{\CLASSOPTIONtwocolumntrue\CLASSOPTIONonecolumnfalse} + +% If the user selects draft, then this class AND any packages +% will go into draft mode. +\DeclareOption{draft}{\CLASSOPTIONdrafttrue\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftcls is for a draft mode which will not affect any packages +% used by the document. +\DeclareOption{draftcls}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftclsnofoot is like draftcls, but without the footer. +\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{peerreview}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{peerreviewca}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcatrue + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{nofonttune}{\CLASSOPTIONnofonttunetrue} + +\DeclareOption{captionsoff}{\CLASSOPTIONcaptionsofftrue} + +\DeclareOption{compsoc}{\CLASSOPTIONcompsoctrue} + +\DeclareOption{compsocconf}{\CLASSOPTIONcompsocconftrue} + +\DeclareOption{romanappendices}{\CLASSOPTIONromanappendicestrue} + + +% 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\ifCLASSOPTIONcompsocconf\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} + +\@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 + + + + + +% V1.7 conference notice message hook +\def\@IEEEconsolenoticeconference{\typeout{}% +\typeout{** Conference Paper **}% +\typeout{Before submitting the final camera ready copy, remember to:}% +\typeout{}% +\typeout{ 1. Manually equalize the lengths of two columns on the last page}% +\typeout{ of your paper;}% +\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 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 +\ifCLASSOPTIONtwocolumn\else% + \ifCLASSOPTIONdraftcls\else% + \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}% + \fi% +\fi + + +% 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 +% 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{} +% automatically for you after you enter \author{}, \journal{}, +% \journaldate{}, journalvol{}, \journalnum{}, etc. +% However, there may be some backward compatibility issues here as +% well as some special applications for IEEEtran.cls and special issues +% that may require the flexible \markleft{}, \markright{} and/or \markboth{}. +% We'll leave this as an open future suggestion. +%\newcommand{\journal}[1]{\def\@journal{#1}} +%\def\@journal{} + + + +% pointsize values +% used with ifx to determine the document's normal size +\def\@IEEEptsizenine{9} +\def\@IEEEptsizeten{10} +\def\@IEEEptsizeeleven{11} +\def\@IEEEptsizetwelve{12} + + + +% FONT DEFINITIONS (No sizexx.clo file needed) +% V1.6 revised font sizes, displayskip values and +% revised normalsize baselineskip to reduce underfull vbox problems +% on the 58pc = 696pt = 9.5in text height we want +% normalsize #lines/column baselineskip (aka leading) +% 9pt 63 11.0476pt (truncated down) +% 10pt 58 12pt (exact) +% 11pt 52 13.3846pt (truncated down) +% 12pt 50 13.92pt (exact) +% + +% we need to store the nominal baselineskip for the given font size +% in case baselinestretch ever changes. +% this is a dimen, so it will not hold stretch or shrink +\newdimen\@IEEEnormalsizeunitybaselineskip +\@IEEEnormalsizeunitybaselineskip\baselineskip + +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\typeout{-- This is a 9 point document.} +\def\normalsize{\@setfontsize{\normalsize}{9}{11.0476pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.0476pt}% +\normalsize +\abovedisplayskip 1.5ex plus3pt minus1pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus3pt% +\belowdisplayshortskip 1.5ex plus3pt minus1pt +\def\small{\@setfontsize{\small}{8.5}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is the same as large - 10pt +\def\sublargesize{\@setfontsize{\sublargesize}{10}{12pt}} +\def\large{\@setfontsize{\large}{10}{12pt}} +\def\Large{\@setfontsize{\Large}{12}{14pt}} +\def\LARGE{\@setfontsize{\LARGE}{14}{17pt}} +\def\huge{\@setfontsize{\huge}{17}{20pt}} +\def\Huge{\@setfontsize{\Huge}{20}{24pt}} +\fi + + +% Check if we have selected 10 points +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\typeout{-- This is a 10 point document.} +\def\normalsize{\@setfontsize{\normalsize}{10}{12.00pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{12pt}% +\normalsize +\abovedisplayskip 1.5ex plus4pt minus2pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus4pt% +\belowdisplayshortskip 1.5ex plus4pt minus2pt +\def\small{\@setfontsize{\small}{9}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is a tad smaller than large - 11pt +\def\sublargesize{\@setfontsize{\sublargesize}{11}{13.4pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + +% Check if we have selected 11 points +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\typeout{-- This is an 11 point document.} +\def\normalsize{\@setfontsize{\normalsize}{11}{13.3846pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.3846pt}% +\normalsize +\abovedisplayskip 1.5ex plus5pt minus3pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus5pt% +\belowdisplayshortskip 1.5ex plus5pt minus3pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 12pt +\def\sublargesize{\@setfontsize{\sublargesize}{12}{14pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + +% Check if we have selected 12 points +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\typeout{-- This is a 12 point document.} +\def\normalsize{\@setfontsize{\normalsize}{12}{13.92pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.92pt}% +\normalsize +\abovedisplayskip 1.5ex plus6pt minus4pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus6pt% +\belowdisplayshortskip 1.5ex plus6pt minus4pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 14pt +\def\sublargesize{\@setfontsize{\sublargesize}{14}{17pt}} +\def\large{\@setfontsize{\large}{14}{17pt}} +\def\Large{\@setfontsize{\Large}{17}{20pt}} +\def\LARGE{\@setfontsize{\LARGE}{20}{24pt}} +\def\huge{\@setfontsize{\huge}{22}{26pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + +% V1.6 The Computer Modern Fonts will issue a substitution warning for +% 24pt titles (24.88pt is used instead) increase the substitution +% tolerance to turn off this warning +\def\fontsubfuzz{.9pt} +% However, the default (and correct) Times font will scale exactly as needed. + + +% warn the user in case they forget to use the 9pt option with +% technote +\ifCLASSOPTIONtechnote% + \ifx\CLASSOPTIONpt\@IEEEptsizenine\else% + \typeout{** ATTENTION: Technotes are normally 9pt documents.}% + \fi% +\fi + + +% 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} +\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 + + + + +% store the normalsize baselineskip +\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 +\newdimen\IEEEnormaljot +\IEEEnormaljot=0.25\baselineskip\relax + +% set \jot +\jot=\IEEEnormaljot\relax + + + + +% V1.6, we are now going to fine tune the interword spacing +% The default interword glue for Times under TeX appears to use a +% nominal interword spacing of 25% (relative to the font size, i.e., 1em) +% a maximum of 40% and a minimum of 19%. +% For example, 10pt text uses an interword glue of: +% +% 2.5pt plus 1.49998pt minus 0.59998pt +% +% However, IEEE allows for a more generous range which reduces the need +% for hyphenation, especially for two column text. Furthermore, IEEE +% tends to use a little bit more nominal space between the words. +% IEEE's interword spacing percentages appear to be: +% 35% nominal +% 23% minimum +% 50% maximum +% (They may even be using a tad more for the largest fonts such as 24pt.) +% +% for bold text, IEEE increases the spacing a little more: +% 37.5% nominal +% 23% minimum +% 55% maximum + +% here are the interword spacing ratios we'll use +% for medium (normal weight) +\def\@IEEEinterspaceratioM{0.35} +\def\@IEEEinterspaceMINratioM{0.23} +\def\@IEEEinterspaceMAXratioM{0.50} + +% for bold +\def\@IEEEinterspaceratioB{0.375} +\def\@IEEEinterspaceMINratioB{0.23} +\def\@IEEEinterspaceMAXratioB{0.55} + + +% command to revise the interword spacing for the current font under TeX: +% \fontdimen2 = nominal interword space +% \fontdimen3 = interword stretch +% \fontdimen4 = interword shrink +% since all changes to the \fontdimen are global, we can enclose these commands +% in braces to confine any font attribute or length changes +\def\@@@IEEEsetfontdimens#1#2#3{{% +\setlength{\@IEEEtrantmpdimenB}{\f@size pt}% grab the font size in pt, could use 1em instead. +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\fontdimen2\font=\@IEEEtrantmpdimenA\relax +\addtolength{\@IEEEtrantmpdimenA}{-#2\@IEEEtrantmpdimenB}% +\fontdimen3\font=-\@IEEEtrantmpdimenA\relax +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\addtolength{\@IEEEtrantmpdimenA}{-#3\@IEEEtrantmpdimenB}% +\fontdimen4\font=\@IEEEtrantmpdimenA\relax}} + +% revise the interword spacing for each font weight +\def\@@IEEEsetfontdimens{{% +\mdseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioM}{\@IEEEinterspaceMAXratioM}{\@IEEEinterspaceMINratioM}% +\bfseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioB}{\@IEEEinterspaceMAXratioB}{\@IEEEinterspaceMINratioB}% +}} + +% revise the interword spacing for each font shape +% \slshape is not often used for IEEE work and is not altered here. The \scshape caps are +% already a tad too large in the free LaTeX fonts (as compared to what IEEE uses) so we +% won't alter these either. +\def\@IEEEsetfontdimens{{% +\normalfont +\@@IEEEsetfontdimens +\normalfont\itshape +\@@IEEEsetfontdimens +}} + +% 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 +\small\@IEEEsetfontdimens +\normalsize\@IEEEsetfontdimens +\sublargesize\@IEEEsetfontdimens +\large\@IEEEsetfontdimens +\LARGE\@IEEEsetfontdimens +\huge\@IEEEsetfontdimens +\Huge\@IEEEsetfontdimens}} + +% 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{\ifCLASSOPTIONnofonttune\else\@IEEEtunefonts\fi} + + + +% V1.6 +% LaTeX is a little to quick to use hyphenations +% So, we increase the penalty for their use and raise +% the badness level that triggers an underfull hbox +% warning. The author may still have to tweak things, +% but the appearance will be much better "right out +% of the box" than that under V1.5 and prior. +% TeX default is 50 +\hyphenpenalty=750 +% If we didn't adjust the interword spacing, 2200 might be better. +% The TeX default is 1000 +\hbadness=1350 +% 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 + + +% margin note stuff +\marginparsep 10pt +\marginparwidth 20pt +\marginparpush 25pt + + +% 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 + +% 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 + +\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 + + +\columnsep 1pc +\textwidth 43pc % 2 x 21pc + 1pc = 43pc + + +% the default side margins are equal +\if@IEEEusingAfourpaper +\oddsidemargin 19.05mm +\evensidemargin 19.05mm +\else +\oddsidemargin 0.680in +\evensidemargin 0.680in +\fi +% compensate for LaTeX's 1in offset +\addtolength{\oddsidemargin}{-1in} +\addtolength{\evensidemargin}{-1in} + + + +% 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 + + +% compsoc conference +\ifCLASSOPTIONcompsocconf +\ifCLASSOPTIONconference + % compsoc conference use a larger value for columnsep + \columnsep 0.25in + % 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 9.0in % (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=54\@IEEEnormalsizeunitybaselineskip\fi % 54 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=48\@IEEEnormalsizeunitybaselineskip\fi % 48 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=46\@IEEEnormalsizeunitybaselineskip\fi % 46 lines/page + \textwidth 7in + + + %adjust text h/w for A4 paper + \if@IEEEusingAfourpaper + \textheight 9.69in + \textwidth 6.77in + \fi + + % the default side margins are equal + \if@IEEEusingAfourpaper + \oddsidemargin 19.05mm + \evensidemargin 19.05mm + \else + \oddsidemargin 0.75in + \evensidemargin 0.75in + \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 1in margin all around the paper and extra +% space between the lines for editor's comments +\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 + + + +% 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 + +% Controls the amount of EXTRA spacing +% above and below \trivlist +% Both \list and IED lists override this. +% However, \trivlist will use this as will most +% things built from \trivlist like the \center +% environment. +\topsep 0.5\baselineskip + +% Controls the additional spacing around lists preceded +% or followed by blank lines. IEEE does not increase +% spacing before or after paragraphs so it is set to zero. +% \z@ is the same as zero, but faster. +\partopsep \z@ + +% Controls the spacing between paragraphs in lists. +% IEEE does not increase spacing before or after paragraphs +% so this is also zero. +% With IEEEtran.cls, global changes to +% this value DO affect lists (but not IED lists). +\parsep \z@ + +% Controls the extra spacing between list items. +% IEEE does not put extra spacing between items. +% With IEEEtran.cls, global changes to this value DO affect +% lists (but not IED lists). +\itemsep \z@ + +% \itemindent is the amount to indent the FIRST line of a list +% item. It is auto set to zero within the \list environment. To alter +% it, you have to do so when you call the \list. +% However, IEEE uses this for the theorem environment +% There is an alternative value for this near \leftmargini below +\itemindent -1em + +% \leftmargin, the spacing from the left margin of the main text to +% the left of the main body of a list item is set by \list. +% Hence this statement does nothing for lists. +% But, quote and verse do use it for indention. +\leftmargin 2em + +% we retain this stuff from the older IEEEtran.cls so that \list +% will work the same way as before. However, itemize, enumerate and +% description (IED) could care less about what these are as they +% all are overridden. +\leftmargini 2em +%\itemindent 2em % Alternative values: sometimes used. +%\leftmargini 0em +\leftmarginii 1em +\leftmarginiii 1.5em +\leftmarginiv 1.5em +\leftmarginv 1.0em +\leftmarginvi 1.0em +\labelsep 0.5em +\labelwidth \z@ + + +% The old IEEEtran.cls behavior of \list is retained. +% However, the new V1.3 IED list environments override all the +% @list stuff (\@listX is called within \list for the +% appropriate level just before the user's list_decl is called). +% \topsep is now 2pt as IEEE puts a little extra space around +% lists - used by those non-IED macros that depend on \list. +% Note that \parsep and \itemsep are not redefined as in +% the sizexx.clo \@listX (which article.cls uses) so global changes +% of these values DO affect \list +% +\def\@listi{\leftmargin\leftmargini \topsep 2pt plus 1pt minus 1pt} +\let\@listI\@listi +\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi% + \advance\labelwidth-\labelsep \topsep 2pt} + + +% IEEE uses 5) not 5. +\def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}} + +% IEEE uses a) not (a) +\def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}} + +% IEEE uses iii) not iii. +\def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}} + +% IEEE uses A) not A. +\def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}} + +% exactly the same as in article.cls +\def\p@enumii{\theenumi} +\def\p@enumiii{\theenumi(\theenumii)} +\def\p@enumiv{\p@enumiii\theenumiii} + +% itemized list label styles +\def\labelitemi{$\scriptstyle\bullet$} +\def\labelitemii{\textbf{--}} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + + + +% **** V1.3 ENHANCEMENTS **** +% Itemize, Enumerate and Description (IED) List Controls +% *************************** +% +% +% IEEE seems to use at least two different values by +% which ITEMIZED list labels are indented to the right +% For The Journal of Lightwave Technology (JLT) and The Journal +% on Selected Areas in Communications (JSAC), they tend to use +% an indention equal to \parindent. For Transactions on Communications +% they tend to indent ITEMIZED lists a little more--- 1.3\parindent. +% We'll provide both values here for you so that you can choose +% which one you like in your document using a command such as: +% setlength{\IEEEilabelindent}{\IEEEilabelindentB} +\newdimen\IEEEilabelindentA +\IEEEilabelindentA \parindent + +\newdimen\IEEEilabelindentB +\IEEEilabelindentB 1.3\parindent +% However, we'll default to using \parindent +% which makes more sense to me +\newdimen\IEEEilabelindent +\IEEEilabelindent \IEEEilabelindentA + + +% This controls the default amount the enumerated list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEelabelindent +\IEEEelabelindent \parindent + +% This controls the default amount the description list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEdlabelindent +\IEEEdlabelindent \parindent + +% This is the value actually used within the IED lists. +% The IED environments automatically set its value to +% one of the three values above, so global changes do +% not have any effect +\newdimen\IEEElabelindent +\IEEElabelindent \parindent + +% The actual amount labels will be indented is +% \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 \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 +% circumstances. +% The first list level almost always has full indention. +% The second levels I've seen have only 75% of the normal indentation +% Three level or greater nestings are very rare. I am guessing +% that they don't use any indentation. +\def\IEEElabelindentfactori{1.0} % almost always one +\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases +\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0? +\def\IEEElabelindentfactoriv{0.0} +\def\IEEElabelindentfactorv{0.0} +\def\IEEElabelindentfactorvi{0.0} + +% value actually used within IED lists, it is auto +% set to one of the 6 values above +% global changes here have no effect +\def\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 +% the labels. +\newdimen\IEEEiednormlabelsep +\IEEEiednormlabelsep 0.6em + +% This controls the default spacing between the end of the IED +% list labels and the list text, when math symbols are used for +% the labels (nomenclature lists). IEEE usually increases the +% spacing in these cases +\newdimen\IEEEiedmathlabelsep +\IEEEiedmathlabelsep 1.2em + +% This controls the extra vertical separation put above and +% below each IED list. IEEE usually puts a little extra spacing +% around each list. However, this spacing is barely noticeable. +\newskip\IEEEiedtopsep +\IEEEiedtopsep 2pt plus 1pt minus 1pt + + +% This command is executed within each IED list environment +% at the beginning of the list. You can use this to set the +% parameters for some/all your IED list(s) without disturbing +% global parameters that affect things other than lists. +% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}} +% will alter the \labelsep for the next list(s) until +% \IEEEiedlistdecl is redefined. +\def\IEEEiedlistdecl{\relax} + +% This command provides an easy way to set \leftmargin based +% 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\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}% +\addtolength{\leftmargin}{\labelwidth}% +\addtolength{\leftmargin}{\labelsep}} + +% This command provides an easy way to set \labelwidth to the +% width of the given text. It is the same as +% \settowidth{\labelwidth}{label-text} +% and useful as a shorter alternative. +% Typically used to set \labelwidth to be the width +% of the longest label in the list +\def\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 \IEEEiedlistdecl or within the option of the IED list +% environments. +\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} + +% A flag which controls whether the IED lists automatically +% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep +% Useful if you want to specify your own \leftmargin +% 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\ifIEEEnocalcleftmargin +\IEEEnocalcleftmarginfalse + +% 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\ifIEEEnolabelindentfactor +\IEEEnolabelindentfactorfalse + + +% internal variable to indicate type of IED label +% justification +% 0 - left; 1 - center; 2 - right +\def\@IEEEiedjustify{0} + + +% commands to allow the user to control IED +% label justifications. Use these commands within +% 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 +% those who are using these enhanced list controls for +% other non-IEEE related LaTeX work. +% itemize and enumerate automatically default to right +% justification, description defaults to left. +\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left +\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center +\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right + + + + +% commands to save to and restore from the list parameter copies +% this allows us to set all the list parameters within +% the list_decl and prevent \list (and its \@list) +% from overriding any of our parameters +% 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}% +\edef\@IEEEiedlabelsep{\the\labelsep}% +\edef\@IEEEiedleftmargin{\the\leftmargin}% +\edef\@IEEEiedpartopsep{\the\partopsep}% +\edef\@IEEEiedparsep{\the\parsep}% +\edef\@IEEEieditemsep{\the\itemsep}% +\edef\@IEEEiedrightmargin{\the\rightmargin}% +\edef\@IEEEiedlistparindent{\the\listparindent}% +\edef\@IEEEieditemindent{\the\itemindent}} + +% Note controlled spacing here +\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax% +\labelwidth\@IEEEiedlabelwidth\relax% +\labelsep\@IEEEiedlabelsep\relax% +\leftmargin\@IEEEiedleftmargin\relax% +\partopsep\@IEEEiedpartopsep\relax% +\parsep\@IEEEiedparsep\relax% +\itemsep\@IEEEieditemsep\relax% +\rightmargin\@IEEEiedrightmargin\relax% +\listparindent\@IEEEiedlistparindent\relax% +\itemindent\@IEEEieditemindent\relax} + + +% v1.6b provide original LaTeX IED list environments +% note that latex.ltx defines \itemize and \enumerate, but not \description +% which must be created by the base classes +% save original LaTeX itemize and enumerate +\let\LaTeXitemize\itemize +\let\endLaTeXitemize\enditemize +\let\LaTeXenumerate\enumerate +\let\endLaTeXenumerate\endenumerate + +% provide original LaTeX description environment from article.cls +\newenvironment{LaTeXdescription} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} + + +% override LaTeX's default IED lists +\def\itemize{\@IEEEitemize} +\def\enditemize{\@endIEEEitemize} +\def\enumerate{\@IEEEenumerate} +\def\endenumerate{\@endIEEEenumerate} +\def\description{\@IEEEdescription} +\def\enddescription{\@endIEEEdescription} + +% provide the user with aliases - may help those using packages that +% override itemize, enumerate, or description +\def\IEEEitemize{\@IEEEitemize} +\def\endIEEEitemize{\@endIEEEitemize} +\def\IEEEenumerate{\@IEEEenumerate} +\def\endIEEEenumerate{\@endIEEEenumerate} +\def\IEEEdescription{\@IEEEdescription} +\def\endIEEEdescription{\@endIEEEdescription} + + +% V1.6 we want to keep the IEEEtran IED list definitions as our own internal +% commands so they are protected against redefinition +\def\@IEEEitemize{\@ifnextchar[{\@@IEEEitemize}{\@@IEEEitemize[\relax]}} +\def\@IEEEenumerate{\@ifnextchar[{\@@IEEEenumerate}{\@@IEEEenumerate[\relax]}} +\def\@IEEEdescription{\@ifnextchar[{\@@IEEEdescription}{\@@IEEEdescription[\relax]}} +\def\@endIEEEitemize{\endlist} +\def\@endIEEEenumerate{\endlist} +\def\@endIEEEdescription{\endlist} + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran itemized list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEitemize[#1]{% + \ifnum\@itemdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@itemdepth\@ne% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + % get the labelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEilabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % the user can override this later if + % they specified a \labelwidth + \settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}% + \@IEEEsavelistparams% save our list parameters + \list{\csname\@itemitem\endcsname}{% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % labelindent factor, don't revise \labelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\labelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran enumerate list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEenumerate[#1]{% + \ifnum\@enumdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@enumdepth\@ne% + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + % get the labelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEelabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % We'll set it to the width suitable for all labels using + % normalfont 1) to 9) + % The user can override this later + \settowidth{\labelwidth}{9)}% + \@IEEEsavelistparams% save our list parameters + \list{\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % 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 \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran description list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEdescription[#1]{% + \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\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{0}% left justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEdlabelindent% + % assume normal labelsep + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % Bogus label width in case the user forgets + % to set it. + % TIP: If you want to see what a variable's width is you + % can use the TeX command \showthe\width-variable to + % display it on the screen during compilation + % (This might be helpful to know when you need to find out + % which label is the widest) + \settowidth{\labelwidth}{Hello}% + \@IEEEsavelistparams% save our list parameters + \list{}{\@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % 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 \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}\relax% + \fi}\fi} + +% v1.6b we use one makelabel that does justification as needed. +\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax +\makebox[\labelwidth][l]{\normalfont #1}\else +\if\@IEEEiedjustify 1\relax +\makebox[\labelwidth][c]{\normalfont #1}\else +\makebox[\labelwidth][r]{\normalfont #1}\fi\fi} + + +% VERSE and QUOTE +% 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\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 +% provided only for backward compatibility. \maketitle is the correct +% way to create the title page. +\newif\if@restonecol +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} + +% standard values from article.cls +\arraycolsep 5pt +\arrayrulewidth .4pt +\doublerulesep 2pt + +\tabcolsep 6pt +\tabbingsep 0.5em + + +%% FOOTNOTES +% +%\skip\footins 10pt plus 4pt minus 2pt +% V1.6 respond to changes in font size +% space added above the footnotes (if present) +\skip\footins 0.9\baselineskip plus 0.4\baselineskip minus 0.2\baselineskip + +% V1.6, we need to make \footnotesep responsive to changes +% in \baselineskip or strange spacings will result when in +% draft mode. Here is a little LaTeX secret - \footnotesep +% determines the height of an invisible strut that is placed +% *above* the baseline of footnotes after the first. Since +% LaTeX considers the space for characters to be 0.7/baselineskip +% above the baseline and 0.3/baselineskip below it, we need to +% 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 in IEEEtran +% uses its own value of \footnotesep which is set in \maketitle. +{\footnotesize +\global\footnotesep 0.8\baselineskip} + + +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt +\fboxrule = .4pt +% 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 + +% V1.6 discourage breaks within equations +% Note that amsmath normally sets this to 10000, +% but LaTeX2e normally uses 100. +\interdisplaylinepenalty=2500 + +% default allows section depth up to /paragraph +\setcounter{secnumdepth}{4} + +% technotes do not allow /paragraph +\ifCLASSOPTIONtechnote + \setcounter{secnumdepth}{3} +\fi +% neither do compsoc conferences +\@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}} + + +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] + +% used only by IEEEtran's IEEEeqnarray as other packages may +% have their own, different, implementations +\newcounter{IEEEsubequation}[equation] + +% as shown when called by user from \ref, \label and in table of contents +\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 +\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 +\def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a) +% redirect LaTeX2e's equation number display and all that depend on +% 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{Keywords} +\def\IEEEproofname{Proof} + + +% LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS +% +\def\@pnumwidth{1.55em} +\def\@tocrmarg{2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +% adjusted some spacings here so that section numbers will not easily +% collide with the section titles. +% VIII; VIII-A; and VIII-A.1 are usually the worst offenders. +% MDS 1/2001 +\def\tableofcontents{\section*{\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% + \endgroup} +% argument format #1:level, #2:labelindent,#3:labelsep +\def\l@subsection{\@dottedtocline{2}{2.75em}{3.75em}} +\def\l@subsubsection{\@dottedtocline{3}{6.5em}{4.5em}} +% must provide \l@ defs for ALL sublevels EVEN if tocdepth +% is such as they will not appear in the table of contents +% these defs are how TOC knows what level these things are! +\def\l@paragraph{\@dottedtocline{4}{6.5em}{5.5em}} +\def\l@subparagraph{\@dottedtocline{5}{6.5em}{6.5em}} +\def\listoffigures{\section*{\listfigurename}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{0em}{2.75em}} +\def\listoftables{\section*{\listtablename}\@starttoc{lot}} +\let\l@table\l@figure + + +%% Definitions for floats +%% +%% Normal Floats +\floatsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\textfloatsep 1.7\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +\@fptop 0pt plus 1fil +\@fpsep 0.75\baselineskip plus 2fil +\@fpbot 0pt plus 1fil +\def\topfraction{0.9} +\def\bottomfraction{0.4} +\def\floatpagefraction{0.8} +% 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 + +\dbltextfloatsep 1.7\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +% Note that it would be nice if the rubber here actually worked in LaTeX2e. +% There is a long standing limitation in LaTeX, first discovered (to the best +% of my knowledge) by Alan Jeffrey in 1992. LaTeX ignores the stretchable +% portion of \dbltextfloatsep, and as a result, double column figures can and +% do result in an non-integer number of lines in the main text columns with +% underfull vbox errors as a consequence. A post to comp.text.tex +% by Donald Arseneau confirms that this had not yet been fixed in 1998. +% IEEEtran V1.6 will fix this problem for you in the titles, but it doesn't +% protect you from other double floats. Happy vspace'ing. + +\@dblfptop 0pt plus 1fil +\@dblfpsep 0.75\baselineskip plus 2fil +\@dblfpbot 0pt plus 1fil +\def\dbltopfraction{0.8} +\def\dblfloatpagefraction{0.8} +\setcounter{dbltopnumber}{4} + +\intextsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\setcounter{topnumber}{2} +\setcounter{bottomnumber}{2} +\setcounter{totalnumber}{4} + + + +% article class provides these, we should too. +\newlength\abovecaptionskip +\newlength\belowcaptionskip +% but only \abovecaptionskip is used above figure captions and *below* table +% captions +\setlength\abovecaptionskip{0.5\baselineskip} +\setlength\belowcaptionskip{0pt} +% V1.6 create hooks in case the caption spacing ever needs to be +% overridden by a user +\def\@IEEEfigurecaptionsepspace{\vskip\abovecaptionskip\relax}% +\def\@IEEEtablecaptionsepspace{\vskip\abovecaptionskip\relax}% + + +% 1.6b revise caption system so that \@makecaption uses two arguments +% 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 +\normalsize\begin{center}{\normalfont\sffamily\normalsize {#1.}~ #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, 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{\normalfont\footnotesize {#1.}~~ #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\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% +\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{\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{\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}} +\def\endtable{\end@float} +% v1.6b double column tables need to default to footnotesize as well. +\@namedef{table*}{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} + + + + +%% +%% START OF IEEEeqnarry DEFINITIONS +%% +%% Inspired by the concepts, examples, and previous works of LaTeX +%% coders and developers such as Donald Arseneau, Fred Bartlett, +%% David Carlisle, Tony Liu, Frank Mittelbach, Piet van Oostrum, +%% Roland Winkler and Mark Wooding. +%% I don't make the claim that my work here is even near their calibre. ;) + + +% hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting +\def\@IEEEclspkgerror{\ClassError{IEEEtran}} + +\newif\if@IEEEeqnarraystarform% flag to indicate if the environment was called as the star form +\@IEEEeqnarraystarformfalse + +\newif\if@advanceIEEEeqncolcnt% tracks if the environment should advance the col counter +% allows a way to make an \IEEEeqnarraybox that can be used within an \IEEEeqnarray +% used by IEEEeqnarraymulticol so that it can work properly in both +\@advanceIEEEeqncolcnttrue + +\newcount\@IEEEeqnnumcols % tracks how many IEEEeqnarray cols are defined +\newcount\@IEEEeqncolcnt % tracks how many IEEEeqnarray cols the user actually used + + +% The default math style used by the columns +\def\IEEEeqnarraymathstyle{\displaystyle} +% The default text style used by the columns +% default to using the current font +\def\IEEEeqnarraytextstyle{\relax} + +% like the iedlistdecl but for \IEEEeqnarray +\def\IEEEeqnarraydecl{\relax} +\def\IEEEeqnarrayboxdecl{\relax} + +% \yesnumber is the opposite of \nonumber +% a novel concept with the same def as the equationarray package +% However, we give IEEE versions too since some LaTeX packages such as +% the MDWtools mathenv.sty redefine \nonumber to something else. +\providecommand{\yesnumber}{\global\@eqnswtrue} +\def\IEEEyesnumber{\global\@eqnswtrue} +\def\IEEEnonumber{\global\@eqnswfalse} + + +\def\IEEEyessubnumber{\global\@IEEEissubequationtrue\global\@eqnswtrue% +\if@IEEEeqnarrayISinner% only do something inside an IEEEeqnarray +\if@IEEElastlinewassubequation\addtocounter{equation}{-1}\else\setcounter{IEEEsubequation}{1}\fi% +\def\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\fi} + +% flag to indicate that an equation is a sub equation +\newif\if@IEEEissubequation% +\@IEEEissubequationfalse + +% allows users to "push away" equations that get too close to the equation numbers +\def\IEEEeqnarraynumspace{\hphantom{\if@IEEEissubequation\theIEEEsubequationdis\else\theequationdis\fi}} + +% provides a way to span multiple columns within IEEEeqnarray environments +% will consider \if@advanceIEEEeqncolcnt before globally advancing the +% column counter - so as to work within \IEEEeqnarraybox +% usage: \IEEEeqnarraymulticol{number cols. to span}{col type}{cell text} +\long\def\IEEEeqnarraymulticol#1#2#3{\multispan{#1}% +% check if column is defined +\relax\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined% +\csname @IEEEeqnarraycolPRE#2\endcsname#3\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST#2\endcsname% +\else% if not, error and use default type +\@IEEEclspkgerror{Invalid column type "#2" in \string\IEEEeqnarraymulticol.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\csname @IEEEeqnarraycolPRE@IEEEdefault\endcsname#3\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST@IEEEdefault\endcsname% +\fi% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by #1\relax\fi} + +% like \omit, but maintains track of the column counter for \IEEEeqnarray +\def\IEEEeqnarrayomit{\omit\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by 1\relax\fi} + + +% provides a way to define a letter referenced column type +% usage: \IEEEeqnarraydefcol{col. type letter/name}{pre insertion text}{post insertion text} +\def\IEEEeqnarraydefcol#1#2#3{\expandafter\def\csname @IEEEeqnarraycolPRE#1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolPOST#1\endcsname{#3}% +\expandafter\def\csname @IEEEeqnarraycolDEF#1\endcsname{1}} + + +% provides a way to define a numerically referenced inter-column glue types +% usage: \IEEEeqnarraydefcolsep{col. glue number}{glue definition} +\def\IEEEeqnarraydefcolsep#1#2{\expandafter\def\csname @IEEEeqnarraycolSEP\romannumeral #1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolSEPDEF\romannumeral #1\endcsname{1}} + + +\def\@IEEEeqnarraycolisdefined{1}% just a macro for 1, used for checking undefined column types + + +% expands and appends the given argument to the \@IEEEtrantmptoksA token list +% used to build up the \halign preamble +\def\@IEEEappendtoksA#1{\edef\@@IEEEappendtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA #1}}% +\@@IEEEappendtoksA} + +% also appends to \@IEEEtrantmptoksA, but does not expand the argument +% uses \toks8 as a scratchpad register +\def\@IEEEappendNOEXPANDtoksA#1{\toks8={#1}% +\edef\@@IEEEappendNOEXPANDtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA\the\toks8}}% +\@@IEEEappendNOEXPANDtoksA} + +% define some common column types for the user +% math +\IEEEeqnarraydefcol{l}{$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{c}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{r}{\hfil$\IEEEeqnarraymathstyle}{$} +\IEEEeqnarraydefcol{L}{$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{C}{\hfil$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{R}{\hfil$\IEEEeqnarraymathstyle{}}{{}$} +% text +\IEEEeqnarraydefcol{s}{\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{t}{\hfil\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{u}{\hfil\IEEEeqnarraytextstyle}{} + +% vertical rules +\IEEEeqnarraydefcol{v}{}{\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{vv}{\vrule width\arrayrulewidth\hfil}{\hfil\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{V}{}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{VV}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth\hfil}% +{\hfil\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} + +% horizontal rules +\IEEEeqnarraydefcol{h}{}{\leaders\hrule height\arrayrulewidth\hfil} +\IEEEeqnarraydefcol{H}{}{\leaders\vbox{\hrule width\arrayrulewidth\vskip\doublerulesep\hrule width\arrayrulewidth}\hfil} + +% plain +\IEEEeqnarraydefcol{x}{}{} +\IEEEeqnarraydefcol{X}{$}{$} + +% the default column type to use in the event a column type is not defined +\IEEEeqnarraydefcol{@IEEEdefault}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} + + +% a zero tabskip (used for "-" col types) +\def\@IEEEeqnarraycolSEPzero{0pt plus 0pt minus 0pt} +% a centering tabskip (used for "+" col types) +\def\@IEEEeqnarraycolSEPcenter{1000pt plus 0pt minus 1000pt} + +% top level default tabskip glues for the start, end, and inter-column +% may be reset within environments not always at the top level, e.g., \IEEEeqnarraybox +\edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPcenter}% default start glue +\edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPcenter}% default end glue +\edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + + + +% creates a vertical rule that extends from the bottom to the top a a cell +% Provided in case other packages redefine \vline some other way. +% usage: \IEEEeqnarrayvrule[rule thickness] +% If no argument is provided, \arrayrulewidth will be used for the rule thickness. +\newcommand\IEEEeqnarrayvrule[1][\arrayrulewidth]{\vrule\@width#1\relax} + +% creates a blank separator row +% usage: \IEEEeqnarrayseprow[separation length][font size commands] +% default is \IEEEeqnarrayseprow[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprow{\relax\@ifnextchar[{\@IEEEeqnarrayseprow}{\@IEEEeqnarrayseprow[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprow[#1]}{\@@IEEEeqnarrayseprow[#1][\relax]}} +\def\@@IEEEeqnarrayseprow[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\@IEEEeqnarrayhoptolastcolumn\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + +% creates a blank separator row, but omits all the column templates +% usage: \IEEEeqnarrayseprowcut[separation length][font size commands] +% default is \IEEEeqnarrayseprowcut[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayseprowcut}{\@IEEEeqnarrayseprowcut[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprowcut[#1]}{\@@IEEEeqnarrayseprowcut[#1][\relax]}} +\def\@@IEEEeqnarrayseprowcut[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + + + +% draws a single rule across all the columns optional +% argument determines the rule width, \arrayrulewidth is the default +% updates column counter as needed and turns off struts +% usage: \IEEEeqnarrayrulerow[rule line thickness] +\def\IEEEeqnarrayrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayrulerow}{\@IEEEeqnarrayrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarrayrulerow[#1]{\leaders\hrule height#1\hfil\relax% put in our rule +% turn off any struts +\IEEEeqnarraystrutsize{0pt}{0pt}[\relax]\relax} + + +% draws a double rule by using a single rule row, a separator row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerow}{\@IEEEeqnarraydblrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerow[#1]}% +{\@@IEEEeqnarraydblrulerow[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerow[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]\relax% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprow[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprow[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + +% draws a double rule by using a single rule row, a separator (cutting) row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerowcut}{\@IEEEeqnarraydblrulerowcut[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerowcut[#1]}% +{\@@IEEEeqnarraydblrulerowcut[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerowcut[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprowcut[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprowcut[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + + + +% inserts a full row's worth of &'s +% relies on \@IEEEeqnnumcols to provide the correct number of columns +% uses \@IEEEtrantmptoksA, \count0 as scratch registers +\def\@IEEEeqnarrayhoptolastcolumn{\@IEEEtrantmptoksA={}\count0=1\relax% +\loop% add cols if the user did not use them all +\ifnum\count0<\@IEEEeqnnumcols\relax% +\@IEEEappendtoksA{&}% +\advance\count0 by 1\relax% update the col count +\repeat% +\the\@IEEEtrantmptoksA%execute the &'s +} + + + +\newif\if@IEEEeqnarrayISinner % flag to indicate if we are within the lines +\@IEEEeqnarrayISinnerfalse % of an IEEEeqnarray - after the IEEEeqnarraydecl + +\edef\@IEEEeqnarrayTHEstrutheight{0pt} % height and depth of IEEEeqnarray struts +\edef\@IEEEeqnarrayTHEstrutdepth{0pt} + +\edef\@IEEEeqnarrayTHEmasterstrutheight{0pt} % default height and depth of +\edef\@IEEEeqnarrayTHEmasterstrutdepth{0pt} % struts within an IEEEeqnarray + +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{0pt} % saved master strut height +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{0pt} % and depth + +\newif\if@IEEEeqnarrayusemasterstrut % flag to indicate that the master strut value +\@IEEEeqnarrayusemasterstruttrue % is to be used + + + +% saves the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutsave{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% save values +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{\the\dimen2}} + +% restores the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutrestore{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutHSAVE\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutDSAVE\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}} + + +% globally restores the strut height and depth to the +% master values and sets the master strut flag to true +\def\@IEEEeqnarraystrutreset{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\xdef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\xdef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\global\@IEEEeqnarrayusemasterstruttrue} + + +% if the master strut is not to be used, make the current +% values of \@IEEEeqnarrayTHEstrutheight, \@IEEEeqnarrayTHEstrutdepth +% and the use master strut flag, global +% this allows user strut commands issued in the last column to be carried +% into the isolation/strut column +\def\@IEEEeqnarrayglobalizestrutstatus{\relax% +\if@IEEEeqnarrayusemasterstrut\else% +\xdef\@IEEEeqnarrayTHEstrutheight{\@IEEEeqnarrayTHEstrutheight}% +\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 +% an IEEEeqnarray line, sets the height and depth of the local strut +% only and sets the flag to indicate the use of the local strut +% values. If the height or depth is left blank, 0.7\normalbaselineskip +% and 0.3\normalbaselineskip will be used, respectively. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsize#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsize{#1}{#2}}{\@IEEEeqnarraystrutsize{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsize#1#2[#3]{\def\@IEEEeqnarraystrutsizeARG{#1}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.7\normalbaselineskip}}% +\skip0=\skip3\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1\relax}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizeARG{#2}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.3\normalbaselineskip}}% +\skip2=\skip3\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2\relax}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% usage: \IEEEeqnarraystrutsizeadd{added height}{added depth}[font size commands] +% If called outside the lines of an IEEEeqnarray, adds the given height +% and depth to both the master and local struts. +% If called inside an IEEEeqnarray line, adds the given height and depth +% to the local strut only and sets the flag to indicate the use +% of the local strut values. +% In both cases, if a height or depth is left blank, 0pt is used instead. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsizeadd#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsizeadd{#1}{#2}}{\@IEEEeqnarraystrutsizeadd{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsizeadd#1#2[#3]{\def\@IEEEeqnarraystrutsizearg{#1}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip0=0pt\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizearg{#2}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip2=0pt\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local and master strut sizes +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% allow user a way to see the struts +\newif\ifIEEEvisiblestruts +\IEEEvisiblestrutsfalse + +% inserts an invisible strut using the master or local strut values +% uses scratch registers \skip0, \skip2, \dimen0, \dimen2 +\def\@IEEEeqnarrayinsertstrut{\relax% +\if@IEEEeqnarrayusemasterstrut +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +\else% +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +% allow user to see struts if desired +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0pt height\dimen0 depth\dimen2\relax\fi} + + +% creates an invisible strut, useable even outside \IEEEeqnarray +% if \IEEEvisiblestrutstrue, the strut will be visible and 0.2pt wide. +% usage: \IEEEstrut[height][depth][font size commands] +% default is \IEEEstrut[0.7\normalbaselineskip][0.3\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \dimen0, \dimen2, \skip0, \skip2 +\def\IEEEstrut{\relax\@ifnextchar[{\@IEEEstrut}{\@IEEEstrut[0.7\normalbaselineskip]}} +\def\@IEEEstrut[#1]{\relax\@ifnextchar[{\@@IEEEstrut[#1]}{\@@IEEEstrut[#1][0.3\normalbaselineskip]}} +\def\@@IEEEstrut[#1][#2]{\relax\@ifnextchar[{\@@@IEEEstrut[#1][#2]}{\@@@IEEEstrut[#1][#2][\relax]}} +\def\@@@IEEEstrut[#1][#2][#3]{\mbox{#3\relax% +\def\@IEEEstrutARG{#1}% +\ifx\@IEEEstrutARG\@empty% +\skip0=0.7\normalbaselineskip\relax% +\else% +\skip0=#1\relax% +\fi% +\def\@IEEEstrutARG{#2}% +\ifx\@IEEEstrutARG\@empty% +\skip2=0.3\normalbaselineskip\relax% +\else% +\skip2=#2\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0.0pt height\dimen0 depth\dimen2\relax\fi}} + + +% enables strut mode by setting a default strut size and then zeroing the +% \baselineskip, \lineskip, \lineskiplimit and \jot +\def\IEEEeqnarraystrutmode{\IEEEeqnarraystrutsize{0.7\normalbaselineskip}{0.3\normalbaselineskip}[\relax]% +\baselineskip=0pt\lineskip=0pt\lineskiplimit=0pt\jot=0pt} + + + +\def\IEEEeqnarray{\@IEEEeqnarraystarformfalse\@IEEEeqnarray} +\def\endIEEEeqnarray{\end@IEEEeqnarray} + +\@namedef{IEEEeqnarray*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarray} +\@namedef{endIEEEeqnarray*}{\end@IEEEeqnarray} + + +% \IEEEeqnarray is an enhanced \eqnarray. +% The star form defaults to not putting equation numbers at the end of each row. +% usage: \IEEEeqnarray[decl]{cols} +\def\@IEEEeqnarray{\relax\@ifnextchar[{\@@IEEEeqnarray}{\@@IEEEeqnarray[\relax]}} +\def\@@IEEEeqnarray[#1]#2{% + % default to showing the equation number or not based on whether or not + % the star form was involked + \if@IEEEeqnarraystarform\global\@eqnswfalse + \else% not the star form + \global\@eqnswtrue + \fi% if star form + \@IEEEissubequationfalse% default to no subequations + \@IEEElastlinewassubequationfalse% assume last line is not a sub equation + \@IEEEeqnarrayISinnerfalse% not yet within the lines of the halign + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax + \lineskiplimit=0pt\relax + \baselineskip=\normalbaselineskip\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 + \stepcounter{equation}% advance equation counter before first line + \setcounter{IEEEsubequation}{0}% no subequation yet + \def\@currentlabel{\p@equation\theequation}% redefine the ref label + \IEEEeqnarraydecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarraycr% replace newline with one that can put in eqn. numbers + \global\@IEEEeqncolcnt\z@% col. count = 0 for first line + \@IEEEbuildpreamble #2\end\relax% build the preamble and put it into \@IEEEtrantmptoksA + % put in the column for the equation number + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % advance the \@IEEEeqncolcnt for the isolation col, this helps with error checking + \@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the isolation column + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % advance the \@IEEEeqncolcnt for the equation number col, this helps with error checking + \@IEEEappendtoksA{&\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the equation number col to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\hb@xt@\z@\bgroup\hss\the\toks0\egroup}% + % note \@IEEEeqnnumcols does not count the equation col or isolation col + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the display alignment + \@IEEEeqnarrayISinnertrue% commands are now within the lines + $$\everycr{}\halign to\displaywidth\bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% enter isolation/strut column (or the next column if the user did not use +% every column), record the strut status, complete the columns, do the strut if needed, +% restore counters to correct values and exit +\def\end@IEEEeqnarray{\@IEEEeqnarrayglobalizestrutstatus&\@@IEEEeqnarraycr\egroup% +\if@IEEElastlinewassubequation\global\advance\c@IEEEsubequation\m@ne\fi% +\global\advance\c@equation\m@ne% +$$\@ignoretrue} + +% need a way to remember if last line is a subequation +\newif\if@IEEElastlinewassubequation% +\@IEEElastlinewassubequationfalse + +% IEEEeqnarray uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\*[vskip amount] +% This "cr" macros are modified versions those for LaTeX2e's eqnarray +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the next column +% as there is an isolation/strut column after the user's columns +\def\@IEEEeqnarraycr{\@IEEEeqnarrayglobalizestrutstatus&% save strut status and advance to next column + {\ifnum0=`}\fi + \@ifstar{% + \global\@eqpen\@M\@IEEEeqnarrayYCR + }{% + \global\@eqpen\interdisplaylinepenalty \@IEEEeqnarrayYCR + }% +} + +\def\@IEEEeqnarrayYCR{\@testopt\@IEEEeqnarrayXCR\z@skip} + +\def\@IEEEeqnarrayXCR[#1]{% + \ifnum0=`{\fi}% + \@@IEEEeqnarraycr + \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}% + +\def\@@IEEEeqnarraycr{\@IEEEtrantmptoksA={}% clear token register + \advance\@IEEEeqncolcnt by -1\relax% adjust col count because of the isolation column + \ifnum\@IEEEeqncolcnt>\@IEEEeqnnumcols\relax + \@IEEEclspkgerror{Too many columns within the IEEEeqnarray\MessageBreak + environment}% + {Use fewer \string &'s or put more columns in the IEEEeqnarry column\MessageBreak + specifications.}\relax% + \else + \loop% add cols if the user did not use them all + \ifnum\@IEEEeqncolcnt<\@IEEEeqnnumcols\relax + \@IEEEappendtoksA{&}% + \advance\@IEEEeqncolcnt by 1\relax% update the col count + \repeat + % this number of &'s will take us the the isolation column + \fi + % execute the &'s + \the\@IEEEtrantmptoksA% + % handle the strut/isolation column + \@IEEEeqnarrayinsertstrut% do the strut if needed + \@IEEEeqnarraystrutreset% reset the strut system for next line or IEEEeqnarray + &% and enter the equation number column + % is this line needs an equation number, display it and advance the + % (sub)equation counters, record what type this line was + \if@eqnsw% + \if@IEEEissubequation\theIEEEsubequationdis\addtocounter{equation}{1}\stepcounter{IEEEsubequation}% + \global\@IEEElastlinewassubequationtrue% + \else% display a standard equation number, initialize the IEEEsubequation counter + \theequationdis\stepcounter{equation}\setcounter{IEEEsubequation}{0}% + \global\@IEEElastlinewassubequationfalse\fi% + \fi% + % reset the eqnsw flag to indicate default preference of the display of equation numbers + \if@IEEEeqnarraystarform\global\@eqnswfalse\else\global\@eqnswtrue\fi + \global\@IEEEissubequationfalse% reset the subequation flag + % reset the number of columns the user actually used + \global\@IEEEeqncolcnt\z@\relax + % the real end of the line + \cr} + + + + + +% \IEEEeqnarraybox is like \IEEEeqnarray except the box form puts everything +% inside a vtop, vbox, or vcenter box depending on the letter in the second +% optional argument (t,b,c). Vbox is the default. Unlike \IEEEeqnarray, +% equation numbers are not displayed and \IEEEeqnarraybox can be nested. +% \IEEEeqnarrayboxm is for math mode (like \array) and does not put the vbox +% within an hbox. +% \IEEEeqnarrayboxt is for text mode (like \tabular) and puts the vbox within +% a \hbox{$ $} construct. +% \IEEEeqnarraybox will auto detect whether to use \IEEEeqnarrayboxm or +% \IEEEeqnarrayboxt depending on the math mode. +% The third optional argument specifies the width this box is to be set to - +% natural width is the default. +% The * forms do not add \jot line spacing +% usage: \IEEEeqnarraybox[decl][pos][width]{cols} +\def\IEEEeqnarrayboxm{\@IEEEeqnarraystarformfalse\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxm{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxm*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxm*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarrayboxt{\@IEEEeqnarraystarformfalse\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxt{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxt*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxt*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarraybox{\@IEEEeqnarraystarformfalse\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\def\endIEEEeqnarraybox{\end@IEEEeqnarraybox} + +\@namedef{IEEEeqnarraybox*}{\@IEEEeqnarraystarformtrue\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarraybox*}{\end@IEEEeqnarraybox} + +% flag to indicate if the \IEEEeqnarraybox needs to put things into an hbox{$ $} +% for \vcenter in non-math mode +\newif\if@IEEEeqnarrayboxHBOXSW% +\@IEEEeqnarrayboxHBOXSWfalse + +\def\@IEEEeqnarraybox{\relax\@ifnextchar[{\@@IEEEeqnarraybox}{\@@IEEEeqnarraybox[\relax]}} +\def\@@IEEEeqnarraybox[#1]{\relax\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}} +\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}} + +% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs +\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign + \@IEEEeqnarraymasterstrutsave% save current master strut values + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax% + \lineskiplimit=0pt\relax% + \baselineskip=\normalbaselineskip\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 + \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue + \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing + \@IEEEbuildpreamble #4\end\relax% build the preamble and put it into \@IEEEtrantmptoksA + % add an isolation column to the preamble to stop \\'s {} from getting into the last col + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % add the isolation column to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the alignment + \everycr{}% + % use only the very first token to determine the positioning + % this stops some problems when the user uses more than one letter, + % but is probably not worth the effort + % \noindent is used as a delimiter + \def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% + \@IEEEgrabfirstoken#2\relax\relax\noindent + % \@IEEEgrabbedfirstoken has the first token, the rest are discarded + % if we need to put things into and hbox and go into math mode, do so now + \if@IEEEeqnarrayboxHBOXSW \leavevmode \hbox \bgroup $\fi% + % use the appropriate vbox type + \if\@IEEEgrabbedfirstoken t\relax\vtop\else\if\@IEEEgrabbedfirstoken c\relax% + \vcenter\else\vbox\fi\fi\bgroup% + \@IEEEeqnarrayISinnertrue% commands are now within the lines + \ifx#3\relax\halign\else\halign to #3\relax\fi% + \bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% carry strut status and enter the isolation/strut column, +% exit from math mode if needed, and exit +\def\end@IEEEeqnarraybox{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +\@IEEEeqnarraymasterstrutrestore% restore the previous master strut values +% reset the strut system for next IEEEeqnarray +% (sets local strut values back to previous master strut values) +\@IEEEeqnarraystrutreset% +% ensure last line, exit from halign, close vbox +\crcr\egroup\egroup% +% exit from math mode and close hbox if needed +\if@IEEEeqnarrayboxHBOXSW $\egroup\fi} + + + +% IEEEeqnarraybox uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\[vskip amount] +% This "cr" macros are modified versions those for LaTeX2e's eqnarray +% For IEEEeqnarraybox, \\* is the same as \\ +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the isolation/strut column +% carry strut status into isolation/strut column +\def\@IEEEeqnarrayboxcr{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +% reset the strut system for next line or IEEEeqnarray +\@IEEEeqnarraystrutreset% +{\ifnum0=`}\fi% +\@ifstar{\@IEEEeqnarrayboxYCR}{\@IEEEeqnarrayboxYCR}} + +% test and setup the optional argument to \\[] +\def\@IEEEeqnarrayboxYCR{\@testopt\@IEEEeqnarrayboxXCR\z@skip} + +% IEEEeqnarraybox does not automatically increase line spacing by \jot +\def\@IEEEeqnarrayboxXCR[#1]{\ifnum0=`{\fi}% +\cr\noalign{\if@IEEEeqnarraystarform\else\vskip\jot\fi\vskip#1\relax}} + + + +% starts the halign preamble build +\def\@IEEEbuildpreamble{\@IEEEtrantmptoksA={}% clear token register +\let\@IEEEBPcurtype=u%current column type is not yet known +\let\@IEEEBPprevtype=s%the previous column type was the start +\let\@IEEEBPnexttype=u%next column type is not yet known +% ensure these are valid +\def\@IEEEBPcurglue={0pt plus 0pt minus 0pt}% +\def\@IEEEBPcurcolname{@IEEEdefault}% name of current column definition +% currently acquired numerically referenced glue +% use a name that is easier to remember +\let\@IEEEBPcurnum=\@IEEEtrantmpcountA% +\@IEEEBPcurnum=0% +% tracks number of columns in the preamble +\@IEEEeqnnumcols=0% +% record the default end glues +\edef\@IEEEBPstartglue{\@IEEEeqnarraycolSEPdefaultstart}% +\edef\@IEEEBPendglue{\@IEEEeqnarraycolSEPdefaultend}% +% now parse the user's column specifications +\@@IEEEbuildpreamble} + + +% parses and builds the halign preamble +\def\@@IEEEbuildpreamble#1#2{\let\@@nextIEEEbuildpreamble=\@@IEEEbuildpreamble% +% use only the very first token to check the end +% \noindent is used as a delimiter as \end can be present here +\def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% +\@IEEEgrabfirstoken#1\relax\relax\noindent +\ifx\@IEEEgrabbedfirstoken\end\let\@@nextIEEEbuildpreamble=\@@IEEEfinishpreamble\else% +% identify current and next token type +\@IEEEgetcoltype{#1}{\@IEEEBPcurtype}{1}% current, error on invalid +\@IEEEgetcoltype{#2}{\@IEEEBPnexttype}{0}% next, no error on invalid next +% if curtype is a glue, get the glue def +\if\@IEEEBPcurtype g\@IEEEgetcurglue{#1}{\@IEEEBPcurglue}\fi% +% if curtype is a column, get the column def and set the current column name +\if\@IEEEBPcurtype c\@IEEEgetcurcol{#1}\fi% +% if curtype is a numeral, acquire the user defined glue +\if\@IEEEBPcurtype n\@IEEEprocessNcol{#1}\fi% +% process the acquired glue +\if\@IEEEBPcurtype g\@IEEEprocessGcol\fi% +% process the acquired col +\if\@IEEEBPcurtype c\@IEEEprocessCcol\fi% +% ready prevtype for next col spec. +\let\@IEEEBPprevtype=\@IEEEBPcurtype% +% be sure and put back the future token(s) as a group +\fi\@@nextIEEEbuildpreamble{#2}} + + +% executed just after preamble build is completed +% warn about zero cols, and if prevtype type = u, put in end tabskip glue +\def\@@IEEEfinishpreamble#1{\ifnum\@IEEEeqnnumcols<1\relax +\@IEEEclspkgerror{No column specifiers declared for IEEEeqnarray}% +{At least one column type must be declared for each IEEEeqnarray.}% +\fi%num cols less than 1 +%if last type undefined, set default end tabskip glue +\if\@IEEEBPprevtype u\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue}\fi} + + +% Identify and return the column specifier's type code +\def\@IEEEgetcoltype#1#2#3{% +% use only the very first token to determine the type +% \noindent is used as a delimiter as \end can be present here +\def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% +\@IEEEgrabfirstoken#1\relax\relax\noindent +% \@IEEEgrabfirstoken has the first token, the rest are discarded +% n = number +% g = glue (any other char in catagory 12) +% c = letter +% e = \end +% u = undefined +% third argument: 0 = no error message, 1 = error on invalid char +\let#2=u\relax% assume invalid until know otherwise +\ifx\@IEEEgrabbedfirstoken\end\let#2=e\else +\ifcat\@IEEEgrabbedfirstoken\relax\else% screen out control sequences +\if0\@IEEEgrabbedfirstoken\let#2=n\else +\if1\@IEEEgrabbedfirstoken\let#2=n\else +\if2\@IEEEgrabbedfirstoken\let#2=n\else +\if3\@IEEEgrabbedfirstoken\let#2=n\else +\if4\@IEEEgrabbedfirstoken\let#2=n\else +\if5\@IEEEgrabbedfirstoken\let#2=n\else +\if6\@IEEEgrabbedfirstoken\let#2=n\else +\if7\@IEEEgrabbedfirstoken\let#2=n\else +\if8\@IEEEgrabbedfirstoken\let#2=n\else +\if9\@IEEEgrabbedfirstoken\let#2=n\else +\ifcat,\@IEEEgrabbedfirstoken\let#2=g\relax +\else\ifcat a\@IEEEgrabbedfirstoken\let#2=c\relax\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\if#2u\relax +\if0\noexpand#3\relax\else\@IEEEclspkgerror{Invalid character in column specifications}% +{Only letters, numerals and certain other symbols are allowed \MessageBreak +as IEEEeqnarray column specifiers.}\fi\fi} + + +% identify the current letter referenced column +% if invalid, use a default column +\def\@IEEEgetcurcol#1{\expandafter\ifx\csname @IEEEeqnarraycolDEF#1\endcsname\@IEEEeqnarraycolisdefined% +\def\@IEEEBPcurcolname{#1}\else% invalid column name +\@IEEEclspkgerror{Invalid column type "#1" in column specifications.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\def\@IEEEBPcurcolname{@IEEEdefault}\fi} + + +% identify and return the predefined (punctuation) glue value +\def\@IEEEgetcurglue#1#2{% +% ! = \! (neg small) -0.16667em (-3/18 em) +% , = \, (small) 0.16667em ( 3/18 em) +% : = \: (med) 0.22222em ( 4/18 em) +% ; = \; (large) 0.27778em ( 5/18 em) +% ' = \quad 1em +% " = \qquad 2em +% . = 0.5\arraycolsep +% / = \arraycolsep +% ? = 2\arraycolsep +% * = 1fil +% + = \@IEEEeqnarraycolSEPcenter +% - = \@IEEEeqnarraycolSEPzero +% Note that all em values are referenced to the math font (textfont2) fontdimen6 +% value for 1em. +% +% use only the very first token to determine the type +% this prevents errant tokens from getting in the main text +% \noindent is used as a delimiter here +\def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% +\@IEEEgrabfirstoken#1\relax\relax\noindent +% get the math font 1em value +% LaTeX2e's NFSS2 does not preload the fonts, but \IEEEeqnarray needs +% to gain access to the math (\textfont2) font's spacing parameters. +% So we create a bogus box here that uses the math font to ensure +% that \textfont2 is loaded and ready. If this is not done, +% the \textfont2 stuff here may not work. +% Thanks to Bernd Raichle for his 1997 post on this topic. +{\setbox0=\hbox{$\displaystyle\relax$}}% +% fontdimen6 has the width of 1em (a quad). +\@IEEEtrantmpdimenA=\fontdimen6\textfont2\relax% +% identify the glue value based on the first token +% we discard anything after the first +\if!\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=-0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if,\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if:\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.22222\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if;\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.27778\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if'\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=1\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if"\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=2\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if.\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.5\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if/\@IEEEgrabbedfirstoken\edef#2{\the\arraycolsep}\else +\if?\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=2\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if *\@IEEEgrabbedfirstoken\edef#2{0pt plus 1fil minus 0pt}\else +\if+\@IEEEgrabbedfirstoken\edef#2{\@IEEEeqnarraycolSEPcenter}\else +\if-\@IEEEgrabbedfirstoken\edef#2{\@IEEEeqnarraycolSEPzero}\else +\edef#2{\@IEEEeqnarraycolSEPzero}% +\@IEEEclspkgerror{Invalid predefined inter-column glue type "#1" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{Only !,:;'"./?*+ and - are valid predefined glue types in the\MessageBreak +IEEEeqnarray column specifications.}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + + + +% process a numerical digit from the column specification +% and look up the corresponding user defined glue value +% can transform current type from n to g or a as the user defined glue is acquired +\def\@IEEEprocessNcol#1{\if\@IEEEBPprevtype g% +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue, future digits will be discarded +\@IEEEBPcurnum=0\relax% +\else% if we previously aborted a glue +\if\@IEEEBPprevtype a\@IEEEBPcurnum=0\let\@IEEEBPcurtype=a%maintain digit abortion +\else%acquire this number +% save the previous type before the numerical digits started +\if\@IEEEBPprevtype n\else\let\@IEEEBPprevsavedtype=\@IEEEBPprevtype\fi% +\multiply\@IEEEBPcurnum by 10\relax% +\advance\@IEEEBPcurnum by #1\relax% add in number, \relax is needed to stop TeX's number scan +\if\@IEEEBPnexttype n\else%close acquisition +\expandafter\ifx\csname @IEEEeqnarraycolSEPDEF\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname\@IEEEeqnarraycolisdefined% +\edef\@IEEEBPcurglue{\csname @IEEEeqnarraycolSEP\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname}% +\else%user glue not defined +\@IEEEclspkgerror{Invalid user defined inter-column glue type "\number\@IEEEBPcurnum" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{You must define all IEEEeqnarray numerical inter-column glue types via\MessageBreak +\string\IEEEeqnarraydefcolsep \space before they are used in column specifications.}% +\edef\@IEEEBPcurglue{\@IEEEeqnarraycolSEPzero}% +\fi% glue defined or not +\let\@IEEEBPcurtype=g% change the type to reflect the acquired glue +\let\@IEEEBPprevtype=\@IEEEBPprevsavedtype% restore the prev type before this number glue +\@IEEEBPcurnum=0\relax%ready for next acquisition +\fi%close acquisition, get glue +\fi%discard or acquire number +\fi%prevtype glue or not +} + + +% process an acquired glue +% add any acquired column/glue pair to the preamble +\def\@IEEEprocessGcol{\if\@IEEEBPprevtype a\let\@IEEEBPcurtype=a%maintain previous glue abortions +\else +% if this is the start glue, save it, but do nothing else +% as this is not used in the preamble, but before +\if\@IEEEBPprevtype s\edef\@IEEEBPstartglue{\@IEEEBPcurglue}% +\else%not the start glue +\if\@IEEEBPprevtype g%ignore if back to back glues +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue +\else% not a back to back glue +\if\@IEEEBPprevtype c\relax% if the previoustype was a col, add column/glue pair to preamble +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column defintion into the preamble, being careful not to expand +% the column definition +\@IEEEappendtoksA{\tabskip=\@IEEEBPcurglue}% +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\else% error: non-start glue with no pending column +\@IEEEclspkgerror{Inter-column glue specifier without a prior column\MessageBreak +type in the column specifications. Ignoring this glue\MessageBreak +specifier}% +{Except for the first and last positions, glue can be placed only\MessageBreak +between column types.}% +\let\@IEEEBPcurtype=a% abort this glue +\fi% previous was a column +\fi% back-to-back glues +\fi% is start column glue +\fi% prev type not a +} + + +% process an acquired letter referenced column and, if necessary, add it to the preamble +\def\@IEEEprocessCcol{\if\@IEEEBPnexttype g\else +\if\@IEEEBPnexttype n\else +% we have a column followed by something other than a glue (or numeral glue) +% so we must add this column to the preamble now +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi%col separator for those after the first +\if\@IEEEBPnexttype e\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue\relax}\else%put in end glue +\@IEEEappendtoksA{\tabskip=\@IEEEeqnarraycolSEPdefaultmid\relax}\fi% or default mid glue +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column definition into the preamble, being careful not to expand +% the column definition +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\fi%next type not numeral +\fi%next type not glue +} + + +%% +%% END OF IEEEeqnarry DEFINITIONS +%% + + + + +% set up the running headings, this complex because of all the different +% modes IEEEtran supports +\if@twoside + \ifCLASSOPTIONtechnote + \def\ps@headings{% + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else + \def\@oddfoot{\scriptsize\@date\hfil DRAFT} + \def\@evenfoot{\scriptsize DRAFT\hfil\@date} + \fi + \else + \def\@oddfoot{}\def\@evenfoot{} + \fi} + \else % not a technote + \def\ps@headings{% + \ifCLASSOPTIONconference + \def\@oddhead{} + \def\@evenhead{} + \else + \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \fi + \ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else + \def\@oddfoot{\scriptsize\@date\hfil DRAFT} + \def\@evenfoot{\scriptsize DRAFT\hfil\@date} + \fi + \else + \def\@oddfoot{}\def\@evenfoot{}% + \fi} + \fi +\else % single side +\def\ps@headings{% + \ifCLASSOPTIONconference + \def\@oddhead{} + \def\@evenhead{} + \else + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{} + \fi + \ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{} + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{} + \else + \def\@oddfoot{\scriptsize \@date \hfil DRAFT} + \fi + \else + \def\@oddfoot{} + \fi + \def\@evenfoot{}} +\fi + + +% title page style +\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 +\ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}% + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}% + \ifCLASSOPTIONdraftclsnofoot\else + \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% + \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% + \fi +\else + % all non-draft mode footers + \if@IEEEusingpubid + % for title pages that are using a pubid + % do not repeat pubid if using peer review option + \ifCLASSOPTIONpeerreview + \else + \footskip 0pt% + \ifCLASSOPTIONcompsocconf + \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@IEEEpeerreviewcoverpagestyle{% +\def\@oddhead{}\def\@evenhead{}% +\def\@oddfoot{}\def\@evenfoot{}% +\ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot\else + \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% + \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% + \fi +\else + % non-draft mode footers + \if@IEEEusingpubid + \footskip 0pt% + \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} + + +% start with empty headings +\def\rightmark{}\def\leftmark{} + + +%% Defines the command for putting the header. \footernote{TEXT} is the same +%% as \markboth{TEXT}{TEXT}. +%% Note that all the text is forced into uppercase, if you have some text +%% 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{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#1}}% +\def\rightmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#2}}} +\def\footernote#1{\markboth{#1}{#1}} + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + + + + +%% CITATION AND BIBLIOGRAPHY COMMANDS +%% +%% V1.6 no longer supports the older, nonstandard \shortcite and \citename setup stuff +% +% +% Modify Latex2e \@citex to separate citations with "], [" +\def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{], [}% + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} + +% V1.6 we create hooks for the optional use of Donald Arseneau's +% cite.sty package. cite.sty is "smart" and will notice that the +% following format controls are already defined and will not +% redefine them. The result will be the proper sorting of the +% citation numbers and auto detection of 3 or more entry "ranges" - +% all in IEEE style: [1], [2], [5]--[7], [12] +% This also allows for an optional note, i.e., \cite[mynote]{..}. +% If the \cite with note has more than one reference, the note will +% be applied to the last of the listed references. It is generally +% desired that if a note is given, only one reference is listed in +% that \cite. +% Thanks to Mr. Arseneau for providing the required format arguments +% to produce the IEEE style. +\def\citepunct{], [} +\def\citedash{]--[} + +% 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. +% 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\csname #1\endcsname{\string\citation{\@citeb}}\fi}% + \@esphack} + +% V1.6 provide a way for a user to execute a command just before +% a given reference number - used to insert a \newpage to balance +% the columns on the last page +\edef\@IEEEtriggerrefnum{0} % the default of zero means that + % the command is not executed +\def\@IEEEtriggercmd{\newpage} + +% allow the user to alter the triggered command +\long\def\IEEEtriggercmd#1{\long\def\@IEEEtriggercmd{#1}} + +% allow user a way to specify the reference number just before the +% command is executed +\def\IEEEtriggeratref#1{\@IEEEtrantmpcountA=#1% +\edef\@IEEEtriggerrefnum{\the\@IEEEtrantmpcountA}}% + +% trigger command at the given reference +\def\@IEEEbibitemprefix{\@IEEEtrantmpcountA=\@IEEEtriggerrefnum\relax% +\advance\@IEEEtrantmpcountA by -1\relax% +\ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi} + + +\def\@biblabel#1{[#1]} + +% 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\@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 \IEEEbibitemsep\relax + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \let\@IEEElatexbibitem\bibitem% + \def\bibitem{\@IEEEbibitemprefix\@IEEElatexbibitem}% +\def\newblock{\hskip .11em plus .33em minus .07em}% +% originally: +% \sloppy\clubpenalty4000\widowpenalty4000% +% by adding the \interlinepenalty here, we make it more +% difficult, but not impossible, for LaTeX to break within a reference. +% IEEE almost never breaks a reference (but they do it more often with +% technotes). You may get an underfull vbox warning around the bibliography, +% but the final result will be much more like what IEEE will publish. +% MDS 11/2000 +\ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100% +\else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi% + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + + + +% TITLE PAGE COMMANDS +% +% +% \IEEEmembership is used to produce the sublargesize italic font used to indicate author +% IEEE membership. compsoc uses a large size sans slant font +\def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}} + + +% \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 \IEEEauthorrefmark{} within \author as the footnote +% symbols will have been turned off to prevent \thanks from creating footnote marks. +% \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 \IEEEauthorrefmark{} from colliding +% with the text above. +% 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}}}} + + +% 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\@IEEEcompsocnotconfonly{\sffamily}\sublargesize\@IEEEcompsocconfonly{\large}} +%\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize\@IEEEcompsocconfonly{\large}} +\def\@IEEEauthorblockNstyle{\normalfont\normalsize} +\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize} + +% The default if the user does not use an author block +\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. +% IEEE doesn't want any added spacing here, but I will leave these +% controls in place in case they ever change their mind. +% Personally, I like 0.75ex. +%\def\@IEEEauthorblockNtopspace{0.75ex} +%\def\@IEEEauthorblockAtopspace{0.75ex} +\def\@IEEEauthorblockNtopspace{0.0ex} +\def\@IEEEauthorblockAtopspace{0.0ex} +% baseline spacing within name and affiliation blocks (confmode) +% must be positive, spacings below certain values will make +% the position of line of text sensitive to the contents of the +% line above it i.e., whether or not the prior line has descenders, +% subscripts, etc. For this reason it is a good idea to keep +% these above 2.6ex +\def\@IEEEauthorblockNinterlinespace{2.6ex} +\def\@IEEEauthorblockAinterlinespace{2.75ex} + +% This tracks the required strut size. +% See the \@IEEEauthorhalign command for the actual default value used. +\def\@IEEEauthorblockXinterlinespace{2.7ex} + +% variables to retain font size and style across groups +% values given here have no effect as they will be overwritten later +\gdef\@IEEESAVESTATEfontsize{10} +\gdef\@IEEESAVESTATEfontbaselineskip{12} +\gdef\@IEEESAVESTATEfontencoding{OT1} +\gdef\@IEEESAVESTATEfontfamily{ptm} +\gdef\@IEEESAVESTATEfontseries{m} +\gdef\@IEEESAVESTATEfontshape{n} + +% saves the current font attributes +\def\@IEEEcurfontSAVE{\global\let\@IEEESAVESTATEfontsize\f@size% +\global\let\@IEEESAVESTATEfontbaselineskip\f@baselineskip% +\global\let\@IEEESAVESTATEfontencoding\f@encoding% +\global\let\@IEEESAVESTATEfontfamily\f@family% +\global\let\@IEEESAVESTATEfontseries\f@series% +\global\let\@IEEESAVESTATEfontshape\f@shape} + +% restores the saved font attributes +\def\@IEEEcurfontRESTORE{\fontsize{\@IEEESAVESTATEfontsize}{\@IEEESAVESTATEfontbaselineskip}% +\fontencoding{\@IEEESAVESTATEfontencoding}% +\fontfamily{\@IEEESAVESTATEfontfamily}% +\fontseries{\@IEEESAVESTATEfontseries}% +\fontshape{\@IEEESAVESTATEfontshape}% +\selectfont} + + +% variable to indicate if the current block is the first block in the column +\newif\if@IEEEprevauthorblockincol \@IEEEprevauthorblockincolfalse + + +% the command places a strut with height and depth = \@IEEEauthorblockXinterlinespace +% we use this technique to have complete manual control over the spacing of the lines +% within the halign environment. +% We set the below baseline portion at 30%, the above +% baseline portion at 70% of the total length. +% Responds to changes in the document's \baselinestretch +\def\@IEEEauthorstrutrule{\@IEEEtrantmpdimenA\@IEEEauthorblockXinterlinespace% +\@IEEEtrantmpdimenA=\baselinestretch\@IEEEtrantmpdimenA% +\rule[-0.3\@IEEEtrantmpdimenA]{0pt}{\@IEEEtrantmpdimenA}} + + +% blocks to hold the authors' names and affilations. +% Makes formatting easy for conferences +% +% use real definitions in conference mode +% name block +\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 +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}% +% input the author names +#1% +% end the row if the user did not already +\crcr} +% spacer row for names +\def\@IEEEauthorblockNtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockNtopspace}} +% +% affiliation block +\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 +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockAtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockAinterlinespace}% +% input the author affiliations +#1% +% end the row if the user did not already +\crcr} +% spacer row for affiliations +\def\@IEEEauthorblockAtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockAtopspace}} + + +% allow papers to compile even if author blocks are used in modes other +% than conference or peerreviewca. For such cases, we provide dummy blocks. +\ifCLASSOPTIONconference +\else + \ifCLASSOPTIONpeerreviewca\else + % not conference or peerreviewca mode + \def\IEEEauthorblockN#1{#1}% + \def\IEEEauthorblockA#1{#1}% + \fi +\fi + + + +% we provide our own halign so as not to have to depend on tabular +\def\@IEEEauthorhalign{\@IEEEauthordefaulttextstyle% default text style + \lineskip=0pt\relax% disable line spacing + \lineskiplimit=0pt\relax% + \baselineskip=0pt\relax% + \@IEEEcurfontSAVE% save the current font + \mathsurround\z@\relax% no extra spacing around math + \let\\\@IEEEauthorhaligncr% replace newline with halign friendly one + \tabskip=0pt\relax% no column spacing + \everycr{}% ensure no problems here + \@IEEEprevauthorblockincolfalse% no author blocks yet + \def\@IEEEauthorblockXinterlinespace{2.7ex}% default interline space + \vtop\bgroup%vtop box + \halign\bgroup&\relax\hfil\@IEEEcurfontRESTORE\relax ##\relax + \hfil\@IEEEcurfontSAVE\@IEEEauthorstrutrule\cr} + +% ensure last line, exit from halign, close vbox +\def\end@IEEEauthorhalign{\crcr\egroup\egroup} + +% handle bogus star form +\def\@IEEEauthorhaligncr{{\ifnum0=`}\fi\@ifstar{\@@IEEEauthorhaligncr}{\@@IEEEauthorhaligncr}} + +% test and setup the optional argument to \\[] +\def\@@IEEEauthorhaligncr{\@testopt\@@@IEEEauthorhaligncr\z@skip} + +% end the line and do the optional spacer +\def\@@@IEEEauthorhaligncr[#1]{\ifnum0=`{\fi}\cr\noalign{\vskip#1\relax}} + + + +% flag to prevent multiple \and warning messages +\newif\if@IEEEWARNand +\@IEEEWARNandtrue + +% if in conference or peerreviewca modes, we support the use of \and as \author is a +% tabular environment, otherwise we warn the user that \and is invalid +% outside of conference or peerreviewca modes. +\def\and{\relax} % provide a bogus \and that we will then override + +\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} + +\ifCLASSOPTIONconference% +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi +\ifCLASSOPTIONpeerreviewca +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi + + +% page clearing command +% based on LaTeX2e's \cleardoublepage, but allows different page styles +% for the inserted blank pages +\def\@IEEEcleardoublepage#1{\clearpage\if@twoside\ifodd\c@page\else +\hbox{}\thispagestyle{#1}\newpage\if@twocolumn\hbox{}\thispagestyle{#1}\newpage\fi\fi\fi} + + +% user command to invoke the title page +\def\maketitle{\par% + \begingroup% + \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% + \ifCLASSOPTIONpeerreview + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \thispagestyle{IEEEpeerreviewcoverpagestyle}\@thanks% + \else + \if@twocolumn% + \ifCLASSOPTIONtechnote% + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \else + \twocolumn[\@maketitle\@IEEEdynamictitlevspace\@IEEEaftertitletext]% + \fi + \else + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \fi + \thispagestyle{IEEEtitlepagestyle}\@thanks% + \fi + % pullup page for pubid if used. + \if@IEEEusingpubid + \enlargethispage{-\@IEEEpubidpullup}% + \fi + \endgroup + \setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax + \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}% +\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\@IEEEcompsoconly{\sffamily}\@IEEEcompsocconfonly{\normalfont\normalsize\vskip 0\@IEEEnormalsizeunitybaselineskip + \bfseries\Large}\@title\par}\vskip 1.0em\par% + % V1.6 handle \author differently if in conference mode + \ifCLASSOPTIONconference% + {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}\relax + \else% peerreviewca, peerreview or journal + \ifCLASSOPTIONpeerreviewca + % peerreviewca handles author names just like conference mode + {\@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 +\ifCLASSOPTIONpeerreview +\def\IEEEpeerreviewmaketitle{\@IEEEcleardoublepage{empty}% +\ifCLASSOPTIONtwocolumn +\twocolumn[\@IEEEpeerreviewmaketitle\@IEEEdynamictitlevspace] +\else +\newpage\@IEEEpeerreviewmaketitle\@IEEEstatictitlevskip +\fi +\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}\@IEEEcompsoconly{\sffamily}% +\normalfont\normalsize\vskip0.2em{\Huge\@title\par}\vskip1.0em\par +\end{center}} + + + +% V1.6 +% this is a static rubber spacer between the title/authors and the main text +% used for single column text, or when the title appears in the first column +% of two column text (technotes). +\def\@IEEEstatictitlevskip{{\normalfont\normalsize +% adjust spacing to next text +% v1.6b handle peer review papers +\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 + \ifCLASSOPTIONconference% conference + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% + \else% + \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% + \fi + \fi +\fi}} + + +% V1.6 +% This is a dynamically determined rigid spacer between the title/authors +% and the main text. This is used only for single column titles over two +% column text (most common) +% This is bit tricky because we have to ensure that the textheight of the +% 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 \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 + \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\@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 \@IEEEMINtitlevspace - instead it will be + % lengthened + % default to journal values + \def\@IEEENORMtitlevspace{2.5\baselineskip}% + \def\@IEEEMINtitlevspace{2\baselineskip}% + % conferences and technotes need tighter spacing + \ifCLASSOPTIONconference%conference + \def\@IEEENORMtitlevspace{1\baselineskip}% + \def\@IEEEMINtitlevspace{0.75\baselineskip}% + \fi + \ifCLASSOPTIONtechnote%technote + \def\@IEEENORMtitlevspace{1\baselineskip}% + \def\@IEEEMINtitlevspace{0.75\baselineskip}% + \fi% + % get the height that the title will take up + \ifCLASSOPTIONpeerreview + \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@IEEEpeerreviewmaketitle}}% + \else + \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@maketitle}}% + \fi + \@IEEEmaintextheight=-\@IEEEmaintextheight% title takes away from maintext, so reverse sign + % add the height of the page textheight + \advance\@IEEEmaintextheight by \textheight% + % correct for title pages using pubid + \ifCLASSOPTIONpeerreview\else + % peerreview papers use the pubid on the cover page only. + % And the cover page uses a static spacer. + \if@IEEEusingpubid\advance\@IEEEmaintextheight by -\@IEEEpubidpullup\fi + \fi% + % subtract off the nominal value of the title bottom spacer + \advance\@IEEEmaintextheight by -\@IEEENORMtitlevspace% + % \topskip takes away some too + \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 + % and discard any excess fractional remainder + % we subtracted the first line, because the first line + % is placed \topskip into the maintext, not \baselineskip like the + % rest of the lines. + \@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 (\@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 \@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 \@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\@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\@IEEECOMPENSATElen<\@IEEEMINtitlevspace\relax% + \advance\@IEEECOMPENSATElen by \baselineskip% + \fi% + \else% + % go with an increase because it is closer to the nominal than a decrease + \advance\@IEEECOMPENSATElen by -\@IEEEREDUCEmaintextheight% + \advance\@IEEECOMPENSATElen by \baselineskip% + \fi% + % set the calculated rigid spacer + \vspace{\@IEEECOMPENSATElen}}} + + + +% V1.6 +% we allow the user access to the last part of the title area +% useful in emergencies such as when a different spacing is needed +% This text is NOT compensated for in the dynamic sizer. +\let\@IEEEaftertitletext=\relax +\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{\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\ifCLASSOPTIONconference\vspace{1.34ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi + \normalfont\normalsize} + +\def\IEEEkeywords{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\IEEEkeywordsname}-\relax + \else + \begin{center}\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\end{center}\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +\def\endIEEEkeywords{\relax\ifCLASSOPTIONtechnote\vspace{1.34ex}\else\vspace{0.67ex}\fi + \par\if@twocolumn\else\endquotation\fi% + \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 +% is not a \ , \\ or a \par, it ceases and returns that token +% +% used to strip leading \, \\ and \par from the input +% so that such things in the beginning of an environment will not +% affect the formatting of the text +\long\def\@IEEEgobbleleadPARNLSP#1{\let\@IEEEswallowthistoken=0% +\let\@IEEEgobbleleadPARNLSPtoken#1% +\let\@IEEEgobbleleadPARtoken=\par% +\let\@IEEEgobbleleadNLtoken=\\% +\let\@IEEEgobbleleadSPtoken=\ % +\def\@IEEEgobbleleadSPMACRO{\ }% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadPARtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadNLtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPtoken% +\let\@IEEEswallowthistoken=1% +\fi% +% a control space will come in as a macro +% when it is the last one on a line +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPMACRO% +\let\@IEEEswallowthistoken=1% +\fi% +% if we have to swallow this token, do so and taste the next one +% else spit it out and stop gobbling +\ifx\@IEEEswallowthistoken 1\let\@IEEEnextgobbleleadPARNLSP=\@IEEEgobbleleadPARNLSP\else% +\let\@IEEEnextgobbleleadPARNLSP=#1\fi% +\@IEEEnextgobbleleadPARNLSP}% + + + + +% TITLING OF SECTIONS +\def\@IEEEsectpunct{:\ \,} % Punctuation after run-in section heading (headings which are + % 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 + \let\@svsec\@empty + \else + \refstepcounter{#1}% + % load section label and spacer into \@svsec + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi% + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@% tempskipa determines whether is treated as a high + \begingroup #6{\relax% or low level heading + \noindent % subsections are NOT indented + % print top level headings. \@svsec is label, #8 is heading title + % IEEE does not block indent the section title text, it flows like normal + {\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\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 +%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 + % svsechd swallows the trailing space, protect it with \mbox{} + \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi + \@xsect{#3}} + + +%% SECTION heading spacing and font +%% +% arguments are: #1 - sectiontype name +% (for \@sect) #2 - section level +% #3 - section heading indent +% #4 - top separation (absolute value used, neg indicates not to indent main text) +% If negative, make stretch parts negative too! +% #5 - (absolute value used) positive: bottom separation after heading, +% negative: amount to indent main text after heading +% Both #4 and #5 negative means to indent main text and use negative top separation +% #6 - font control +% You've got to have \normalfont\normalsize in the font specs below to prevent +% trouble when you do something like: +% \section{Note}{\ttfamily TT-TEXT} is known to ... +% 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. +\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}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\else % for journals +\def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}% V1.6 3.0ex from 3.5ex +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\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}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{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\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\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} + + +%\itemindent is set to \z@ by list, so define new temporary variable +\newdimen\@IEEEtmpitemindent +\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\topsep 0pt\rmfamily\trivlist% + \item[\hskip \labelsep{\indent\itshape #1\ #2:}]\itemindent\@IEEEtmpitemindent} +\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\topsep 0pt\rmfamily \trivlist% +% 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} +% 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. +% 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\@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}}} + + + +%% SET UP THE DEFAULT PAGESTYLE +\ps@headings +\pagenumbering{arabic} + +% normally the page counter starts at 1 +\setcounter{page}{1} +% however, for peerreview the cover sheet is page 0 or page -1 +% (for duplex printing) +\ifCLASSOPTIONpeerreview + \if@twoside + \setcounter{page}{-1} + \else + \setcounter{page}{0} + \fi +\fi + +% standard book class behavior - let bottom line float up and down as +% needed when single sided +\ifCLASSOPTIONtwoside\else\raggedbottom\fi +% if two column - turn on twocolumn, allow word spacings to stretch more and +% enforce a rigid position for the last lines +\ifCLASSOPTIONtwocolumn +% the peer review option delays invoking twocolumn + \ifCLASSOPTIONpeerreview\else + \twocolumn + \fi +\sloppy +\flushbottom +\fi + + + + +% \APPENDIX and \APPENDICES definitions + +% This is the \@ifmtarg command from the LaTeX ifmtarg package +% by Peter Wilson (CUA) and Donald Arseneau +% \@ifmtarg is used to determine if an argument to a command +% is present or not. +% For instance: +% \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}} +% \@ifmtarg is used with our redefined \section command if +% \appendices is invoked. +% The command \section will behave slightly differently depending +% on whether the user specifies a title: +% \section{My appendix title} +% or not: +% \section{} +% This way, we can eliminate the blank lines where the title +% would be, and the unneeded : after Appendix in the table of +% contents +\begingroup +\catcode`\Q=3 +\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} +\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4} +\endgroup +% end of \@ifmtarg defs + + +% 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 +% argument (title) +% note we reroute the call to the old \section* +\def\@IEEEprocessthesectionargument#1{% +\@ifmtarg{#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 +% command and its argument. Then, warn the user. +\def\@IEEEdestroythesectionargument#1{\typeout{** WARNING: Ignoring useless +\protect\section\space in Appendix (line \the\inputlineno).}} + + +% remember \thesection forms will be displayed in \ref calls +% and in the Table of Contents. +% The \sectiondis form is used in the actual heading itself + +% appendix command for one single appendix +% normally has no heading. However, if you want a +% heading, you can do so via the optional argument: +% \appendix[Optional Heading] +\def\appendix{\relax} +\renewcommand{\appendix}[1][]{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \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}% + \gdef\thesection{A}% + \gdef\thesectiondis{}% + \gdef\thesubsection{\Alph{subsection}}% + \gdef\@IEEEthmcounterinsection##1{A} + \refstepcounter{section}% update the \ref counter + \@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*}{% + \@IEEEdestroythesectionargument}}% throw out the argument + % of the normal form +} + + + +% appendices command for multiple appendices +% user then calls \section with an argument (possibly empty) to +% declare the individual appendices +\def\appendices{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \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}% + \ifCLASSOPTIONromanappendices% + \gdef\thesection{\Roman{section}}% + \gdef\thesectiondis{\Roman{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Roman{section}.}}% + \gdef\@IEEEthmcounterinsection##1{A\arabic{##1}} + \else% + \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 + % redefine \section command for appendices + % leave \section* as is + \def\section{\@ifstar{\@IEEEappendixsavesection*}{% process the *-form + \refstepcounter{section}% or is a new section so, + \@IEEEprocessthesectionargument}}% process the argument + % of the normal form +} + + + +% \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. +% +% 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 \@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 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} +% 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 \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 \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\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 \@IEEEPARstartHEIGHTTEXT in the current font +% down to \@IEEEPARstartDROPDEPTH below the current baseline +\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}% +{\@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\@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: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}% +\typeout{ Forcing the drop letter font size to 10pt.}% +\@IEEEtrantmpdimenB=10pt% +\fi% +% and store it as a counter +\@IEEEtrantmpcountB=\@IEEEtrantmpdimenB% +% Since a font size doesn't exactly correspond to the height of the capital +% letters in that font, the actual height of the letter, \@IEEEtrantmpcountB, +% will be less than that desired, \@IEEEtrantmpcountA +% we need to raise the font size, \@IEEEtrantmpdimenA +% by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB +% But, TeX doesn't have floating point division, so we have to use integer +% division. Hence the use of the counters. +% We need to reduce the denominator so that the loss of the remainder will +% have minimal affect on the accuracy of the result +\divide\@IEEEtrantmpcountB by 200% +\divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB% +% Then reequalize things when we use TeX's ability to multiply by +% floating point values +\@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA% +\multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA% +% \@IEEEPARstartfont is globaly set to the calculated font of the big letter +% We need to carry this out of the local calculation area to to create the +% big letter. +\global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB% +% 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 +\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}}}% +% end of the isolated calculation environment +% add in the extra clearance we want +\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. +\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 +% than the specified space of argument one +% if not, execute argument two (only if the remaining space is greater than zero) +% and issue a \newpage +% +% example: \@IEEEtranneedspace{2in}{\vfill} +% +% Does not take into consideration rubber shrinkage, so it tends to +% be overly cautious +% Based on an example posted by Donald Arseneau +% Note this macro uses \@IEEEtrantmpdimenB internally for calculations, +% so DO NOT PASS \@IEEEtrantmpdimenB to this routine +% if you need a dimen register, import with \@IEEEtrantmpdimenA instead +\def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable +\@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left +\ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left +\ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi% +\newpage% +\fi\endgroup} + + + +% 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@IEEEbiographyTOCentrynotmade +\global\@IEEEbiographyTOCentrynotmadetrue + +% biography counter so hyperref can jump directly to the biographies +% and not just the previous section +\newcounter{IEEEbiography} +\setcounter{IEEEbiography}{0} + +% photo area size +\def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area +\def\@IEEEBIOphotodepth{1.25in} % depth (height) of the biography photo area +% area cleared for photo +\def\@IEEEBIOhangwidth{1.14in} % width cleared for the biography photo area +\def\@IEEEBIOhangdepth{1.25in} % depth cleared for the biography photo area + % actual depth will be a multiple of + % \baselineskip, rounded up +\def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography + +\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 +% and one extra line for good measure +\@IEEEtrantmpdimenA=\@IEEEBIOhangdepth% +\advance\@IEEEtrantmpdimenA by \@IEEEBIOskipN% +\advance\@IEEEtrantmpdimenA by 1\baselineskip% +% if this page does not have enough space, break it and lets start +% with a new one +\@IEEEtranneedspace{\@IEEEtrantmpdimenA}{\relax}% +% 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}}}}% +% +% detect if the optional argument was supplied, this requires the +% \@ifmtarg command as defined in the appendix section above +% and if so, override the default box with what they want +\@ifmtarg{#1}{\relax}{\def\@IEEEtempbiographybox{\mbox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}% +\centering% +#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@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more 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 +% hanging indent is still active. Do this by redefining \par so +% that it will not start a new paragraph. (But it will appear to the +% user as if it did.) Also, strip any leading pars, newlines, or spaces. +\let\@IEEEBIOORGparCMD=\par% save the original \par command +\edef\par{\hfil\break\indent}% the new \par will not be a "real" \par +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEtempbiographybox}% get height of biography box +\@IEEEtrantmpdimenB=\@IEEEBIOhangdepth% +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenB% countA has the hang depth +\divide\@IEEEtrantmpcountA by \baselineskip% calculates lines needed to produce the hang depth +\advance\@IEEEtrantmpcountA by 1% ensure we overestimate +% set the hanging indent +\hangindent\@IEEEBIOhangwidth% +\hangafter-\@IEEEtrantmpcountA% +% 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}}}% +% 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 +% and pad the unused area - preventing a collision from the next biography entry +% MDS +\ifnum \prevgraf <\@IEEEtrantmpcountA\relax% detect when the biography text is shorter than the photo + \advance\@IEEEtrantmpcountA by -\prevgraf% calculate how many lines we need to pad + \advance\@IEEEtrantmpcountA by -1\relax% we compensate for the fact that we indented an extra line + \@IEEEtrantmpdimenA=\baselineskip% calculate the length of the padding + \multiply\@IEEEtrantmpdimenA by \@IEEEtrantmpcountA% + \noindent\rule{0pt}{\@IEEEtrantmpdimenA}% insert an invisible support strut +\fi% +\par\normalfont} + + + +% V1.6 +% added biography without a photo environment +\newenvironment{IEEEbiographynophoto}[1]{% +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#1}% +\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500% +\vskip 4\baselineskip plus 1fil minus 0\baselineskip% +\parskip=0pt\par% +\noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont} + + +% provide the user with some old font commands +% got this from article.cls +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} + + +% SPECIAL PAPER NOTICE COMMANDS +% +% holds the special notice text +\def\@IEEEspecialpapernotice{\relax} + +% for special papers, like invited papers, the user can do: +% \IEEEspecialpapernotice{(Invited Paper)} before \maketitle +\def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference% +\def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}% +\else% +\def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}% +\fi} + + + + +% PUBLISHER ID COMMANDS +% to insert a publisher's ID footer +% 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. +% +% the amount the main text is pulled up to make room for the +% publisher's ID footer +% IEEE uses about 1.3\baselineskip for journals, +% dynamic title spacing will clean up the fraction +\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 +% second column +% There are some examples (such as older issues of "Transactions on +% 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\@IEEEpubidpullup{2\baselineskip} +\fi + +% V1.7 compsoc does not use a pullup +\ifCLASSOPTIONcompsoc +\def\@IEEEpubidpullup{0pt} +\fi + +% holds the ID text +\def\@IEEEpubid{\relax} + +% 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\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 \IEEEpubid +% Is smart enough not to do anything when in single column text or +% 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 \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 IEEEpubid command in LaTeX. + + + +%% Lockout some commands under various conditions + +% general purpose bit bucket +\newsavebox{\@IEEEtranrubishbin} + +% flags to prevent multiple warning messages +\newif\if@IEEEWARNthanks +\newif\if@IEEEWARNIEEEPARstart +\newif\if@IEEEWARNIEEEbiography +\newif\if@IEEEWARNIEEEbiographynophoto +\newif\if@IEEEWARNIEEEpubid +\newif\if@IEEEWARNIEEEpubidadjcol +\newif\if@IEEEWARNIEEEmembership +\newif\if@IEEEWARNIEEEaftertitletext +\@IEEEWARNthankstrue +\@IEEEWARNIEEEPARstarttrue +\@IEEEWARNIEEEbiographytrue +\@IEEEWARNIEEEbiographynophototrue +\@IEEEWARNIEEEpubidtrue +\@IEEEWARNIEEEpubidadjcoltrue +\@IEEEWARNIEEEmembershiptrue +\@IEEEWARNIEEEaftertitletexttrue + + +%% Lockout some commands when in various modes, but allow them to be restored if needed +%% +% save commands which might be locked out +% so that the user can later restore them if needed +\let\@IEEESAVECMDthanks\thanks +\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 \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. +\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 +\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 +\ifCLASSOPTIONconference +% when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid, +% \IEEEmembership and \IEEEaftertitletext will all swallow their given text. +% \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\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} + + +% LaTeX treats environments and commands with optional arguments differently. +% the actual ("internal") command is stored as \\commandname +% (accessed via \csname\string\commandname\endcsname ) +% the "external" command \commandname is a macro with code to determine +% whether or not the optional argument is presented and to provide the +% default if it is absent. So, in order to save and restore such a command +% we would have to save and restore \\commandname as well. But, if LaTeX +% 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@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\IEEEbiography=\@IEEEbogusbiography +\let\endIEEEbiography=\end@IEEEbogusbiography + +\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\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 + + +% provide a way to restore the commands that are locked out +\def\IEEEoverridecommandlockouts{% +\typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}% +\let\thanks\@IEEESAVECMDthanks% +\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 deprecated (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 deprecated 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%% +% That's all folks! + diff --git a/IEEEtranBST/IEEEabrv.bib b/IEEEtranBST/IEEEabrv.bib new file mode 100644 index 0000000..1dc8039 --- /dev/null +++ b/IEEEtranBST/IEEEabrv.bib @@ -0,0 +1,451 @@ + +IEEEabrv.bib +V1.13 (2008/09/30) +Copyright (c) 2002-2008 by Michael Shell +See: http://www.michaelshell.org/ +for current contact information. + +BibTeX bibliography string definitions of the ABBREVIATED titles of +IEEE journals and magazines and online publications. + +This file is designed for bibliography styles that require +abbreviated titles and is not for use in bibliographies that +require full-length titles. + +Support sites: +http://www.michaelshell.org/tex/ieeetran/ +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +and/or +http://www.ieee.org/ + +Special thanks to Laura Hyslop and ken Rawson of IEEE for their help +in obtaining the information needed to compile this file. Also, +Volker Kuhlmann and Moritz Borgmann kindly provided some corrections +and additions. + +************************************************************************* +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +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: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, + IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, + IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +************************************************************************* + + +USAGE: + +\bibliographystyle{mybstfile} +\bibliography{IEEEabrv,mybibfile} + +where the IEEE titles in the .bib database entries use the strings +defined here. e.g., + + + journal = IEEE_J_AC, + + +to yield "{IEEE} Trans. Automat. Contr." + + +IEEE uses abbreviated journal titles in their bibliographies - +this file is suitable for work that is to be submitted to the IEEE. + + +For work that requires full-length titles, you should use the full +titles provided in the companion file, IEEEfull.bib. + + +** NOTES ** + + 1. Journals have been grouped according to subject in order to make it + easier to locate and extract the definitions for related journals - + as most works use references that are confined to a single topic. + Magazines are listed in straight alphabetical order. + + 2. String names are closely based on IEEE's own internal acronyms. + + 3. Abbreviations follow IEEE's style. + + 4. Older, out-of-print IEEE titles are included (but not including titles + dating prior to IEEE's formation from the IRE and AIEE in 1963). + + 5. The following string definitions have been disabled because their + abbreviations have not yet been verified: + + STRING{IEEE_J_LT = "{IEEE} Trans. Learning Technol."} + STRING{IEEE_J_NSM = "{IEEE} Trans. Netw. Service Manag."} + STRING{IEEE_J_SC = "{IEEE} Trans. Services Comput."} + STRING{IEEE_J_STARS = "{IEEE} J. Sel. Topics Appl. Earth Observations Remote Sens."} + + + If you know what the proper abbreviation is for a string above, + email me and I will correct them in the next release. + + + + + +IEEE Journals + + + +aerospace and military +@STRING{IEEE_J_AES = "{IEEE} Trans. Aerosp. Electron. Syst."} +@STRING{IEEE_J_ANE = "{IEEE} Trans. Aerosp. Navig. Electron."} +@STRING{IEEE_J_ANNE = "{IEEE} Trans. Aeronaut. Navig. Electron."} +@STRING{IEEE_J_AS = "{IEEE} Trans. Aerosp."} +@STRING{IEEE_J_AIRE = "{IEEE} Trans. Airborne Electron."} +@STRING{IEEE_J_MIL = "{IEEE} Trans. Mil. Electron."} + + + +autos, transportation and vehicles (non-aerospace) +@STRING{IEEE_J_ITS = "{IEEE} Trans. Intell. Transp. Syst."} +@STRING{IEEE_J_VT = "{IEEE} Trans. Veh. Technol."} +@STRING{IEEE_J_VC = "{IEEE} Trans. Veh. Commun."} + + + +circuits, signals, systems, audio and controls +@STRING{IEEE_J_SPL = "{IEEE} Signal Process. Lett."} +@STRING{IEEE_J_ASSP = "{IEEE} Trans. Acoust., Speech, Signal Process."} +@STRING{IEEE_J_AU = "{IEEE} Trans. Audio"} +@STRING{IEEE_J_AUEA = "{IEEE} Trans. Audio Electroacoust."} +@STRING{IEEE_J_AC = "{IEEE} Trans. Autom. Control"} +@STRING{IEEE_J_CAS = "{IEEE} Trans. Circuits Syst."} +@STRING{IEEE_J_CASVT = "{IEEE} Trans. Circuits Syst. Video Technol."} +@STRING{IEEE_J_CASI = "{IEEE} Trans. Circuits Syst. {I}"} +@STRING{IEEE_J_CASII = "{IEEE} Trans. Circuits Syst. {II}"} +in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively. +@STRING{IEEE_J_CASI_RP = "{IEEE} Trans. Circuits Syst. {I}"} +@STRING{IEEE_J_CASII_EB = "{IEEE} Trans. Circuits Syst. {II}"} +@STRING{IEEE_J_CT = "{IEEE} Trans. Circuit Theory"} +@STRING{IEEE_J_CST = "{IEEE} Trans. Control Syst. Technol."} +@STRING{IEEE_J_SP = "{IEEE} Trans. Signal Process."} +@STRING{IEEE_J_SU = "{IEEE} Trans. Sonics Ultrason."} +@STRING{IEEE_J_SAP = "{IEEE} Trans. Speech Audio Process."} +@STRING{IEEE_J_STSP = "{IEEE} J. Sel. Topics Signal Process."} +@STRING{IEEE_J_SYST = "{IEEE} Syst. J."} +@STRING{IEEE_J_UE = "{IEEE} Trans. Ultrason. Eng."} +@STRING{IEEE_J_UFFC = "{IEEE} Trans. Ultrason., Ferroelectr., Freq. Control"} + + + +communications +@STRING{IEEE_J_COML = "{IEEE} Commun. Lett."} +@STRING{IEEE_J_JSAC = "{IEEE} J. Sel. Areas Commun."} +@STRING{IEEE_J_COM = "{IEEE} Trans. Commun."} +@STRING{IEEE_J_COMT = "{IEEE} Trans. Commun. Technol."} +@STRING{IEEE_J_WCOM = "{IEEE} Trans. Wireless Commun."} + + + +components, packaging and manufacturing +@STRING{IEEE_J_ADVP = "{IEEE} Trans. Adv. Packag."} +@STRING{IEEE_J_CHMT = "{IEEE} Trans. Compon., Hybrids, Manuf. Technol."} +@STRING{IEEE_J_CPMTA = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {A}"} +@STRING{IEEE_J_CPMTB = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {B}"} +@STRING{IEEE_J_CPMTC = "{IEEE} Trans. Compon., Packag., Manuf. Technol. {C}"} +@STRING{IEEE_J_CAPT = "{IEEE} Trans. Compon. Packag. Technol."} +@STRING{IEEE_J_CAPTS = "{IEEE} Trans. Compon. Packag. Technol."} +@STRING{IEEE_J_CPART = "{IEEE} Trans. Compon. Parts"} +@STRING{IEEE_J_EPM = "{IEEE} Trans. Electron. Packag. Manuf."} +@STRING{IEEE_J_MFT = "{IEEE} Trans. Manuf. Technol."} +@STRING{IEEE_J_PHP = "{IEEE} Trans. Parts, Hybrids, Packag."} +@STRING{IEEE_J_PMP = "{IEEE} Trans. Parts, Mater., Packag."} + + + +CAD +@STRING{IEEE_J_TCAD = "{IEEE} J. Technol. Comput. Aided Design"} +@STRING{IEEE_J_CAD = "{IEEE} Trans. Comput.-Aided Design Integr. Circuits Syst."} + + + +coding, data, information, knowledge +@STRING{IEEE_J_IT = "{IEEE} Trans. Inf. Theory"} +@STRING{IEEE_J_KDE = "{IEEE} Trans. Knowl. Data Eng."} + + + +computers, computation, networking and software +@STRING{IEEE_J_C = "{IEEE} Trans. Comput."} +@STRING{IEEE_J_CAL = "{IEEE} Comput. Archit. Lett."} +@STRING{IEEE_J_DSC = "{IEEE} Trans. Dependable Secure Comput."} +@STRING{IEEE_J_ECOMP = "{IEEE} Trans. Electron. Comput."} +@STRING{IEEE_J_EVC = "{IEEE} Trans. Evol. Comput."} +@STRING{IEEE_J_FUZZ = "{IEEE} Trans. Fuzzy Syst."} +@STRING{IEEE_J_IFS = "{IEEE} Trans. Inf. Forensics Security"} +@STRING{IEEE_J_MC = "{IEEE} Trans. Mobile Comput."} +@STRING{IEEE_J_NET = "{IEEE/ACM} Trans. Netw."} +@STRING{IEEE_J_NN = "{IEEE} Trans. Neural Netw."} +disabled until abbreviation verified +STRING{IEEE_J_NSM = "{IEEE} Trans. Netw. Service Manag."} +@STRING{IEEE_J_PDS = "{IEEE} Trans. Parallel Distrib. Syst."} +disabled until abbreviation verified +STRING{IEEE_J_SC = "{IEEE} Trans. Services Comput."} +@STRING{IEEE_J_SE = "{IEEE} Trans. Softw. Eng."} + + + +computer graphics, imaging, and multimedia +@STRING{IEEE_J_JDT = "{IEEE/OSA} J. Display Technol."} +@STRING{IEEE_J_IP = "{IEEE} Trans. Image Process."} +@STRING{IEEE_J_MM = "{IEEE} Trans. Multimedia"} +@STRING{IEEE_J_VCG = "{IEEE} Trans. Vis. Comput. Graphics"} + + + +cybernetics, ergonomics, robots, man-machine, and automation +@STRING{IEEE_J_ASE = "{IEEE} Trans. Autom. Sci. Eng."} +@STRING{IEEE_J_JRA = "{IEEE} J. Robot. Autom."} +@STRING{IEEE_J_H = "{IEEE} Trans. Haptics"} +@STRING{IEEE_J_HFE = "{IEEE} Trans. Hum. Factors Electron."} +@STRING{IEEE_J_MMS = "{IEEE} Trans. Man-Mach. Syst."} +@STRING{IEEE_J_PAMI = "{IEEE} Trans. Pattern Anal. Mach. Intell."} +in 1989 JRA became RA +in August 2004, RA split into ASE and RO +@STRING{IEEE_J_RA = "{IEEE} Trans. Robot. Autom."} +@STRING{IEEE_J_RO = "{IEEE} Trans. Robot."} +@STRING{IEEE_J_SMC = "{IEEE} Trans. Syst., Man, Cybern."} +@STRING{IEEE_J_SMCA = "{IEEE} Trans. Syst., Man, Cybern. {A}"} +@STRING{IEEE_J_SMCB = "{IEEE} Trans. Syst., Man, Cybern. {B}"} +@STRING{IEEE_J_SMCC = "{IEEE} Trans. Syst., Man, Cybern. {C}"} +@STRING{IEEE_J_SSC = "{IEEE} Trans. Syst. Sci. Cybern."} + + + +earth, wind, fire and water +@STRING{IEEE_J_GE = "{IEEE} Trans. Geosci. Electron."} +@STRING{IEEE_J_GRS = "{IEEE} Trans. Geosci. Remote Sens."} +@STRING{IEEE_J_GRSL = "{IEEE} Geosci. Remote Sens. Lett."} +@STRING{IEEE_J_OE = "{IEEE} J. Ocean. Eng."} +disabled until abbreviation verified +STRING{IEEE_J_STARS = "{IEEE} J. Sel. Topics Appl. Earth Observations Remote Sens."} + + +education, engineering, history, IEEE, professional +@STRING{IEEE_J_CJECE = "Canadian J. Elect. Comput. Eng."} +@STRING{IEEE_J_PROC = "Proc. {IEEE}"} +@STRING{IEEE_J_EDU = "{IEEE} Trans. Educ."} +@STRING{IEEE_J_EM = "{IEEE} Trans. Eng. Manag."} +@STRING{IEEE_J_EWS = "{IEEE} Trans. Eng. Writing Speech"} +disabled until abbreviation verified +STRING{IEEE_J_LT = "{IEEE} Trans. Learning Technol."} +@STRING{IEEE_J_PC = "{IEEE} Trans. Prof. Commun."} + + + +electromagnetics, antennas, EMI, magnetics and microwave +@STRING{IEEE_J_AWPL = "{IEEE} Antennas Wireless Propag. Lett."} +@STRING{IEEE_J_MGWL = "{IEEE} Microw. Guided Wave Lett."} +IEEE seems to want "Compon." here, not "Comp." +@STRING{IEEE_J_MWCL = "{IEEE} Microw. Wireless Compon. Lett."} +@STRING{IEEE_J_AP = "{IEEE} Trans. Antennas Propag."} +@STRING{IEEE_J_EMC = "{IEEE} Trans. Electromagn. Compat."} +@STRING{IEEE_J_MAG = "{IEEE} Trans. Magn."} +@STRING{IEEE_J_MTT = "{IEEE} Trans. Microw. Theory Tech."} +@STRING{IEEE_J_RFI = "{IEEE} Trans. Radio Freq. Interference"} +@STRING{IEEE_J_TJMJ = "{IEEE} Transl. J. Magn. Jpn."} + + + +energy and power +@STRING{IEEE_J_EC = "{IEEE} Trans. Energy Convers."} +@STRING{IEEE_J_PEL = "{IEEE} Power Electron. Lett."} +@STRING{IEEE_J_PWRAS = "{IEEE} Trans. Power App. Syst."} +@STRING{IEEE_J_PWRD = "{IEEE} Trans. Power Del."} +@STRING{IEEE_J_PWRE = "{IEEE} Trans. Power Electron."} +@STRING{IEEE_J_PWRS = "{IEEE} Trans. Power Syst."} + + + +industrial, commercial and consumer +@STRING{IEEE_J_APPIND = "{IEEE} Trans. Appl. Ind."} +@STRING{IEEE_J_BC = "{IEEE} Trans. Broadcast."} +@STRING{IEEE_J_BCTV = "{IEEE} Trans. Broadcast Television Receivers"} +@STRING{IEEE_J_CE = "{IEEE} Trans. Consum. Electron."} +@STRING{IEEE_J_IE = "{IEEE} Trans. Ind. Electron."} +@STRING{IEEE_J_IECI = "{IEEE} Trans. Ind. Electron. Contr. Instrum."} +@STRING{IEEE_J_IA = "{IEEE} Trans. Ind. Appl."} +@STRING{IEEE_J_IGA = "{IEEE} Trans. Ind. Gen. Appl."} +@STRING{IEEE_J_IINF = "{IEEE} Trans. Ind. Informat."} +@STRING{IEEE_J_PSE = "{IEEE} J. Product Safety Eng."} + + + +instrumentation and measurement +@STRING{IEEE_J_IM = "{IEEE} Trans. Instrum. Meas."} + + + +insulation and materials +@STRING{IEEE_J_JEM = "{IEEE/TMS} J. Electron. Mater."} +@STRING{IEEE_J_DEI = "{IEEE} Trans. Dielectr. Electr. Insul."} +@STRING{IEEE_J_EI = "{IEEE} Trans. Electr. Insul."} + + + +mechanical +@STRING{IEEE_J_MECH = "{IEEE/ASME} Trans. Mechatronics"} +@STRING{IEEE_J_MEMS = "J. Microelectromech. Syst."} + + + +medical and biological +@STRING{IEEE_J_BCAS = "{IEEE} Trans. Biomed. Circuits Syst."} +@STRING{IEEE_J_BME = "{IEEE} Trans. Biomed. Eng."} +Note: The B-ME journal later dropped the hyphen and became the BME. +@STRING{IEEE_J_B-ME = "{IEEE} Trans. Bio-Med. Eng."} +@STRING{IEEE_J_BMELC = "{IEEE} Trans. Bio-Med. Electron."} +@STRING{IEEE_J_CBB = "{IEEE/ACM} Trans. Comput. Biol. Bioinformatics"} +@STRING{IEEE_J_ITBM = "{IEEE} Trans. Inf. Technol. Biomed."} +@STRING{IEEE_J_ME = "{IEEE} Trans. Med. Electron."} +@STRING{IEEE_J_MI = "{IEEE} Trans. Med. Imag."} +@STRING{IEEE_J_NB = "{IEEE} Trans. Nanobiosci."} +@STRING{IEEE_J_NSRE = "{IEEE} Trans. Neural Syst. Rehabil. Eng."} +@STRING{IEEE_J_RBME = "{IEEE} Rev. Biomed. Eng."} +@STRING{IEEE_J_RE = "{IEEE} Trans. Rehabil. Eng."} + + + + optics, lightwave and photonics +@STRING{IEEE_J_PTL = "{IEEE} Photon. Technol. Lett."} +@STRING{IEEE_J_JLT = "J. Lightw. Technol."} + + + +physics, electrons, nanotechnology, nuclear and quantum electronics +@STRING{IEEE_J_EDL = "{IEEE} Electron Device Lett."} +@STRING{IEEE_J_JQE = "{IEEE} J. Quantum Electron."} +@STRING{IEEE_J_JSTQE = "{IEEE} J. Sel. Topics Quantum Electron."} +@STRING{IEEE_J_ED = "{IEEE} Trans. Electron Devices"} +@STRING{IEEE_J_NANO = "{IEEE} Trans. Nanotechnol."} +@STRING{IEEE_J_NS = "{IEEE} Trans. Nucl. Sci."} +@STRING{IEEE_J_PS = "{IEEE} Trans. Plasma Sci."} + + + +reliability +IEEE seems to want "Mat." here, not "Mater." +@STRING{IEEE_J_DMR = "{IEEE} Trans. Device Mater. Rel."} +@STRING{IEEE_J_R = "{IEEE} Trans. Rel."} + + + +semiconductors, superconductors, electrochemical and solid state +@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochem. Solid-State Lett."} +@STRING{IEEE_J_JSSC = "{IEEE} J. Solid-State Circuits"} +@STRING{IEEE_J_ASC = "{IEEE} Trans. Appl. Supercond."} +@STRING{IEEE_J_SM = "{IEEE} Trans. Semicond. Manuf."} + + + +sensors +@STRING{IEEE_J_SENSOR = "{IEEE} Sensors J."} + + + +VLSI +@STRING{IEEE_J_VLSI = "{IEEE} Trans. {VLSI} Syst."} + + + + + + +IEEE Magazines + + + +@STRING{IEEE_M_AES = "{IEEE} Aerosp. Electron. Syst. Mag."} +@STRING{IEEE_M_HIST = "{IEEE} Ann. Hist. Comput."} +@STRING{IEEE_M_AP = "{IEEE} Antennas Propag. Mag."} +@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Mag."} +@STRING{IEEE_M_CD = "{IEEE} Circuits Devices Mag."} +@STRING{IEEE_M_CAS = "{IEEE} Circuits Syst. Mag."} +@STRING{IEEE_M_COM = "{IEEE} Commun. Mag."} +@STRING{IEEE_M_COMSOC = "{IEEE} Commun. Soc. Mag."} +@STRING{IEEE_M_CIM = "{IEEE} Comput. Intell. Mag."} +CSEM changed to CSE in 1999 +@STRING{IEEE_M_CSE = "{IEEE} Comput. Sci. Eng."} +@STRING{IEEE_M_CSEM = "{IEEE} Comput. Sci. Eng. Mag."} +@STRING{IEEE_M_C = "{IEEE} Computer"} +@STRING{IEEE_M_CAP = "{IEEE} Comput. Appl. Power"} +@STRING{IEEE_M_CGA = "{IEEE} Comput. Graph. Appl."} +@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} +@STRING{IEEE_M_CS = "{IEEE} Control Syst. Mag."} +@STRING{IEEE_M_DTC = "{IEEE} Des. Test. Comput."} +@STRING{IEEE_M_EI = "{IEEE} Electr. Insul. Mag."} +@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnol. Rev."} +@STRING{IEEE_M_EMB = "{IEEE} Eng. Med. Biol. Mag."} +@STRING{IEEE_M_EMR = "{IEEE} Eng. Manag. Rev."} +@STRING{IEEE_M_EXP = "{IEEE} Expert"} +@STRING{IEEE_M_IA = "{IEEE} Ind. Appl. Mag."} +@STRING{IEEE_M_IE = "{IEEE} Ind. Electron. Mag."} +@STRING{IEEE_M_IM = "{IEEE} Instrum. Meas. Mag."} +@STRING{IEEE_M_IS = "{IEEE} Intell. Syst."} +@STRING{IEEE_M_ITS = "{IEEE} Intell. Transp. Syst. Mag."} +@STRING{IEEE_M_IC = "{IEEE} Internet Comput."} +@STRING{IEEE_M_ITP = "{IEEE} {IT} Prof."} +@STRING{IEEE_M_MICRO = "{IEEE} Micro"} +@STRING{IEEE_M_MW = "{IEEE} Microw. Mag."} +@STRING{IEEE_M_MM = "{IEEE} Multimedia"} +@STRING{IEEE_M_NANO = "{IEEE} Nanotechnol. Mag."} +@STRING{IEEE_M_NET = "{IEEE} Netw."} +IEEE's editorial manual lists "Pers. Commun.", +but "Personal Commun. Mag." seems to be what is used in the journals +@STRING{IEEE_M_PCOM = "{IEEE} Personal Commun. Mag."} +@STRING{IEEE_M_POT = "{IEEE} Potentials"} +CAP and PER merged to form PE in 2003 +@STRING{IEEE_M_PE = "{IEEE} Power Energy Mag."} +@STRING{IEEE_M_PER = "{IEEE} Power Eng. Rev."} +@STRING{IEEE_M_PVC = "{IEEE} Pervasive Comput."} +@STRING{IEEE_M_RA = "{IEEE} Robot. Autom. Mag."} +@STRING{IEEE_M_SAP = "{IEEE} Security Privacy"} +@STRING{IEEE_M_SP = "{IEEE} Signal Process. Mag."} +@STRING{IEEE_M_S = "{IEEE} Softw."} +@STRING{IEEE_M_SPECT = "{IEEE} Spectr."} +@STRING{IEEE_M_TS = "{IEEE} Technol. Soc. Mag."} +@STRING{IEEE_M_VT = "{IEEE} Veh. Technol. Mag."} +@STRING{IEEE_M_WC = "{IEEE} Wireless Commun. Mag."} +@STRING{IEEE_M_TODAY = "Today's Engineer"} + + + + + + +IEEE Online Publications + + + +@STRING{IEEE_O_CSTO = "{IEEE} Commun. Surveys Tuts."} +@STRING{IEEE_O_DSO = "{IEEE} Distrib. Syst. Online"} + + + + + +-- +EOF diff --git a/IEEEtranBST/IEEEexample.bib b/IEEEtranBST/IEEEexample.bib new file mode 100644 index 0000000..fdb5f18 --- /dev/null +++ b/IEEEtranBST/IEEEexample.bib @@ -0,0 +1,1203 @@ + +IEEEexample.bib +V1.13 (2008/09/30) +Copyright (c) 2002-2008 by Michael Shell +See: http://www.michaelshell.org/ +for current contact information. + +This is an example BibTeX database for the official IEEEtran.bst +BibTeX style file. + +Some entries call strings that are defined in the IEEEabrv.bib file. +Therefore, IEEEabrv.bib should be loaded prior to this file. +Usage: + +\bibliographystyle{./IEEEtran} +\bibliography{./IEEEabrv,./IEEEexample} + + +Support sites: +http://www.michaelshell.org/tex/ieeetran/ +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +and/or +http://www.ieee.org/ + +************************************************************************* +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +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: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, + IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, + IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +************************************************************************* + + +Note that, because the example references were taken from actual IEEE +publications, these examples do not always contain the full amount +of information that may be desirable (for use with other BibTeX styles). +In particular, full names (not abbreviated with initials) should be +entered whenever possible as some (non-IEEE) bibliography styles use +full names. IEEEtran.bst will automatically abbreviate when it encounters +full names. + + + + +references for the IEEEtran.bst documentation +IEEEtran homepage +@electronic{IEEEhowto:IEEEtranpage, + author = "Michael Shell", + title = "{IEEE}tran Homepage", + url = "http://www.michaelshell.org/tex/ieeetran/", + year = "2008" +} + + +the distribution site for IEEEtran.bst +@electronic{IEEEexample:shellCTANpage, + author = "Michael Shell", + title = "{IEEE}tran Webpage on {CTAN}", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/", + year = "2008" +} + + +the IEEE website +sort key is needed for sorting styles +@electronic{IEEEexample:IEEEwebsite, + title = "The {IEEE} Website", + url = "http://www.ieee.org/", + year = "2008", + key = "IEEE" +} + + +The BibTeX user's guide. +The filename could have been put in the URL instead. But, there might +be other interesting things for the user in the same directory - and +the filename might change before the directory that contains it. +@electronic{IEEEexample:bibtexuser, + author = "Oren Patashnik", + title = "{{\BibTeX}}ing", + howpublished = "{btxdoc.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = feb, + year = "1988" +} + + +The BibTeX style designer's guide. +@electronic{IEEEexample:bibtexdesign, + author = "Oren Patashnik", + title = "Designing {{\BibTeX}} Styles", + howpublished = "{btxhak.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = feb, + year = "1988" +} + + +A comprehensive BibTeX tutorial. +@electronic{IEEEexample:tamethebeast, + author = "Nicolas Markey", + title = "Tame the BeaST --- The B to X of {{\BibTeX}}", + url = "http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/", + month = oct, + year = "2005" +} + + +The BibTeX Tips and FAQ guide. +@electronic{IEEEexample:bibtexFAQ, + author = "David Hoadley and Michael Shell", + title = "{{\BibTeX}} Tips and {FAQ}", + howpublished = "{btxFAQ.pdf}", + url = "http://www.ctan.org/tex-archive/biblio/bibtex/contrib/doc/", + month = jan, + year = "2007" +} + + +The TeX FAQ +@electronic{IEEEexample:texfaq, + author = "Robin Fairbairns", + title = "The {{\TeX}} {FAQ}", + url = "http://www.tex.ac.uk/cgi-bin/texfaq2html/", + month = jun, + year = "2008" +} + + +A BibTeX Guide via Examples. +@electronic{IEEEexample:bibtexguide, + author = "Ki-Joo Kim", + title = "A {{\BibTeX}} Guide via Examples", + howpublished = "{bibtex\_guide.pdf}", + url = "http://www.geocities.com/kijoo2000/", + month = apr, + year = "2004" +} + + +TeX User Group Bibliography Archive +@electronic{IEEEexample:beebe_archive, + author = "Nelson H. F. Beebe", + title = "{{\TeX}} User Group Bibliography Archive", + url = "http://www.math.utah.edu/pub/tex/bib/index-table.html", + month = jul, + year = "2008" +} + +The natbib.sty package. +@electronic{ctan:natbib, + author = "Patrick W. Daly", + title = "The natbib.sty package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/", + month = oct, + year = "2007" +} + +The url.sty package. +@electronic{IEEEexample:urlsty, + author = "Donald Arseneau", + title = "The url.sty Package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/misc/", + month = apr, + year = "2006", +} + + +The hyperref.sty package. +@electronic{IEEEexample:hyperrefsty, + author = "Sebastian Rahtz and Heiko Oberdiek", + title = "The hyperref.sty Package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/", + month = sep, + year = "2008", +} + + +The breakurl.sty package. +@electronic{IEEEexample:breakurl, + author = "Vilar Camara Neto", + title = "The breakurl.sty Package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/breakurl/", + month = jul, + year = "2008", +} + + +The Babel package. +@electronic{IEEEexample:babel, + author = "Johannes Braams", + title = "The Babel Package", + url = "http://www.ctan.org/tex-archive/macros/latex/required/babel/", + month = jul, + year = "2008", +} + + +The multibib package. +@electronic{IEEEexample:multibibsty, + author = "Thorsten Hansen", + title = "The multibib.sty package", + url = "http://www.ctan.org/tex-archive/macros/latex/contrib/multibib/", + month = jan, + year = "2004" +} + + +The biblatex package. +@electronic{IEEEexample:biblatex, + author = "Philipp Lehman", + title = "The biblatex package", + url = "http://www.ctan.org/tex-archive/macros/latex/exptl/biblatex/", + month = apr, + year = "2008" +} + + + +The three most common and typical types of references used in +IEEE publications: + +an article in a journal +Note the use of the IEEE_J_EDL string, defined in the IEEEabrv.bib file, +for the journal name. IEEEtran.bst defines the BibTeX standard three +letter month codes per IEEE style. +From the June 2002 issue of "IEEE Transactions on Electron Devices", +page 996, reference #16. +@article{IEEEexample:article_typical, + author = "S. Zhang and C. Zhu and J. K. O. Sin and P. K. T. Mok", + title = "A Novel Ultrathin Elevated Channel Low-temperature + Poly-{Si} {TFT}", + journal = IEEE_J_EDL, + volume = "20", + month = nov, + year = "1999", + pages = "569-571" +} + + +journal article using et al. +The (five) authors are actually: F. Delorme, S. Slempkes, G. Alibert, +B. Rose, J. Brandon +The month (July) was not given here. +From the September 1998 issue of "IEEE Journal on Selected Areas in +Communications", page 1257, reference #28. +@article{IEEEexample:articleetal, + author = "F. Delorme and others", + title = "Butt-jointed {DBR} Laser With 15 {nm} Tunability Grown + in Three {MOVPE} Steps", + journal = "Electron. Lett.", + volume = "31", + number = "15", + year = "1995", + pages = "1244-1245" +} + + +a paper in a conference proceedings +"conference" can be used as an alias for "inproceedings" +From the June 2002 issue of "Journal of Microelectromechanical Systems", +page 205, reference #16. +@inproceedings{IEEEexample:conf_typical, + author = "R. K. Gupta and S. D. Senturia", + title = "Pull-in Time Dynamics as a Measure of Absolute Pressure", + booktitle = "Proc. {IEEE} International Workshop on + Microelectromechanical Systems ({MEMS}'97)", + address = "Nagoya, Japan", + month = jan, + year = "1997", + pages = "290-294" +} + + +a book +From the May 2002 issue of "IEEE Transactions on Magnetics", +page 1466, reference #4. +@book{IEEEexample:book_typical, + author = "B. D. Cullity", + title = "Introduction to Magnetic Materials", + publisher = "Addison-Wesley", + address = "Reading, MA", + year = "1972" +} + + + + +Other examples + +journal article with large page numbers, IEEE will divide numbers 5 digits +or longer into groups of three with small spaces between them. Page ranges +can be separated via either "-" or "--", IEEEtran.bst will automatically +convert the separator dash(es) to "--". +Authors and/or IEEE do not always provide/use the journal number, but it +was used in this case. IEEEtran.bst can be configured to ignore journal +numbers if desired. +From the August 2000 issue of "IEEE Photonics Technology Letters", +page 1039, reference #11. +@article{IEEEexample:articlelargepages, + author = "A. Castaldini and A. Cavallini and B. Fraboni + and P. Fernandez and J. Piqueras", + title = "Midgap Traps Related to Compensation Processes in + {CdTe} Alloys", + journal = "Phys. Rev. B.", + volume = "56", + number = "23", + year = "1997", + pages = "14897-14900" +} + + +journal article with dual months +use the BibTeX "#" concatenation operator +From the March 2002 issue of "IEEE Transactions on Mechatronics", +page 21, reference #8. +@article{IEEEexample:articledualmonths, + author = "Y. Okada and K. Dejima and T. Ohishi", + title = "Analysis and Comparison of {PM} Synchronous Motor and + Induction Motor Type Magnetic Bearings", + journal = IEEE_J_IA, + volume = "31", + month = sep # "/" # oct, + year = "1995", + pages = "1047-1053" +} + + +journal article to be published as a misc entry type +date information like month and year is optional +However, the article form like that below may be a better approach. +From the May 2002 issue of "IEEE Journal of Selected Areas in +Communication", page 725, reference #3. +@misc{IEEEexample:TBPmisc, + author = "M. Coates and A. Hero and R. Nowak and B. Yu", + title = "Internet Tomography", + howpublished = IEEE_M_SP, + month = may, + year = "2002", + note = "to be published" +} + + +journal article to be published as an article entry type +year is required, so if absent, use the year field to hold +the "submitted for publication" in order to avoid a warning for +the missing year field. +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1461, reference #21. +@article{IEEEexample:TBParticle, + author = "N. Kahale and R. Urbanke", + title = "On the Minimum Distance of Parallel and Serially + Concatenated Codes", + journal = IEEE_J_IT, + year = "submitted for publication" +} + + + + + +book with editor and no author +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1725, reference #1. +@book{IEEEexample:bookwitheditor, + editor = "J. C. Candy and G. C. Temes", + title = "Oversampling Delta-Sigma Data Converters Theory, + Design and Simulation", + publisher = "{IEEE} Press.", + address = "New York", + year = "1992" +} + + +book with edition, author and editor +Note that the standard BibTeX styles do not support book entries with both +author and editor fields, but IEEEtran.bst does. +The standard BibTeX way of specifying the edition is to use capitalized +ordinal words such as "First", "Second", etc. Most .bst files can convert +up to about "Fifth" into the format needed. IEEEtran.bst can convert up +to "Tenth" to the "Arabic ordinal" form IEEE uses (e.g., "10th"). For +editions over the tenth, it is best to use the "Arabic ordinal" form for +IEEE related work (e.g., "101st") +Note how "Jr." has to be entered. +From the May 2002 issue of "Journal of Lightwave Technology", page 856, +reference #17. +@book{IEEEexample:book, + author = "S. M. Metev and V. P. Veiko", + editor = "Osgood, Jr., R. M.", + title = "Laser Assisted Microtechnology", + edition = "Second", + publisher = "Springer-Verlag", + address = "Berlin, Germany", + year = "1998" +} + + +book with series and volume +From the January 2000 issue of "IEEE Transactions on Communications", +page 11, reference #31. +@book{IEEEexample:bookwithseriesvolume, + editor = "J. Breckling", + title = "The Analysis of Directional Time Series: Applications to + Wind Speed and Direction", + series = "Lecture Notes in Statistics", + publisher = "Springer", + address = "Berlin, Germany", + year = "1989", + volume = "61" +} + + +inbook with chapter number. The pages field could also have been given. +The chapter number could be changed to something else such as a section +number via the type field: type = "sec.". +From the May 2002 issue of "IEEE Transactions on Circuits and Systems---I: +Fundamental Applications and Theory", page 638, reference #22. +@inbook{IEEEexample:inbook, + author = "H. E. Rose", + title = "A Course in Number Theory", + publisher = "Oxford Univ. Press", + address = "New York, NY", + year = "1988", + chapter = "3" +} + + +inbook with pages and note. The language field is not set to Russian +because the title is presented here in its translated, English, form. +From the May 2002 issue of "IEEE Transactions on Magnetics", page 1533, +reference #5. +@inbook{IEEEexample:inbookpagesnote, + author = "B. K. Bul", + title = "Theory Principles and Design of Magnetic Circuits", + publisher = "Energia Press", + address = "Moscow", + year = "1964", + pages = "464", + note = "(in Russian)" +} + + + + + +incollection with author and editor +From the May 2002 issue of "Journal of Lightwave Technology", +page 807, reference #7. +@incollection{IEEEexample:incollection, + author = "W. V. Sorin", + editor = "D. Derickson", + title = "Optical Reflectometry for Component Characterization", + booktitle = "Fiber Optic Test and Measurement", + publisher = "Prentice-Hall", + address = "Englewood Cliffs, NJ", + year = "1998" +} + + +incollection with series +From the April 2000 issue of "IEEE Transactions on Communication", +page 609, reference #3. +@incollection{IEEEexample:incollectionwithseries, + author = "J. B. Anderson and K. Tepe", + title = "Properties of the Tailbiting {BCJR} Decoder", + booktitle = "Codes, Systems and Graphical Models", + series = "{IMA} Volumes in Mathematics and Its Applications", + publisher = "Springer-Verlag", + address = "New York", + year = "2000" + +} + + +incollection with author, editor, chapter and pages +From the January 2000 issue of "IEEE Transactions on Communications", +page 16, reference #9. +@incollection{IEEEexample:incollection_chpp, + author = "P. Hedelin and P. Knagenhjelm and M. Skoglund", + editor = "W. B. Kleijn and K. K. Paliwal", + title = "Theory for Transmission of Vector Quantization Data", + booktitle = "Speech Coding and Synthesis", + publisher = "Elsevier Science", + address = "Amsterdam, The Netherlands", + year = "1995", + chapter = "10", + pages = "347-396" +} + + +incollection with a large number of authors, some authors/journals will +use et al. for so many names. IEEEtran.bst can be configured to do this +if desired, or "R. M. A. Dawson and others" can be used instead. +Note that IEEE may not include the publisher for incollection entries - +IEEEtran.bst will not issue a warning if the publisher is missing for +incollections - but other .bst files often will. +From the June 2002 issue of "IEEE Transactions on Electron Devices", +page 996, reference #12. +@incollection{IEEEexample:incollectionmanyauthors, + author = "R. M. A. Dawson and Z. Shen and D. A. Furst and + S. Connor and J. Hsu and M. G. Kane and R. G. Stewart and + A. Ipri and C. N. King and P. J. Green and R. T. Flegal + and S. Pearson and W. A. Barrow and E. Dickey and K. Ping + and C. W. Tang and S. Van. Slyke and + F. Chen and J. Shi and J. C. Sturm and M. H. Lu", + title = "Design of an Improved Pixel for a Polysilicon + Active-Matrix Organic {LED} Display", + booktitle = "{SID} Tech. Dig.", + volume = "29", + year = "1998", + pages = "11-14" +} + + + + + +A Motorola data book as a manual +It is somewhat unusual to include the data book part number. +in the title. It might be more correct to put this information +in the howpublished field instead. +From the December 2000 issue of "IEEE Transactions on Communications", +page 1986, reference #10. +@manual{IEEEexample:motmanual, + title = "{FLEXChip} Signal Processor ({MC68175/D})", + organization = "Motorola", + year = "1996" +} + + +same reference, but using IEEEtran's howpublished extension +@manual{IEEEexample:motmanualhowpub, + title = "{FLEXChip} Signal Processor", + howpublished = "{MC68175/D}", + organization = "Motorola", + year = "1996" +} + + + + +conference paper with an address and days. Some journals capitalize the +letters in "Globecom", this one did not. +From the May 2002 issue of "IEEE Transactions on Communications", +page 697, reference #12. +@inproceedings{IEEEexample:confwithadddays, + author = "M. S. Yee and L. Hanzo", + title = "Radial Basis Function Decision Feedback Equaliser + Assisted Burst-by-burst Adaptive Modulation", + booktitle = "Proc. {IEEE} Globecom '99", + address = "Rio de Janeiro, Brazil", + month = dec # " 5--9,", + year = "1999", + pages = "2183-2187" +} + + +conference paper with volume number. A conference proceedings with a vol +number is a little uncommon, note that the vol number is placed +before the address in the formatted bibliography entry +From the April 2002 issue of "IEEE/ACM Transactions on Networking", +page 181, reference #26. +@inproceedings{IEEEexample:confwithvolume, + author = "M. Yajnik and S. B. Moon and J. Kurose and D. Towsley", + title = "Measurement and Modeling of the Temporal Dependence in + Packet Loss", + booktitle = "Proc. {IEEE} {INFOCOM}'99", + volume = "1", + address = "New York, NY", + month = mar, + year = "1999", + pages = "345-352" +} + + +conference paper with a paper number, the type field can be used to +override the word "paper", e.g., type = "postdeadline paper". A type +can be given even without a paper field. +Also, IEEEtran.bst can be configured to ignore paper numbers and types. +From the May 2002 issue of "Journal of Lightwave Technology", +page 807, reference #4. +@inproceedings{IEEEexample:confwithpaper, + author = "M. Wegmuller and J. P. von der Weid and P. Oberson + and N. Gisin", + title = "High Resolution Fiber Distributed Measurements With + Coherent {OFDR}", + booktitle = "Proc. {ECOC}'00", + year = "2000", + paper = "11.3.4", + pages = "109" +} + + +conference paper with a postdeadline type paper, the paper field is +optional. +From the August 2000 issue of "IEEE Photonics Technology Letters", +page 1087, reference #12. +@inproceedings{IEEEexample:confwithpapertype, + author = "B. Mikkelsen and G. Raybon and R.-J. Essiambre and + K. Dreyer and Y. Su. and L. E. Nelson and J. E. Johnson + and G. Shtengel and A. Bond and D. G. Moodie and + A. D. Ellis", + title = "160 {Gbit/s} Single-channel Transmission Over 300 km + Nonzero-dispersion Fiber With Semiconductor Based + Transmitter and Demultiplexer", + booktitle = "Proc. {ECOC}'99", + year = "1999", + paper = "2-3", + type = "postdeadline paper", + pages = "28-29" +} + + +presented at a conference +intype overrides the default "in" and causes the booktitle not to be +emphasized (rendered in italics). +From the February 2002 issue of "IEEE/ACM Transactions on Networking", +page 163, reference #6. +@inproceedings{IEEEexample:presentedatconf, + author = "S. G. Finn and M. M{\'e}dard and R. A. Barry", + title = "A Novel Approach to Automatic Protection Switching + Using Trees", + intype = "presented at the", + booktitle = "Proc. Int. Conf. Commun.", + year = "1997" +} + + + + + +master's thesis, often the University name will be abbreviated and the +state or country will be included in the address. The type field can +used to override the default type "Master's thesis" +From the June 2002 issue of "IEEE Transactions on Microelectromechanical +Systems", page 186, reference #11. +@mastersthesis{IEEEexample:masters, + author = "Nin C. Loh", + title = "High-Resolution Micromachined Interferometric + Accelerometer", + school = "Massachusetts Institute of Technology", + address = "Cambridge", + year = "1992" +} + + +master's thesis with a type field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 391, reference #12. +@mastersthesis{IEEEexample:masterstype, + author = "A. Karnik", + title = "Performance of {TCP} Congestion Control with Rate + Feedback: {TCP/ABR} and Rate Adaptive {TCP/IP}", + school = "Indian Institute of Science", + type = "M. Eng. thesis", + address = "Bangalore, India", + month = jan, + year = "1999" +} + + + + + +Ph.D. dissertation with a URL field, the university is abbreviated +From the October 2001 issue of "IEEE/ACM Transactions on Networking", +page 590, reference #11. +@phdthesis{IEEEexample:phdurl, + author = "Q. Li", + title = "Delay Characterization and Performance Control of + Wide-area Networks", + school = "Univ. of Delaware", + address = "Newark", + month = may, + year = "2000", + url = "http://www.ece.udel.edu/~qli" +} + + + + + +technical report +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 490, reference #15. +@techreport{IEEEexample:techrep, + author = "R. Jain and K. K. Ramakrishnan and D. M. Chiu", + title = "Congestion Avoidance in Computer Networks with a + Connectionless Network Layer", + institution = "Digital Equipment Corporation", + address = "MA", + number = "DEC-TR-506", + month = aug, + year = "1987" +} + + +technical report with type +for those times when "Tech. Rep." needs to be modified +From the February 2001 issue of "IEEE/ACM Transactions on Networking", +page 46, reference #8. +@techreport{IEEEexample:techreptype, + author = "J. Padhye and V. Firoiu and D. Towsley", + title = "A Stochastic Model of {TCP} {R}eno Congestion Avoidance + and Control", + institution = "Univ. of Massachusetts", + address = "Amherst, MA", + type = "CMPSCI Tech. Rep.", + number = "99-02", + year = "1999" +} + + +technical report with type +for those times when "Tech. Rep." needs to be modified +This reference did not have an address. +From the January 2000 issue of "IEEE Transactions on Communications", +page 117, reference #6. +@techreport{IEEEexample:techreptypeii, + author = "D. Middleton and A. D. Spaulding", + title = "A Tutorial Review of Elements of Weak Signal Detection + in Non-{G}aussian {EMI} Environments", + institution = "National Telecommunications and Information + Administration ({NTIA}), U.S. Dept. of Commerce", + type = "NTIA Report", + number = "86-194", + month = may, + year = "1986" +} + + +technical report, standards submission report +From the June 2004 issue of "IEEE Journal of Selected Areas in Communications", +page 928, reference #9. +Note that some journals do not abbreviate the task group: "TGe" => "Task Group E" +@techreport{IEEEexample:techrepstdsub, + author = "S. Kandala", + title = "Changes to {A}nnex {D}", + institution = "{IEEE} 802.11 {TGe}", + number = "02/680r0", + month = oct, + year = "2002" +} + + + + +an unpublished work +for unpublished types, the note field is required. IEEE usually +just uses the word "unpublished" for the note. +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 391, reference #16. +@unpublished{IEEEexample:unpublished, + author = "T. J. Ott and N. Aggarwal", + title = "{TCP} over {ATM}: {ABR} or {UBR}", + note = "Unpublished" +} + + + + + +electronic with a howpublished information field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 391, reference #7. +@electronic{IEEEexample:electronhowinfo, + author = "V. Jacobson", + title = "Modified {TCP} Congestion Avoidance Algorithm", + howpublished = "end2end-interest mailing list", + url = "ftp://ftp.isi.edu/end2end/end2end-interest-1990.mail", + month = apr, + year = "1990" +} + + +electronic with a howpublished information field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 418, reference #31. +@electronic{IEEEexample:electronhowinfo2, + author = "V. Valloppillil and K. W. Ross", + title = "Cache Array Routing Protocol v1.1", + howpublished = "Internet draft", + url = "http://ds1.internic.net/internet-drafts/draft-vinod-carp-v1-03.txt", + year = "1998" +} + + +electronic with an organization and address +From the February 2002 issue of "IEEE/ACM Transactions on Networking", +page 114, reference #15. +@electronic{IEEEexample:electronorgadd, + author = "D. H. Lorenz and A. Orda", + title = "Optimal Partition of {QoS} Requirements on Unicast + Paths and Multicast Trees", + organization = "Dept. Elect. Eng., Technion", + address = "Haifa, Israel", + url = "ftp://ftp.technion.ac.il/pub/supported/ee/Network/lor.mopq98.ps", + month = jul, + year = "1998" +} + + + + + +U.S. patent +Use the type field to override the patent type. e.g., +type = "Patent Application" +The address is that of the assignee. Note that IEEE does not +display the assignee, the address, and only displays one date. +(if year is not present, the filed dates are used.) However, this +information should be entered as other BibTeX styles may use it. +alternatively, nationality could be entered as "U.S." +From the April 2000 issue of "IEEE Transactions on Communications", +page 542, reference #6. +@patent{IEEEexample:uspat, + author = "Ronald E. Sorace and Victor S. Reinhardt and + Steven A. Vaughn", + assignee = "Hughes Aircraft Company", + address = "Los Angeles, CA", + title = "High-Speed Digital-to-{RF} Converter", + nationality = "United States", + number = "5668842", + dayfiled = "28", + monthfiled = feb, + yearfiled = "1995", + day = "16", + month = sep, + year = "1997" +} + + +Japanese Patent +From the April 2000 issue of "IEEE Transactions on Communications", +page 556, reference #6. +@patent{IEEEexample:jppat, + author = "U. Hideki", + title = "Quadrature Modulation Circuit", + nationality = "Japanese", + number = "152932/92", + day = "20", + month = may, + year = "1992" +} + + +French Patent request, the language field must be entered in lower case +as this is the option name Babel uses. The nationality field needs to be +capitalized. Because this is a patent request, the date filed fields are +used while the date fields are left empty/missing. In other countries, +the words "Patent Application", etc. are used instead. +From the April 2000 issue of "IEEE Transactions on Communications", +page 556, reference #9. +@patent{IEEEexample:frenchpatreq, + author = "F. Kowalik and M. Isard", + title = "Estimateur d'un D{\'e}faut de Fonctionnement + d'un Modulateur en Quadrature et {\'E}tage de Modulation + l'Utilisant", + language = "french", + nationality = "French", + type = "Patent Request", + number = "9500261", + dayfiled = "11", + monthfiled = jan, + yearfiled = "1995" +} + + + + + +a periodical +From the April 2001 issue of "IEEE/ACM Transactions on Networking", +page 160, reference #1. +sort key is needed for sorting styles +@periodical{IEEEexample:periodical, + title = IEEE_M_PCOM # ", Special Issue on Wireless {ATM}", + volume = "3", + month = aug, + year = "1996", + key = "IEEE" +} + + + + + +standard, IEEE does not use the address for standards, but it is good +to provide one for BibTeX styles that use it. +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 451, reference #2. +@standard{IEEEexample:standard, + title = "Wireless {LAN} Medium Access Control {(MAC)} and + Physical Layer {(PHY)} Specification", + organization = "IEEE", + address = "Piscataway, NJ", + number = "802.11", + year = "1997" +} + + +standard with type and revision, the type overrides the word standard +(or std.). Here a standard number is not available and a revision number +is used. +From the August 2000 issue of "IEEE Photonics Technology Letters", +page 1048, reference #13. +@standard{IEEEexample:standardproposed, + title = "Fiber Channel Physical Interface ({FC-PI})", + institution = "NCITS", + address = "Washington, DC", + type = "Working Draft Proposed Standard", + revision = "5.2", + year = "1999" +} + + +standard draft as a misc with author +From the May 2002 issue of "IEEE Journal of Selected Areas in +Communication", page 725, reference #16. +@misc{IEEEexample:draftasmisc, + author = "I. Widjaja and A. Elwalid", + title = "{MATE}: {MPLS} Adaptive Traffic Engineering", + howpublished = "IETF Draft", + year = "1999" +} + + + + + +misc for a techreport like reference +techreport is not perfectly suitable because this entry lacks +an institution field +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 490, reference #22. +@misc{IEEEexample:miscforum, + author = "L. Roberts", + title = "Enhanced Proportional Rate Control Algorithm {PRCA}", + howpublished = "{ATM} Forum Contribution 94-0735R1", + month = aug, + year = "1994" +} + + +misc for a white paper +From the August 2001 issue of "IEEE/ACM Transactions on Networking", +page 478, reference #4 - Note that the reference there (improperly?) +used the author field for "Cisco". +@misc{IEEEexample:whitepaper, + title = "Advanced {QoS} Services for the Intelligent Internet", + howpublished = "White Paper", + organization = "Cisco", + month = may, + year = "1997" +} + + +misc for a data sheet +From the November 2000 issue of "IEEE Photonics Technology Letters", +page 1551, reference #6. +@misc{IEEEexample:datasheet, + title = "{PDCA12-70} Data Sheet", + organization = "Opto Speed SA", + address = "Mezzovico, Switzerland" +} + + + + + +Other unusual references + +a private communication as a misc entry type +sometimes the designation "personal communication" is used instead +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1725, reference #16. +@misc{IEEEexample:private, + author = "S. Konyagin", + howpublished = "private communication", + year = "1998" +} + + +an internet request for comments (RFC) as a misc entry type +It would also be nice to add a URL to these types of things. +RFCs can also be handled as electronic references. +From the April 2002 issue of "IEEE/ACM Transactions on Networking", +page 181, reference #14. +@misc{IEEEexample:miscrfc, + author = "K. K. Ramakrishnan and S. Floyd", + title = "A Proposal to Add Explicit Congestion + Notification ({ECN}) to {IP}", + howpublished = "RFC 2481", + month = jan, + year = "1999" +} + + +a software package as a manual +From the June 2002 issue of "IEEE/ASME Journal of Microelectromechanical +Systems", page 205, reference #20. +Sometimes they put the version/release information in the title. +@manual{IEEEexample:softmanual, + title = "SaberDesigner Reference Manual", + organization = "Analogy, Inc.", + address = "Beaverton, OR", + year = "1998", + note = "Release 4.3" +} + + +a software package as an electronic reference +From the February 2003 issue of "IEEE/ACM Transactions on Networking", +page 46, reference #24. If there is no author or organization, a sorting +key is required for sorting styles. It might be a good idea to include +month and year fields as well. +@electronic{IEEEexample:softonline, + title = "Ucb/lbnl/vint Network Simulator---ns (Version 2)", + url = "http://www-mash.cs.berkeley.edu/ns/", + key = "ns" +} + + +misc for a German regulation +In German, the first letters of nouns are capitalized, so we do so here. +From the June 2002 issue of "IEEE Journal in Selected Areas in +Communication", page 892, reference #9. +@misc{IEEEexample:miscgermanreg, + title = "{M}essung von {S}t{\"o}rfeldern an {A}nlagen + und {L}eitungen der {T}elekommunikation im + {F}requenzbereich 9 {kHz} bis 3 {GHz}", + language = "german", + howpublished = "{M}e{\ss}vorschrift {R}eg {TP} {MV} 05", + organization = "Regulierungsbeh{\"o}rde f{\"u}r {T}elekommunikation und + {P}ost ({R}eg {TP})" +} + + + +Ways to handle things like CCSDS's Blue Books +journal article with a URL. However, this is not a very good approach +because the Blue Books are not really journals and the author field has +to be abused. +From the June 2002 issue of "IEEE Transactions on Information Theory", +page 1461, reference #7. +@article{IEEEexample:bluebookarticle, + author = "{Consulative Committee for Space Data Systems (CCSDS)}", + title = "Telemetry Channel Coding", + journal = "Blue Book", + number = "4", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + +CCSDS's Blue Book handled as a book +However, it is not a good idea to have to use the author field for +an organization (done here because the book entry type requires an +author field). +@book{IEEEexample:bluebookbook, + author = "{Consulative Committee for Space Data Systems (CCSDS)}", + title = "Telemetry Channel Coding", + series = "Blue Book", + number = "4", + publisher = "{CCSDS}", + address = "Newport Beach, {CA}", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + +CCSDS's Blue Book handled as a manual +This is a much better approach, but uses the howpublished field. +@manual{IEEEexample:bluebookmanual, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (CCSDS)", + address = "Newport Beach, CA", + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + + +CCSDS's Blue Book handled as a standard +Probably the best approach for this particular case because the work +is standard related. Note that IEEE does not display the address for +standards. +@standard{IEEEexample:bluebookstandard, + title = "Telemetry Channel Coding", + howpublished = "ser. Blue Book, No. 4", + organization = "Consulative Committee for Space Data Systems (CCSDS)", + address = "Newport Beach, CA", + type = "Recommendation for Space Data System Standard", + number = "101.0-B-4", + month = May, + year = "1999", + url = "http://www.ccsds.org/documents/pdf/CCSDS-101.0-B-4.pdf" +} + + + + + + + + +An example of a IEEEtran control entry which can change some IEEEtran.bst +settings. An entry like this must be cited via \bstctlcite{} command +before the first real \cite{}. The same entry key cannot be called twice +(just like multiple \cite{} of the same entry key place only one entry +in the bibliography.) +The available control fields are: + +CTLuse_article_number +"no" turns off the display of the number for articles. +"yes" enables + +CTLuse_paper +"no" turns off the display of the paper and type fields in inproceedings. +"yes" enables + +CTLuse_forced_etal +"no" turns off the forced use of "et al." +"yes" enables + +CTLmax_names_forced_etal +The maximum number of names that can be present beyond which an "et al." +usage is forced. Be sure that CTLnames_show_etal (below) +is not greater than this value! + +CTLnames_show_etal +The number of names that will be shown with a forced "et al.". +Must be less than or equal to CTLmax_names_forced_etal + +CTLuse_alt_spacing +"no" turns off the alternate interword spacing for entries with URLs. +"yes" enables + +CTLalt_stretch_factor +If alternate interword spacing for entries with URLs is enabled, this is +the interword spacing stretch factor that will be used. For example, the +default "4" here means that the interword spacing in entries with URLs can +stretch to four times normal. Does not have to be an integer. + +CTLdash_repeated_names +"no" turns off the "dashification" of repeated (i.e., identical to those +of the previous entry) names. IEEE normally does this. +"yes" enables + +CTLname_format_string +The name format control string as explained in the BibTeX style hacking +guide. +IEEE style "{f.~}{vv~}{ll}{, jj}" is the default, + +CTLname_latex_cmd +A LaTeX command that each name will be fed to (e.g., "\textsc"). +Leave empty if no special font is desired for the names. +The default is empty. + +CTLname_url_prefix +The prefix text used before URLs. +The default is "[Online]. Available:" A space will be inserted after this +text. If this space is not wanted, just use \relax at the end of the +prefix text. + + +Those fields that are not to be changed can be left out. +@IEEEtranBSTCTL{IEEEexample:BSTcontrol, + CTLuse_article_number = "yes", + CTLuse_paper = "yes", + CTLuse_forced_etal = "no", + CTLmax_names_forced_etal = "10", + CTLnames_show_etal = "1", + CTLuse_alt_spacing = "yes", + CTLalt_stretch_factor = "4", + CTLdash_repeated_names = "yes", + CTLname_format_string = "{f.~}{vv~}{ll}{, jj}", + CTLname_latex_cmd = "", + CTLname_url_prefix = "[Online]. Available:" +} + + diff --git a/IEEEtranBST/IEEEfull.bib b/IEEEtranBST/IEEEfull.bib new file mode 100644 index 0000000..a051b11 --- /dev/null +++ b/IEEEtranBST/IEEEfull.bib @@ -0,0 +1,431 @@ + +IEEEfull.bib +V1.13 (2008/09/30) +Copyright (c) 2002-2008 by Michael Shell +See: http://www.michaelshell.org/ +for current contact information. + +BibTeX bibliography string definitions of the FULL titles of +IEEE journals and magazines and online publications. + +This file is designed for bibliography styles that require +full-length titles and is not for use in bibliographies that +abbreviate titles. + +Support sites: +http://www.michaelshell.org/tex/ieeetran/ +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +and/or +http://www.ieee.org/ + +Special thanks to Laura Hyslop and ken Rawson of IEEE for their help +in obtaining the information needed to compile this file. Also, +Volker Kuhlmann and Moritz Borgmann kindly provided some corrections +and additions. + +************************************************************************* +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +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: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, + IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, + IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +************************************************************************* + + +USAGE: + +\bibliographystyle{mybstfile} +\bibliography{IEEEfull,mybibfile} + +where the IEEE titles in the .bib database entries use the strings +defined here. e.g., + + + journal = IEEE_J_AC, + + +to yield "{IEEE} Transactions on Automatic Control" + + +WARNING: IEEE uses abbreviated journal titles in their bibliographies! +Because this file provides the full titles, you should NOT use this file +for work that is to be submitted to the IEEE. + +For IEEE work, you should use the abbreviated titles provided in the +companion file, IEEEabrv.bib. + + +** NOTES ** + + 1. Journals have been grouped according to subject in order to make it + easier to locate and extract the definitions for related journals - + as most works use references that are confined to a single topic. + Magazines are listed in straight alphabetical order. + + 2. String names are closely based on IEEE's own internal acronyms. + + 3. Older, out-of-print IEEE titles are included (but not including titles + dating prior to IEEE's formation from the IRE and AIEE in 1963). + + + + + + +IEEE Journals + + + +aerospace and military +@STRING{IEEE_J_AES = "{IEEE} Transactions on Aerospace and Electronic Systems"} +@STRING{IEEE_J_ANE = "{IEEE} Transactions on Aerospace and Navigational Electronics"} +@STRING{IEEE_J_ANNE = "{IEEE} Transactions on Aeronautical and Navigational Electronics"} +@STRING{IEEE_J_AS = "{IEEE} Transactions on Aerospace"} +@STRING{IEEE_J_AIRE = "{IEEE} Transactions on Airborne Electronics"} +@STRING{IEEE_J_MIL = "{IEEE} Transactions on Military Electronics"} + + + +autos, transportation and vehicles (non-aerospace) +@STRING{IEEE_J_ITS = "{IEEE} Transactions on Intelligent Transportation Systems"} +@STRING{IEEE_J_VT = "{IEEE} Transactions on Vehicular Technology"} +@STRING{IEEE_J_VC = "{IEEE} Transactions on Vehicular Communications"} + + + +circuits, signals, systems, audio and controls +@STRING{IEEE_J_SPL = "{IEEE} Signal Processing Letters"} +@STRING{IEEE_J_ASSP = "{IEEE} Transactions on Acoustics, Speech, and Signal Processing"} +@STRING{IEEE_J_AU = "{IEEE} Transactions on Audio"} +@STRING{IEEE_J_AUEA = "{IEEE} Transactions on Audio and Electroacoustics"} +@STRING{IEEE_J_AC = "{IEEE} Transactions on Automatic Control"} +@STRING{IEEE_J_CAS = "{IEEE} Transactions on Circuits and Systems"} +@STRING{IEEE_J_CASVT = "{IEEE} Transactions on Circuits and Systems for Video Technology"} +@STRING{IEEE_J_CASI = "{IEEE} Transactions on Circuits and Systems---Part {I}: Fundamental Theory and Applications"} +@STRING{IEEE_J_CASII = "{IEEE} Transactions on Circuits and Systems---Part {II}: Analog and Digital Signal Processing"} +in 2004 CASI and CASII renamed part title to CASI_RP and CASII_EB, respectively. +@STRING{IEEE_J_CASI_RP = "{IEEE} Transactions on Circuits and Systems---Part {I}: Regular Papers"} +@STRING{IEEE_J_CASII_EB = "{IEEE} Transactions on Circuits and Systems---Part {II}: Express Briefs"} +@STRING{IEEE_J_CT = "{IEEE} Transactions on Circuit Theory"} +@STRING{IEEE_J_CST = "{IEEE} Transactions on Control Systems Technology"} +@STRING{IEEE_J_SP = "{IEEE} Transactions on Signal Processing"} +@STRING{IEEE_J_SU = "{IEEE} Transactions on Sonics and Ultrasonics"} +@STRING{IEEE_J_SAP = "{IEEE} Transactions on Speech and Audio Processing"} +@STRING{IEEE_J_STSP = "{IEEE} Journal of Selected Topics in Signal Processing"} +@STRING{IEEE_J_SYST = "{IEEE} Systems Journal"} +@STRING{IEEE_J_UE = "{IEEE} Transactions on Ultrasonics Engineering"} +@STRING{IEEE_J_UFFC = "{IEEE} Transactions on Ultrasonics, Ferroelectrics, and Frequency Control"} + + + +communications +@STRING{IEEE_J_COML = "{IEEE} Communications Letters"} +@STRING{IEEE_J_JSAC = "{IEEE} Journal on Selected Areas in Communications"} +@STRING{IEEE_J_COM = "{IEEE} Transactions on Communications"} +@STRING{IEEE_J_COMT = "{IEEE} Transactions on Communication Technology"} +@STRING{IEEE_J_WCOM = "{IEEE} Transactions on Wireless Communications"} + + + +components, packaging and manufacturing +@STRING{IEEE_J_ADVP = "{IEEE} Transactions on Advanced Packaging"} +@STRING{IEEE_J_CHMT = "{IEEE} Transactions on Components, Hybrids and Manufacturing Technology"} +@STRING{IEEE_J_CPMTA = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {A}"} +@STRING{IEEE_J_CPMTB = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {B}: Advanced Packaging"} +@STRING{IEEE_J_CPMTC = "{IEEE} Transactions on Components, Packaging and Manufacturing Technology---Part {C}: Manufacturing"} +@STRING{IEEE_J_CAPT = "{IEEE} Transactions on Components and Packaging Technology"} +@STRING{IEEE_J_CAPTS = "{IEEE} Transactions on Components and Packaging Technologies"} +@STRING{IEEE_J_CPART = "{IEEE} Transactions on Component Parts"} +@STRING{IEEE_J_EPM = "{IEEE} Transactions on Electronics Packaging Manufacturing"} +@STRING{IEEE_J_MFT = "{IEEE} Transactions on Manufacturing Technology"} +@STRING{IEEE_J_PHP = "{IEEE} Transactions on Parts, Hybrids and Packaging"} +@STRING{IEEE_J_PMP = "{IEEE} Transactions on Parts, Materials and Packaging"} + + + +CAD +@STRING{IEEE_J_TCAD = "{IEEE} Journal on Technology in Computer Aided Design"} +@STRING{IEEE_J_CAD = "{IEEE} Transactions on Computer-Aided Design of Integrated Circuits and Systems"} + + + +coding, data, information, knowledge +@STRING{IEEE_J_IT = "{IEEE} Transactions on Information Theory"} +@STRING{IEEE_J_KDE = "{IEEE} Transactions on Knowledge and Data Engineering"} + + + +computers, computation, networking and software +@STRING{IEEE_J_C = "{IEEE} Transactions on Computers"} +@STRING{IEEE_J_CAL = "{IEEE} Computer Architecture Letters"} +@STRING{IEEE_J_DSC = "{IEEE} Transactions on Dependable and Secure Computing"} +@STRING{IEEE_J_ECOMP = "{IEEE} Transactions on Electronic Computers"} +@STRING{IEEE_J_EVC = "{IEEE} Transactions on Evolutionary Computation"} +@STRING{IEEE_J_FUZZ = "{IEEE} Transactions on Fuzzy Systems"} +@STRING{IEEE_J_IFS = "{IEEE} Transactions on Information Forensics and Security"} +@STRING{IEEE_J_MC = "{IEEE} Transactions on Mobile Computing"} +@STRING{IEEE_J_NET = "{IEEE/ACM} Transactions on Networking"} +@STRING{IEEE_J_NN = "{IEEE} Transactions on Neural Networks"} +@STRING{IEEE_J_NSM = "{IEEE} Transactions on Network and Service Management"} +@STRING{IEEE_J_PDS = "{IEEE} Transactions on Parallel and Distributed Systems"} +@STRING{IEEE_J_SC = "{IEEE} Transactions on Services Computing"} +@STRING{IEEE_J_SE = "{IEEE} Transactions on Software Engineering"} + + + +computer graphics, imaging, and multimedia +@STRING{IEEE_J_JDT = "{IEEE/OSA} Journal of Display Technology"} +@STRING{IEEE_J_IP = "{IEEE} Transactions on Image Processing"} +@STRING{IEEE_J_MM = "{IEEE} Transactions on Multimedia"} +@STRING{IEEE_J_VCG = "{IEEE} Transactions on Visualization and Computer Graphics"} + + + +cybernetics, ergonomics, robots, man-machine, and automation +@STRING{IEEE_J_ASE = "{IEEE} Transactions on Automation Science and Engineering"} +@STRING{IEEE_J_JRA = "{IEEE} Journal of Robotics and Automation"} +@STRING{IEEE_J_H = "{IEEE} Transactions on Haptics"} +@STRING{IEEE_J_HFE = "{IEEE} Transactions on Human Factors in Electronics"} +@STRING{IEEE_J_MMS = "{IEEE} Transactions on Man-Machine Systems"} +@STRING{IEEE_J_PAMI = "{IEEE} Transactions on Pattern Analysis and Machine Intelligence"} +in 1989 JRA became RA +in August 2004, RA split into ASE and RO +@STRING{IEEE_J_RA = "{IEEE} Transactions on Robotics and Automation"} +@STRING{IEEE_J_RO = "{IEEE} Transactions on Robotics"} +@STRING{IEEE_J_SMC = "{IEEE} Transactions on Systems, Man, and Cybernetics"} +@STRING{IEEE_J_SMCA = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {A}: Systems and Humans"} +@STRING{IEEE_J_SMCB = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {B}: Cybernetics"} +@STRING{IEEE_J_SMCC = "{IEEE} Transactions on Systems, Man, and Cybernetics---Part {C}: Applications and Reviews"} +@STRING{IEEE_J_SSC = "{IEEE} Transactions on Systems Science and Cybernetics"} + + + +earth, wind, fire and water +@STRING{IEEE_J_GE = "{IEEE} Transactions on Geoscience Electronics"} +@STRING{IEEE_J_GRS = "{IEEE} Transactions on Geoscience and Remote Sensing"} +@STRING{IEEE_J_GRSL = "{IEEE} Geoscience and Remote Sensing Letters"} +@STRING{IEEE_J_OE = "{IEEE} Journal of Oceanic Engineering"} +@STRING{IEEE_J_STARS = "{IEEE} Journal of Selected Topics in Applied Earth Observations and Remote Sensing"} + + + +education, engineering, history, IEEE, professional +@STRING{IEEE_J_CJECE = "Canadian Journal of Electrical and Computer Engineering"} +@STRING{IEEE_J_PROC = "Proceedings of the {IEEE}"} +@STRING{IEEE_J_EDU = "{IEEE} Transactions on Education"} +@STRING{IEEE_J_EM = "{IEEE} Transactions on Engineering Management"} +@STRING{IEEE_J_EWS = "{IEEE} Transactions on Engineering Writing and Speech"} +@STRING{IEEE_J_LT = "{IEEE} Transactions on Learning Technologies"} +@STRING{IEEE_J_PC = "{IEEE} Transactions on Professional Communication"} + + + +electromagnetics, antennas, EMI, magnetics and microwave +@STRING{IEEE_J_AWPL = "{IEEE} Antennas and Wireless Propagation Letters"} +@STRING{IEEE_J_MGWL = "{IEEE} Microwave and Guided Wave Letters"} +@STRING{IEEE_J_MWCL = "{IEEE} Microwave and Wireless Components Letters"} +@STRING{IEEE_J_AP = "{IEEE} Transactions on Antennas and Propagation"} +@STRING{IEEE_J_EMC = "{IEEE} Transactions on Electromagnetic Compatibility"} +@STRING{IEEE_J_MAG = "{IEEE} Transactions on Magnetics"} +@STRING{IEEE_J_MTT = "{IEEE} Transactions on Microwave Theory and Techniques"} +@STRING{IEEE_J_RFI = "{IEEE} Transactions on Radio Frequency Interference"} +@STRING{IEEE_J_TJMJ = "{IEEE} Translation Journal on Magnetics in Japan"} + + + +energy and power +@STRING{IEEE_J_EC = "{IEEE} Transactions on Energy Conversion"} +@STRING{IEEE_J_PEL = "{IEEE} Power Electronics Letters"} +@STRING{IEEE_J_PWRAS = "{IEEE} Transactions on Power Apparatus and Systems"} +@STRING{IEEE_J_PWRD = "{IEEE} Transactions on Power Delivery"} +@STRING{IEEE_J_PWRE = "{IEEE} Transactions on Power Electronics"} +@STRING{IEEE_J_PWRS = "{IEEE} Transactions on Power Systems"} + + + +industrial, commercial and consumer +@STRING{IEEE_J_APPIND = "{IEEE} Transactions on Applications and Industry"} +@STRING{IEEE_J_BC = "{IEEE} Transactions on Broadcasting"} +@STRING{IEEE_J_BCTV = "{IEEE} Transactions on Broadcast and Television Receivers"} +@STRING{IEEE_J_CE = "{IEEE} Transactions on Consumer Electronics"} +@STRING{IEEE_J_IE = "{IEEE} Transactions on Industrial Electronics"} +@STRING{IEEE_J_IECI = "{IEEE} Transactions on Industrial Electronics and Control Instrumentation"} +@STRING{IEEE_J_IA = "{IEEE} Transactions on Industry Applications"} +@STRING{IEEE_J_IGA = "{IEEE} Transactions on Industry and General Applications"} +@STRING{IEEE_J_IINF = "{IEEE} Transactions on Industrial Informatics"} +@STRING{IEEE_J_PSE = "{IEEE} Journal of Product Safety Engineering"} + + + +instrumentation and measurement +@STRING{IEEE_J_IM = "{IEEE} Transactions on Instrumentation and Measurement"} + + + +insulation and materials +@STRING{IEEE_J_JEM = "{IEEE/TMS} Journal of Electronic Materials"} +@STRING{IEEE_J_DEI = "{IEEE} Transactions on Dielectrics and Electrical Insulation"} +@STRING{IEEE_J_EI = "{IEEE} Transactions on Electrical Insulation"} + + + +mechanical +@STRING{IEEE_J_MECH = "{IEEE/ASME} Transactions on Mechatronics"} +@STRING{IEEE_J_MEMS = "{IEEE/ASME} Journal of Microelectromechanical Systems"} + + + +medical and biological +@STRING{IEEE_J_BCAS = "{IEEE} Transactions on Biomedical Circuits and Systems"} +@STRING{IEEE_J_BME = "{IEEE} Transactions on Biomedical Engineering"} +Note: The B-ME journal later dropped the hyphen and became the BME. +@STRING{IEEE_J_B-ME = "{IEEE} Transactions on Bio-Medical Engineering"} +@STRING{IEEE_J_BMELC = "{IEEE} Transactions on Bio-Medical Electronics"} +@STRING{IEEE_J_CBB = "{IEEE/ACM} Transactions on Computational Biology and Bioinformatics"} +@STRING{IEEE_J_ITBM = "{IEEE} Transactions on Information Technology in Biomedicine"} +@STRING{IEEE_J_ME = "{IEEE} Transactions on Medical Electronics"} +@STRING{IEEE_J_MI = "{IEEE} Transactions on Medical Imaging"} +@STRING{IEEE_J_NB = "{IEEE} Transactions on NanoBioscience"} +@STRING{IEEE_J_NSRE = "{IEEE} Transactions on Neural Systems and Rehabilitation Engineering"} +@STRING{IEEE_J_RBME = "{IEEE} Reviews in Biomedical Engineering"} +@STRING{IEEE_J_RE = "{IEEE} Transactions on Rehabilitation Engineering"} + + + +optics, lightwave and photonics +@STRING{IEEE_J_PTL = "{IEEE} Photonics Technology Letters"} +@STRING{IEEE_J_JLT = "{IEEE/OSA} Journal of Lightwave Technology"} + + + +physics, electrons, nanotechnology, nuclear and quantum electronics +@STRING{IEEE_J_EDL = "{IEEE} Electron Device Letters"} +@STRING{IEEE_J_JQE = "{IEEE} Journal of Quantum Electronics"} +@STRING{IEEE_J_JSTQE = "{IEEE} Journal of Selected Topics in Quantum Electronics"} +@STRING{IEEE_J_ED = "{IEEE} Transactions on Electron Devices"} +@STRING{IEEE_J_NANO = "{IEEE} Transactions on Nanotechnology"} +@STRING{IEEE_J_NS = "{IEEE} Transactions on Nuclear Science"} +@STRING{IEEE_J_PS = "{IEEE} Transactions on Plasma Science"} + + + +reliability +@STRING{IEEE_J_DMR = "{IEEE} Transactions on Device and Materials Reliability"} +@STRING{IEEE_J_R = "{IEEE} Transactions on Reliability"} + + + +semiconductors, superconductors, electrochemical and solid state +@STRING{IEEE_J_ESSL = "{IEEE/ECS} Electrochemical and Solid-State Letters"} +@STRING{IEEE_J_JSSC = "{IEEE} Journal of Solid-State Circuits"} +@STRING{IEEE_J_ASC = "{IEEE} Transactions on Applied Superconductivity"} +@STRING{IEEE_J_SM = "{IEEE} Transactions on Semiconductor Manufacturing"} + + + +sensors +@STRING{IEEE_J_SENSOR = "{IEEE} Sensors Journal"} + + + +VLSI +@STRING{IEEE_J_VLSI = "{IEEE} Transactions on Very Large Scale Integration ({VLSI}) Systems"} + + + + + + +IEEE Magazines + + + +@STRING{IEEE_M_AES = "{IEEE} Aerospace and Electronics Systems Magazine"} +@STRING{IEEE_M_HIST = "{IEEE} Annals of the History of Computing"} +@STRING{IEEE_M_AP = "{IEEE} Antennas and Propagation Magazine"} +@STRING{IEEE_M_ASSP = "{IEEE} {ASSP} Magazine"} +@STRING{IEEE_M_CD = "{IEEE} Circuits and Devices Magazine"} +@STRING{IEEE_M_CAS = "{IEEE} Circuits and Systems Magazine"} +@STRING{IEEE_M_COM = "{IEEE} Communications Magazine"} +@STRING{IEEE_M_COMSOC = "{IEEE} Communications Society Magazine"} +@STRING{IEEE_M_CIM = "{IEEE} Computational Intelligence Magazine"} +CSEM changed to CSE in 1999 +@STRING{IEEE_M_CSE = "{IEEE} Computing in Science and Engineering"} +@STRING{IEEE_M_CSEM = "{IEEE} Computational Science and Engineering Magazine"} +@STRING{IEEE_M_C = "{IEEE} Computer"} +@STRING{IEEE_M_CAP = "{IEEE} Computer Applications in Power"} +@STRING{IEEE_M_CGA = "{IEEE} Computer Graphics and Applications"} +@STRING{IEEE_M_CONC = "{IEEE} Concurrency"} +@STRING{IEEE_M_CS = "{IEEE} Control Systems Magazine"} +@STRING{IEEE_M_DTC = "{IEEE} Design and Test of Computers"} +@STRING{IEEE_M_EI = "{IEEE} Electrical Insulation Magazine"} +@STRING{IEEE_M_ETR = "{IEEE} ElectroTechnology Review"} +@STRING{IEEE_M_EMB = "{IEEE} Engineering in Medicine and Biology Magazine"} +@STRING{IEEE_M_EMR = "{IEEE} Engineering Management Review"} +@STRING{IEEE_M_EXP = "{IEEE} Expert"} +@STRING{IEEE_M_IA = "{IEEE} Industry Applications Magazine"} +@STRING{IEEE_M_IE = "{IEEE} Industrial Electronics Magazine"} +@STRING{IEEE_M_IM = "{IEEE} Instrumentation and Measurement Magazine"} +@STRING{IEEE_M_IS = "{IEEE} Intelligent Systems"} +@STRING{IEEE_M_ITS = "{IEEE} Intelligent Transportation Systems Magazine"} +@STRING{IEEE_M_IC = "{IEEE} Internet Computing"} +@STRING{IEEE_M_ITP = "{IEEE} {IT} Professional"} +@STRING{IEEE_M_MICRO = "{IEEE} Micro"} +@STRING{IEEE_M_MW = "{IEEE} Microwave Magazine"} +@STRING{IEEE_M_MM = "{IEEE} Multimedia"} +@STRING{IEEE_M_NANO = "{IEEE} Nanotechnology Magazine"} +@STRING{IEEE_M_NET = "{IEEE} Network"} +@STRING{IEEE_M_PCOM = "{IEEE} Personal Communications Magazine"} +@STRING{IEEE_M_POT = "{IEEE} Potentials"} +CAP and PER merged to form PE in 2003 +@STRING{IEEE_M_PE = "{IEEE} Power and Energy Magazine"} +@STRING{IEEE_M_PER = "{IEEE} Power Engineering Review"} +@STRING{IEEE_M_PVC = "{IEEE} Pervasive Computing"} +@STRING{IEEE_M_RA = "{IEEE} Robotics and Automation Magazine"} +@STRING{IEEE_M_SAP = "{IEEE} Security and Privacy"} +@STRING{IEEE_M_SP = "{IEEE} Signal Processing Magazine"} +@STRING{IEEE_M_S = "{IEEE} Software"} +@STRING{IEEE_M_SPECT = "{IEEE} Spectrum"} +@STRING{IEEE_M_TS = "{IEEE} Technology and Society Magazine"} +@STRING{IEEE_M_VT = "{IEEE} Vehicular Technology Magazine"} +@STRING{IEEE_M_WC = "{IEEE} Wireless Communications Magazine"} +@STRING{IEEE_M_TODAY = "Today's Engineer"} + + + + + + +IEEE Online Publications + + + +@STRING{IEEE_O_CSTO = "{IEEE} Communications Surveys and Tutorials"} +@STRING{IEEE_O_DSO = "{IEEE} Distributed Systems Online"} + + + + + +-- +EOF diff --git a/IEEEtranBST/IEEEtran.bst b/IEEEtranBST/IEEEtran.bst new file mode 100644 index 0000000..90acb4c --- /dev/null +++ b/IEEEtranBST/IEEEtran.bst @@ -0,0 +1,2425 @@ +%% +%% IEEEtran.bst +%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted) +%% Version 1.13 (2008/09/30) +%% +%% Copyright (c) 2003-2008 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a numerical citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% 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: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.00 (2002/08/13) Initial release +% +% 1.10 (2002/09/27) +% 1. Corrected minor bug for improperly formed warning message when a +% book was not given a title. Thanks to Ming Kin Lai for reporting this. +% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields +% in the BST control entry type. +% +% 1.11 (2003/04/02) +% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks +% to Ming Kin Lai for reporting this. +% +% 1.12 (2007/01/11) +% 1. Fixed bug with unwanted comma before "et al." when an entry contained +% more than two author names. Thanks to Pallav Gupta for reporting this. +% 2. Fixed bug with anomalous closing quote in tech reports that have a +% type, but without a number or address. Thanks to Mehrdad Mirreza for +% reporting this. +% 3. Use braces in \providecommand in begin.bib to better support +% latex2html. TeX style length assignments OK with recent versions +% of latex2html - 1.71 (2002/2/1) or later is strongly recommended. +% Use of the language field still causes trouble with latex2html. +% Thanks to Federico Beffa for reporting this. +% 4. Added IEEEtran.bst ID and version comment string to .bbl output. +% 5. Provide a \BIBdecl hook that allows the user to execute commands +% just prior to the first entry. +% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to +% better work with a wider variety of bibliography styles. +% 7. Changed month abbreviations from Sept., July and June to Sep., Jul., +% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann +% for reporting this. +% 8. Control entry types should not be considered when calculating longest +% label width. +% 9. Added alias www for electronic/online. +% 10. Added CTLname_url_prefix control entry type. +% +% 1.13 (2008/09/30) +% 1. Fixed bug with edition number to ordinal conversion. Thanks to +% Michael Roland for reporting this and correcting the algorithm. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.13" } +FUNCTION{bst.file.date} { "2008/09/30" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtran.bst version" " " * bst.file.version * + " (" * bst.file.date * ") " * "by Michael Shell." * + top$ + "-- " bst.file.website * + top$ + "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." * + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"Jun."} +MACRO {jul} {"Jul."} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {start.entry} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + { skip$ } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal emphasize * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff --git a/IEEEtranBST/IEEEtran_bst_HOWTO.pdf b/IEEEtranBST/IEEEtran_bst_HOWTO.pdf new file mode 100644 index 0000000000000000000000000000000000000000..858b2a2220082c021dfebd4edd66bb0a483d5007 GIT binary patch literal 306875 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

|6anELd*58Q> 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

U0}N@4%0;M&;g9ZuOY!Y zBGC(|PmQ=Q z5o1UgNxVdY1wtYRFldr7kRXbZ(8IoVvUOZAaU{9|aIh3}XJk zUJ?}Cx6%W9NhGmO!TuNfHY4G>1dAL^>`%eA0{dFxmUbAhgCo*2s8NvAPXR{aU%=TD zNlpWt1_<&*JOhmQ{1<9RY<~a)f%

aE|ZfYUfQOE6XLJ?-Xo@J$RPT18=p0-@q8q zpVw))+k1ddKmzP16)rPbWdsHWS44m}ML=Z}p(drGicywSQ$wSbkZ7Pjm^|12+{A)Q aUY^DWdZ8A3<_$Olo{EN_UsYF)=Klcgg(gt| literal 0 HcmV?d00001 diff --git a/IEEEtranBST/README b/IEEEtranBST/README new file mode 100644 index 0000000..0b9fe32 --- /dev/null +++ b/IEEEtranBST/README @@ -0,0 +1,110 @@ + +September 30, 2008 + + +IEEEtran.bst is the official BibTeX style for authors of the Institute of +Electrical and Electronics Engineers (IEEE) Transactions journals and +conferences. + +It also may have applications for other academic work such as theses and +technical reports. The alphanumeric and natbib variants extend the +applicability of the IEEEtran bibstyle family to the natural sciences +and beyond. + +The IEEEtran bibstyle is a very comprehensive BibTeX style which provides +many features beyond the standard BibTeX styles, including full support +for references of online documents, patents, periodicals and standards. +See the provided user manual for detailed usage information. + +The latest version of the IEEEtran BibTeX style can be found at CTAN: + +http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/bibtex/ + +as well as within IEEE's site: + +http://www.ieee.org/ + +Note that the packages at IEEE's site do not contain the natbib and +alphanumeric variants (e.g., IEEEtranN.bst, etc.) as these are not used +for IEEE related work. These files can be obtained on CTAN. + +For helpful tips, answers to frequently asked questions, and other support, +visit the IEEEtran home page at my website: + +http://www.michaelshell.org/tex/ieeetran/ + + +Enjoy! + +Michael Shell +http://www.michaelshell.org/ + +******* +Version 1.13 (2008/09/30) changes: + + 1. Fixed bug with edition number to ordinal conversion. Thanks to + Michael Roland for reporting this issue and correcting the algorithm. + + 2. Added new IEEE journal string definitions. + + +********************************** Files ********************************** + +README - This file. + +IEEEtran_bst_HOWTO.pdf - The user manual. + +IEEEtran.bst - The standard IEEEtran BibTeX style file. For use + with IEEE work. + +IEEEtranS.bst - A version of IEEEtran.bst that sorts the entries. + Some IEEE conferences/publications may use/allow + sorted bibliographies. + +IEEEtranSA.bst - Like IEEEtranS.bst, but with alphanumeric citation + tags like alpha.bst. Not for normal IEEE use. + +IEEEtranN.bst - Like IEEEtran.bst, but based on plainnat.bst and + is compatible with Patrick W. Daly's natbib + package. Not for normal IEEE use. + +IEEEtranSN.bst - Sorting version of IEEEtranN.bst. Not for normal + IEEE use + +IEEEexample.bib - An example BibTeX database that contains the + references shown in the user manual. + +IEEEabrv.bib - String definitions for the abbreviated names of + IEEE journals. (For use with IEEE work.) + +IEEEfull.bib - String definitions for the full names of IEEE + journals. (Do not use for IEEE work.) + +*************************************************************************** +Legal Notice: +This code is offered as-is without any warranty either expressed or +implied; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE! +User assumes all risk. +In no event shall IEEE or any contributor to this code be liable for +any damages or losses, including, but not limited to, incidental, +consequential, or any other damages, resulting from the use or misuse +of any information contained here. + +All comments are the opinions of their respective authors and are not +necessarily endorsed by the IEEE. + +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_bst_HOWTO.pdf, IEEEtran.bst, IEEEtranS.bst, + IEEEtranSA.bst, IEEEtranN.bst, IEEEtranSN.bst, + IEEEexample.bib, IEEEabrv.bib, IEEEfull.bib + +*************************************************************************** -- 2.39.5

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�Tvtw11OuqOh}}^l+d^*OqhDL*>CcY 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