首页 > 代码库 > Draft-TCAD
Draft-TCAD
IEEEtran.cls
1 %% 2 %% IEEEtran.cls 2007/03/05 version V1.7a 3 %% 4 %% 5 %% This is the official IEEE LaTeX class for authors of the Institute of 6 %% Electrical and Electronics Engineers (IEEE) Transactions journals and 7 %% conferences. 8 %% 9 %% Support sites: 10 %% http://www.michaelshell.org/tex/ieeetran/ 11 %% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ 12 %% and 13 %% http://www.ieee.org/ 14 %% 15 %% Based on the original 1993 IEEEtran.cls, but with many bug fixes 16 %% and enhancements (from both JVH and MDS) over the 1996/7 version. 17 %% 18 %% 19 %% Contributors: 20 %% Gerry Murray (1993), Silvano Balemi (1993), 21 %% Jon Dixon (1996), Peter N"uchter (1996), 22 %% Juergen von Hagen (2000), and Michael Shell (2001-2007) 23 %% 24 %% 25 %% Copyright (c) 1993-2000 by Gerry Murray, Silvano Balemi, 26 %% Jon Dixon, Peter N"uchter, 27 %% Juergen von Hagen 28 %% and 29 %% Copyright (c) 2001-2007 by Michael Shell 30 %% 31 %% Current maintainer (V1.3 to V1.7): Michael Shell 32 %% See: 33 %% http://www.michaelshell.org/ 34 %% for current contact information. 35 %% 36 %% Special thanks to Peter Wilson (CUA) and Donald Arseneau 37 %% for allowing the inclusion of the \@ifmtarg command 38 %% from their ifmtarg LaTeX package. 39 %% 40 %%************************************************************************* 41 %% Legal Notice: 42 %% This code is offered as-is without any warranty either expressed or 43 %% implied; without even the implied warranty of MERCHANTABILITY or 44 %% FITNESS FOR A PARTICULAR PURPOSE! 45 %% User assumes all risk. 46 %% In no event shall IEEE or any contributor to this code be liable for 47 %% any damages or losses, including, but not limited to, incidental, 48 %% consequential, or any other damages, resulting from the use or misuse 49 %% of any information contained here. 50 %% 51 %% All comments are the opinions of their respective authors and are not 52 %% necessarily endorsed by the IEEE. 53 %% 54 %% This work is distributed under the LaTeX Project Public License (LPPL) 55 %% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, 56 %% distributed and modified. A copy of the LPPL, version 1.3, is included 57 %% in the base LaTeX documentation of all distributions of LaTeX released 58 %% 2003/12/01 or later. 59 %% Retain all contribution notices and credits. 60 %% ** Modified files should be clearly indicated as such, including ** 61 %% ** renaming them and changing author support contact information. ** 62 %% 63 %% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex, 64 %% bare_conf.tex, bare_jrnl.tex, bare_jrnl_compsoc.tex 65 %% 66 %% Major changes to the user interface should be indicated by an 67 %% increase in the version numbers. If a version is a beta, it will 68 %% be indicated with a BETA suffix, i.e., 1.4 BETA. 69 %% Small changes can be indicated by appending letters to the version 70 %% such as "IEEEtran_v14a.cls". 71 %% In all cases, \Providesclass, any \typeout messages to the user, 72 %% \IEEEtransversionmajor and \IEEEtransversionminor must reflect the 73 %% correct version information. 74 %% The changes should also be documented via source comments. 75 %%************************************************************************* 76 %% 77 % 78 % Available class options 79 % e.g., \documentclass[10pt,conference]{IEEEtran} 80 % 81 % *** choose only one from each category *** 82 % 83 % 9pt, 10pt, 11pt, 12pt 84 % Sets normal font size. The default is 10pt. 85 % 86 % conference, journal, technote, peerreview, peerreviewca 87 % determines format mode - conference papers, journal papers, 88 % correspondence papers (technotes), or peer review papers. The user 89 % should also select 9pt when using technote. peerreview is like 90 % journal mode, but provides for a single-column "cover" title page for 91 % anonymous peer review. The paper title (without the author names) is 92 % repeated at the top of the page after the cover page. For peer review 93 % papers, the \IEEEpeerreviewmaketitle command must be executed (will 94 % automatically be ignored for non-peerreview modes) at the place the 95 % cover page is to end, usually just after the abstract (keywords are 96 % not normally used with peer review papers). peerreviewca is like 97 % peerreview, but allows the author names to be entered and formatted 98 % as with conference mode so that author affiliation and contact 99 % information can be easily seen on the cover page. 100 % The default is journal. 101 % 102 % draft, draftcls, draftclsnofoot, final 103 % determines if paper is formatted as a widely spaced draft (for 104 % handwritten editor comments) or as a properly typeset final version. 105 % draftcls restricts draft mode to the class file while all other LaTeX 106 % packages (i.e., \usepackage{graphicx}) will behave as final - allows 107 % for a draft paper with visible figures, etc. draftclsnofoot is like 108 % draftcls, but does not display the date and the word "DRAFT" at the foot 109 % of the pages. If using one of the draft modes, the user will probably 110 % also want to select onecolumn. 111 % The default is final. 112 % 113 % letterpaper, a4paper 114 % determines paper size: 8.5in X 11in or 210mm X 297mm. CHANGING THE PAPER 115 % SIZE WILL NOT ALTER THE TYPESETTING OF THE DOCUMENT - ONLY THE MARGINS 116 % WILL BE AFFECTED. In particular, documents using the a4paper option will 117 % have reduced side margins (A4 is narrower than US letter) and a longer 118 % bottom margin (A4 is longer than US letter). For both cases, the top 119 % margins will be the same and the text will be horizontally centered. 120 % For final submission to IEEE, authors should use US letter (8.5 X 11in) 121 % paper. Note that authors should ensure that all post-processing 122 % (ps, pdf, etc.) uses the same paper specificiation as the .tex document. 123 % Problems here are by far the number one reason for incorrect margins. 124 % IEEEtran will automatically set the default paper size under pdflatex 125 % (without requiring a change to pdftex.cfg), so this issue is more 126 % important to dvips users. Fix config.ps, config.pdf, or ~/.dvipsrc for 127 % dvips, or use the dvips -t papersize option instead as needed. See the 128 % testflow documentation 129 % http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/testflow 130 % for more details on dvips paper size configuration. 131 % The default is letterpaper. 132 % 133 % oneside, twoside 134 % determines if layout follows single sided or two sided (duplex) 135 % printing. The only notable change is with the headings at the top of 136 % the pages. 137 % The default is oneside. 138 % 139 % onecolumn, twocolumn 140 % determines if text is organized into one or two columns per page. One 141 % column mode is usually used only with draft papers. 142 % The default is twocolumn. 143 % 144 % compsoc 145 % Use the format of the IEEE Computer Society. 146 % 147 % romanappendices 148 % Use the "Appendix I" convention when numbering appendices. IEEEtran.cls 149 % now defaults to Alpha "Appendix A" convention - the opposite of what 150 % v1.6b and earlier did. 151 % 152 % captionsoff 153 % disables the display of the figure/table captions. Some IEEE journals 154 % request that captions be removed and figures/tables be put on pages 155 % of their own at the end of an initial paper submission. The endfloat 156 % package can be used with this class option to achieve this format. 157 % 158 % nofonttune 159 % turns off tuning of the font interword spacing. Maybe useful to those 160 % not using the standard Times fonts or for those who have already "tuned" 161 % their fonts. 162 % The default is to enable IEEEtran to tune font parameters. 163 % 164 % 165 %---------- 166 % Available CLASSINPUTs provided (all are macros unless otherwise noted): 167 % \CLASSINPUTbaselinestretch 168 % \CLASSINPUTinnersidemargin 169 % \CLASSINPUToutersidemargin 170 % \CLASSINPUTtoptextmargin 171 % \CLASSINPUTbottomtextmargin 172 % 173 % Available CLASSINFOs provided: 174 % \ifCLASSINFOpdf (TeX if conditional) 175 % \CLASSINFOpaperwidth (macro) 176 % \CLASSINFOpaperheight (macro) 177 % \CLASSINFOnormalsizebaselineskip (length) 178 % \CLASSINFOnormalsizeunitybaselineskip (length) 179 % 180 % Available CLASSOPTIONs provided: 181 % all class option flags (TeX if conditionals) unless otherwise noted, 182 % e.g., \ifCLASSOPTIONcaptionsoff 183 % point size options provided as a single macro: 184 % \CLASSOPTIONpt 185 % which will be defined as 9, 10, 11, or 12 depending on the document‘s 186 % normalsize point size. 187 % also, class option peerreviewca implies the use of class option peerreview 188 % and classoption draft implies the use of class option draftcls 189 190 191 192 193 194 \ProvidesClass{IEEEtran}[2007/03/05 V1.7a by Michael Shell] 195 \typeout{-- See the "IEEEtran_HOWTO" manual for usage information.} 196 \typeout{-- http://www.michaelshell.org/tex/ieeetran/} 197 \NeedsTeXFormat{LaTeX2e} 198 199 % IEEEtran.cls version numbers, provided as of V1.3 200 % These values serve as a way a .tex file can 201 % determine if the new features are provided. 202 % The version number of this IEEEtrans.cls can be obtained from 203 % these values. i.e., V1.4 204 % KEEP THESE AS INTEGERS! i.e., NO {4a} or anything like that- 205 % (no need to enumerate "a" minor changes here) 206 \def\IEEEtransversionmajor{1} 207 \def\IEEEtransversionminor{7} 208 209 % These do nothing, but provide them like in article.cls 210 \newif\if@restonecol 211 \newif\if@titlepage 212 213 214 % class option conditionals 215 \newif\ifCLASSOPTIONonecolumn \CLASSOPTIONonecolumnfalse 216 \newif\ifCLASSOPTIONtwocolumn \CLASSOPTIONtwocolumntrue 217 218 \newif\ifCLASSOPTIONoneside \CLASSOPTIONonesidetrue 219 \newif\ifCLASSOPTIONtwoside \CLASSOPTIONtwosidefalse 220 221 \newif\ifCLASSOPTIONfinal \CLASSOPTIONfinaltrue 222 \newif\ifCLASSOPTIONdraft \CLASSOPTIONdraftfalse 223 \newif\ifCLASSOPTIONdraftcls \CLASSOPTIONdraftclsfalse 224 \newif\ifCLASSOPTIONdraftclsnofoot \CLASSOPTIONdraftclsnofootfalse 225 226 \newif\ifCLASSOPTIONpeerreview \CLASSOPTIONpeerreviewfalse 227 \newif\ifCLASSOPTIONpeerreviewca \CLASSOPTIONpeerreviewcafalse 228 229 \newif\ifCLASSOPTIONjournal \CLASSOPTIONjournaltrue 230 \newif\ifCLASSOPTIONconference \CLASSOPTIONconferencefalse 231 \newif\ifCLASSOPTIONtechnote \CLASSOPTIONtechnotefalse 232 233 \newif\ifCLASSOPTIONnofonttune \CLASSOPTIONnofonttunefalse 234 235 \newif\ifCLASSOPTIONcaptionsoff \CLASSOPTIONcaptionsofffalse 236 237 \newif\ifCLASSOPTIONcompsoc \CLASSOPTIONcompsocfalse 238 239 \newif\ifCLASSOPTIONromanappendices \CLASSOPTIONromanappendicesfalse 240 241 242 % class info conditionals 243 244 % indicates if pdf (via pdflatex) output 245 \newif\ifCLASSINFOpdf \CLASSINFOpdffalse 246 247 248 % V1.6b internal flag to show if using a4paper 249 \newif\if@IEEEusingAfourpaper \@IEEEusingAfourpaperfalse 250 251 252 253 % IEEEtran class scratch pad registers 254 % dimen 255 \newdimen\@IEEEtrantmpdimenA 256 \newdimen\@IEEEtrantmpdimenB 257 % count 258 \newcount\@IEEEtrantmpcountA 259 \newcount\@IEEEtrantmpcountB 260 % token list 261 \newtoks\@IEEEtrantmptoksA 262 263 % we use \CLASSOPTIONpt so that we can ID the point size (even for 9pt docs) 264 % as well as LaTeX‘s \@ptsize to retain some compatability with some 265 % external packages 266 \def\@ptsize{0} 267 % LaTeX does not support 9pt, so we set \@ptsize to 0 - same as that of 10pt 268 \DeclareOption{9pt}{\def\CLASSOPTIONpt{9}\def\@ptsize{0}} 269 \DeclareOption{10pt}{\def\CLASSOPTIONpt{10}\def\@ptsize{0}} 270 \DeclareOption{11pt}{\def\CLASSOPTIONpt{11}\def\@ptsize{1}} 271 \DeclareOption{12pt}{\def\CLASSOPTIONpt{12}\def\@ptsize{2}} 272 273 274 275 \DeclareOption{letterpaper}{\setlength{\paperheight}{11in}% 276 \setlength{\paperwidth}{8.5in}% 277 \@IEEEusingAfourpaperfalse 278 \def\CLASSOPTIONpaper{letter}% 279 \def\CLASSINFOpaperwidth{8.5in}% 280 \def\CLASSINFOpaperheight{11in}} 281 282 283 \DeclareOption{a4paper}{\setlength{\paperheight}{297mm}% 284 \setlength{\paperwidth}{210mm}% 285 \@IEEEusingAfourpapertrue 286 \def\CLASSOPTIONpaper{a4}% 287 \def\CLASSINFOpaperwidth{210mm}% 288 \def\CLASSINFOpaperheight{297mm}} 289 290 \DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse 291 \CLASSOPTIONonesidetrue\CLASSOPTIONtwosidefalse} 292 \DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue 293 \CLASSOPTIONtwosidetrue\CLASSOPTIONonesidefalse} 294 295 \DeclareOption{onecolumn}{\CLASSOPTIONonecolumntrue\CLASSOPTIONtwocolumnfalse} 296 \DeclareOption{twocolumn}{\CLASSOPTIONtwocolumntrue\CLASSOPTIONonecolumnfalse} 297 298 % If the user selects draft, then this class AND any packages 299 % will go into draft mode. 300 \DeclareOption{draft}{\CLASSOPTIONdrafttrue\CLASSOPTIONdraftclstrue 301 \CLASSOPTIONdraftclsnofootfalse} 302 % draftcls is for a draft mode which will not affect any packages 303 % used by the document. 304 \DeclareOption{draftcls}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue 305 \CLASSOPTIONdraftclsnofootfalse} 306 % draftclsnofoot is like draftcls, but without the footer. 307 \DeclareOption{draftclsnofoot}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue 308 \CLASSOPTIONdraftclsnofoottrue} 309 \DeclareOption{final}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclsfalse 310 \CLASSOPTIONdraftclsnofootfalse} 311 312 \DeclareOption{journal}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse 313 \CLASSOPTIONjournaltrue\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} 314 315 \DeclareOption{conference}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse 316 \CLASSOPTIONjournalfalse\CLASSOPTIONconferencetrue\CLASSOPTIONtechnotefalse} 317 318 \DeclareOption{technote}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse 319 \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotetrue} 320 321 \DeclareOption{peerreview}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcafalse 322 \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} 323 324 \DeclareOption{peerreviewca}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcatrue 325 \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} 326 327 \DeclareOption{nofonttune}{\CLASSOPTIONnofonttunetrue} 328 329 \DeclareOption{captionsoff}{\CLASSOPTIONcaptionsofftrue} 330 331 \DeclareOption{compsoc}{\CLASSOPTIONcompsoctrue} 332 333 \DeclareOption{romanappendices}{\CLASSOPTIONromanappendicestrue} 334 335 336 % default to US letter paper, 10pt, twocolumn, one sided, final, journal 337 \ExecuteOptions{letterpaper,10pt,twocolumn,oneside,final,journal} 338 % overrride these defaults per user requests 339 \ProcessOptions 340 341 342 343 % Computer Society conditional execution command 344 \long\def\@IEEEcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\relax#1\relax\fi\relax} 345 % inverse 346 \long\def\@IEEEnotcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\else\relax#1\relax\fi\relax} 347 % compsoc conference 348 \long\def\@IEEEcompsocconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\relax#1\relax\fi\fi\relax} 349 % compsoc not conference 350 \long\def\@IEEEcompsocnotconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\else\relax#1\relax\fi\fi\relax} 351 352 353 % IEEE uses Times Roman font, so we‘ll default to Times. 354 % These three commands make up the entire times.sty package. 355 \renewcommand{\sfdefault}{phv} 356 \renewcommand{\rmdefault}{ptm} 357 \renewcommand{\ttdefault}{pcr} 358 359 \@IEEEcompsoconly{\typeout{-- Using IEEE Computer Society mode.}} 360 361 % V1.7 compsoc nonconference papers, use Palatino/Palladio as the main text font, 362 % not Times Roman. 363 \@IEEEcompsocnotconfonly{\renewcommand{\rmdefault}{ppl}} 364 365 % enable Times/Palatino main text font 366 \normalfont\selectfont 367 368 369 370 371 372 % V1.7 conference notice message hook 373 \def\@IEEEconsolenoticeconference{\typeout{}% 374 \typeout{** Conference Paper **}% 375 \typeout{Before submitting the final camera ready copy, remember to:}% 376 \typeout{}% 377 \typeout{ 1. Manually equalize the lengths of two columns on the last page}% 378 \typeout{ of your paper;}% 379 \typeout{}% 380 \typeout{ 2. Ensure that any PostScript and/or PDF output post-processing}% 381 \typeout{ uses only Type 1 fonts and that every step in the generation}% 382 \typeout{ process uses the appropriate paper size.}% 383 \typeout{}} 384 385 386 % we can send console reminder messages to the user here 387 \AtEndDocument{\ifCLASSOPTIONconference\@IEEEconsolenoticeconference\fi} 388 389 390 % warn about the use of single column other than for draft mode 391 \ifCLASSOPTIONtwocolumn\else% 392 \ifCLASSOPTIONdraftcls\else% 393 \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}% 394 \fi% 395 \fi 396 397 398 % V1.7 improved paper size setting code. 399 % Set pdfpage and dvips paper sizes. Conditional tests are similar to that 400 % of ifpdf.sty. Retain within {} to ensure tested macros are never altered, 401 % even if only effect is to set them to \relax. 402 % if \pdfoutput is undefined or equal to relax, output a dvips special 403 {\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}}{% 404 % pdfoutput is defined and not equal to \relax 405 % check for pdfpageheight existence just in case someone sets pdfoutput 406 % under non-pdflatex. If exists, set them regardless of value of \pdfoutput. 407 \@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth 408 \global\pdfpageheight\paperheight}% 409 % if using \pdfoutput=0 under pdflatex, send dvips papersize special 410 \ifcase\pdfoutput 411 \AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}% 412 \else 413 % we are using pdf output, set CLASSINFOpdf flag 414 \global\CLASSINFOpdftrue 415 \fi}} 416 417 % let the user know the selected papersize 418 \typeout{-- Using \CLASSINFOpaperwidth\space x \CLASSINFOpaperheight\space 419 (\CLASSOPTIONpaper)\space paper.} 420 421 \ifCLASSINFOpdf 422 \typeout{-- Using PDF output.} 423 \else 424 \typeout{-- Using DVI output.} 425 \fi 426 427 428 % The idea hinted here is for LaTeX to generate markleft{} and markright{} 429 % automatically for you after you enter \author{}, \journal{}, 430 % \journaldate{}, journalvol{}, \journalnum{}, etc. 431 % However, there may be some backward compatibility issues here as 432 % well as some special applications for IEEEtran.cls and special issues 433 % that may require the flexible \markleft{}, \markright{} and/or \markboth{}. 434 % We‘ll leave this as an open future suggestion. 435 %\newcommand{\journal}[1]{\def\@journal{#1}} 436 %\def\@journal{} 437 438 439 440 % pointsize values 441 % used with ifx to determine the document‘s normal size 442 \def\@IEEEptsizenine{9} 443 \def\@IEEEptsizeten{10} 444 \def\@IEEEptsizeeleven{11} 445 \def\@IEEEptsizetwelve{12} 446 447 448 449 % FONT DEFINITIONS (No sizexx.clo file needed) 450 % V1.6 revised font sizes, displayskip values and 451 % revised normalsize baselineskip to reduce underfull vbox problems 452 % on the 58pc = 696pt = 9.5in text height we want 453 % normalsize #lines/column baselineskip (aka leading) 454 % 9pt 63 11.0476pt (truncated down) 455 % 10pt 58 12pt (exact) 456 % 11pt 52 13.3846pt (truncated down) 457 % 12pt 50 13.92pt (exact) 458 % 459 460 % we need to store the nominal baselineskip for the given font size 461 % in case baselinestretch ever changes. 462 % this is a dimen, so it will not hold stretch or shrink 463 \newdimen\@IEEEnormalsizeunitybaselineskip 464 \@IEEEnormalsizeunitybaselineskip\baselineskip 465 466 \ifx\CLASSOPTIONpt\@IEEEptsizenine 467 \typeout{-- This is a 9 point document.} 468 \def\normalsize{\@setfontsize{\normalsize}{9}{11.0476pt}}% 469 \setlength{\@IEEEnormalsizeunitybaselineskip}{11.0476pt}% 470 \normalsize 471 \abovedisplayskip 1.5ex plus3pt minus1pt% 472 \belowdisplayskip \abovedisplayskip% 473 \abovedisplayshortskip 0pt plus3pt% 474 \belowdisplayshortskip 1.5ex plus3pt minus1pt 475 \def\small{\@setfontsize{\small}{8.5}{10pt}} 476 \def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} 477 \def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} 478 \def\tiny{\@setfontsize{\tiny}{5}{6pt}} 479 % sublargesize is the same as large - 10pt 480 \def\sublargesize{\@setfontsize{\sublargesize}{10}{12pt}} 481 \def\large{\@setfontsize{\large}{10}{12pt}} 482 \def\Large{\@setfontsize{\Large}{12}{14pt}} 483 \def\LARGE{\@setfontsize{\LARGE}{14}{17pt}} 484 \def\huge{\@setfontsize{\huge}{17}{20pt}} 485 \def\Huge{\@setfontsize{\Huge}{20}{24pt}} 486 \fi 487 488 489 % Check if we have selected 10 points 490 \ifx\CLASSOPTIONpt\@IEEEptsizeten 491 \typeout{-- This is a 10 point document.} 492 \def\normalsize{\@setfontsize{\normalsize}{10}{12.00pt}}% 493 \setlength{\@IEEEnormalsizeunitybaselineskip}{12pt}% 494 \normalsize 495 \abovedisplayskip 1.5ex plus4pt minus2pt% 496 \belowdisplayskip \abovedisplayskip% 497 \abovedisplayshortskip 0pt plus4pt% 498 \belowdisplayshortskip 1.5ex plus4pt minus2pt 499 \def\small{\@setfontsize{\small}{9}{10pt}} 500 \def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} 501 \def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} 502 \def\tiny{\@setfontsize{\tiny}{5}{6pt}} 503 % sublargesize is a tad smaller than large - 11pt 504 \def\sublargesize{\@setfontsize{\sublargesize}{11}{13.4pt}} 505 \def\large{\@setfontsize{\large}{12}{14pt}} 506 \def\Large{\@setfontsize{\Large}{14}{17pt}} 507 \def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} 508 \def\huge{\@setfontsize{\huge}{20}{24pt}} 509 \def\Huge{\@setfontsize{\Huge}{24}{28pt}} 510 \fi 511 512 513 % Check if we have selected 11 points 514 \ifx\CLASSOPTIONpt\@IEEEptsizeeleven 515 \typeout{-- This is an 11 point document.} 516 \def\normalsize{\@setfontsize{\normalsize}{11}{13.3846pt}}% 517 \setlength{\@IEEEnormalsizeunitybaselineskip}{13.3846pt}% 518 \normalsize 519 \abovedisplayskip 1.5ex plus5pt minus3pt% 520 \belowdisplayskip \abovedisplayskip% 521 \abovedisplayshortskip 0pt plus5pt% 522 \belowdisplayshortskip 1.5ex plus5pt minus3pt 523 \def\small{\@setfontsize{\small}{10}{12pt}} 524 \def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} 525 \def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} 526 \def\tiny{\@setfontsize{\tiny}{6}{7pt}} 527 % sublargesize is the same as large - 12pt 528 \def\sublargesize{\@setfontsize{\sublargesize}{12}{14pt}} 529 \def\large{\@setfontsize{\large}{12}{14pt}} 530 \def\Large{\@setfontsize{\Large}{14}{17pt}} 531 \def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} 532 \def\huge{\@setfontsize{\huge}{20}{24pt}} 533 \def\Huge{\@setfontsize{\Huge}{24}{28pt}} 534 \fi 535 536 537 % Check if we have selected 12 points 538 \ifx\CLASSOPTIONpt\@IEEEptsizetwelve 539 \typeout{-- This is a 12 point document.} 540 \def\normalsize{\@setfontsize{\normalsize}{12}{13.92pt}}% 541 \setlength{\@IEEEnormalsizeunitybaselineskip}{13.92pt}% 542 \normalsize 543 \abovedisplayskip 1.5ex plus6pt minus4pt% 544 \belowdisplayskip \abovedisplayskip% 545 \abovedisplayshortskip 0pt plus6pt% 546 \belowdisplayshortskip 1.5ex plus6pt minus4pt 547 \def\small{\@setfontsize{\small}{10}{12pt}} 548 \def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} 549 \def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} 550 \def\tiny{\@setfontsize{\tiny}{6}{7pt}} 551 % sublargesize is the same as large - 14pt 552 \def\sublargesize{\@setfontsize{\sublargesize}{14}{17pt}} 553 \def\large{\@setfontsize{\large}{14}{17pt}} 554 \def\Large{\@setfontsize{\Large}{17}{20pt}} 555 \def\LARGE{\@setfontsize{\LARGE}{20}{24pt}} 556 \def\huge{\@setfontsize{\huge}{22}{26pt}} 557 \def\Huge{\@setfontsize{\Huge}{24}{28pt}} 558 \fi 559 560 561 % V1.6 The Computer Modern Fonts will issue a substitution warning for 562 % 24pt titles (24.88pt is used instead) increase the substitution 563 % tolerance to turn off this warning 564 \def\fontsubfuzz{.9pt} 565 % However, the default (and correct) Times font will scale exactly as needed. 566 567 568 % warn the user in case they forget to use the 9pt option with 569 % technote 570 \ifCLASSOPTIONtechnote% 571 \ifx\CLASSOPTIONpt\@IEEEptsizenine\else% 572 \typeout{** ATTENTION: Technotes are normally 9pt documents.}% 573 \fi% 574 \fi 575 576 577 % V1.7 578 % Improved \textunderscore to provide a much better fake _ when used with 579 % OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use 580 % available true _ glyph for those two typewriter fonts. 581 \def\@IEEEstringptm{ptm} % Times Roman family 582 \def\@IEEEstringppl{ppl} % Palatino Roman family 583 \def\@IEEEstringphv{phv} % Helvetica Sans Serif family 584 \def\@IEEEstringpcr{pcr} % Courier typewriter family 585 \def\@IEEEstringcmtt{cmtt} % Computer Modern typewriter family 586 \DeclareTextCommandDefault{\textunderscore}{\leavevmode 587 \ifx\f@family\@IEEEstringpcr\string_\else 588 \ifx\f@family\@IEEEstringcmtt\string_\else 589 \ifx\f@family\@IEEEstringptm\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else 590 \ifx\f@family\@IEEEstringppl\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else 591 \ifx\f@family\@IEEEstringphv\kern -0.03em\vbox{\hrule\@width 0.62em\@height 0.52pt\kern -0.33ex}\kern -0.03em\else 592 \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} 593 594 595 596 597 % set the default \baselinestretch 598 \def\baselinestretch{1} 599 \ifCLASSOPTIONdraftcls 600 \def\baselinestretch{1.5}% default baselinestretch for draft modes 601 \fi 602 603 604 % process CLASSINPUT baselinestretch 605 \ifx\CLASSINPUTbaselinestretch\@IEEEundefined 606 \else 607 \edef\baselinestretch{\CLASSINPUTbaselinestretch} % user CLASSINPUT override 608 \typeout{** ATTENTION: Overriding \string\baselinestretch\space to 609 \baselinestretch\space via \string\CLASSINPUT.} 610 \fi 611 612 \normalsize % make \baselinestretch take affect 613 614 615 616 617 % store the normalsize baselineskip 618 \newdimen\CLASSINFOnormalsizebaselineskip 619 \CLASSINFOnormalsizebaselineskip=\baselineskip\relax 620 % and the normalsize unity (baselinestretch=1) baselineskip 621 % we could save a register by giving the user access to 622 % \@IEEEnormalsizeunitybaselineskip. However, let‘s protect 623 % its read only internal status 624 \newdimen\CLASSINFOnormalsizeunitybaselineskip 625 \CLASSINFOnormalsizeunitybaselineskip=\@IEEEnormalsizeunitybaselineskip\relax 626 % store the nominal value of jot 627 \newdimen\IEEEnormaljot 628 \IEEEnormaljot=0.25\baselineskip\relax 629 630 % set \jot 631 \jot=\IEEEnormaljot\relax 632 633 634 635 636 % V1.6, we are now going to fine tune the interword spacing 637 % The default interword glue for Times under TeX appears to use a 638 % nominal interword spacing of 25% (relative to the font size, i.e., 1em) 639 % a maximum of 40% and a minimum of 19%. 640 % For example, 10pt text uses an interword glue of: 641 % 642 % 2.5pt plus 1.49998pt minus 0.59998pt 643 % 644 % However, IEEE allows for a more generous range which reduces the need 645 % for hyphenation, especially for two column text. Furthermore, IEEE 646 % tends to use a little bit more nominal space between the words. 647 % IEEE‘s interword spacing percentages appear to be: 648 % 35% nominal 649 % 23% minimum 650 % 50% maximum 651 % (They may even be using a tad more for the largest fonts such as 24pt.) 652 % 653 % for bold text, IEEE increases the spacing a little more: 654 % 37.5% nominal 655 % 23% minimum 656 % 55% maximum 657 658 % here are the interword spacing ratios we‘ll use 659 % for medium (normal weight) 660 \def\@IEEEinterspaceratioM{0.35} 661 \def\@IEEEinterspaceMINratioM{0.23} 662 \def\@IEEEinterspaceMAXratioM{0.50} 663 664 % for bold 665 \def\@IEEEinterspaceratioB{0.375} 666 \def\@IEEEinterspaceMINratioB{0.23} 667 \def\@IEEEinterspaceMAXratioB{0.55} 668 669 670 % command to revise the interword spacing for the current font under TeX: 671 % \fontdimen2 = nominal interword space 672 % \fontdimen3 = interword stretch 673 % \fontdimen4 = interword shrink 674 % since all changes to the \fontdimen are global, we can enclose these commands 675 % in braces to confine any font attribute or length changes 676 \def\@@@IEEEsetfontdimens#1#2#3{{% 677 \setlength{\@IEEEtrantmpdimenB}{\f@size pt}% grab the font size in pt, could use 1em instead. 678 \setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% 679 \fontdimen2\font=\@IEEEtrantmpdimenA\relax 680 \addtolength{\@IEEEtrantmpdimenA}{-#2\@IEEEtrantmpdimenB}% 681 \fontdimen3\font=-\@IEEEtrantmpdimenA\relax 682 \setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% 683 \addtolength{\@IEEEtrantmpdimenA}{-#3\@IEEEtrantmpdimenB}% 684 \fontdimen4\font=\@IEEEtrantmpdimenA\relax}} 685 686 % revise the interword spacing for each font weight 687 \def\@@IEEEsetfontdimens{{% 688 \mdseries 689 \@@@IEEEsetfontdimens{\@IEEEinterspaceratioM}{\@IEEEinterspaceMAXratioM}{\@IEEEinterspaceMINratioM}% 690 \bfseries 691 \@@@IEEEsetfontdimens{\@IEEEinterspaceratioB}{\@IEEEinterspaceMAXratioB}{\@IEEEinterspaceMINratioB}% 692 }} 693 694 % revise the interword spacing for each font shape 695 % \slshape is not often used for IEEE work and is not altered here. The \scshape caps are 696 % already a tad too large in the free LaTeX fonts (as compared to what IEEE uses) so we 697 % won‘t alter these either. 698 \def\@IEEEsetfontdimens{{% 699 \normalfont 700 \@@IEEEsetfontdimens 701 \normalfont\itshape 702 \@@IEEEsetfontdimens 703 }} 704 705 % command to revise the interword spacing for each font size (and shape 706 % and weight). Only the \rmfamily is done here as \ttfamily uses a 707 % fixed spacing and \sffamily is not used as the main text of IEEE papers. 708 \def\@IEEEtunefonts{{\selectfont\rmfamily 709 \tiny\@IEEEsetfontdimens 710 \scriptsize\@IEEEsetfontdimens 711 \footnotesize\@IEEEsetfontdimens 712 \small\@IEEEsetfontdimens 713 \normalsize\@IEEEsetfontdimens 714 \sublargesize\@IEEEsetfontdimens 715 \large\@IEEEsetfontdimens 716 \LARGE\@IEEEsetfontdimens 717 \huge\@IEEEsetfontdimens 718 \Huge\@IEEEsetfontdimens}} 719 720 % if the nofonttune class option is not given, revise the interword spacing 721 % now - in case IEEEtran makes any default length measurements, and make 722 % sure all the default fonts are loaded 723 \ifCLASSOPTIONnofonttune\else 724 \@IEEEtunefonts 725 \fi 726 727 % and again at the start of the document in case the user loaded different fonts 728 \AtBeginDocument{\ifCLASSOPTIONnofonttune\else\@IEEEtunefonts\fi} 729 730 731 732 % V1.6 733 % LaTeX is a little to quick to use hyphenations 734 % So, we increase the penalty for their use and raise 735 % the badness level that triggers an underfull hbox 736 % warning. The author may still have to tweak things, 737 % but the appearance will be much better "right out 738 % of the box" than that under V1.5 and prior. 739 % TeX default is 50 740 \hyphenpenalty=750 741 % If we didn‘t adjust the interword spacing, 2200 might be better. 742 % The TeX default is 1000 743 \hbadness=1350 744 % IEEE does not use extra spacing after punctuation 745 \frenchspacing 746 747 % V1.7 increase this a tad to discourage equation breaks 748 \binoppenalty=1000 % default 700 749 \relpenalty=800 % default 500 750 751 752 % margin note stuff 753 \marginparsep 10pt 754 \marginparwidth 20pt 755 \marginparpush 25pt 756 757 758 % if things get too close, go ahead and let them touch 759 \lineskip 0pt 760 \normallineskip 0pt 761 \lineskiplimit 0pt 762 \normallineskiplimit 0pt 763 764 % The distance from the lower edge of the text body to the 765 % footline 766 \footskip 0.4in 767 768 % normally zero, should be relative to font height. 769 % put in a little rubber to help stop some bad breaks (underfull vboxes) 770 \parskip 0ex plus 0.2ex minus 0.1ex 771 772 \parindent 1.0em 773 774 \topmargin -49.0pt 775 \headheight 12pt 776 \headsep 0.25in 777 778 % use the normal font baselineskip 779 % so that \topskip is unaffected by changes in \baselinestretch 780 \topskip=\@IEEEnormalsizeunitybaselineskip 781 \textheight 58pc % 9.63in, 696pt 782 % Tweak textheight to a perfect integer number of lines/page. 783 % The normal baselineskip for each document point size is used 784 % to determine these values. 785 \ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=63\@IEEEnormalsizeunitybaselineskip\fi % 63 lines/page 786 \ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=58\@IEEEnormalsizeunitybaselineskip\fi % 58 lines/page 787 \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=52\@IEEEnormalsizeunitybaselineskip\fi % 52 lines/page 788 \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=50\@IEEEnormalsizeunitybaselineskip\fi % 50 lines/page 789 790 791 \columnsep 1pc 792 \textwidth 43pc % 2 x 21pc + 1pc = 43pc 793 794 795 % the default side margins are equal 796 \if@IEEEusingAfourpaper 797 \oddsidemargin 14.32mm 798 \evensidemargin 14.32mm 799 \else 800 \oddsidemargin 0.680in 801 \evensidemargin 0.680in 802 \fi 803 % compensate for LaTeX‘s 1in offset 804 \addtolength{\oddsidemargin}{-1in} 805 \addtolength{\evensidemargin}{-1in} 806 807 808 809 % adjust margins for conference mode 810 \ifCLASSOPTIONconference 811 \topmargin -0.25in 812 % we retain the reserved, but unused space for headers 813 \addtolength{\topmargin}{-\headheight} 814 \addtolength{\topmargin}{-\headsep} 815 \textheight 9.25in % The standard for conferences (668.4975pt) 816 % Tweak textheight to a perfect integer number of lines/page. 817 \ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=61\@IEEEnormalsizeunitybaselineskip\fi % 61 lines/page 818 \ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=56\@IEEEnormalsizeunitybaselineskip\fi % 56 lines/page 819 \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=50\@IEEEnormalsizeunitybaselineskip\fi % 50 lines/page 820 \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=48\@IEEEnormalsizeunitybaselineskip\fi % 48 lines/page 821 \fi 822 823 824 % compsoc conference 825 \ifCLASSOPTIONcompsoc 826 \ifCLASSOPTIONconference 827 % compsoc conference use a larger value for columnsep 828 \columnsep 0.375in 829 % compsoc conferences want 1in top margin, 1.125in bottom margin 830 \topmargin 0in 831 \addtolength{\topmargin}{-6pt}% we tweak this a tad to better comply with top of line stuff 832 % we retain the reserved, but unused space for headers 833 \addtolength{\topmargin}{-\headheight} 834 \addtolength{\topmargin}{-\headsep} 835 \textheight 8.875in % (641.39625pt) 836 % Tweak textheight to a perfect integer number of lines/page. 837 \ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=58\@IEEEnormalsizeunitybaselineskip\fi % 58 lines/page 838 \ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=53\@IEEEnormalsizeunitybaselineskip\fi % 53 lines/page 839 \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=48\@IEEEnormalsizeunitybaselineskip\fi % 48 lines/page 840 \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=46\@IEEEnormalsizeunitybaselineskip\fi % 46 lines/page 841 \textwidth 6.5in 842 % the default side margins are equal 843 \if@IEEEusingAfourpaper 844 \oddsidemargin 22.45mm 845 \evensidemargin 22.45mm 846 \else 847 \oddsidemargin 1in 848 \evensidemargin 1in 849 \fi 850 % compensate for LaTeX‘s 1in offset 851 \addtolength{\oddsidemargin}{-1in} 852 \addtolength{\evensidemargin}{-1in} 853 \fi\fi 854 855 856 857 % draft mode settings override that of all other modes 858 % provides a nice 1in margin all around the paper and extra 859 % space between the lines for editor‘s comments 860 \ifCLASSOPTIONdraftcls 861 % want 1in from top of paper to text 862 \setlength{\topmargin}{-\headsep}% 863 \addtolength{\topmargin}{-\headheight}% 864 % we want 1in side margins regardless of paper type 865 \oddsidemargin 0in 866 \evensidemargin 0in 867 % set the text width 868 \setlength{\textwidth}{\paperwidth}% 869 \addtolength{\textwidth}{-2.0in}% 870 \setlength{\textheight}{\paperheight}% 871 \addtolength{\textheight}{-2.0in}% 872 % digitize textheight to be an integer number of lines. 873 % this may cause the bottom margin to be off a tad 874 \addtolength{\textheight}{-1\topskip}% 875 \divide\textheight by \baselineskip% 876 \multiply\textheight by \baselineskip% 877 \addtolength{\textheight}{\topskip}% 878 \fi 879 880 881 882 % process CLASSINPUT inner/outer margin 883 % if inner margin defined, but outer margin not, set outer to inner. 884 \ifx\CLASSINPUTinnersidemargin\@IEEEundefined 885 \else 886 \ifx\CLASSINPUToutersidemargin\@IEEEundefined 887 \edef\CLASSINPUToutersidemargin{\CLASSINPUTinnersidemargin} 888 \fi 889 \fi 890 891 \ifx\CLASSINPUToutersidemargin\@IEEEundefined 892 \else 893 % if outer margin defined, but inner margin not, set inner to outer. 894 \ifx\CLASSINPUTinnersidemargin\@IEEEundefined 895 \edef\CLASSINPUTinnersidemargin{\CLASSINPUToutersidemargin} 896 \fi 897 \setlength{\oddsidemargin}{\CLASSINPUTinnersidemargin} 898 \ifCLASSOPTIONtwoside 899 \setlength{\evensidemargin}{\CLASSINPUToutersidemargin} 900 \else 901 \setlength{\evensidemargin}{\CLASSINPUTinnersidemargin} 902 \fi 903 \addtolength{\oddsidemargin}{-1in} 904 \addtolength{\evensidemargin}{-1in} 905 \setlength{\textwidth}{\paperwidth} 906 \addtolength{\textwidth}{-\CLASSINPUTinnersidemargin} 907 \addtolength{\textwidth}{-\CLASSINPUToutersidemargin} 908 \typeout{** ATTENTION: Overriding inner side margin to \CLASSINPUTinnersidemargin\space and 909 outer side margin to \CLASSINPUToutersidemargin\space via \string\CLASSINPUT.} 910 \fi 911 912 913 914 % process CLASSINPUT top/bottom text margin 915 % if toptext margin defined, but bottomtext margin not, set bottomtext to toptext margin 916 \ifx\CLASSINPUTtoptextmargin\@IEEEundefined 917 \else 918 \ifx\CLASSINPUTbottomtextmargin\@IEEEundefined 919 \edef\CLASSINPUTbottomtextmargin{\CLASSINPUTtoptextmargin} 920 \fi 921 \fi 922 923 \ifx\CLASSINPUTbottomtextmargin\@IEEEundefined 924 \else 925 % if bottomtext margin defined, but toptext margin not, set toptext to bottomtext margin 926 \ifx\CLASSINPUTtoptextmargin\@IEEEundefined 927 \edef\CLASSINPUTtoptextmargin{\CLASSINPUTbottomtextmargin} 928 \fi 929 \setlength{\topmargin}{\CLASSINPUTtoptextmargin} 930 \addtolength{\topmargin}{-1in} 931 \addtolength{\topmargin}{-\headheight} 932 \addtolength{\topmargin}{-\headsep} 933 \setlength{\textheight}{\paperheight} 934 \addtolength{\textheight}{-\CLASSINPUTtoptextmargin} 935 \addtolength{\textheight}{-\CLASSINPUTbottomtextmargin} 936 % in the default format we use the normal baselineskip as topskip 937 % we only need 0.7 of this to clear typical top text and we need 938 % an extra 0.3 spacing at the bottom for descenders. This will 939 % correct for both. 940 \addtolength{\topmargin}{-0.3\@IEEEnormalsizeunitybaselineskip} 941 \typeout{** ATTENTION: Overriding top text margin to \CLASSINPUTtoptextmargin\space and 942 bottom text margin to \CLASSINPUTbottomtextmargin\space via \string\CLASSINPUT.} 943 \fi 944 945 946 947 948 949 950 951 % LIST SPACING CONTROLS 952 953 % Controls the amount of EXTRA spacing 954 % above and below \trivlist 955 % Both \list and IED lists override this. 956 % However, \trivlist will use this as will most 957 % things built from \trivlist like the \center 958 % environment. 959 \topsep 0.5\baselineskip 960 961 % Controls the additional spacing around lists preceded 962 % or followed by blank lines. IEEE does not increase 963 % spacing before or after paragraphs so it is set to zero. 964 % \z@ is the same as zero, but faster. 965 \partopsep \z@ 966 967 % Controls the spacing between paragraphs in lists. 968 % IEEE does not increase spacing before or after paragraphs 969 % so this is also zero. 970 % With IEEEtran.cls, global changes to 971 % this value DO affect lists (but not IED lists). 972 \parsep \z@ 973 974 % Controls the extra spacing between list items. 975 % IEEE does not put extra spacing between items. 976 % With IEEEtran.cls, global changes to this value DO affect 977 % lists (but not IED lists). 978 \itemsep \z@ 979 980 % \itemindent is the amount to indent the FIRST line of a list 981 % item. It is auto set to zero within the \list environment. To alter 982 % it, you have to do so when you call the \list. 983 % However, IEEE uses this for the theorem environment 984 % There is an alternative value for this near \leftmargini below 985 \itemindent -1em 986 987 % \leftmargin, the spacing from the left margin of the main text to 988 % the left of the main body of a list item is set by \list. 989 % Hence this statement does nothing for lists. 990 % But, quote and verse do use it for indention. 991 \leftmargin 2em 992 993 % we retain this stuff from the older IEEEtran.cls so that \list 994 % will work the same way as before. However, itemize, enumerate and 995 % description (IED) could care less about what these are as they 996 % all are overridden. 997 \leftmargini 2em 998 %\itemindent 2em % Alternative values: sometimes used. 999 %\leftmargini 0em1000 \leftmarginii 1em1001 \leftmarginiii 1.5em1002 \leftmarginiv 1.5em1003 \leftmarginv 1.0em1004 \leftmarginvi 1.0em1005 \labelsep 0.5em 1006 \labelwidth \z@1007 1008 1009 % The old IEEEtran.cls behavior of \list is retained.1010 % However, the new V1.3 IED list environments override all the1011 % @list stuff (\@listX is called within \list for the1012 % appropriate level just before the user‘s list_decl is called). 1013 % \topsep is now 2pt as IEEE puts a little extra space around1014 % lists - used by those non-IED macros that depend on \list.1015 % Note that \parsep and \itemsep are not redefined as in 1016 % the sizexx.clo \@listX (which article.cls uses) so global changes1017 % of these values DO affect \list1018 % 1019 \def\@listi{\leftmargin\leftmargini \topsep 2pt plus 1pt minus 1pt}1020 \let\@listI\@listi1021 \def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii%1022 \advance\labelwidth-\labelsep \topsep 2pt}1023 \def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii%1024 \advance\labelwidth-\labelsep \topsep 2pt}1025 \def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv%1026 \advance\labelwidth-\labelsep \topsep 2pt}1027 \def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv%1028 \advance\labelwidth-\labelsep \topsep 2pt}1029 \def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi%1030 \advance\labelwidth-\labelsep \topsep 2pt}1031 1032 1033 % IEEE uses 5) not 5.1034 \def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}}1035 1036 % IEEE uses a) not (a)1037 \def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}}1038 1039 % IEEE uses iii) not iii.1040 \def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}}1041 1042 % IEEE uses A) not A.1043 \def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}}1044 1045 % exactly the same as in article.cls1046 \def\p@enumii{\theenumi}1047 \def\p@enumiii{\theenumi(\theenumii)}1048 \def\p@enumiv{\p@enumiii\theenumiii}1049 1050 % itemized list label styles1051 \def\labelitemi{$\scriptstyle\bullet$}1052 \def\labelitemii{\textbf{--}}1053 \def\labelitemiii{$\ast$}1054 \def\labelitemiv{$\cdot$}1055 1056 1057 1058 % **** V1.3 ENHANCEMENTS ****1059 % Itemize, Enumerate and Description (IED) List Controls1060 % ***************************1061 % 1062 % 1063 % IEEE seems to use at least two different values by1064 % which ITEMIZED list labels are indented to the right1065 % For The Journal of Lightwave Technology (JLT) and The Journal1066 % on Selected Areas in Communications (JSAC), they tend to use1067 % an indention equal to \parindent. For Transactions on Communications1068 % they tend to indent ITEMIZED lists a little more--- 1.3\parindent.1069 % We‘ll provide both values here for you so that you can choose 1070 % which one you like in your document using a command such as:1071 % setlength{\IEEEilabelindent}{\IEEEilabelindentB}1072 \newdimen\IEEEilabelindentA1073 \IEEEilabelindentA \parindent1074 1075 \newdimen\IEEEilabelindentB1076 \IEEEilabelindentB 1.3\parindent1077 % However, we‘ll default to using \parindent1078 % which makes more sense to me1079 \newdimen\IEEEilabelindent1080 \IEEEilabelindent \IEEEilabelindentA1081 1082 1083 % This controls the default amount the enumerated list labels1084 % are indented to the right.1085 % Normally, this is the same as the paragraph indention1086 \newdimen\IEEEelabelindent1087 \IEEEelabelindent \parindent1088 1089 % This controls the default amount the description list labels1090 % are indented to the right.1091 % Normally, this is the same as the paragraph indention1092 \newdimen\IEEEdlabelindent1093 \IEEEdlabelindent \parindent1094 1095 % This is the value actually used within the IED lists.1096 % The IED environments automatically set its value to1097 % one of the three values above, so global changes do 1098 % not have any effect1099 \newdimen\IEEElabelindent1100 \IEEElabelindent \parindent1101 1102 % The actual amount labels will be indented is1103 % \IEEElabelindent multiplied by the factor below1104 % corresponding to the level of nesting depth1105 % This provides a means by which the user can1106 % alter the effective \IEEElabelindent for deeper1107 % levels1108 % There may not be such a thing as correct "standard IEEE"1109 % values. What IEEE actually does may depend on the specific1110 % circumstances.1111 % The first list level almost always has full indention.1112 % The second levels I‘ve seen have only 75% of the normal indentation1113 % Three level or greater nestings are very rare. I am guessing1114 % that they don‘t use any indentation.1115 \def\IEEElabelindentfactori{1.0} % almost always one1116 \def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases1117 \def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0?1118 \def\IEEElabelindentfactoriv{0.0}1119 \def\IEEElabelindentfactorv{0.0}1120 \def\IEEElabelindentfactorvi{0.0}1121 1122 % value actually used within IED lists, it is auto1123 % set to one of the 6 values above1124 % global changes here have no effect1125 \def\IEEElabelindentfactor{1.0}1126 1127 % This controls the default spacing between the end of the IED1128 % list labels and the list text, when normal text is used for1129 % the labels.1130 \newdimen\IEEEiednormlabelsep1131 \IEEEiednormlabelsep 0.6em1132 1133 % This controls the default spacing between the end of the IED1134 % list labels and the list text, when math symbols are used for1135 % the labels (nomenclature lists). IEEE usually increases the 1136 % spacing in these cases1137 \newdimen\IEEEiedmathlabelsep1138 \IEEEiedmathlabelsep 1.2em1139 1140 % This controls the extra vertical separation put above and1141 % below each IED list. IEEE usually puts a little extra spacing1142 % around each list. However, this spacing is barely noticeable.1143 \newskip\IEEEiedtopsep1144 \IEEEiedtopsep 2pt plus 1pt minus 1pt1145 1146 1147 % This command is executed within each IED list environment1148 % at the beginning of the list. You can use this to set the 1149 % parameters for some/all your IED list(s) without disturbing 1150 % global parameters that affect things other than lists.1151 % i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}}1152 % will alter the \labelsep for the next list(s) until 1153 % \IEEEiedlistdecl is redefined. 1154 \def\IEEEiedlistdecl{\relax}1155 1156 % This command provides an easy way to set \leftmargin based1157 % on the \labelwidth, \labelsep and the argument \IEEElabelindent1158 % Usage: \IEEEcalcleftmargin{width-to-indent-the-label}1159 % output is in the \leftmargin variable, i.e., effectively:1160 % \leftmargin = argument + \labelwidth + \labelsep1161 % Note controlled spacing here, shield end of lines with %1162 \def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}%1163 \addtolength{\leftmargin}{\labelwidth}%1164 \addtolength{\leftmargin}{\labelsep}}1165 1166 % This command provides an easy way to set \labelwidth to the1167 % width of the given text. It is the same as1168 % \settowidth{\labelwidth}{label-text}1169 % and useful as a shorter alternative.1170 % Typically used to set \labelwidth to be the width1171 % of the longest label in the list1172 \def\IEEEsetlabelwidth#1{\settowidth{\labelwidth}{#1}}1173 1174 % When this command is executed, IED lists will use the 1175 % IEEEiedmathlabelsep label separation rather than the normal1176 % spacing. To have an effect, this command must be executed via1177 % the \IEEEiedlistdecl or within the option of the IED list1178 % environments.1179 \def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}}1180 1181 % A flag which controls whether the IED lists automatically1182 % calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep1183 % Useful if you want to specify your own \leftmargin1184 % This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse) 1185 % via the \IEEEiedlistdecl or within the option of the IED list1186 % environments to have an effect.1187 \newif\ifIEEEnocalcleftmargin1188 \IEEEnocalcleftmarginfalse1189 1190 % A flag which controls whether \IEEElabelindent is multiplied by1191 % the \IEEElabelindentfactor for each list level.1192 % This flag must be set via the \IEEEiedlistdecl or within the option 1193 % of the IED list environments to have an effect.1194 \newif\ifIEEEnolabelindentfactor1195 \IEEEnolabelindentfactorfalse1196 1197 1198 % internal variable to indicate type of IED label1199 % justification1200 % 0 - left; 1 - center; 2 - right1201 \def\@IEEEiedjustify{0}1202 1203 1204 % commands to allow the user to control IED1205 % label justifications. Use these commands within1206 % the IED environment option or in the \IEEEiedlistdecl1207 % Note that changing the normal list justifications1208 % is nonstandard and IEEE may not like it if you do so!1209 % I include these commands as they may be helpful to1210 % those who are using these enhanced list controls for1211 % other non-IEEE related LaTeX work.1212 % itemize and enumerate automatically default to right1213 % justification, description defaults to left.1214 \def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left1215 \def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center1216 \def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right1217 1218 1219 1220 1221 % commands to save to and restore from the list parameter copies1222 % this allows us to set all the list parameters within1223 % the list_decl and prevent \list (and its \@list) 1224 % from overriding any of our parameters1225 % V1.6 use \edefs instead of dimen‘s to conserve dimen registers1226 % Note controlled spacing here, shield end of lines with %1227 \def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}%1228 \edef\@IEEEiedlabelwidth{\the\labelwidth}%1229 \edef\@IEEEiedlabelsep{\the\labelsep}%1230 \edef\@IEEEiedleftmargin{\the\leftmargin}%1231 \edef\@IEEEiedpartopsep{\the\partopsep}%1232 \edef\@IEEEiedparsep{\the\parsep}%1233 \edef\@IEEEieditemsep{\the\itemsep}%1234 \edef\@IEEEiedrightmargin{\the\rightmargin}%1235 \edef\@IEEEiedlistparindent{\the\listparindent}%1236 \edef\@IEEEieditemindent{\the\itemindent}}1237 1238 % Note controlled spacing here1239 \def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax%1240 \labelwidth\@IEEEiedlabelwidth\relax%1241 \labelsep\@IEEEiedlabelsep\relax%1242 \leftmargin\@IEEEiedleftmargin\relax%1243 \partopsep\@IEEEiedpartopsep\relax%1244 \parsep\@IEEEiedparsep\relax%1245 \itemsep\@IEEEieditemsep\relax%1246 \rightmargin\@IEEEiedrightmargin\relax%1247 \listparindent\@IEEEiedlistparindent\relax%1248 \itemindent\@IEEEieditemindent\relax}1249 1250 1251 % v1.6b provide original LaTeX IED list environments1252 % note that latex.ltx defines \itemize and \enumerate, but not \description1253 % which must be created by the base classes1254 % save original LaTeX itemize and enumerate1255 \let\LaTeXitemize\itemize1256 \let\endLaTeXitemize\enditemize1257 \let\LaTeXenumerate\enumerate1258 \let\endLaTeXenumerate\endenumerate1259 1260 % provide original LaTeX description environment from article.cls1261 \newenvironment{LaTeXdescription}1262 {\list{}{\labelwidth\z@ \itemindent-\leftmargin1263 \let\makelabel\descriptionlabel}}1264 {\endlist}1265 \newcommand*\descriptionlabel[1]{\hspace\labelsep1266 \normalfont\bfseries #1}1267 1268 1269 % override LaTeX‘s default IED lists1270 \def\itemize{\@IEEEitemize}1271 \def\enditemize{\@endIEEEitemize}1272 \def\enumerate{\@IEEEenumerate}1273 \def\endenumerate{\@endIEEEenumerate}1274 \def\description{\@IEEEdescription}1275 \def\enddescription{\@endIEEEdescription}1276 1277 % provide the user with aliases - may help those using packages that1278 % override itemize, enumerate, or description1279 \def\IEEEitemize{\@IEEEitemize}1280 \def\endIEEEitemize{\@endIEEEitemize}1281 \def\IEEEenumerate{\@IEEEenumerate}1282 \def\endIEEEenumerate{\@endIEEEenumerate}1283 \def\IEEEdescription{\@IEEEdescription}1284 \def\endIEEEdescription{\@endIEEEdescription}1285 1286 1287 % V1.6 we want to keep the IEEEtran IED list definitions as our own internal1288 % commands so they are protected against redefinition1289 \def\@IEEEitemize{\@ifnextchar[{\@@IEEEitemize}{\@@IEEEitemize[\relax]}}1290 \def\@IEEEenumerate{\@ifnextchar[{\@@IEEEenumerate}{\@@IEEEenumerate[\relax]}}1291 \def\@IEEEdescription{\@ifnextchar[{\@@IEEEdescription}{\@@IEEEdescription[\relax]}}1292 \def\@endIEEEitemize{\endlist}1293 \def\@endIEEEenumerate{\endlist}1294 \def\@endIEEEdescription{\endlist}1295 1296 1297 % DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS1298 % AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS1299 % IEEEtran itemized list MDS 1/20011300 % Note controlled spacing here, shield end of lines with %1301 \def\@@IEEEitemize[#1]{%1302 \ifnum\@itemdepth>3\relax\@toodeep\else%1303 \ifnum\@listdepth>5\relax\@toodeep\else%1304 \advance\@itemdepth\@ne%1305 \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%1306 % get the labelindentfactor for this level1307 \advance\@listdepth\@ne% we need to know what the level WILL be1308 \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%1309 \advance\@listdepth-\@ne% undo our increment1310 \def\@IEEEiedjustify{2}% right justified labels are default1311 % set other defaults1312 \IEEEnocalcleftmarginfalse%1313 \IEEEnolabelindentfactorfalse%1314 \topsep\IEEEiedtopsep%1315 \IEEElabelindent\IEEEilabelindent%1316 \labelsep\IEEEiednormlabelsep%1317 \partopsep 0ex%1318 \parsep 0ex%1319 \itemsep 0ex%1320 \rightmargin 0em%1321 \listparindent 0em%1322 \itemindent 0em%1323 % calculate the label width1324 % the user can override this later if1325 % they specified a \labelwidth1326 \settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}%1327 \@IEEEsavelistparams% save our list parameters1328 \list{\csname\@itemitem\endcsname}{%1329 \@IEEErestorelistparams% override any list{} changes1330 % to our globals1331 \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel1332 \IEEEiedlistdecl% let user alter parameters1333 #1\relax%1334 % If the user has requested not to use the1335 % labelindent factor, don‘t revise \labelindent1336 \ifIEEEnolabelindentfactor\relax%1337 \else\IEEElabelindent=\IEEElabelindentfactor\labelindent%1338 \fi%1339 % Unless the user has requested otherwise,1340 % calculate our left margin based1341 % on \IEEElabelindent, \labelwidth and1342 % \labelsep1343 \ifIEEEnocalcleftmargin\relax%1344 \else\IEEEcalcleftmargin{\IEEElabelindent}%1345 \fi}\fi\fi}%1346 1347 1348 % DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS1349 % AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS1350 % IEEEtran enumerate list MDS 1/20011351 % Note controlled spacing here, shield end of lines with %1352 \def\@@IEEEenumerate[#1]{%1353 \ifnum\@enumdepth>3\relax\@toodeep\else%1354 \ifnum\@listdepth>5\relax\@toodeep\else%1355 \advance\@enumdepth\@ne%1356 \edef\@enumctr{enum\romannumeral\the\@enumdepth}%1357 % get the labelindentfactor for this level1358 \advance\@listdepth\@ne% we need to know what the level WILL be1359 \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%1360 \advance\@listdepth-\@ne% undo our increment1361 \def\@IEEEiedjustify{2}% right justified labels are default1362 % set other defaults1363 \IEEEnocalcleftmarginfalse%1364 \IEEEnolabelindentfactorfalse%1365 \topsep\IEEEiedtopsep%1366 \IEEElabelindent\IEEEelabelindent%1367 \labelsep\IEEEiednormlabelsep%1368 \partopsep 0ex%1369 \parsep 0ex%1370 \itemsep 0ex%1371 \rightmargin 0em%1372 \listparindent 0em%1373 \itemindent 0em%1374 % calculate the label width1375 % We‘ll set it to the width suitable for all labels using1376 % normalfont 1) to 9)1377 % The user can override this later1378 \settowidth{\labelwidth}{9)}%1379 \@IEEEsavelistparams% save our list parameters1380 \list{\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}%1381 \@IEEErestorelistparams% override any list{} changes1382 % to our globals1383 \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel1384 \IEEEiedlistdecl% let user alter parameters 1385 #1\relax%1386 % If the user has requested not to use the1387 % IEEElabelindent factor, don‘t revise \IEEElabelindent1388 \ifIEEEnolabelindentfactor\relax%1389 \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%1390 \fi%1391 % Unless the user has requested otherwise,1392 % calculate our left margin based1393 % on \IEEElabelindent, \labelwidth and1394 % \labelsep1395 \ifIEEEnocalcleftmargin\relax%1396 \else\IEEEcalcleftmargin{\IEEElabelindent}%1397 \fi}\fi\fi}%1398 1399 1400 % DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS1401 % AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS1402 % IEEEtran description list MDS 1/20011403 % Note controlled spacing here, shield end of lines with %1404 \def\@@IEEEdescription[#1]{%1405 \ifnum\@listdepth>5\relax\@toodeep\else%1406 % get the labelindentfactor for this level1407 \advance\@listdepth\@ne% we need to know what the level WILL be1408 \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}%1409 \advance\@listdepth-\@ne% undo our increment1410 \def\@IEEEiedjustify{0}% left justified labels are default1411 % set other defaults1412 \IEEEnocalcleftmarginfalse%1413 \IEEEnolabelindentfactorfalse%1414 \topsep\IEEEiedtopsep% 1415 \IEEElabelindent\IEEEdlabelindent%1416 % assume normal labelsep1417 \labelsep\IEEEiednormlabelsep%1418 \partopsep 0ex%1419 \parsep 0ex%1420 \itemsep 0ex%1421 \rightmargin 0em%1422 \listparindent 0em%1423 \itemindent 0em%1424 % Bogus label width in case the user forgets1425 % to set it.1426 % TIP: If you want to see what a variable‘s width is you1427 % can use the TeX command \showthe\width-variable to 1428 % display it on the screen during compilation 1429 % (This might be helpful to know when you need to find out1430 % which label is the widest)1431 \settowidth{\labelwidth}{Hello}%1432 \@IEEEsavelistparams% save our list parameters1433 \list{}{\@IEEErestorelistparams% override any list{} changes1434 % to our globals1435 \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel1436 \IEEEiedlistdecl% let user alter parameters 1437 #1\relax%1438 % If the user has requested not to use the1439 % labelindent factor, don‘t revise \IEEElabelindent1440 \ifIEEEnolabelindentfactor\relax%1441 \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent%1442 \fi%1443 % Unless the user has requested otherwise,1444 % calculate our left margin based1445 % on \IEEElabelindent, \labelwidth and1446 % \labelsep1447 \ifIEEEnocalcleftmargin\relax%1448 \else\IEEEcalcleftmargin{\IEEElabelindent}\relax%1449 \fi}\fi}1450 1451 % v1.6b we use one makelabel that does justification as needed.1452 \def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax1453 \makebox[\labelwidth][l]{\normalfont #1}\else1454 \if\@IEEEiedjustify 1\relax1455 \makebox[\labelwidth][c]{\normalfont #1}\else1456 \makebox[\labelwidth][r]{\normalfont #1}\fi\fi}1457 1458 1459 % VERSE and QUOTE1460 % V1.7 define environments with newenvironment1461 \newenvironment{verse}{\let\\=\@centercr1462 \list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent1463 \rightmargin\leftmargin\advance\leftmargin 1.5em}\item\relax}1464 {\endlist}1465 \newenvironment{quotation}{\list{}{\listparindent 1.5em \itemindent\listparindent1466 \rightmargin\leftmargin \parsep 0pt plus 1pt}\item\relax}1467 {\endlist}1468 \newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item\relax}1469 {\endlist}1470 1471 1472 % \titlepage1473 % provided only for backward compatibility. \maketitle is the correct1474 % way to create the title page. 1475 \newif\if@restonecol1476 \def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn1477 \else \newpage \fi \thispagestyle{empty}\c@page\z@}1478 \def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}1479 1480 % standard values from article.cls1481 \arraycolsep 5pt1482 \arrayrulewidth .4pt1483 \doublerulesep 2pt1484 1485 \tabcolsep 6pt1486 \tabbingsep 0.5em1487 1488 1489 %% FOOTNOTES1490 %1491 %\skip\footins 10pt plus 4pt minus 2pt1492 % V1.6 respond to changes in font size1493 % space added above the footnotes (if present)1494 \skip\footins 0.9\baselineskip plus 0.4\baselineskip minus 0.2\baselineskip1495 1496 % V1.6, we need to make \footnotesep responsive to changes1497 % in \baselineskip or strange spacings will result when in1498 % draft mode. Here is a little LaTeX secret - \footnotesep1499 % determines the height of an invisible strut that is placed1500 % *above* the baseline of footnotes after the first. Since1501 % LaTeX considers the space for characters to be 0.7/baselineskip1502 % above the baseline and 0.3/baselineskip below it, we need to1503 % use 0.7/baselineskip as a \footnotesep to maintain equal spacing1504 % between all the lines of the footnotes. IEEE often uses a tad1505 % more, so use 0.8\baselineskip. This slightly larger value also helps1506 % the text to clear the footnote marks. Note that \thanks in IEEEtran1507 % uses its own value of \footnotesep which is set in \maketitle.1508 {\footnotesize1509 \global\footnotesep 0.8\baselineskip}1510 1511 1512 \skip\@mpfootins = \skip\footins1513 \fboxsep = 3pt1514 \fboxrule = .4pt1515 % V1.6 use 1em, then use LaTeX2e‘s \@makefnmark1516 % Note that IEEE normally *left* aligns the footnote marks, so we don‘t need1517 % box resizing tricks here.1518 \long\def\@makefntext#1{\parindent 1em\indent\hbox{\@makefnmark}#1}% V1.6 use 1em1519 % V1.7 compsoc does not use superscipts for footnote marks1520 \ifCLASSOPTIONcompsoc1521 \def\@IEEEcompsocmakefnmark{\hbox{\normalfont\@thefnmark.\ }}1522 \long\def\@makefntext#1{\parindent 1em\indent\hbox{\@IEEEcompsocmakefnmark}#1}1523 \fi1524 1525 % IEEE does not use footnote rules1526 \def\footnoterule{}1527 1528 % V1.7 for compsoc, IEEE uses a footnote rule only for \thanks. We devise a "one-shot"1529 % system to implement this.1530 \newif\if@IEEEenableoneshotfootnoterule1531 \@IEEEenableoneshotfootnoterulefalse1532 \ifCLASSOPTIONcompsoc1533 \def\footnoterule{\relax\if@IEEEenableoneshotfootnoterule1534 \kern-5pt1535 \hbox to \columnwidth{\hfill\vrule width 0.5\columnwidth height 0.4pt\hfill}1536 \kern4.6pt1537 \global\@IEEEenableoneshotfootnoterulefalse1538 \else1539 \relax1540 \fi}1541 \fi1542 1543 % V1.6 do not allow LaTeX to break a footnote across multiple pages1544 \interfootnotelinepenalty=100001545 1546 % V1.6 discourage breaks within equations1547 % Note that amsmath normally sets this to 10000,1548 % but LaTeX2e normally uses 100.1549 \interdisplaylinepenalty=25001550 1551 % default allows section depth up to /paragraph1552 \setcounter{secnumdepth}{4}1553 1554 % technotes do not allow /paragraph1555 \ifCLASSOPTIONtechnote1556 \setcounter{secnumdepth}{3}1557 \fi1558 % neither do compsoc conferences1559 \@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}}1560 1561 1562 \newcounter{section}1563 \newcounter{subsection}[section]1564 \newcounter{subsubsection}[subsection]1565 \newcounter{paragraph}[subsubsection]1566 1567 % used only by IEEEtran‘s IEEEeqnarray as other packages may1568 % have their own, different, implementations1569 \newcounter{IEEEsubequation}[equation]1570 1571 % as shown when called by user from \ref, \label and in table of contents1572 \def\theequation{\arabic{equation}} % 11573 \def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} % 1a (used only by IEEEtran‘s IEEEeqnarray)1574 \ifCLASSOPTIONcompsoc1575 % compsoc is all arabic1576 \def\thesection{\arabic{section}} 1577 \def\thesubsection{\thesection.\arabic{subsection}}1578 \def\thesubsubsection{\thesubsection.\arabic{subsubsection}}1579 \def\theparagraph{\thesubsubsection.\arabic{paragraph}}1580 \else1581 \def\thesection{\Roman{section}} % I1582 % V1.7, \mbox prevents breaks around - 1583 \def\thesubsection{\mbox{\thesection-\Alph{subsection}}} % I-A1584 % V1.7 use I-A1 format used by IEEE rather than I-A.11585 \def\thesubsubsection{\thesubsection\arabic{subsubsection}} % I-A11586 \def\theparagraph{\thesubsubsection\alph{paragraph}} % I-A1a1587 \fi1588 1589 % From Heiko Oberdiek. Because of the \mbox in \thesubsection, we need to1590 % tell hyperref to disable the \mbox command when making PDF bookmarks.1591 % This done already with hyperref.sty version 6.74o and later, but1592 % it will not hurt to do it here again for users of older versions.1593 \@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}%1594 \g@addto@macro\pdfstringdefPreHook{\let\mbox\relax}1595 1596 1597 % Main text forms (how shown in main text headings)1598 % V1.6, using \thesection in \thesectiondis allows changes1599 % in the former to automatically appear in the latter1600 \ifCLASSOPTIONcompsoc1601 \ifCLASSOPTIONconference% compsoc conference1602 \def\thesectiondis{\thesection.}1603 \def\thesubsectiondis{\thesectiondis\arabic{subsection}.}1604 \def\thesubsubsectiondis{\thesubsectiondis\arabic{subsubsection}.}1605 \def\theparagraphdis{\thesubsubsectiondis\arabic{paragraph}.}1606 \else% compsoc not conferencs1607 \def\thesectiondis{\thesection}1608 \def\thesubsectiondis{\thesectiondis.\arabic{subsection}}1609 \def\thesubsubsectiondis{\thesubsectiondis.\arabic{subsubsection}}1610 \def\theparagraphdis{\thesubsubsectiondis.\arabic{paragraph}}1611 \fi1612 \else% not compsoc1613 \def\thesectiondis{\thesection.} % I.1614 \def\thesubsectiondis{\Alph{subsection}.} % B.1615 \def\thesubsubsectiondis{\arabic{subsubsection})} % 3)1616 \def\theparagraphdis{\alph{paragraph})} % d)1617 \fi1618 1619 % just like LaTeX2e‘s \@eqnnum1620 \def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1)1621 % IEEEsubequation used only by IEEEtran‘s IEEEeqnarray1622 \def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a)1623 % redirect LaTeX2e‘s equation number display and all that depend on1624 % it, through IEEEtran‘s \theequationdis1625 \def\@eqnnum{\theequationdis}1626 1627 1628 1629 % V1.7 provide string macros as article.cls does1630 \def\contentsname{Contents}1631 \def\listfigurename{List of Figures}1632 \def\listtablename{List of Tables}1633 \def\refname{References}1634 \def\indexname{Index}1635 \def\figurename{Fig.}1636 \def\tablename{TABLE}1637 \@IEEEcompsocconfonly{\def\figurename{Figure}\def\tablename{Table}}1638 \def\partname{Part}1639 \def\appendixname{Appendix}1640 \def\abstractname{Abstract}1641 % IEEE specific names1642 \def\IEEEkeywordsname{Index Terms}1643 \def\IEEEproofname{Proof}1644 1645 1646 % LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS1647 %1648 \def\@pnumwidth{1.55em}1649 \def\@tocrmarg{2.55em}1650 \def\@dotsep{4.5}1651 \setcounter{tocdepth}{3}1652 1653 % adjusted some spacings here so that section numbers will not easily 1654 % collide with the section titles. 1655 % VIII; VIII-A; and VIII-A.1 are usually the worst offenders.1656 % MDS 1/20011657 \def\tableofcontents{\section*{\contentsname}\@starttoc{toc}}1658 \def\l@section#1#2{\addpenalty{\@secpenalty}\addvspace{1.0em plus 1pt}%1659 \@tempdima 2.75em \begingroup \parindent \z@ \rightskip \@pnumwidth%1660 \parfillskip-\@pnumwidth {\bfseries\leavevmode #1}\hfil\hbox to\@pnumwidth{\hss #2}\par%1661 \endgroup}1662 % argument format #1:level, #2:labelindent,#3:labelsep1663 \def\l@subsection{\@dottedtocline{2}{2.75em}{3.75em}}1664 \def\l@subsubsection{\@dottedtocline{3}{6.5em}{4.5em}}1665 % must provide \l@ defs for ALL sublevels EVEN if tocdepth1666 % is such as they will not appear in the table of contents1667 % these defs are how TOC knows what level these things are!1668 \def\l@paragraph{\@dottedtocline{4}{6.5em}{5.5em}}1669 \def\l@subparagraph{\@dottedtocline{5}{6.5em}{6.5em}}1670 \def\listoffigures{\section*{\listfigurename}\@starttoc{lof}}1671 \def\l@figure{\@dottedtocline{1}{0em}{2.75em}}1672 \def\listoftables{\section*{\listtablename}\@starttoc{lot}}1673 \let\l@table\l@figure1674 1675 1676 %% Definitions for floats1677 %%1678 %% Normal Floats1679 \floatsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip1680 \textfloatsep 1.7\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip1681 \@fptop 0pt plus 1fil1682 \@fpsep 0.75\baselineskip plus 2fil 1683 \@fpbot 0pt plus 1fil1684 \def\topfraction{0.9}1685 \def\bottomfraction{0.4}1686 \def\floatpagefraction{0.8}1687 % V1.7, let top floats approach 90% of page1688 \def\textfraction{0.1}1689 1690 %% Double Column Floats1691 \dblfloatsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip1692 1693 \dbltextfloatsep 1.7\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip1694 % Note that it would be nice if the rubber here actually worked in LaTeX2e.1695 % There is a long standing limitation in LaTeX, first discovered (to the best1696 % of my knowledge) by Alan Jeffrey in 1992. LaTeX ignores the stretchable1697 % portion of \dbltextfloatsep, and as a result, double column figures can and1698 % do result in an non-integer number of lines in the main text columns with1699 % underfull vbox errors as a consequence. A post to comp.text.tex1700 % by Donald Arseneau confirms that this had not yet been fixed in 1998.1701 % IEEEtran V1.6 will fix this problem for you in the titles, but it doesn‘t1702 % protect you from other double floats. Happy vspace‘ing.1703 1704 \@dblfptop 0pt plus 1fil1705 \@dblfpsep 0.75\baselineskip plus 2fil1706 \@dblfpbot 0pt plus 1fil1707 \def\dbltopfraction{0.8}1708 \def\dblfloatpagefraction{0.8}1709 \setcounter{dbltopnumber}{4}1710 1711 \intextsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip1712 \setcounter{topnumber}{2}1713 \setcounter{bottomnumber}{2}1714 \setcounter{totalnumber}{4}1715 1716 1717 1718 % article class provides these, we should too.1719 \newlength\abovecaptionskip1720 \newlength\belowcaptionskip1721 % but only \abovecaptionskip is used above figure captions and *below* table1722 % captions1723 \setlength\abovecaptionskip{0.5\baselineskip}1724 \setlength\belowcaptionskip{0pt}1725 % V1.6 create hooks in case the caption spacing ever needs to be1726 % overridden by a user1727 \def\@IEEEfigurecaptionsepspace{\vskip\abovecaptionskip\relax}%1728 \def\@IEEEtablecaptionsepspace{\vskip\abovecaptionskip\relax}%1729 1730 1731 % 1.6b revise caption system so that \@makecaption uses two arguments1732 % as with LaTeX2e. Otherwise, there will be problems when using hyperref.1733 \def\@IEEEtablestring{table}1734 1735 \ifCLASSOPTIONcompsoc1736 % V1.7 compsoc \@makecaption1737 \ifCLASSOPTIONconference% compsoc conference1738 \long\def\@makecaption#1#2{%1739 % test if is a for a figure or table1740 \ifx\@captype\@IEEEtablestring%1741 % if a table, do table caption1742 \normalsize\begin{center}{\normalfont\sffamily\normalsize {#1.}~ #2}\end{center}%1743 \@IEEEtablecaptionsepspace1744 % if not a table, format it as a figure1745 \else1746 \@IEEEfigurecaptionsepspace1747 \setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ #2}%1748 \ifdim \wd\@tempboxa >\hsize%1749 % if caption is longer than a line, let it wrap around1750 \setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ }%1751 \parbox[t]{\hsize}{\normalfont\sffamily\normalsize \noindent\unhbox\@tempboxa#2}%1752 % if caption is shorter than a line, center1753 \else%1754 \hbox to\hsize{\normalfont\sffamily\normalsize\hfil\box\@tempboxa\hfil}%1755 \fi\fi}1756 \else% nonconference compsoc1757 \long\def\@makecaption#1#2{%1758 % test if is a for a figure or table1759 \ifx\@captype\@IEEEtablestring%1760 % if a table, do table caption1761 \normalsize\begin{center}{\normalfont\sffamily\normalsize #1}\\{\normalfont\sffamily\normalsize #2}\end{center}%1762 \@IEEEtablecaptionsepspace1763 % if not a table, format it as a figure1764 \else1765 \@IEEEfigurecaptionsepspace1766 \setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ #2}%1767 \ifdim \wd\@tempboxa >\hsize%1768 % if caption is longer than a line, let it wrap around1769 \setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ }%1770 \parbox[t]{\hsize}{\normalfont\sffamily\normalsize \noindent\unhbox\@tempboxa#2}%1771 % if caption is shorter than a line, left justify1772 \else%1773 \hbox to\hsize{\normalfont\sffamily\normalsize\box\@tempboxa\hfil}%1774 \fi\fi}1775 \fi1776 1777 \else% traditional noncompsoc \@makecaption1778 \long\def\@makecaption#1#2{%1779 % test if is a for a figure or table1780 \ifx\@captype\@IEEEtablestring%1781 % if a table, do table caption1782 \footnotesize\begin{center}{\normalfont\footnotesize #1}\\{\normalfont\footnotesize\scshape #2}\end{center}%1783 \@IEEEtablecaptionsepspace1784 % if not a table, format it as a figure1785 \else1786 \@IEEEfigurecaptionsepspace1787 % 3/2001 use footnotesize, not small; use two nonbreaking spaces, not one1788 \setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}~~ #2}%1789 \ifdim \wd\@tempboxa >\hsize%1790 % if caption is longer than a line, let it wrap around1791 \setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}~~ }%1792 \parbox[t]{\hsize}{\normalfont\footnotesize\noindent\unhbox\@tempboxa#2}%1793 % if caption is shorter than a line, center if conference, left justify otherwise1794 \else%1795 \ifCLASSOPTIONconference \hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}%1796 \else \hbox to\hsize{\normalfont\footnotesize\box\@tempboxa\hfil}%1797 \fi\fi\fi}1798 \fi1799 1800 1801 1802 % V1.7 disable captions class option, do so in a way that retains operation of \label1803 % within \caption1804 \ifCLASSOPTIONcaptionsoff1805 \long\def\@makecaption#1#2{\vspace*{2em}\footnotesize\begin{center}{\footnotesize #1}\end{center}%1806 \let\@IEEEtemporiglabeldefsave\label1807 \let\@IEEEtemplabelargsave\relax1808 \def\label##1{\gdef\@IEEEtemplabelargsave{##1}}%1809 \setbox\@tempboxa\hbox{#2}%1810 \let\label\@IEEEtemporiglabeldefsave1811 \ifx\@IEEEtemplabelargsave\relax\else\label{\@IEEEtemplabelargsave}\fi}1812 \fi1813 1814 1815 % V1.7 define end environments with \def not \let so as to work OK with1816 % preview-latex1817 \newcounter{figure}1818 \def\thefigure{\@arabic\c@figure}1819 \def\fps@figure{tbp}1820 \def\ftype@figure{1}1821 \def\ext@figure{lof}1822 \def\fnum@figure{\figurename~\thefigure}1823 \def\figure{\@float{figure}}1824 \def\endfigure{\end@float}1825 \@namedef{figure*}{\@dblfloat{figure}}1826 \@namedef{endfigure*}{\end@dblfloat}1827 \newcounter{table}1828 \ifCLASSOPTIONcompsoc1829 \def\thetable{\arabic{table}}1830 \else1831 \def\thetable{\@Roman\c@table}1832 \fi1833 \def\fps@table{tbp}1834 \def\ftype@table{2}1835 \def\ext@table{lot}1836 \def\fnum@table{\tablename~\thetable}1837 % V1.6 IEEE uses 8pt text for tables1838 % to default to footnotesize, we hack into LaTeX2e‘s \@floatboxreset and pray1839 \def\table{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@float{table}}1840 \def\endtable{\end@float}1841 % v1.6b double column tables need to default to footnotesize as well.1842 \@namedef{table*}{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@dblfloat{table}}1843 \@namedef{endtable*}{\end@dblfloat}1844 1845 1846 1847 1848 %%1849 %% START OF IEEEeqnarry DEFINITIONS1850 %%1851 %% Inspired by the concepts, examples, and previous works of LaTeX 1852 %% coders and developers such as Donald Arseneau, Fred Bartlett, 1853 %% David Carlisle, Tony Liu, Frank Mittelbach, Piet van Oostrum, 1854 %% Roland Winkler and Mark Wooding.1855 %% I don‘t make the claim that my work here is even near their calibre. ;)1856 1857 1858 % hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting1859 \def\@IEEEclspkgerror{\ClassError{IEEEtran}}1860 1861 \newif\if@IEEEeqnarraystarform% flag to indicate if the environment was called as the star form1862 \@IEEEeqnarraystarformfalse1863 1864 \newif\if@advanceIEEEeqncolcnt% tracks if the environment should advance the col counter1865 % allows a way to make an \IEEEeqnarraybox that can be used within an \IEEEeqnarray1866 % used by IEEEeqnarraymulticol so that it can work properly in both1867 \@advanceIEEEeqncolcnttrue1868 1869 \newcount\@IEEEeqnnumcols % tracks how many IEEEeqnarray cols are defined1870 \newcount\@IEEEeqncolcnt % tracks how many IEEEeqnarray cols the user actually used1871 1872 1873 % The default math style used by the columns1874 \def\IEEEeqnarraymathstyle{\displaystyle}1875 % The default text style used by the columns1876 % default to using the current font1877 \def\IEEEeqnarraytextstyle{\relax}1878 1879 % like the iedlistdecl but for \IEEEeqnarray1880 \def\IEEEeqnarraydecl{\relax}1881 \def\IEEEeqnarrayboxdecl{\relax}1882 1883 % \yesnumber is the opposite of \nonumber1884 % a novel concept with the same def as the equationarray package1885 % However, we give IEEE versions too since some LaTeX packages such as 1886 % the MDWtools mathenv.sty redefine \nonumber to something else.1887 \providecommand{\yesnumber}{\global\@eqnswtrue}1888 \def\IEEEyesnumber{\global\@eqnswtrue}1889 \def\IEEEnonumber{\global\@eqnswfalse}1890 1891 1892 \def\IEEEyessubnumber{\global\@IEEEissubequationtrue\global\@eqnswtrue%1893 \if@IEEEeqnarrayISinner% only do something inside an IEEEeqnarray1894 \if@IEEElastlinewassubequation\addtocounter{equation}{-1}\else\setcounter{IEEEsubequation}{1}\fi%1895 \def\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\fi}1896 1897 % flag to indicate that an equation is a sub equation1898 \newif\if@IEEEissubequation%1899 \@IEEEissubequationfalse1900 1901 % allows users to "push away" equations that get too close to the equation numbers1902 \def\IEEEeqnarraynumspace{\hphantom{\if@IEEEissubequation\theIEEEsubequationdis\else\theequationdis\fi}}1903 1904 % provides a way to span multiple columns within IEEEeqnarray environments1905 % will consider \if@advanceIEEEeqncolcnt before globally advancing the1906 % column counter - so as to work within \IEEEeqnarraybox1907 % usage: \IEEEeqnarraymulticol{number cols. to span}{col type}{cell text}1908 \long\def\IEEEeqnarraymulticol#1#2#3{\multispan{#1}%1909 % check if column is defined1910 \relax\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined%1911 \csname @IEEEeqnarraycolPRE#2\endcsname#3\relax\relax\relax\relax\relax%1912 \relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST#2\endcsname%1913 \else% if not, error and use default type1914 \@IEEEclspkgerror{Invalid column type "#2" in \string\IEEEeqnarraymulticol.\MessageBreak1915 Using a default centering column instead}%1916 {You must define IEEEeqnarray column types before use.}%1917 \csname @IEEEeqnarraycolPRE@IEEEdefault\endcsname#3\relax\relax\relax\relax\relax%1918 \relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST@IEEEdefault\endcsname%1919 \fi%1920 % advance column counter only if the IEEEeqnarray environment wants it1921 \if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by #1\relax\fi}1922 1923 % like \omit, but maintains track of the column counter for \IEEEeqnarray1924 \def\IEEEeqnarrayomit{\omit\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by 1\relax\fi}1925 1926 1927 % provides a way to define a letter referenced column type1928 % usage: \IEEEeqnarraydefcol{col. type letter/name}{pre insertion text}{post insertion text}1929 \def\IEEEeqnarraydefcol#1#2#3{\expandafter\def\csname @IEEEeqnarraycolPRE#1\endcsname{#2}%1930 \expandafter\def\csname @IEEEeqnarraycolPOST#1\endcsname{#3}%1931 \expandafter\def\csname @IEEEeqnarraycolDEF#1\endcsname{1}}1932 1933 1934 % provides a way to define a numerically referenced inter-column glue types1935 % usage: \IEEEeqnarraydefcolsep{col. glue number}{glue definition}1936 \def\IEEEeqnarraydefcolsep#1#2{\expandafter\def\csname @IEEEeqnarraycolSEP\romannumeral #1\endcsname{#2}%1937 \expandafter\def\csname @IEEEeqnarraycolSEPDEF\romannumeral #1\endcsname{1}}1938 1939 1940 \def\@IEEEeqnarraycolisdefined{1}% just a macro for 1, used for checking undefined column types1941 1942 1943 % expands and appends the given argument to the \@IEEEtrantmptoksA token list1944 % used to build up the \halign preamble1945 \def\@IEEEappendtoksA#1{\edef\@@IEEEappendtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA #1}}%1946 \@@IEEEappendtoksA}1947 1948 % also appends to \@IEEEtrantmptoksA, but does not expand the argument1949 % uses \toks8 as a scratchpad register1950 \def\@IEEEappendNOEXPANDtoksA#1{\toks8={#1}%1951 \edef\@@IEEEappendNOEXPANDtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA\the\toks8}}%1952 \@@IEEEappendNOEXPANDtoksA}1953 1954 % define some common column types for the user1955 % math1956 \IEEEeqnarraydefcol{l}{$\IEEEeqnarraymathstyle}{$\hfil}1957 \IEEEeqnarraydefcol{c}{\hfil$\IEEEeqnarraymathstyle}{$\hfil}1958 \IEEEeqnarraydefcol{r}{\hfil$\IEEEeqnarraymathstyle}{$}1959 \IEEEeqnarraydefcol{L}{$\IEEEeqnarraymathstyle{}}{{}$\hfil}1960 \IEEEeqnarraydefcol{C}{\hfil$\IEEEeqnarraymathstyle{}}{{}$\hfil}1961 \IEEEeqnarraydefcol{R}{\hfil$\IEEEeqnarraymathstyle{}}{{}$}1962 % text1963 \IEEEeqnarraydefcol{s}{\IEEEeqnarraytextstyle}{\hfil}1964 \IEEEeqnarraydefcol{t}{\hfil\IEEEeqnarraytextstyle}{\hfil}1965 \IEEEeqnarraydefcol{u}{\hfil\IEEEeqnarraytextstyle}{}1966 1967 % vertical rules1968 \IEEEeqnarraydefcol{v}{}{\vrule width\arrayrulewidth}1969 \IEEEeqnarraydefcol{vv}{\vrule width\arrayrulewidth\hfil}{\hfil\vrule width\arrayrulewidth}1970 \IEEEeqnarraydefcol{V}{}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth}1971 \IEEEeqnarraydefcol{VV}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth\hfil}%1972 {\hfil\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth}1973 1974 % horizontal rules1975 \IEEEeqnarraydefcol{h}{}{\leaders\hrule height\arrayrulewidth\hfil}1976 \IEEEeqnarraydefcol{H}{}{\leaders\vbox{\hrule width\arrayrulewidth\vskip\doublerulesep\hrule width\arrayrulewidth}\hfil}1977 1978 % plain1979 \IEEEeqnarraydefcol{x}{}{}1980 \IEEEeqnarraydefcol{X}{$}{$}1981 1982 % the default column type to use in the event a column type is not defined1983 \IEEEeqnarraydefcol{@IEEEdefault}{\hfil$\IEEEeqnarraymathstyle}{$\hfil}1984 1985 1986 % a zero tabskip (used for "-" col types)1987 \def\@IEEEeqnarraycolSEPzero{0pt plus 0pt minus 0pt}1988 % a centering tabskip (used for "+" col types)1989 \def\@IEEEeqnarraycolSEPcenter{1000pt plus 0pt minus 1000pt}1990 1991 % top level default tabskip glues for the start, end, and inter-column1992 % may be reset within environments not always at the top level, e.g., \IEEEeqnarraybox1993 \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPcenter}% default start glue1994 \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPcenter}% default end glue1995 \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue1996 1997 1998 1999 % creates a vertical rule that extends from the bottom to the top a a cell2000 % Provided in case other packages redefine \vline some other way.2001 % usage: \IEEEeqnarrayvrule[rule thickness]2002 % If no argument is provided, \arrayrulewidth will be used for the rule thickness. 2003 \newcommand\IEEEeqnarrayvrule[1][\arrayrulewidth]{\vrule\@width#1\relax}2004 2005 % creates a blank separator row2006 % usage: \IEEEeqnarrayseprow[separation length][font size commands]2007 % default is \IEEEeqnarrayseprow[0.25\normalbaselineskip][\relax]2008 % blank arguments inherit the default values2009 % uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers2010 \def\IEEEeqnarrayseprow{\relax\@ifnextchar[{\@IEEEeqnarrayseprow}{\@IEEEeqnarrayseprow[0.25\normalbaselineskip]}}2011 \def\@IEEEeqnarrayseprow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprow[#1]}{\@@IEEEeqnarrayseprow[#1][\relax]}}2012 \def\@@IEEEeqnarrayseprow[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}%2013 \ifx\@IEEEeqnarrayseprowARGONE\@empty%2014 % get the skip value, based on the font commands2015 % use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip32016 % assign within a bogus box to confine the font changes2017 {\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}%2018 \else%2019 {\setbox0=\hbox{#2\relax\global\skip5=#1}}%2020 \fi%2021 \@IEEEeqnarrayhoptolastcolumn\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax}2022 2023 % creates a blank separator row, but omits all the column templates2024 % usage: \IEEEeqnarrayseprowcut[separation length][font size commands]2025 % default is \IEEEeqnarrayseprowcut[0.25\normalbaselineskip][\relax]2026 % blank arguments inherit the default values2027 % uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers2028 \def\IEEEeqnarrayseprowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols2029 % advance column counter only if the IEEEeqnarray environment wants it2030 \if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%2031 \@ifnextchar[{\@IEEEeqnarrayseprowcut}{\@IEEEeqnarrayseprowcut[0.25\normalbaselineskip]}}2032 \def\@IEEEeqnarrayseprowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprowcut[#1]}{\@@IEEEeqnarrayseprowcut[#1][\relax]}}2033 \def\@@IEEEeqnarrayseprowcut[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}%2034 \ifx\@IEEEeqnarrayseprowARGONE\@empty%2035 % get the skip value, based on the font commands2036 % use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip32037 % assign within a bogus box to confine the font changes2038 {\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}%2039 \else%2040 {\setbox0=\hbox{#2\relax\global\skip5=#1}}%2041 \fi%2042 \IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax}2043 2044 2045 2046 % draws a single rule across all the columns optional2047 % argument determines the rule width, \arrayrulewidth is the default2048 % updates column counter as needed and turns off struts2049 % usage: \IEEEeqnarrayrulerow[rule line thickness]2050 \def\IEEEeqnarrayrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols2051 % advance column counter only if the IEEEeqnarray environment wants it2052 \if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%2053 \@ifnextchar[{\@IEEEeqnarrayrulerow}{\@IEEEeqnarrayrulerow[\arrayrulewidth]}}2054 \def\@IEEEeqnarrayrulerow[#1]{\leaders\hrule height#1\hfil\relax% put in our rule 2055 % turn off any struts2056 \IEEEeqnarraystrutsize{0pt}{0pt}[\relax]\relax}2057 2058 2059 % draws a double rule by using a single rule row, a separator row, and then2060 % another single rule row 2061 % first optional argument determines the rule thicknesses, \arrayrulewidth is the default2062 % second optional argument determines the rule spacing, \doublerulesep is the default2063 % usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing]2064 \def\IEEEeqnarraydblrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols2065 % advance column counter only if the IEEEeqnarray environment wants it2066 \if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%2067 \@ifnextchar[{\@IEEEeqnarraydblrulerow}{\@IEEEeqnarraydblrulerow[\arrayrulewidth]}}2068 \def\@IEEEeqnarraydblrulerow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerow[#1]}%2069 {\@@IEEEeqnarraydblrulerow[#1][\doublerulesep]}}2070 \def\@@IEEEeqnarraydblrulerow[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}%2071 % we allow the user to say \IEEEeqnarraydblrulerow[][]2072 \ifx\@IEEEeqnarraydblrulerowARG\@empty%2073 \@IEEEeqnarrayrulerow[\arrayrulewidth]%2074 \else%2075 \@IEEEeqnarrayrulerow[#1]\relax%2076 \fi%2077 \def\@IEEEeqnarraydblrulerowARG{#2}%2078 \ifx\@IEEEeqnarraydblrulerowARG\@empty%2079 \\\IEEEeqnarrayseprow[\doublerulesep][\relax]%2080 \else%2081 \\\IEEEeqnarrayseprow[#2][\relax]%2082 \fi%2083 \\\multispan{\@IEEEeqnnumcols}%2084 % advance column counter only if the IEEEeqnarray environment wants it2085 \if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%2086 \def\@IEEEeqnarraydblrulerowARG{#1}%2087 \ifx\@IEEEeqnarraydblrulerowARG\@empty%2088 \@IEEEeqnarrayrulerow[\arrayrulewidth]%2089 \else%2090 \@IEEEeqnarrayrulerow[#1]%2091 \fi%2092 }2093 2094 % draws a double rule by using a single rule row, a separator (cutting) row, and then2095 % another single rule row 2096 % first optional argument determines the rule thicknesses, \arrayrulewidth is the default2097 % second optional argument determines the rule spacing, \doublerulesep is the default2098 % usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing]2099 \def\IEEEeqnarraydblrulerowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols2100 % advance column counter only if the IEEEeqnarray environment wants it2101 \if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%2102 \@ifnextchar[{\@IEEEeqnarraydblrulerowcut}{\@IEEEeqnarraydblrulerowcut[\arrayrulewidth]}}2103 \def\@IEEEeqnarraydblrulerowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerowcut[#1]}%2104 {\@@IEEEeqnarraydblrulerowcut[#1][\doublerulesep]}}2105 \def\@@IEEEeqnarraydblrulerowcut[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}%2106 % we allow the user to say \IEEEeqnarraydblrulerow[][]2107 \ifx\@IEEEeqnarraydblrulerowARG\@empty%2108 \@IEEEeqnarrayrulerow[\arrayrulewidth]%2109 \else%2110 \@IEEEeqnarrayrulerow[#1]%2111 \fi%2112 \def\@IEEEeqnarraydblrulerowARG{#2}%2113 \ifx\@IEEEeqnarraydblrulerowARG\@empty%2114 \\\IEEEeqnarrayseprowcut[\doublerulesep][\relax]%2115 \else%2116 \\\IEEEeqnarrayseprowcut[#2][\relax]%2117 \fi%2118 \\\multispan{\@IEEEeqnnumcols}%2119 % advance column counter only if the IEEEeqnarray environment wants it2120 \if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi%2121 \def\@IEEEeqnarraydblrulerowARG{#1}%2122 \ifx\@IEEEeqnarraydblrulerowARG\@empty%2123 \@IEEEeqnarrayrulerow[\arrayrulewidth]%2124 \else%2125 \@IEEEeqnarrayrulerow[#1]%2126 \fi%2127 }2128 2129 2130 2131 % inserts a full row‘s worth of &‘s2132 % relies on \@IEEEeqnnumcols to provide the correct number of columns2133 % uses \@IEEEtrantmptoksA, \count0 as scratch registers2134 \def\@IEEEeqnarrayhoptolastcolumn{\@IEEEtrantmptoksA={}\count0=1\relax%2135 \loop% add cols if the user did not use them all2136 \ifnum\count0<\@IEEEeqnnumcols\relax%2137 \@IEEEappendtoksA{&}%2138 \advance\count0 by 1\relax% update the col count2139 \repeat%2140 \the\@IEEEtrantmptoksA%execute the &‘s2141 }2142 2143 2144 2145 \newif\if@IEEEeqnarrayISinner % flag to indicate if we are within the lines2146 \@IEEEeqnarrayISinnerfalse % of an IEEEeqnarray - after the IEEEeqnarraydecl2147 2148 \edef\@IEEEeqnarrayTHEstrutheight{0pt} % height and depth of IEEEeqnarray struts2149 \edef\@IEEEeqnarrayTHEstrutdepth{0pt}2150 2151 \edef\@IEEEeqnarrayTHEmasterstrutheight{0pt} % default height and depth of2152 \edef\@IEEEeqnarrayTHEmasterstrutdepth{0pt} % struts within an IEEEeqnarray2153 2154 \edef\@IEEEeqnarrayTHEmasterstrutHSAVE{0pt} % saved master strut height2155 \edef\@IEEEeqnarrayTHEmasterstrutDSAVE{0pt} % and depth2156 2157 \newif\if@IEEEeqnarrayusemasterstrut % flag to indicate that the master strut value2158 \@IEEEeqnarrayusemasterstruttrue % is to be used2159 2160 2161 2162 % saves the strut height and depth of the master strut2163 \def\@IEEEeqnarraymasterstrutsave{\relax%2164 \expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%2165 \expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%2166 % remove stretchability2167 \dimen0\skip0\relax%2168 \dimen2\skip2\relax%2169 % save values2170 \edef\@IEEEeqnarrayTHEmasterstrutHSAVE{\the\dimen0}%2171 \edef\@IEEEeqnarrayTHEmasterstrutDSAVE{\the\dimen2}}2172 2173 % restores the strut height and depth of the master strut2174 \def\@IEEEeqnarraymasterstrutrestore{\relax%2175 \expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutHSAVE\relax%2176 \expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutDSAVE\relax%2177 % remove stretchability2178 \dimen0\skip0\relax%2179 \dimen2\skip2\relax%2180 % restore values2181 \edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%2182 \edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}}2183 2184 2185 % globally restores the strut height and depth to the 2186 % master values and sets the master strut flag to true2187 \def\@IEEEeqnarraystrutreset{\relax%2188 \expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%2189 \expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%2190 % remove stretchability2191 \dimen0\skip0\relax%2192 \dimen2\skip2\relax%2193 % restore values2194 \xdef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%2195 \xdef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%2196 \global\@IEEEeqnarrayusemasterstruttrue}2197 2198 2199 % if the master strut is not to be used, make the current2200 % values of \@IEEEeqnarrayTHEstrutheight, \@IEEEeqnarrayTHEstrutdepth2201 % and the use master strut flag, global2202 % this allows user strut commands issued in the last column to be carried2203 % into the isolation/strut column2204 \def\@IEEEeqnarrayglobalizestrutstatus{\relax%2205 \if@IEEEeqnarrayusemasterstrut\else%2206 \xdef\@IEEEeqnarrayTHEstrutheight{\@IEEEeqnarrayTHEstrutheight}%2207 \xdef\@IEEEeqnarrayTHEstrutdepth{\@IEEEeqnarrayTHEstrutdepth}%2208 \global\@IEEEeqnarrayusemasterstrutfalse%2209 \fi}2210 2211 2212 2213 % usage: \IEEEeqnarraystrutsize{height}{depth}[font size commands]2214 % If called outside the lines of an IEEEeqnarray, sets the height2215 % and depth of both the master and local struts. If called inside2216 % an IEEEeqnarray line, sets the height and depth of the local strut2217 % only and sets the flag to indicate the use of the local strut2218 % values. If the height or depth is left blank, 0.7\normalbaselineskip2219 % and 0.3\normalbaselineskip will be used, respectively.2220 % The optional argument can be used to evaluate the lengths under2221 % a different font size and styles. If none is specified, the current2222 % font is used.2223 % uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen22224 \def\IEEEeqnarraystrutsize#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsize{#1}{#2}}{\@IEEEeqnarraystrutsize{#1}{#2}[\relax]}}2225 \def\@IEEEeqnarraystrutsize#1#2[#3]{\def\@IEEEeqnarraystrutsizeARG{#1}%2226 \ifx\@IEEEeqnarraystrutsizeARG\@empty%2227 {\setbox0=\hbox{#3\relax\global\skip3=0.7\normalbaselineskip}}%2228 \skip0=\skip3\relax%2229 \else% arg one present2230 {\setbox0=\hbox{#3\relax\global\skip3=#1\relax}}%2231 \skip0=\skip3\relax%2232 \fi% if null arg2233 \def\@IEEEeqnarraystrutsizeARG{#2}%2234 \ifx\@IEEEeqnarraystrutsizeARG\@empty%2235 {\setbox0=\hbox{#3\relax\global\skip3=0.3\normalbaselineskip}}%2236 \skip2=\skip3\relax%2237 \else% arg two present2238 {\setbox0=\hbox{#3\relax\global\skip3=#2\relax}}%2239 \skip2=\skip3\relax%2240 \fi% if null arg2241 % remove stretchability, just to be safe2242 \dimen0\skip0\relax%2243 \dimen2\skip2\relax%2244 % dimen0 = height, dimen2 = depth2245 \if@IEEEeqnarrayISinner% inner does not touch master strut size2246 \edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%2247 \edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%2248 \@IEEEeqnarrayusemasterstrutfalse% do not use master2249 \else% outer, have to set master strut too2250 \edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%2251 \edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}%2252 \edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%2253 \edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%2254 \@IEEEeqnarrayusemasterstruttrue% use master strut2255 \fi}2256 2257 2258 % usage: \IEEEeqnarraystrutsizeadd{added height}{added depth}[font size commands]2259 % If called outside the lines of an IEEEeqnarray, adds the given height2260 % and depth to both the master and local struts.2261 % If called inside an IEEEeqnarray line, adds the given height and depth2262 % to the local strut only and sets the flag to indicate the use 2263 % of the local strut values.2264 % In both cases, if a height or depth is left blank, 0pt is used instead.2265 % The optional argument can be used to evaluate the lengths under2266 % a different font size and styles. If none is specified, the current2267 % font is used.2268 % uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen22269 \def\IEEEeqnarraystrutsizeadd#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsizeadd{#1}{#2}}{\@IEEEeqnarraystrutsizeadd{#1}{#2}[\relax]}}2270 \def\@IEEEeqnarraystrutsizeadd#1#2[#3]{\def\@IEEEeqnarraystrutsizearg{#1}%2271 \ifx\@IEEEeqnarraystrutsizearg\@empty%2272 \skip0=0pt\relax%2273 \else% arg one present2274 {\setbox0=\hbox{#3\relax\global\skip3=#1}}%2275 \skip0=\skip3\relax%2276 \fi% if null arg2277 \def\@IEEEeqnarraystrutsizearg{#2}%2278 \ifx\@IEEEeqnarraystrutsizearg\@empty%2279 \skip2=0pt\relax%2280 \else% arg two present2281 {\setbox0=\hbox{#3\relax\global\skip3=#2}}%2282 \skip2=\skip3\relax%2283 \fi% if null arg2284 % remove stretchability, just to be safe2285 \dimen0\skip0\relax%2286 \dimen2\skip2\relax%2287 % dimen0 = height, dimen2 = depth2288 \if@IEEEeqnarrayISinner% inner does not touch master strut size2289 % get local strut size2290 \expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax%2291 \expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax%2292 % add it to the user supplied values2293 \advance\dimen0 by \skip0\relax%2294 \advance\dimen2 by \skip2\relax%2295 % update the local strut size2296 \edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%2297 \edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%2298 \@IEEEeqnarrayusemasterstrutfalse% do not use master2299 \else% outer, have to set master strut too2300 % get master strut size2301 \expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%2302 \expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%2303 % add it to the user supplied values2304 \advance\dimen0 by \skip0\relax%2305 \advance\dimen2 by \skip2\relax%2306 % update the local and master strut sizes2307 \edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}%2308 \edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}%2309 \edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}%2310 \edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}%2311 \@IEEEeqnarrayusemasterstruttrue% use master strut2312 \fi}2313 2314 2315 % allow user a way to see the struts2316 \newif\ifIEEEvisiblestruts2317 \IEEEvisiblestrutsfalse2318 2319 % inserts an invisible strut using the master or local strut values2320 % uses scratch registers \skip0, \skip2, \dimen0, \dimen22321 \def\@IEEEeqnarrayinsertstrut{\relax%2322 \if@IEEEeqnarrayusemasterstrut2323 % get master strut size2324 \expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax%2325 \expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax%2326 \else%2327 % get local strut size2328 \expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax%2329 \expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax%2330 \fi%2331 % remove stretchability, probably not needed2332 \dimen0\skip0\relax%2333 \dimen2\skip2\relax%2334 % dimen0 = height, dimen2 = depth2335 % allow user to see struts if desired2336 \ifIEEEvisiblestruts%2337 \vrule width0.2pt height\dimen0 depth\dimen2\relax%2338 \else%2339 \vrule width0pt height\dimen0 depth\dimen2\relax\fi}2340 2341 2342 % creates an invisible strut, useable even outside \IEEEeqnarray2343 % if \IEEEvisiblestrutstrue, the strut will be visible and 0.2pt wide. 2344 % usage: \IEEEstrut[height][depth][font size commands]2345 % default is \IEEEstrut[0.7\normalbaselineskip][0.3\normalbaselineskip][\relax]2346 % blank arguments inherit the default values2347 % uses \dimen0, \dimen2, \skip0, \skip22348 \def\IEEEstrut{\relax\@ifnextchar[{\@IEEEstrut}{\@IEEEstrut[0.7\normalbaselineskip]}}2349 \def\@IEEEstrut[#1]{\relax\@ifnextchar[{\@@IEEEstrut[#1]}{\@@IEEEstrut[#1][0.3\normalbaselineskip]}}2350 \def\@@IEEEstrut[#1][#2]{\relax\@ifnextchar[{\@@@IEEEstrut[#1][#2]}{\@@@IEEEstrut[#1][#2][\relax]}}2351 \def\@@@IEEEstrut[#1][#2][#3]{\mbox{#3\relax%2352 \def\@IEEEstrutARG{#1}%2353 \ifx\@IEEEstrutARG\@empty%2354 \skip0=0.7\normalbaselineskip\relax%2355 \else%2356 \skip0=#1\relax%2357 \fi%2358 \def\@IEEEstrutARG{#2}%2359 \ifx\@IEEEstrutARG\@empty%2360 \skip2=0.3\normalbaselineskip\relax%2361 \else%2362 \skip2=#2\relax%2363 \fi%2364 % remove stretchability, probably not needed2365 \dimen0\skip0\relax%2366 \dimen2\skip2\relax%2367 \ifIEEEvisiblestruts%2368 \vrule width0.2pt height\dimen0 depth\dimen2\relax%2369 \else%2370 \vrule width0.0pt height\dimen0 depth\dimen2\relax\fi}}2371 2372 2373 % enables strut mode by setting a default strut size and then zeroing the2374 % \baselineskip, \lineskip, \lineskiplimit and \jot2375 \def\IEEEeqnarraystrutmode{\IEEEeqnarraystrutsize{0.7\normalbaselineskip}{0.3\normalbaselineskip}[\relax]%2376 \baselineskip=0pt\lineskip=0pt\lineskiplimit=0pt\jot=0pt}2377 2378 2379 2380 \def\IEEEeqnarray{\@IEEEeqnarraystarformfalse\@IEEEeqnarray}2381 \def\endIEEEeqnarray{\end@IEEEeqnarray}2382 2383 \@namedef{IEEEeqnarray*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarray}2384 \@namedef{endIEEEeqnarray*}{\end@IEEEeqnarray}2385 2386 2387 % \IEEEeqnarray is an enhanced \eqnarray. 2388 % The star form defaults to not putting equation numbers at the end of each row.2389 % usage: \IEEEeqnarray[decl]{cols}2390 \def\@IEEEeqnarray{\relax\@ifnextchar[{\@@IEEEeqnarray}{\@@IEEEeqnarray[\relax]}}2391 \def\@@IEEEeqnarray[#1]#2{%2392 % default to showing the equation number or not based on whether or not2393 % the star form was involked2394 \if@IEEEeqnarraystarform\global\@eqnswfalse2395 \else% not the star form2396 \global\@eqnswtrue2397 \fi% if star form2398 \@IEEEissubequationfalse% default to no subequations2399 \@IEEElastlinewassubequationfalse% assume last line is not a sub equation2400 \@IEEEeqnarrayISinnerfalse% not yet within the lines of the halign2401 \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default2402 \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise2403 \IEEEvisiblestrutsfalse% diagnostic mode defaults to off2404 % no extra space unless the user specifically requests it2405 \lineskip=0pt\relax2406 \lineskiplimit=0pt\relax2407 \baselineskip=\normalbaselineskip\relax%2408 \jot=\IEEEnormaljot\relax%2409 \mathsurround\z@\relax% no extra spacing around math2410 \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses, 2411 % used in \IEEEeqnarraymulticol and in the preamble build2412 \stepcounter{equation}% advance equation counter before first line2413 \setcounter{IEEEsubequation}{0}% no subequation yet 2414 \def\@currentlabel{\p@equation\theequation}% redefine the ref label2415 \IEEEeqnarraydecl\relax% allow a way for the user to make global overrides2416 #1\relax% allow user to override defaults2417 \let\\\@IEEEeqnarraycr% replace newline with one that can put in eqn. numbers2418 \global\@IEEEeqncolcnt\z@% col. count = 0 for first line2419 \@IEEEbuildpreamble #2\end\relax% build the preamble and put it into \@IEEEtrantmptoksA 2420 % put in the column for the equation number2421 \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first2422 \toks0={##}%2423 % advance the \@IEEEeqncolcnt for the isolation col, this helps with error checking2424 \@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}%2425 % add the isolation column2426 \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}%2427 % advance the \@IEEEeqncolcnt for the equation number col, this helps with error checking2428 \@IEEEappendtoksA{&\global\advance\@IEEEeqncolcnt by 1\relax}%2429 % add the equation number col to the preamble2430 \@IEEEappendtoksA{\tabskip\z@skip\hb@xt@\z@\bgroup\hss\the\toks0\egroup}%2431 % note \@IEEEeqnnumcols does not count the equation col or isolation col2432 % set the starting tabskip glue as determined by the preamble build2433 \tabskip=\@IEEEBPstartglue\relax2434 % begin the display alignment2435 \@IEEEeqnarrayISinnertrue% commands are now within the lines2436 $$\everycr{}\halign to\displaywidth\bgroup2437 % "exspand" the preamble2438 \span\the\@IEEEtrantmptoksA\cr}2439 2440 % enter isolation/strut column (or the next column if the user did not use2441 % every column), record the strut status, complete the columns, do the strut if needed,2442 % restore counters to correct values and exit2443 \def\end@IEEEeqnarray{\@IEEEeqnarrayglobalizestrutstatus&\@@IEEEeqnarraycr\egroup%2444 \if@IEEElastlinewassubequation\global\advance\c@IEEEsubequation\m@ne\fi%2445 \global\advance\c@equation\m@ne%2446 $$\@ignoretrue}2447 2448 % need a way to remember if last line is a subequation2449 \newif\if@IEEElastlinewassubequation%2450 \@IEEElastlinewassubequationfalse2451 2452 % IEEEeqnarray uses a modifed \\ instead of the plain \cr to2453 % end rows. This allows for things like \\*[vskip amount]2454 % This "cr" macros are modified versions those for LaTeX2e‘s eqnarray2455 % the {\ifnum0=`} braces must be kept away from the last column to avoid2456 % altering spacing of its math, so we use & to advance to the next column2457 % as there is an isolation/strut column after the user‘s columns2458 \def\@IEEEeqnarraycr{\@IEEEeqnarrayglobalizestrutstatus&% save strut status and advance to next column2459 {\ifnum0=`}\fi2460 \@ifstar{%2461 \global\@eqpen\@M\@IEEEeqnarrayYCR2462 }{%2463 \global\@eqpen\interdisplaylinepenalty \@IEEEeqnarrayYCR2464 }%2465 }2466 2467 \def\@IEEEeqnarrayYCR{\@testopt\@IEEEeqnarrayXCR\z@skip}2468 2469 \def\@IEEEeqnarrayXCR[#1]{%2470 \ifnum0=`{\fi}%2471 \@@IEEEeqnarraycr2472 \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}%2473 2474 \def\@@IEEEeqnarraycr{\@IEEEtrantmptoksA={}% clear token register2475 \advance\@IEEEeqncolcnt by -1\relax% adjust col count because of the isolation column2476 \ifnum\@IEEEeqncolcnt>\@IEEEeqnnumcols\relax2477 \@IEEEclspkgerror{Too many columns within the IEEEeqnarray\MessageBreak2478 environment}%2479 {Use fewer \string &‘s or put more columns in the IEEEeqnarry column\MessageBreak 2480 specifications.}\relax%2481 \else2482 \loop% add cols if the user did not use them all2483 \ifnum\@IEEEeqncolcnt<\@IEEEeqnnumcols\relax2484 \@IEEEappendtoksA{&}%2485 \advance\@IEEEeqncolcnt by 1\relax% update the col count2486 \repeat2487 % this number of &‘s will take us the the isolation column2488 \fi2489 % execute the &‘s2490 \the\@IEEEtrantmptoksA%2491 % handle the strut/isolation column2492 \@IEEEeqnarrayinsertstrut% do the strut if needed2493 \@IEEEeqnarraystrutreset% reset the strut system for next line or IEEEeqnarray2494 &% and enter the equation number column2495 % is this line needs an equation number, display it and advance the2496 % (sub)equation counters, record what type this line was2497 \if@eqnsw%2498 \if@IEEEissubequation\theIEEEsubequationdis\addtocounter{equation}{1}\stepcounter{IEEEsubequation}%2499 \global\@IEEElastlinewassubequationtrue%2500 \else% display a standard equation number, initialize the IEEEsubequation counter2501 \theequationdis\stepcounter{equation}\setcounter{IEEEsubequation}{0}%2502 \global\@IEEElastlinewassubequationfalse\fi%2503 \fi%2504 % reset the eqnsw flag to indicate default preference of the display of equation numbers2505 \if@IEEEeqnarraystarform\global\@eqnswfalse\else\global\@eqnswtrue\fi2506 \global\@IEEEissubequationfalse% reset the subequation flag2507 % reset the number of columns the user actually used2508 \global\@IEEEeqncolcnt\z@\relax2509 % the real end of the line2510 \cr}2511 2512 2513 2514 2515 2516 % \IEEEeqnarraybox is like \IEEEeqnarray except the box form puts everything2517 % inside a vtop, vbox, or vcenter box depending on the letter in the second2518 % optional argument (t,b,c). Vbox is the default. Unlike \IEEEeqnarray,2519 % equation numbers are not displayed and \IEEEeqnarraybox can be nested.2520 % \IEEEeqnarrayboxm is for math mode (like \array) and does not put the vbox2521 % within an hbox.2522 % \IEEEeqnarrayboxt is for text mode (like \tabular) and puts the vbox within2523 % a \hbox{$ $} construct.2524 % \IEEEeqnarraybox will auto detect whether to use \IEEEeqnarrayboxm or 2525 % \IEEEeqnarrayboxt depending on the math mode.2526 % The third optional argument specifies the width this box is to be set to -2527 % natural width is the default.2528 % The * forms do not add \jot line spacing2529 % usage: \IEEEeqnarraybox[decl][pos][width]{cols}2530 \def\IEEEeqnarrayboxm{\@IEEEeqnarraystarformfalse\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox}2531 \def\endIEEEeqnarrayboxm{\end@IEEEeqnarraybox}2532 \@namedef{IEEEeqnarrayboxm*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox}2533 \@namedef{endIEEEeqnarrayboxm*}{\end@IEEEeqnarraybox}2534 2535 \def\IEEEeqnarrayboxt{\@IEEEeqnarraystarformfalse\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox}2536 \def\endIEEEeqnarrayboxt{\end@IEEEeqnarraybox}2537 \@namedef{IEEEeqnarrayboxt*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox}2538 \@namedef{endIEEEeqnarrayboxt*}{\end@IEEEeqnarraybox}2539 2540 \def\IEEEeqnarraybox{\@IEEEeqnarraystarformfalse\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi%2541 \@IEEEeqnarraybox}2542 \def\endIEEEeqnarraybox{\end@IEEEeqnarraybox}2543 2544 \@namedef{IEEEeqnarraybox*}{\@IEEEeqnarraystarformtrue\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi%2545 \@IEEEeqnarraybox}2546 \@namedef{endIEEEeqnarraybox*}{\end@IEEEeqnarraybox}2547 2548 % flag to indicate if the \IEEEeqnarraybox needs to put things into an hbox{$ $} 2549 % for \vcenter in non-math mode2550 \newif\if@IEEEeqnarrayboxHBOXSW%2551 \@IEEEeqnarrayboxHBOXSWfalse2552 2553 \def\@IEEEeqnarraybox{\relax\@ifnextchar[{\@@IEEEeqnarraybox}{\@@IEEEeqnarraybox[\relax]}}2554 \def\@@IEEEeqnarraybox[#1]{\relax\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}}2555 \def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}}2556 2557 % #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs2558 \def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign2559 \@IEEEeqnarraymasterstrutsave% save current master strut values2560 \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default2561 \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise2562 \IEEEvisiblestrutsfalse% diagnostic mode defaults to off2563 % no extra space unless the user specifically requests it2564 \lineskip=0pt\relax%2565 \lineskiplimit=0pt\relax%2566 \baselineskip=\normalbaselineskip\relax%2567 \jot=\IEEEnormaljot\relax%2568 \mathsurround\z@\relax% no extra spacing around math2569 % the default end glues are zero for an \IEEEeqnarraybox2570 \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue2571 \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue2572 \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue2573 \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses, 2574 % used in \IEEEeqnarraymulticol and in the preamble build2575 \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides2576 #1\relax% allow user to override defaults2577 \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing2578 \@IEEEbuildpreamble #4\end\relax% build the preamble and put it into \@IEEEtrantmptoksA2579 % add an isolation column to the preamble to stop \\‘s {} from getting into the last col2580 \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first2581 \toks0={##}%2582 % add the isolation column to the preamble2583 \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% 2584 % set the starting tabskip glue as determined by the preamble build2585 \tabskip=\@IEEEBPstartglue\relax2586 % begin the alignment2587 \everycr{}%2588 % use only the very first token to determine the positioning2589 % this stops some problems when the user uses more than one letter,2590 % but is probably not worth the effort2591 % \noindent is used as a delimiter2592 \def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}%2593 \@IEEEgrabfirstoken#2\relax\relax\noindent2594 % \@IEEEgrabbedfirstoken has the first token, the rest are discarded2595 % if we need to put things into and hbox and go into math mode, do so now2596 \if@IEEEeqnarrayboxHBOXSW \leavevmode \hbox \bgroup $\fi%2597 % use the appropriate vbox type2598 \if\@IEEEgrabbedfirstoken t\relax\vtop\else\if\@IEEEgrabbedfirstoken c\relax%2599 \vcenter\else\vbox\fi\fi\bgroup%2600 \@IEEEeqnarrayISinnertrue% commands are now within the lines2601 \ifx#3\relax\halign\else\halign to #3\relax\fi%2602 \bgroup2603 % "exspand" the preamble2604 \span\the\@IEEEtrantmptoksA\cr}2605 2606 % carry strut status and enter the isolation/strut column, 2607 % exit from math mode if needed, and exit2608 \def\end@IEEEeqnarraybox{\@IEEEeqnarrayglobalizestrutstatus% carry strut status2609 &% enter isolation/strut column2610 \@IEEEeqnarrayinsertstrut% do strut if needed2611 \@IEEEeqnarraymasterstrutrestore% restore the previous master strut values2612 % reset the strut system for next IEEEeqnarray2613 % (sets local strut values back to previous master strut values)2614 \@IEEEeqnarraystrutreset%2615 % ensure last line, exit from halign, close vbox2616 \crcr\egroup\egroup%2617 % exit from math mode and close hbox if needed2618 \if@IEEEeqnarrayboxHBOXSW $\egroup\fi}2619 2620 2621 2622 % IEEEeqnarraybox uses a modifed \\ instead of the plain \cr to2623 % end rows. This allows for things like \\[vskip amount]2624 % This "cr" macros are modified versions those for LaTeX2e‘s eqnarray2625 % For IEEEeqnarraybox, \\* is the same as \2626 % the {\ifnum0=`} braces must be kept away from the last column to avoid2627 % altering spacing of its math, so we use & to advance to the isolation/strut column2628 % carry strut status into isolation/strut column2629 \def\@IEEEeqnarrayboxcr{\@IEEEeqnarrayglobalizestrutstatus% carry strut status2630 &% enter isolation/strut column2631 \@IEEEeqnarrayinsertstrut% do strut if needed2632 % reset the strut system for next line or IEEEeqnarray2633 \@IEEEeqnarraystrutreset%2634 {\ifnum0=`}\fi%2635 \@ifstar{\@IEEEeqnarrayboxYCR}{\@IEEEeqnarrayboxYCR}}2636 2637 % test and setup the optional argument to \\[]2638 \def\@IEEEeqnarrayboxYCR{\@testopt\@IEEEeqnarrayboxXCR\z@skip}2639 2640 % IEEEeqnarraybox does not automatically increase line spacing by \jot2641 \def\@IEEEeqnarrayboxXCR[#1]{\ifnum0=`{\fi}%2642 \cr\noalign{\if@IEEEeqnarraystarform\else\vskip\jot\fi\vskip#1\relax}}2643 2644 2645 2646 % starts the halign preamble build2647 \def\@IEEEbuildpreamble{\@IEEEtrantmptoksA={}% clear token register2648 \let\@IEEEBPcurtype=u%current column type is not yet known2649 \let\@IEEEBPprevtype=s%the previous column type was the start2650 \let\@IEEEBPnexttype=u%next column type is not yet known2651 % ensure these are valid2652 \def\@IEEEBPcurglue={0pt plus 0pt minus 0pt}%2653 \def\@IEEEBPcurcolname{@IEEEdefault}% name of current column definition2654 % currently acquired numerically referenced glue2655 % use a name that is easier to remember2656 \let\@IEEEBPcurnum=\@IEEEtrantmpcountA%2657 \@IEEEBPcurnum=0%2658 % tracks number of columns in the preamble2659 \@IEEEeqnnumcols=0%2660 % record the default end glues2661 \edef\@IEEEBPstartglue{\@IEEEeqnarraycolSEPdefaultstart}%2662 \edef\@IEEEBPendglue{\@IEEEeqnarraycolSEPdefaultend}%2663 % now parse the user‘s column specifications2664 \@@IEEEbuildpreamble}2665 2666 2667 % parses and builds the halign preamble2668 \def\@@IEEEbuildpreamble#1#2{\let\@@nextIEEEbuildpreamble=\@@IEEEbuildpreamble%2669 % use only the very first token to check the end2670 % \noindent is used as a delimiter as \end can be present here2671 \def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}%2672 \@IEEEgrabfirstoken#1\relax\relax\noindent2673 \ifx\@IEEEgrabbedfirstoken\end\let\@@nextIEEEbuildpreamble=\@@IEEEfinishpreamble\else%2674 % identify current and next token type2675 \@IEEEgetcoltype{#1}{\@IEEEBPcurtype}{1}% current, error on invalid2676 \@IEEEgetcoltype{#2}{\@IEEEBPnexttype}{0}% next, no error on invalid next2677 % if curtype is a glue, get the glue def2678 \if\@IEEEBPcurtype g\@IEEEgetcurglue{#1}{\@IEEEBPcurglue}\fi%2679 % if curtype is a column, get the column def and set the current column name2680 \if\@IEEEBPcurtype c\@IEEEgetcurcol{#1}\fi%2681 % if curtype is a numeral, acquire the user defined glue2682 \if\@IEEEBPcurtype n\@IEEEprocessNcol{#1}\fi%2683 % process the acquired glue 2684 \if\@IEEEBPcurtype g\@IEEEprocessGcol\fi%2685 % process the acquired col 2686 \if\@IEEEBPcurtype c\@IEEEprocessCcol\fi%2687 % ready prevtype for next col spec.2688 \let\@IEEEBPprevtype=\@IEEEBPcurtype%2689 % be sure and put back the future token(s) as a group2690 \fi\@@nextIEEEbuildpreamble{#2}}2691 2692 2693 % executed just after preamble build is completed2694 % warn about zero cols, and if prevtype type = u, put in end tabskip glue2695 \def\@@IEEEfinishpreamble#1{\ifnum\@IEEEeqnnumcols<1\relax2696 \@IEEEclspkgerror{No column specifiers declared for IEEEeqnarray}%2697 {At least one column type must be declared for each IEEEeqnarray.}%2698 \fi%num cols less than 12699 %if last type undefined, set default end tabskip glue2700 \if\@IEEEBPprevtype u\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue}\fi}2701 2702 2703 % Identify and return the column specifier‘s type code2704 \def\@IEEEgetcoltype#1#2#3{%2705 % use only the very first token to determine the type2706 % \noindent is used as a delimiter as \end can be present here2707 \def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}%2708 \@IEEEgrabfirstoken#1\relax\relax\noindent2709 % \@IEEEgrabfirstoken has the first token, the rest are discarded2710 % n = number2711 % g = glue (any other char in catagory 12)2712 % c = letter2713 % e = \end2714 % u = undefined2715 % third argument: 0 = no error message, 1 = error on invalid char2716 \let#2=u\relax% assume invalid until know otherwise2717 \ifx\@IEEEgrabbedfirstoken\end\let#2=e\else2718 \ifcat\@IEEEgrabbedfirstoken\relax\else% screen out control sequences2719 \if0\@IEEEgrabbedfirstoken\let#2=n\else2720 \if1\@IEEEgrabbedfirstoken\let#2=n\else2721 \if2\@IEEEgrabbedfirstoken\let#2=n\else2722 \if3\@IEEEgrabbedfirstoken\let#2=n\else2723 \if4\@IEEEgrabbedfirstoken\let#2=n\else2724 \if5\@IEEEgrabbedfirstoken\let#2=n\else2725 \if6\@IEEEgrabbedfirstoken\let#2=n\else2726 \if7\@IEEEgrabbedfirstoken\let#2=n\else2727 \if8\@IEEEgrabbedfirstoken\let#2=n\else2728 \if9\@IEEEgrabbedfirstoken\let#2=n\else2729 \ifcat,\@IEEEgrabbedfirstoken\let#2=g\relax2730 \else\ifcat a\@IEEEgrabbedfirstoken\let#2=c\relax\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi2731 \if#2u\relax2732 \if0\noexpand#3\relax\else\@IEEEclspkgerror{Invalid character in column specifications}%2733 {Only letters, numerals and certain other symbols are allowed \MessageBreak2734 as IEEEeqnarray column specifiers.}\fi\fi}2735 2736 2737 % identify the current letter referenced column2738 % if invalid, use a default column2739 \def\@IEEEgetcurcol#1{\expandafter\ifx\csname @IEEEeqnarraycolDEF#1\endcsname\@IEEEeqnarraycolisdefined%2740 \def\@IEEEBPcurcolname{#1}\else% invalid column name2741 \@IEEEclspkgerror{Invalid column type "#1" in column specifications.\MessageBreak2742 Using a default centering column instead}%2743 {You must define IEEEeqnarray column types before use.}%2744 \def\@IEEEBPcurcolname{@IEEEdefault}\fi}2745 2746 2747 % identify and return the predefined (punctuation) glue value2748 \def\@IEEEgetcurglue#1#2{%2749 % ! = \! (neg small) -0.16667em (-3/18 em)2750 % , = \, (small) 0.16667em ( 3/18 em)2751 % : = \: (med) 0.22222em ( 4/18 em)2752 % ; = \; (large) 0.27778em ( 5/18 em)2753 % ‘ = \quad 1em2754 % " = \qquad 2em2755 % . = 0.5\arraycolsep2756 % / = \arraycolsep2757 % ? = 2\arraycolsep2758 % * = 1fil2759 % + = \@IEEEeqnarraycolSEPcenter2760 % - = \@IEEEeqnarraycolSEPzero2761 % Note that all em values are referenced to the math font (textfont2) fontdimen62762 % value for 1em.2763 % 2764 % use only the very first token to determine the type2765 % this prevents errant tokens from getting in the main text2766 % \noindent is used as a delimiter here2767 \def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}%2768 \@IEEEgrabfirstoken#1\relax\relax\noindent2769 % get the math font 1em value2770 % LaTeX2e‘s NFSS2 does not preload the fonts, but \IEEEeqnarray needs2771 % to gain access to the math (\textfont2) font‘s spacing parameters.2772 % So we create a bogus box here that uses the math font to ensure2773 % that \textfont2 is loaded and ready. If this is not done,2774 % the \textfont2 stuff here may not work.2775 % Thanks to Bernd Raichle for his 1997 post on this topic.2776 {\setbox0=\hbox{$\displaystyle\relax$}}%2777 % fontdimen6 has the width of 1em (a quad).2778 \@IEEEtrantmpdimenA=\fontdimen6\textfont2\relax%2779 % identify the glue value based on the first token2780 % we discard anything after the first2781 \if!\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=-0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else2782 \if,\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else2783 \if:\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.22222\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else2784 \if;\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.27778\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else2785 \if‘\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=1\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else2786 \if"\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=2\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else2787 \if.\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.5\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else2788 \if/\@IEEEgrabbedfirstoken\edef#2{\the\arraycolsep}\else2789 \if?\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=2\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else2790 \if *\@IEEEgrabbedfirstoken\edef#2{0pt plus 1fil minus 0pt}\else2791 \if+\@IEEEgrabbedfirstoken\edef#2{\@IEEEeqnarraycolSEPcenter}\else2792 \if-\@IEEEgrabbedfirstoken\edef#2{\@IEEEeqnarraycolSEPzero}\else2793 \edef#2{\@IEEEeqnarraycolSEPzero}%2794 \@IEEEclspkgerror{Invalid predefined inter-column glue type "#1" in\MessageBreak2795 column specifications. Using a default value of\MessageBreak2796 0pt instead}%2797 {Only !,:;‘"./?*+ and - are valid predefined glue types in the\MessageBreak 2798 IEEEeqnarray column specifications.}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}2799 2800 2801 2802 % process a numerical digit from the column specification2803 % and look up the corresponding user defined glue value2804 % can transform current type from n to g or a as the user defined glue is acquired2805 \def\@IEEEprocessNcol#1{\if\@IEEEBPprevtype g%2806 \@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak2807 specifications. Ignoring consecutive glue specifiers\MessageBreak2808 after the first}%2809 {You cannot have two or more glue types next to each other\MessageBreak 2810 in the IEEEeqnarray column specifications.}%2811 \let\@IEEEBPcurtype=a% abort this glue, future digits will be discarded2812 \@IEEEBPcurnum=0\relax%2813 \else% if we previously aborted a glue2814 \if\@IEEEBPprevtype a\@IEEEBPcurnum=0\let\@IEEEBPcurtype=a%maintain digit abortion2815 \else%acquire this number2816 % save the previous type before the numerical digits started2817 \if\@IEEEBPprevtype n\else\let\@IEEEBPprevsavedtype=\@IEEEBPprevtype\fi%2818 \multiply\@IEEEBPcurnum by 10\relax%2819 \advance\@IEEEBPcurnum by #1\relax% add in number, \relax is needed to stop TeX‘s number scan2820 \if\@IEEEBPnexttype n\else%close acquisition2821 \expandafter\ifx\csname @IEEEeqnarraycolSEPDEF\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname\@IEEEeqnarraycolisdefined%2822 \edef\@IEEEBPcurglue{\csname @IEEEeqnarraycolSEP\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname}%2823 \else%user glue not defined2824 \@IEEEclspkgerror{Invalid user defined inter-column glue type "\number\@IEEEBPcurnum" in\MessageBreak2825 column specifications. Using a default value of\MessageBreak2826 0pt instead}%2827 {You must define all IEEEeqnarray numerical inter-column glue types via\MessageBreak2828 \string\IEEEeqnarraydefcolsep \space before they are used in column specifications.}%2829 \edef\@IEEEBPcurglue{\@IEEEeqnarraycolSEPzero}%2830 \fi% glue defined or not2831 \let\@IEEEBPcurtype=g% change the type to reflect the acquired glue2832 \let\@IEEEBPprevtype=\@IEEEBPprevsavedtype% restore the prev type before this number glue2833 \@IEEEBPcurnum=0\relax%ready for next acquisition2834 \fi%close acquisition, get glue2835 \fi%discard or acquire number2836 \fi%prevtype glue or not2837 }2838 2839 2840 % process an acquired glue2841 % add any acquired column/glue pair to the preamble2842 \def\@IEEEprocessGcol{\if\@IEEEBPprevtype a\let\@IEEEBPcurtype=a%maintain previous glue abortions2843 \else2844 % if this is the start glue, save it, but do nothing else 2845 % as this is not used in the preamble, but before2846 \if\@IEEEBPprevtype s\edef\@IEEEBPstartglue{\@IEEEBPcurglue}%2847 \else%not the start glue2848 \if\@IEEEBPprevtype g%ignore if back to back glues2849 \@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak2850 specifications. Ignoring consecutive glue specifiers\MessageBreak2851 after the first}%2852 {You cannot have two or more glue types next to each other\MessageBreak 2853 in the IEEEeqnarray column specifications.}%2854 \let\@IEEEBPcurtype=a% abort this glue2855 \else% not a back to back glue2856 \if\@IEEEBPprevtype c\relax% if the previoustype was a col, add column/glue pair to preamble2857 \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi2858 \toks0={##}%2859 % make preamble advance col counter if this environment needs this2860 \if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi2861 % insert the column defintion into the preamble, being careful not to expand2862 % the column definition2863 \@IEEEappendtoksA{\tabskip=\@IEEEBPcurglue}%2864 \@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}%2865 \@IEEEappendtoksA{\@IEEEBPcurcolname}%2866 \@IEEEappendNOEXPANDtoksA{\endcsname}%2867 \@IEEEappendtoksA{\the\toks0}%2868 \@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax%2869 \relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}%2870 \@IEEEappendtoksA{\@IEEEBPcurcolname}%2871 \@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax%2872 \relax\relax\relax\relax\relax\endgroup}%2873 \advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble2874 \else% error: non-start glue with no pending column2875 \@IEEEclspkgerror{Inter-column glue specifier without a prior column\MessageBreak2876 type in the column specifications. Ignoring this glue\MessageBreak 2877 specifier}%2878 {Except for the first and last positions, glue can be placed only\MessageBreak2879 between column types.}%2880 \let\@IEEEBPcurtype=a% abort this glue2881 \fi% previous was a column2882 \fi% back-to-back glues2883 \fi% is start column glue2884 \fi% prev type not a2885 }2886 2887 2888 % process an acquired letter referenced column and, if necessary, add it to the preamble2889 \def\@IEEEprocessCcol{\if\@IEEEBPnexttype g\else2890 \if\@IEEEBPnexttype n\else2891 % we have a column followed by something other than a glue (or numeral glue)2892 % so we must add this column to the preamble now2893 \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi%col separator for those after the first2894 \if\@IEEEBPnexttype e\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue\relax}\else%put in end glue2895 \@IEEEappendtoksA{\tabskip=\@IEEEeqnarraycolSEPdefaultmid\relax}\fi% or default mid glue2896 \toks0={##}%2897 % make preamble advance col counter if this environment needs this2898 \if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi2899 % insert the column definition into the preamble, being careful not to expand2900 % the column definition2901 \@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}%2902 \@IEEEappendtoksA{\@IEEEBPcurcolname}%2903 \@IEEEappendNOEXPANDtoksA{\endcsname}%2904 \@IEEEappendtoksA{\the\toks0}%2905 \@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax%2906 \relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}%2907 \@IEEEappendtoksA{\@IEEEBPcurcolname}%2908 \@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax%2909 \relax\relax\relax\relax\relax\endgroup}%2910 \advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble2911 \fi%next type not numeral2912 \fi%next type not glue2913 }2914 2915 2916 %%2917 %% END OF IEEEeqnarry DEFINITIONS2918 %%2919 2920 2921 2922 2923 % set up the running headings, this complex because of all the different2924 % modes IEEEtran supports2925 \if@twoside2926 \ifCLASSOPTIONtechnote2927 \def\ps@headings{%2928 \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}2929 \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}2930 \ifCLASSOPTIONdraftcls2931 \ifCLASSOPTIONdraftclsnofoot2932 \def\@oddfoot{}\def\@evenfoot{}%2933 \else2934 \def\@oddfoot{\scriptsize\@date\hfil DRAFT}2935 \def\@evenfoot{\scriptsize DRAFT\hfil\@date}2936 \fi2937 \else2938 \def\@oddfoot{}\def\@evenfoot{}2939 \fi}2940 \else % not a technote2941 \def\ps@headings{%2942 \ifCLASSOPTIONconference2943 \def\@oddhead{}2944 \def\@evenhead{}2945 \else2946 \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage}2947 \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}2948 \fi2949 \ifCLASSOPTIONdraftcls2950 \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage}2951 \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}2952 \ifCLASSOPTIONdraftclsnofoot2953 \def\@oddfoot{}\def\@evenfoot{}%2954 \else2955 \def\@oddfoot{\scriptsize\@date\hfil DRAFT}2956 \def\@evenfoot{\scriptsize DRAFT\hfil\@date}2957 \fi2958 \else2959 \def\@oddfoot{}\def\@evenfoot{}%2960 \fi}2961 \fi2962 \else % single side2963 \def\ps@headings{%2964 \ifCLASSOPTIONconference2965 \def\@oddhead{}2966 \def\@evenhead{}2967 \else2968 \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}2969 \def\@evenhead{}2970 \fi2971 \ifCLASSOPTIONdraftcls2972 \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}2973 \def\@evenhead{}2974 \ifCLASSOPTIONdraftclsnofoot2975 \def\@oddfoot{}2976 \else2977 \def\@oddfoot{\scriptsize \@date \hfil DRAFT}2978 \fi2979 \else2980 \def\@oddfoot{}2981 \fi2982 \def\@evenfoot{}}2983 \fi2984 2985 2986 % title page style2987 \def\ps@IEEEtitlepagestyle{\def\@oddfoot{}\def\@evenfoot{}%2988 \ifCLASSOPTIONconference2989 \def\@oddhead{}%2990 \def\@evenhead{}%2991 \else2992 \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}%2993 \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}%2994 \fi2995 \ifCLASSOPTIONdraftcls2996 \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}%2997 \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}%2998 \ifCLASSOPTIONdraftclsnofoot\else2999 \def\@oddfoot{\scriptsize \@date\hfil DRAFT}%3000 \def\@evenfoot{\scriptsize DRAFT\hfil \@date}%3001 \fi3002 \else3003 % all non-draft mode footers3004 \if@IEEEusingpubid3005 % for title pages that are using a pubid3006 % do not repeat pubid if using peer review option3007 \ifCLASSOPTIONpeerreview3008 \else3009 \footskip 0pt%3010 \ifCLASSOPTIONcompsoc3011 \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}%3012 \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}%3013 \else3014 \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}%3015 \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}%3016 \fi3017 \fi3018 \fi3019 \fi}3020 3021 3022 % peer review cover page style3023 \def\ps@IEEEpeerreviewcoverpagestyle{%3024 \def\@oddhead{}\def\@evenhead{}%3025 \def\@oddfoot{}\def\@evenfoot{}%3026 \ifCLASSOPTIONdraftcls3027 \ifCLASSOPTIONdraftclsnofoot\else3028 \def\@oddfoot{\scriptsize \@date\hfil DRAFT}%3029 \def\@evenfoot{\scriptsize DRAFT\hfil \@date}%3030 \fi3031 \else3032 % non-draft mode footers3033 \if@IEEEusingpubid3034 \footskip 0pt%3035 \ifCLASSOPTIONcompsoc3036 \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}%3037 \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}%3038 \else3039 \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}%3040 \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}%3041 \fi3042 \fi3043 \fi}3044 3045 3046 % start with empty headings3047 \def\rightmark{}\def\leftmark{}3048 3049 3050 %% Defines the command for putting the header. \footernote{TEXT} is the same3051 %% as \markboth{TEXT}{TEXT}. 3052 %% Note that all the text is forced into uppercase, if you have some text3053 %% that needs to be in lower case, for instance et. al., then either manually3054 %% set \leftmark and \rightmark or use \MakeLowercase{et. al.} within the3055 %% arguments to \markboth.3056 \def\markboth#1#2{\def\leftmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#1}}%3057 \def\rightmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#2}}}3058 \def\footernote#1{\markboth{#1}{#1}}3059 3060 \def\today{\ifcase\month\or3061 January\or February\or March\or April\or May\or June\or3062 July\or August\or September\or October\or November\or December\fi3063 \space\number\day, \number\year}3064 3065 3066 3067 3068 %% CITATION AND BIBLIOGRAPHY COMMANDS3069 %% 3070 %% V1.6 no longer supports the older, nonstandard \shortcite and \citename setup stuff3071 % 3072 % 3073 % Modify Latex2e \@citex to separate citations with "], ["3074 \def\@citex[#1]#2{%3075 \let\@citea\@empty3076 \@cite{\@for\@citeb:=#2\do3077 {\@citea\def\@citea{], [}%3078 \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%3079 \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi3080 \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}%3081 \G@refundefinedtrue3082 \@latex@warning3083 {Citation `\@citeb‘ on page \thepage \space undefined}}%3084 {\hbox{\csname b@\@citeb\endcsname}}}}{#1}}3085 3086 % V1.6 we create hooks for the optional use of Donald Arseneau‘s3087 % cite.sty package. cite.sty is "smart" and will notice that the3088 % following format controls are already defined and will not3089 % redefine them. The result will be the proper sorting of the3090 % citation numbers and auto detection of 3 or more entry "ranges" -3091 % all in IEEE style: [1], [2], [5]--[7], [12]3092 % This also allows for an optional note, i.e., \cite[mynote]{..}.3093 % If the \cite with note has more than one reference, the note will3094 % be applied to the last of the listed references. It is generally3095 % desired that if a note is given, only one reference is listed in3096 % that \cite.3097 % Thanks to Mr. Arseneau for providing the required format arguments3098 % to produce the IEEE style.3099 \def\citepunct{], [}3100 \def\citedash{]--[}3101 3102 % V1.7 default to using same font for urls made by url.sty3103 \AtBeginDocument{\csname url@samestyle\endcsname}3104 3105 % V1.6 class files should always provide these3106 \def\newblock{\hskip .11em\@plus.33em\@minus.07em}3107 \let\@openbib@code\@empty3108 3109 3110 % Provide support for the control entries of IEEEtran.bst V1.00 and later.3111 % V1.7 optional argument allows for a different aux file to be specified in3112 % order to handle multiple bibliographies. For example, with multibib.sty:3113 % \newcites{sec}{Secondary Literature}3114 % \bstctlcite[@auxoutsec]{BSTcontrolhak}3115 \def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}3116 \def\@bstctlcite[#1]#2{\@bsphack3117 \@for\@citeb:=#2\do{%3118 \edef\@citeb{\expandafter\@firstofone\@citeb}%3119 \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%3120 \@esphack}3121 3122 % V1.6 provide a way for a user to execute a command just before 3123 % a given reference number - used to insert a \newpage to balance3124 % the columns on the last page3125 \edef\@IEEEtriggerrefnum{0} % the default of zero means that3126 % the command is not executed3127 \def\@IEEEtriggercmd{\newpage}3128 3129 % allow the user to alter the triggered command3130 \long\def\IEEEtriggercmd#1{\long\def\@IEEEtriggercmd{#1}}3131 3132 % allow user a way to specify the reference number just before the3133 % command is executed3134 \def\IEEEtriggeratref#1{\@IEEEtrantmpcountA=#1%3135 \edef\@IEEEtriggerrefnum{\the\@IEEEtrantmpcountA}}%3136 3137 % trigger command at the given reference3138 \def\@IEEEbibitemprefix{\@IEEEtrantmpcountA=\@IEEEtriggerrefnum\relax%3139 \advance\@IEEEtrantmpcountA by -1\relax%3140 \ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi}3141 3142 3143 \def\@biblabel#1{[#1]}3144 3145 % compsoc journals left align the reference numbers3146 \@IEEEcompsocnotconfonly{\def\@biblabel#1{[#1]\hfill}}3147 3148 % controls bib item spacing3149 \def\IEEEbibitemsep{0pt plus .5pt}3150 3151 \@IEEEcompsocconfonly{\def\IEEEbibitemsep{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}}3152 3153 3154 \def\thebibliography#1{\section*{\refname}%3155 \addcontentsline{toc}{section}{\refname}%3156 % V1.6 add some rubber space here and provide a command trigger3157 \footnotesize\@IEEEcompsocconfonly{\small}\vskip 0.3\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip%3158 \list{\@biblabel{\@arabic\c@enumiv}}%3159 {\settowidth\labelwidth{\@biblabel{#1}}%3160 \leftmargin\labelwidth3161 \advance\leftmargin\labelsep\relax3162 \itemsep \IEEEbibitemsep\relax3163 \usecounter{enumiv}%3164 \let\p@enumiv\@empty3165 \renewcommand\theenumiv{\@arabic\c@enumiv}}%3166 \let\@IEEElatexbibitem\bibitem%3167 \def\bibitem{\@IEEEbibitemprefix\@IEEElatexbibitem}%3168 \def\newblock{\hskip .11em plus .33em minus .07em}%3169 % originally:3170 % \sloppy\clubpenalty4000\widowpenalty4000%3171 % by adding the \interlinepenalty here, we make it more3172 % difficult, but not impossible, for LaTeX to break within a reference.3173 % IEEE almost never breaks a reference (but they do it more often with3174 % technotes). You may get an underfull vbox warning around the bibliography, 3175 % but the final result will be much more like what IEEE will publish. 3176 % MDS 11/20003177 \ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100%3178 \else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi%3179 \sfcode`\.=1000\relax}3180 \let\endthebibliography=\endlist3181 3182 3183 3184 3185 % TITLE PAGE COMMANDS3186 % 3187 % 3188 % \IEEEmembership is used to produce the sublargesize italic font used to indicate author 3189 % IEEE membership. compsoc uses a large size sans slant font3190 \def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}}3191 3192 3193 % \IEEEauthorrefmark{} produces a footnote type symbol to indicate author affiliation.3194 % When given an argument of 1 to 9, \IEEEauthorrefmark{} follows the standard LaTeX footnote3195 % symbol sequence convention. However, for arguments 10 and above, \IEEEauthorrefmark{} 3196 % reverts to using lower case roman numerals, so it cannot overflow. Do note that you 3197 % cannot use \footnotemark[] in place of \IEEEauthorrefmark{} within \author as the footnote3198 % symbols will have been turned off to prevent \thanks from creating footnote marks.3199 % \IEEEauthorrefmark{} produces a symbol that appears to LaTeX as having zero vertical3200 % height - this allows for a more compact line packing, but the user must ensure that3201 % the interline spacing is large enough to prevent \IEEEauthorrefmark{} from colliding3202 % with the text above.3203 % V1.7 make this a robust command3204 \DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or%3205 \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger%3206 \or \ddagger\ddagger \else\textsuperscript{\expandafter\romannumeral#1}\fi}}}}3207 3208 3209 % FONT CONTROLS AND SPACINGS FOR CONFERENCE MODE AUTHOR NAME AND AFFILIATION BLOCKS3210 % 3211 % The default font styles for the author name and affiliation blocks (confmode)3212 \def\@IEEEauthorblockNstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize\@IEEEcompsocconfonly{\large}}3213 \def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize\@IEEEcompsocconfonly{\large}}3214 % The default if the user does not use an author block3215 \def\@IEEEauthordefaulttextstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize}3216 3217 % spacing from title (or special paper notice) to author name blocks (confmode)3218 % can be negative3219 \def\@IEEEauthorblockconfadjspace{-0.25em}3220 % compsoc conferences need more space here3221 \@IEEEcompsocconfonly{\def\@IEEEauthorblockconfadjspace{0.75\@IEEEnormalsizeunitybaselineskip}}3222 3223 % spacing between name and affiliation blocks (confmode)3224 % This can be negative.3225 % IEEE doesn‘t want any added spacing here, but I will leave these3226 % controls in place in case they ever change their mind.3227 % Personally, I like 0.75ex.3228 %\def\@IEEEauthorblockNtopspace{0.75ex}3229 %\def\@IEEEauthorblockAtopspace{0.75ex}3230 \def\@IEEEauthorblockNtopspace{0.0ex}3231 \def\@IEEEauthorblockAtopspace{0.0ex}3232 % baseline spacing within name and affiliation blocks (confmode)3233 % must be positive, spacings below certain values will make 3234 % the position of line of text sensitive to the contents of the3235 % line above it i.e., whether or not the prior line has descenders, 3236 % subscripts, etc. For this reason it is a good idea to keep3237 % these above 2.6ex3238 \def\@IEEEauthorblockNinterlinespace{2.6ex}3239 \def\@IEEEauthorblockAinterlinespace{2.75ex}3240 3241 % This tracks the required strut size.3242 % See the \@IEEEauthorhalign command for the actual default value used.3243 \def\@IEEEauthorblockXinterlinespace{2.7ex}3244 3245 % variables to retain font size and style across groups3246 % values given here have no effect as they will be overwritten later3247 \gdef\@IEEESAVESTATEfontsize{10}3248 \gdef\@IEEESAVESTATEfontbaselineskip{12}3249 \gdef\@IEEESAVESTATEfontencoding{OT1}3250 \gdef\@IEEESAVESTATEfontfamily{ptm}3251 \gdef\@IEEESAVESTATEfontseries{m}3252 \gdef\@IEEESAVESTATEfontshape{n}3253 3254 % saves the current font attributes3255 \def\@IEEEcurfontSAVE{\global\let\@IEEESAVESTATEfontsize\f@size%3256 \global\let\@IEEESAVESTATEfontbaselineskip\f@baselineskip%3257 \global\let\@IEEESAVESTATEfontencoding\f@encoding%3258 \global\let\@IEEESAVESTATEfontfamily\f@family%3259 \global\let\@IEEESAVESTATEfontseries\f@series%3260 \global\let\@IEEESAVESTATEfontshape\f@shape}3261 3262 % restores the saved font attributes3263 \def\@IEEEcurfontRESTORE{\fontsize{\@IEEESAVESTATEfontsize}{\@IEEESAVESTATEfontbaselineskip}%3264 \fontencoding{\@IEEESAVESTATEfontencoding}%3265 \fontfamily{\@IEEESAVESTATEfontfamily}%3266 \fontseries{\@IEEESAVESTATEfontseries}%3267 \fontshape{\@IEEESAVESTATEfontshape}%3268 \selectfont}3269 3270 3271 % variable to indicate if the current block is the first block in the column3272 \newif\if@IEEEprevauthorblockincol \@IEEEprevauthorblockincolfalse3273 3274 3275 % the command places a strut with height and depth = \@IEEEauthorblockXinterlinespace3276 % we use this technique to have complete manual control over the spacing of the lines3277 % within the halign environment.3278 % We set the below baseline portion at 30%, the above3279 % baseline portion at 70% of the total length.3280 % Responds to changes in the document‘s \baselinestretch3281 \def\@IEEEauthorstrutrule{\@IEEEtrantmpdimenA\@IEEEauthorblockXinterlinespace%3282 \@IEEEtrantmpdimenA=\baselinestretch\@IEEEtrantmpdimenA%3283 \rule[-0.3\@IEEEtrantmpdimenA]{0pt}{\@IEEEtrantmpdimenA}}3284 3285 3286 % blocks to hold the authors‘ names and affilations. 3287 % Makes formatting easy for conferences3288 %3289 % use real definitions in conference mode3290 % name block3291 \def\IEEEauthorblockN#1{\relax\@IEEEauthorblockNstyle% set the default text style3292 \gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row3293 % the \expandafter hides the \cr in conditional tex, see the array.sty docs3294 % for details, probably not needed here as the \cr is in a macro3295 % do a spacer row if needed3296 \if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi3297 \global\@IEEEprevauthorblockincoltrue% we now have a block in this column3298 %restore the correct strut value3299 \gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}%3300 % input the author names3301 #1%3302 % end the row if the user did not already3303 \crcr}3304 % spacer row for names3305 \def\@IEEEauthorblockNtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockNtopspace}}3306 %3307 % affiliation block3308 \def\IEEEauthorblockA#1{\relax\@IEEEauthorblockAstyle% set the default text style3309 \gdef\@IEEEauthorblockXinterlinespace{0pt}%disable strut for spacer row3310 % the \expandafter hides the \cr in conditional tex, see the array.sty docs3311 % for details, probably not needed here as the \cr is in a macro3312 % do a spacer row if needed3313 \if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockAtopspaceline\fi3314 \global\@IEEEprevauthorblockincoltrue% we now have a block in this column3315 %restore the correct strut value3316 \gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockAinterlinespace}%3317 % input the author affiliations3318 #1%3319 % end the row if the user did not already3320 \crcr}3321 % spacer row for affiliations3322 \def\@IEEEauthorblockAtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockAtopspace}}3323 3324 3325 % allow papers to compile even if author blocks are used in modes other3326 % than conference or peerreviewca. For such cases, we provide dummy blocks.3327 \ifCLASSOPTIONconference3328 \else3329 \ifCLASSOPTIONpeerreviewca\else3330 % not conference or peerreviewca mode3331 \def\IEEEauthorblockN#1{#1}%3332 \def\IEEEauthorblockA#1{#1}%3333 \fi3334 \fi3335 3336 3337 3338 % we provide our own halign so as not to have to depend on tabular3339 \def\@IEEEauthorhalign{\@IEEEauthordefaulttextstyle% default text style3340 \lineskip=0pt\relax% disable line spacing3341 \lineskiplimit=0pt\relax%3342 \baselineskip=0pt\relax%3343 \@IEEEcurfontSAVE% save the current font3344 \mathsurround\z@\relax% no extra spacing around math3345 \let\\\@IEEEauthorhaligncr% replace newline with halign friendly one3346 \tabskip=0pt\relax% no column spacing3347 \everycr{}% ensure no problems here3348 \@IEEEprevauthorblockincolfalse% no author blocks yet3349 \def\@IEEEauthorblockXinterlinespace{2.7ex}% default interline space3350 \vtop\bgroup%vtop box3351 \halign\bgroup&\relax\hfil\@IEEEcurfontRESTORE\relax ##\relax3352 \hfil\@IEEEcurfontSAVE\@IEEEauthorstrutrule\cr}3353 3354 % ensure last line, exit from halign, close vbox3355 \def\end@IEEEauthorhalign{\crcr\egroup\egroup}3356 3357 % handle bogus star form3358 \def\@IEEEauthorhaligncr{{\ifnum0=`}\fi\@ifstar{\@@IEEEauthorhaligncr}{\@@IEEEauthorhaligncr}}3359 3360 % test and setup the optional argument to \\[]3361 \def\@@IEEEauthorhaligncr{\@testopt\@@@IEEEauthorhaligncr\z@skip}3362 3363 % end the line and do the optional spacer3364 \def\@@@IEEEauthorhaligncr[#1]{\ifnum0=`{\fi}\cr\noalign{\vskip#1\relax}}3365 3366 3367 3368 % flag to prevent multiple \and warning messages3369 \newif\if@IEEEWARNand3370 \@IEEEWARNandtrue3371 3372 % if in conference or peerreviewca modes, we support the use of \and as \author is a3373 % tabular environment, otherwise we warn the user that \and is invalid3374 % outside of conference or peerreviewca modes.3375 \def\and{\relax} % provide a bogus \and that we will then override3376 3377 \renewcommand{\and}[1][\relax]{\if@IEEEWARNand\typeout{** WARNING: \noexpand\and is valid only3378 when in conference or peerreviewca}\typeout{modes (line \the\inputlineno).}\fi\global\@IEEEWARNandfalse}3379 3380 \ifCLASSOPTIONconference%3381 \renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}%3382 \fi3383 \ifCLASSOPTIONpeerreviewca3384 \renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}%3385 \fi3386 3387 3388 % page clearing command3389 % based on LaTeX2e‘s \cleardoublepage, but allows different page styles3390 % for the inserted blank pages3391 \def\@IEEEcleardoublepage#1{\clearpage\if@twoside\ifodd\c@page\else3392 \hbox{}\thispagestyle{#1}\newpage\if@twocolumn\hbox{}\thispagestyle{#1}\newpage\fi\fi\fi}3393 3394 3395 % user command to invoke the title page3396 \def\maketitle{\par%3397 \begingroup%3398 \normalfont%3399 \def\thefootnote{}% the \thanks{} mark type is empty3400 \def\footnotemark{}% and kill space from \thanks within author3401 \let\@makefnmark\relax% V1.7, must *really* kill footnotemark to remove all \textsuperscript spacing as well.3402 \footnotesize% equal spacing between thanks lines3403 \footnotesep 0.7\baselineskip%see global setting of \footnotesep for more info3404 % V1.7 disable \thanks note indention for compsoc3405 \@IEEEcompsoconly{\long\def\@makefntext##1{\parindent 1em\noindent\hbox{\@makefnmark}##1}}%3406 \normalsize%3407 \ifCLASSOPTIONpeerreview3408 \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext%3409 \thispagestyle{IEEEpeerreviewcoverpagestyle}\@thanks%3410 \else3411 \if@twocolumn%3412 \ifCLASSOPTIONtechnote%3413 \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext%3414 \else3415 \twocolumn[\@maketitle\@IEEEdynamictitlevspace\@IEEEaftertitletext]%3416 \fi3417 \else3418 \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext%3419 \fi3420 \thispagestyle{IEEEtitlepagestyle}\@thanks%3421 \fi3422 % pullup page for pubid if used.3423 \if@IEEEusingpubid3424 \enlargethispage{-\@IEEEpubidpullup}%3425 \fi 3426 \endgroup3427 \setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax3428 \gdef\@thanks{}%3429 % v1.6b do not clear these as we will need the title again for peer review papers3430 % \gdef\@author{}\gdef\@title{}%3431 \let\thanks\relax}3432 3433 3434 3435 % V1.7 parbox to format \@IEEEcompsoctitleabstractindextext3436 \long\def\@IEEEcompsoctitleabstractindextextbox#1{\parbox{0.915\textwidth}{#1}}3437 3438 % formats the Title, authors names, affiliations and special paper notice3439 % THIS IS A CONTROLLED SPACING COMMAND! Do not allow blank lines or unintentional3440 % spaces to enter the definition - use % at the end of each line3441 \def\@maketitle{\newpage3442 \begin{center}%3443 \ifCLASSOPTIONtechnote% technotes3444 {\bfseries\large\@IEEEcompsoconly{\sffamily}\@title\par}\vskip 1.3em{\lineskip .5em\@IEEEcompsoconly{\sffamily}\@author3445 \@IEEEspecialpapernotice\par{\@IEEEcompsoconly{\vskip 1.5em\relax3446 \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par3447 \hfill\@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax3448 \else% not a technote3449 \vskip0.2em{\Huge\@IEEEcompsoconly{\sffamily}\@IEEEcompsocconfonly{\normalfont\normalsize\vskip 2\@IEEEnormalsizeunitybaselineskip3450 \bfseries\Large}\@title\par}\vskip1.0em\par%3451 % V1.6 handle \author differently if in conference mode3452 \ifCLASSOPTIONconference%3453 {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace%3454 \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}\relax3455 \else% peerreviewca, peerreview or journal3456 \ifCLASSOPTIONpeerreviewca3457 % peerreviewca handles author names just like conference mode3458 {\@IEEEcompsoconly{\sffamily}\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace%3459 \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par3460 {\@IEEEcompsoconly{\vskip 1.5em\relax3461 \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par\hfill3462 \@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax3463 \else% journal or peerreview3464 {\lineskip.5em\@IEEEcompsoconly{\sffamily}\sublargesize\@author\@IEEEspecialpapernotice\par3465 {\@IEEEcompsoconly{\vskip 1.5em\relax3466 \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par\hfill3467 \@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax3468 \fi3469 \fi3470 \fi\end{center}}3471 3472 3473 3474 % V1.7 Computer Society "diamond line" which follows index terms for nonconference papers3475 \def\@IEEEcompsocdiamondline{\vrule depth 0pt height 0.5pt width 4cm\hspace{7.5pt}%3476 \raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}%3477 \hspace{7.5pt}\vrule depth 0pt height 0.5pt width 4cm\relax}3478 3479 % V1.7 standard LateX2e \thanks, but with \itshape under compsoc. Also make it a \long\def3480 % We also need to trigger the one-shot footnote rule3481 \def\@IEEEtriggeroneshotfootnoterule{\global\@IEEEenableoneshotfootnoteruletrue}3482 3483 3484 \long\def\thanks#1{\footnotemark3485 \protected@xdef\@thanks{\@thanks3486 \protect\footnotetext[\the\c@footnote]{\@IEEEcompsoconly{\itshape3487 \protect\@IEEEtriggeroneshotfootnoterule\relax}\ignorespaces#1}}}3488 \let\@thanks\@empty3489 3490 % V1.7 allow \author to contain \par‘s. This is needed to allow \thanks to contain \par.3491 \long\def\author#1{\gdef\@author{#1}}3492 3493 3494 % in addition to setting up IEEEitemize, we need to remove a baselineskip space above and3495 % below it because \list‘s \pars introduce blank lines because of the footnote struts.3496 \def\@IEEEsetupcompsocitemizelist{\def\labelitemi{$\bullet$}%3497 \setlength{\IEEElabelindent}{0pt}\setlength{\parskip}{0pt}%3498 \setlength{\partopsep}{0pt}\setlength{\topsep}{0.5\baselineskip}\vspace{-1\baselineskip}\relax}3499 3500 3501 % flag for fake non-compsoc \IEEEcompsocthanksitem - prevents line break on very first item3502 \newif\if@IEEEbreakcompsocthanksitem \@IEEEbreakcompsocthanksitemfalse3503 3504 \ifCLASSOPTIONcompsoc3505 % V1.7 compsoc bullet item \thanks3506 % also, we need to redefine this to destroy the argument in \@IEEEdynamictitlevspace3507 \long\def\IEEEcompsocitemizethanks#1{\relax\@IEEEbreakcompsocthanksitemfalse\footnotemark3508 \protected@xdef\@thanks{\@thanks3509 \protect\footnotetext[\the\c@footnote]{\itshape\protect\@IEEEtriggeroneshotfootnoterule3510 {\let\IEEEiedlistdecl\relax\protect\begin{IEEEitemize}[\protect\@IEEEsetupcompsocitemizelist]\ignorespaces#1\relax3511 \protect\end{IEEEitemize}}\protect\vspace{-1\baselineskip}}}}3512 \DeclareRobustCommand*{\IEEEcompsocthanksitem}{\item}3513 \else3514 % non-compsoc, allow for dual compilation via rerouting to normal \thanks3515 \long\def\IEEEcompsocitemizethanks#1{\thanks{#1}}3516 % redirect to "pseudo-par" \hfil\break\indent after swallowing [] from \IEEEcompsocthanksitem[]3517 \DeclareRobustCommand{\IEEEcompsocthanksitem}{\@ifnextchar [{\@IEEEthanksswallowoptionalarg}%3518 {\@IEEEthanksswallowoptionalarg[\relax]}}3519 % be sure and break only after first item, be sure and ignore spaces after optional argument3520 \def\@IEEEthanksswallowoptionalarg[#1]{\relax\if@IEEEbreakcompsocthanksitem\hfil\break3521 \indent\fi\@IEEEbreakcompsocthanksitemtrue\ignorespaces}3522 \fi3523 3524 3525 % V1.6b define the \IEEEpeerreviewmaketitle as needed3526 \ifCLASSOPTIONpeerreview3527 \def\IEEEpeerreviewmaketitle{\@IEEEcleardoublepage{empty}%3528 \ifCLASSOPTIONtwocolumn3529 \twocolumn[\@IEEEpeerreviewmaketitle\@IEEEdynamictitlevspace]3530 \else3531 \newpage\@IEEEpeerreviewmaketitle\@IEEEstatictitlevskip3532 \fi3533 \thispagestyle{IEEEtitlepagestyle}}3534 \else3535 % \IEEEpeerreviewmaketitle does nothing if peer review option has not been selected3536 \def\IEEEpeerreviewmaketitle{\relax}3537 \fi3538 3539 % peerreview formats the repeated title like the title in journal papers.3540 \def\@IEEEpeerreviewmaketitle{\begin{center}\@IEEEcompsoconly{\sffamily}%3541 \normalfont\normalsize\vskip0.2em{\Huge\@title\par}\vskip1.0em\par3542 \end{center}}3543 3544 3545 3546 % V1.6 3547 % this is a static rubber spacer between the title/authors and the main text3548 % used for single column text, or when the title appears in the first column3549 % of two column text (technotes). 3550 \def\@IEEEstatictitlevskip{{\normalfont\normalsize3551 % adjust spacing to next text3552 % v1.6b handle peer review papers3553 \ifCLASSOPTIONpeerreview3554 % for peer review papers, the same value is used for both title pages3555 % regardless of the other paper modes3556 \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip3557 \else3558 \ifCLASSOPTIONconference% conference3559 \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip%3560 \else%3561 \ifCLASSOPTIONtechnote% technote3562 \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip%3563 \else% journal uses more space3564 \vskip 2.5\baselineskip plus 0.75\baselineskip minus 0.375\baselineskip%3565 \fi3566 \fi3567 \fi}}3568 3569 3570 % V1.63571 % This is a dynamically determined rigid spacer between the title/authors 3572 % and the main text. This is used only for single column titles over two 3573 % column text (most common)3574 % This is bit tricky because we have to ensure that the textheight of the3575 % main text is an integer multiple of \baselineskip3576 % otherwise underfull vbox problems may develop in the second column of the3577 % text on the titlepage3578 % The possible use of \IEEEpubid must also be taken into account.3579 \def\@IEEEdynamictitlevspace{{%3580 % we run within a group so that all the macros can be forgotten when we are done3581 \long\def\thanks##1{\relax}%don‘t allow \thanks to run when we evaluate the vbox height3582 \long\def\IEEEcompsocitemizethanks##1{\relax}%don‘t allow \IEEEcompsocitemizethanks to run when we evaluate the vbox height3583 \normalfont\normalsize% we declare more descriptive variable names3584 \let\@IEEEmaintextheight=\@IEEEtrantmpdimenA%height of the main text columns3585 \let\@IEEEINTmaintextheight=\@IEEEtrantmpdimenB%height of the main text columns with integer # lines3586 % set the nominal and minimum values for the title spacer3587 % the dynamic algorithm will not allow the spacer size to3588 % become less than \@IEEEMINtitlevspace - instead it will be3589 % lengthened3590 % default to journal values3591 \def\@IEEENORMtitlevspace{2.5\baselineskip}%3592 \def\@IEEEMINtitlevspace{2\baselineskip}%3593 % conferences and technotes need tighter spacing3594 \ifCLASSOPTIONconference%conference3595 \def\@IEEENORMtitlevspace{1\baselineskip}%3596 \def\@IEEEMINtitlevspace{0.75\baselineskip}%3597 \fi3598 \ifCLASSOPTIONtechnote%technote3599 \def\@IEEENORMtitlevspace{1\baselineskip}%3600 \def\@IEEEMINtitlevspace{0.75\baselineskip}%3601 \fi%3602 % get the height that the title will take up3603 \ifCLASSOPTIONpeerreview3604 \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@IEEEpeerreviewmaketitle}}%3605 \else3606 \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@maketitle}}%3607 \fi3608 \@IEEEmaintextheight=-\@IEEEmaintextheight% title takes away from maintext, so reverse sign3609 % add the height of the page textheight3610 \advance\@IEEEmaintextheight by \textheight%3611 % correct for title pages using pubid3612 \ifCLASSOPTIONpeerreview\else3613 % peerreview papers use the pubid on the cover page only.3614 % And the cover page uses a static spacer.3615 \if@IEEEusingpubid\advance\@IEEEmaintextheight by -\@IEEEpubidpullup\fi3616 \fi%3617 % subtract off the nominal value of the title bottom spacer3618 \advance\@IEEEmaintextheight by -\@IEEENORMtitlevspace%3619 % \topskip takes away some too3620 \advance\@IEEEmaintextheight by -\topskip%3621 % calculate the column height of the main text for lines3622 % now we calculate the main text height as if holding3623 % an integer number of \normalsize lines after the first3624 % and discard any excess fractional remainder3625 % we subtracted the first line, because the first line3626 % is placed \topskip into the maintext, not \baselineskip like the3627 % rest of the lines.3628 \@IEEEINTmaintextheight=\@IEEEmaintextheight%3629 \divide\@IEEEINTmaintextheight by \baselineskip%3630 \multiply\@IEEEINTmaintextheight by \baselineskip%3631 % now we calculate how much the title spacer height will3632 % have to be reduced from nominal (\@IEEEREDUCEmaintextheight is always3633 % a positive value) so that the maintext area will contain an integer3634 % number of normal size lines3635 % we change variable names here (to avoid confusion) as we no longer3636 % need \@IEEEINTmaintextheight and can reuse its dimen register3637 \let\@IEEEREDUCEmaintextheight=\@IEEEINTmaintextheight%3638 \advance\@IEEEREDUCEmaintextheight by -\@IEEEmaintextheight%3639 \advance\@IEEEREDUCEmaintextheight by \baselineskip%3640 % this is the calculated height of the spacer3641 % we change variable names here (to avoid confusion) as we no longer3642 % need \@IEEEmaintextheight and can reuse its dimen register3643 \let\@IEEECOMPENSATElen=\@IEEEmaintextheight%3644 \@IEEECOMPENSATElen=\@IEEENORMtitlevspace% set the nominal value3645 % we go with the reduced length if it is smaller than an increase3646 \ifdim\@IEEEREDUCEmaintextheight < 0.5\baselineskip\relax%3647 \advance\@IEEECOMPENSATElen by -\@IEEEREDUCEmaintextheight%3648 % if the resulting spacer is too small back out and go with an increase instead3649 \ifdim\@IEEECOMPENSATElen<\@IEEEMINtitlevspace\relax%3650 \advance\@IEEECOMPENSATElen by \baselineskip%3651 \fi%3652 \else%3653 % go with an increase because it is closer to the nominal than a decrease3654 \advance\@IEEECOMPENSATElen by -\@IEEEREDUCEmaintextheight%3655 \advance\@IEEECOMPENSATElen by \baselineskip%3656 \fi%3657 % set the calculated rigid spacer3658 \vspace{\@IEEECOMPENSATElen}}}3659 3660 3661 3662 % V1.63663 % we allow the user access to the last part of the title area3664 % useful in emergencies such as when a different spacing is needed3665 % This text is NOT compensated for in the dynamic sizer.3666 \let\@IEEEaftertitletext=\relax3667 \long\def\IEEEaftertitletext#1{\def\@IEEEaftertitletext{#1}}3668 3669 % V1.7 provide a way for users to enter abstract and keywords3670 % into the onecolumn title are. This text is compensated for3671 % in the dynamic sizer.3672 \let\@IEEEcompsoctitleabstractindextext=\relax3673 \long\def\IEEEcompsoctitleabstractindextext#1{\def\@IEEEcompsoctitleabstractindextext{#1}}3674 % V1.7 provide a way for users to get the \@IEEEcompsoctitleabstractindextext if3675 % not in compsoc journal mode - this way abstract and keywords can be placed3676 % in their conventional position if not in compsoc mode.3677 \def\IEEEdisplaynotcompsoctitleabstractindextext{%3678 \ifCLASSOPTIONcompsoc% display if compsoc conf3679 \ifCLASSOPTIONconference\@IEEEcompsoctitleabstractindextext\fi3680 \else% or if not compsoc3681 \@IEEEcompsoctitleabstractindextext\fi}3682 3683 3684 % command to allow alteration of baselinestretch, but only if the current3685 % baselineskip is unity. Used to tweak the compsoc abstract and keywords line spacing.3686 \def\@IEEEtweakunitybaselinestretch#1{{\def\baselinestretch{1}\selectfont3687 \global\@tempskipa\baselineskip}\ifnum\@tempskipa=\baselineskip%3688 \def\baselinestretch{#1}\selectfont\fi\relax}3689 3690 3691 % abstract and keywords are in \small, except 3692 % for 9pt docs in which they are in \footnotesize3693 % Because 9pt docs use an 8pt footnotesize, \small3694 % becomes a rather awkward 8.5pt3695 \def\@IEEEabskeysecsize{\small}3696 \ifx\CLASSOPTIONpt\@IEEEptsizenine3697 \def\@IEEEabskeysecsize{\footnotesize}3698 \fi3699 3700 % compsoc journals use \footnotesize, compsoc conferences use normalsize3701 \@IEEEcompsoconly{\def\@IEEEabskeysecsize{\footnotesize}}3702 \@IEEEcompsocconfonly{\def\@IEEEabskeysecsize{\normalsize}}3703 3704 3705 3706 3707 % V1.6 have abstract and keywords strip leading spaces, pars and newlines3708 % so that spacing is more tightly controlled.3709 \def\abstract{\normalfont3710 \if@twocolumn3711 \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax3712 \else3713 \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\end{center}\quotation\@IEEEabskeysecsize3714 \fi\@IEEEgobbleleadPARNLSP}3715 % V1.6 IEEE wants only 1 pica from end of abstract to introduction heading when in 3716 % conference mode (the heading already has this much above it)3717 \def\endabstract{\relax\ifCLASSOPTIONconference\vspace{0ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi3718 \normalfont\normalsize}3719 3720 \def\IEEEkeywords{\normalfont3721 \if@twocolumn3722 \@IEEEabskeysecsize\bfseries\textit{\IEEEkeywordsname}---\relax3723 \else3724 \begin{center}\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\end{center}\quotation\@IEEEabskeysecsize3725 \fi\@IEEEgobbleleadPARNLSP}3726 \def\endIEEEkeywords{\relax\ifCLASSOPTIONtechnote\vspace{1.34ex}\else\vspace{0.67ex}\fi3727 \par\if@twocolumn\else\endquotation\fi%3728 \normalfont\normalsize}3729 3730 % V1.7 compsoc keywords index terms3731 \ifCLASSOPTIONcompsoc3732 \ifCLASSOPTIONconference% compsoc conference3733 \def\abstract{\normalfont3734 \begin{center}\@IEEEabskeysecsize\textbf{\large\abstractname}\end{center}\vskip 0.5\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip3735 \if@twocolumn\else\quotation\fi\itshape\@IEEEabskeysecsize%3736 \par\@IEEEgobbleleadPARNLSP}3737 \def\IEEEkeywords{\normalfont\vskip 1.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip3738 \begin{center}\@IEEEabskeysecsize\textbf{\large\IEEEkeywordsname}\end{center}\vskip 0.5\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip3739 \if@twocolumn\else\quotation\fi\itshape\@IEEEabskeysecsize%3740 \par\@IEEEgobbleleadPARNLSP}3741 \else% compsoc not conference3742 \def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily3743 \if@twocolumn3744 \@IEEEabskeysecsize\noindent\textbf{\abstractname}---\relax3745 \else3746 \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\end{center}\quotation\@IEEEabskeysecsize%3747 \fi\@IEEEgobbleleadPARNLSP}3748 \def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily3749 \if@twocolumn3750 \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent3751 \textbf{\IEEEkeywordsname}---\relax3752 \else3753 \begin{center}\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\end{center}\quotation\@IEEEabskeysecsize%3754 \fi\@IEEEgobbleleadPARNLSP}3755 \fi3756 \fi3757 3758 3759 3760 % gobbles all leading \, \\ and \par, upon finding first token that3761 % is not a \ , \\ or a \par, it ceases and returns that token3762 % 3763 % used to strip leading \, \\ and \par from the input3764 % so that such things in the beginning of an environment will not3765 % affect the formatting of the text3766 \long\def\@IEEEgobbleleadPARNLSP#1{\let\@IEEEswallowthistoken=0%3767 \let\@IEEEgobbleleadPARNLSPtoken#1%3768 \let\@IEEEgobbleleadPARtoken=\par%3769 \let\@IEEEgobbleleadNLtoken=\\%3770 \let\@IEEEgobbleleadSPtoken=\ %3771 \def\@IEEEgobbleleadSPMACRO{\ }%3772 \ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadPARtoken%3773 \let\@IEEEswallowthistoken=1%3774 \fi%3775 \ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadNLtoken%3776 \let\@IEEEswallowthistoken=1%3777 \fi%3778 \ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPtoken%3779 \let\@IEEEswallowthistoken=1%3780 \fi%3781 % a control space will come in as a macro3782 % when it is the last one on a line3783 \ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPMACRO%3784 \let\@IEEEswallowthistoken=1%3785 \fi%3786 % if we have to swallow this token, do so and taste the next one3787 % else spit it out and stop gobbling3788 \ifx\@IEEEswallowthistoken 1\let\@IEEEnextgobbleleadPARNLSP=\@IEEEgobbleleadPARNLSP\else%3789 \let\@IEEEnextgobbleleadPARNLSP=#1\fi%3790 \@IEEEnextgobbleleadPARNLSP}%3791 3792 3793 3794 3795 % TITLING OF SECTIONS3796 \def\@IEEEsectpunct{:\ \,} % Punctuation after run-in section heading (headings which are3797 % part of the paragraphs), need little bit more than a single space3798 % spacing from section number to title3799 % compsoc conferences use regular period/space punctuation3800 \ifCLASSOPTIONcompsoc3801 \ifCLASSOPTIONconference3802 \def\@IEEEsectpunct{.\ }3803 \fi\fi3804 3805 3806 \def\@seccntformat#1{\csname the#1dis\endcsname\hskip 0.5em\relax}3807 3808 \ifCLASSOPTIONcompsoc3809 % compsoc journals need extra spacing3810 \ifCLASSOPTIONconference\else3811 \def\@seccntformat#1{\csname the#1dis\endcsname\hskip 1em\relax}3812 \fi\fi3813 3814 %v1.7 put {} after #6 to allow for some types of user font control3815 %and use \@@par rather than \par3816 \def\@sect#1#2#3#4#5#6[#7]#8{%3817 \ifnum #2>\c@secnumdepth3818 \let\@svsec\@empty3819 \else3820 \refstepcounter{#1}%3821 % load section label and spacer into \@svsec3822 \protected@edef\@svsec{\@seccntformat{#1}\relax}%3823 \fi%3824 \@tempskipa #5\relax3825 \ifdim \@tempskipa>\z@% tempskipa determines whether is treated as a high3826 \begingroup #6{\relax% or low level heading3827 \noindent % subsections are NOT indented3828 % print top level headings. \@svsec is label, #8 is heading title3829 % IEEE does not block indent the section title text, it flows like normal3830 {\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\@@par}}%3831 \endgroup3832 \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else3833 \protect\numberline{\csname the#1\endcsname}\fi#7}%3834 \else % printout low level headings3835 % svsechd seems to swallow the trailing space, protect it with \mbox{}3836 % got rid of sectionmark stuff3837 \def\@svsechd{#6{\hskip #3\relax\@svsec #8\@IEEEsectpunct\mbox{}}%3838 \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else3839 \protect\numberline{\csname the#1\endcsname}\fi#7}}%3840 \fi%skip down3841 \@xsect{#5}}3842 3843 3844 % section* handler3845 %v1.7 put {} after #4 to allow for some types of user font control3846 %and use \@@par rather than \par3847 \def\@ssect#1#2#3#4#5{\@tempskipa #3\relax3848 \ifdim \@tempskipa>\z@3849 %\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup3850 % IEEE does not block indent the section title text, it flows like normal3851 \begingroup \noindent #4{\relax{\hskip #1}{\interlinepenalty \@M #5\@@par}}\endgroup3852 % svsechd swallows the trailing space, protect it with \mbox{}3853 \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi3854 \@xsect{#3}}3855 3856 3857 %% SECTION heading spacing and font3858 %%3859 % arguments are: #1 - sectiontype name3860 % (for \@sect) #2 - section level3861 % #3 - section heading indent3862 % #4 - top separation (absolute value used, neg indicates not to indent main text)3863 % If negative, make stretch parts negative too!3864 % #5 - (absolute value used) positive: bottom separation after heading,3865 % negative: amount to indent main text after heading3866 % Both #4 and #5 negative means to indent main text and use negative top separation3867 % #6 - font control3868 % You‘ve got to have \normalfont\normalsize in the font specs below to prevent3869 % trouble when you do something like:3870 % \section{Note}{\ttfamily TT-TEXT} is known to ... 3871 % IEEE sometimes REALLY stretches the area before a section3872 % heading by up to about 0.5in. However, it may not be a good3873 % idea to let LaTeX have quite this much rubber.3874 \ifCLASSOPTIONconference%3875 % IEEE wants section heading spacing to decrease for conference mode3876 \def\section{\@startsection{section}{1}{\z@}{1.5ex plus 1.5ex minus 0.5ex}%3877 {0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}%3878 \def\subsection{\@startsection{subsection}{2}{\z@}{1.5ex plus 1.5ex minus 0.5ex}%3879 {0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}%3880 \else % for journals3881 \def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}% V1.6 3.0ex from 3.5ex3882 {0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}%3883 \def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}%3884 {0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}%3885 \fi3886 3887 % for both journals and conferences3888 % decided to put in a little rubber above the section, might help somebody3889 \def\subsubsection{\@startsection{subsubsection}{3}{\parindent}{0ex plus 0.1ex minus 0.1ex}%3890 {0ex}{\normalfont\normalsize\itshape}}%3891 \def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}%3892 {0ex}{\normalfont\normalsize\itshape}}%3893 3894 3895 % compsoc3896 \ifCLASSOPTIONcompsoc3897 \ifCLASSOPTIONconference3898 % compsoc conference3899 \def\section{\@startsection{section}{1}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}%3900 {1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\large\bfseries}}%3901 \def\subsection{\@startsection{subsection}{2}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}%3902 {1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\sublargesize\bfseries}}%3903 \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}%3904 {0ex}{\normalfont\normalsize\bfseries}}%3905 \def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}%3906 {0ex}{\normalfont\normalsize}}%3907 \else% compsoc journals3908 % use negative top separation as compsoc journals do not indent paragraphs after section titles3909 \def\section{\@startsection{section}{1}{\z@}{-3ex plus -2ex minus -1.5ex}%3910 {0.7ex plus 1ex minus 0ex}{\normalfont\large\sffamily\bfseries\scshape}}%3911 % Note that subsection and smaller may not be correct for the Computer Society,3912 % I have to look up an example.3913 \def\subsection{\@startsection{subsection}{2}{\z@}{-3.5ex plus -1.5ex minus -1.5ex}%3914 {0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\sffamily\bfseries}}%3915 \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex plus -1ex minus -1ex}%3916 {0.5ex plus 0.5ex minus 0ex}{\normalfont\normalsize\sffamily\itshape}}%3917 \def\paragraph{\@startsection{paragraph}{4}{2\parindent}{-0ex plus -0.1ex minus -0.1ex}%3918 {0ex}{\normalfont\normalsize}}%3919 \fi\fi3920 3921 3922 3923 3924 %% ENVIRONMENTS3925 % "box" symbols at end of proofs3926 \def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box3927 % V1.6 some journals use an open box instead that will just fit around a closed one3928 \def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}}3929 \ifCLASSOPTIONcompsoc3930 \def\IEEEQED{\IEEEQEDopen} % default to open for compsoc3931 \else3932 \def\IEEEQED{\IEEEQEDclosed} % otherwise default to closed3933 \fi3934 3935 % v1.7 name change to avoid namespace collision with amsthm. Also add support3936 % for an optional argument.3937 \def\IEEEproof{\@ifnextchar[{\@IEEEproof}{\@IEEEproof[\IEEEproofname]}}3938 \def\@IEEEproof[#1]{\par\noindent\hspace{2em}{\itshape #1: }}3939 \def\endIEEEproof{\hspace*{\fill}~\IEEEQED\par}3940 3941 3942 %\itemindent is set to \z@ by list, so define new temporary variable3943 \newdimen\@IEEEtmpitemindent3944 \def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\topsep 0pt\rmfamily\trivlist%3945 \item[\hskip \labelsep{\indent\itshape #1\ #2:}]\itemindent\@IEEEtmpitemindent}3946 \def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\topsep 0pt\rmfamily \trivlist%3947 % V1.6 IEEE is back to using () around theorem names which are also in italics3948 % Thanks to Christian Peel for reporting this.3949 \item[\hskip\labelsep{\indent\itshape #1\ #2\ (#3):}]\itemindent\@IEEEtmpitemindent}3950 % V1.7 remove bogus \unskip that caused equations in theorems to collide with3951 % lines below.3952 \def\@endtheorem{\endtrivlist}3953 3954 % V1.63955 % display command for the section the theorem is in - so that \thesection3956 % is not used as this will be in Roman numerals when we want arabic.3957 % LaTeX2e uses \def\@thmcounter#1{\noexpand\arabic{#1}} for the theorem number3958 % (second part) display and \def\@thmcountersep{.} as a separator.3959 % V1.7 intercept calls to the section counter and reroute to \@IEEEthmcounterinsection3960 % to allow \appendix(ices} to override as needed.3961 %3962 % special handler for sections, allows appendix(ices) to override3963 \gdef\@IEEEthmcounterinsection#1{\arabic{#1}}3964 % string macro3965 \edef\@IEEEstringsection{section}3966 3967 % redefine the #1#2[#3] form of newtheorem to use a hook to \@IEEEthmcounterinsection3968 % if section in_counter is used3969 \def\@xnthm#1#2[#3]{%3970 \expandafter\@ifdefinable\csname #1\endcsname3971 {\@definecounter{#1}\@newctr{#1}[#3]%3972 \edef\@IEEEstringtmp{#3}3973 \ifx\@IEEEstringtmp\@IEEEstringsection3974 \expandafter\xdef\csname the#1\endcsname{%3975 \noexpand\@IEEEthmcounterinsection{#3}\@thmcountersep3976 \@thmcounter{#1}}%3977 \else3978 \expandafter\xdef\csname the#1\endcsname{%3979 \expandafter\noexpand\csname the#3\endcsname \@thmcountersep3980 \@thmcounter{#1}}%3981 \fi3982 \global\@namedef{#1}{\@thm{#1}{#2}}%3983 \global\@namedef{end#1}{\@endtheorem}}}3984 3985 3986 3987 %% SET UP THE DEFAULT PAGESTYLE3988 \ps@headings3989 \pagenumbering{arabic}3990 3991 % normally the page counter starts at 13992 \setcounter{page}{1}3993 % however, for peerreview the cover sheet is page 0 or page -13994 % (for duplex printing)3995 \ifCLASSOPTIONpeerreview3996 \if@twoside3997 \setcounter{page}{-1}3998 \else3999 \setcounter{page}{0}4000 \fi4001 \fi4002 4003 % standard book class behavior - let bottom line float up and down as4004 % needed when single sided4005 \ifCLASSOPTIONtwoside\else\raggedbottom\fi4006 % if two column - turn on twocolumn, allow word spacings to stretch more and4007 % enforce a rigid position for the last lines4008 \ifCLASSOPTIONtwocolumn4009 % the peer review option delays invoking twocolumn4010 \ifCLASSOPTIONpeerreview\else4011 \twocolumn4012 \fi4013 \sloppy 4014 \flushbottom4015 \fi4016 4017 4018 4019 4020 % \APPENDIX and \APPENDICES definitions4021 4022 % This is the \@ifmtarg command from the LaTeX ifmtarg package4023 % by Peter Wilson (CUA) and Donald Arseneau4024 % \@ifmtarg is used to determine if an argument to a command4025 % is present or not.4026 % For instance:4027 % \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}}4028 % \@ifmtarg is used with our redefined \section command if4029 % \appendices is invoked.4030 % The command \section will behave slightly differently depending4031 % on whether the user specifies a title: 4032 % \section{My appendix title}4033 % or not:4034 % \section{}4035 % This way, we can eliminate the blank lines where the title4036 % would be, and the unneeded : after Appendix in the table of4037 % contents 4038 \begingroup4039 \catcode`\Q=34040 \long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}4041 \long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}4042 \endgroup4043 % end of \@ifmtarg defs4044 4045 4046 % V1.74047 % command that allows the one time saving of the original definition4048 % of section to \@IEEEappendixsavesection for \appendix or \appendices 4049 % we don‘t save \section here as it may be redefined later by other4050 % packages (hyperref.sty, etc.)4051 \def\@IEEEsaveoriginalsectiononce{\let\@IEEEappendixsavesection\section4052 \let\@IEEEsaveoriginalsectiononce\relax}4053 4054 % neat trick to grab and process the argument from \section{argument}4055 % we process differently if the user invoked \section{} with no4056 % argument (title)4057 % note we reroute the call to the old \section*4058 \def\@IEEEprocessthesectionargument#1{%4059 \@ifmtarg{#1}{%4060 \@IEEEappendixsavesection*{\appendixname~\thesectiondis}%4061 \addcontentsline{toc}{section}{\appendixname~\thesection}}{%4062 \@IEEEappendixsavesection*{\appendixname~\thesectiondis \\* #1}%4063 \addcontentsline{toc}{section}{\appendixname~\thesection: #1}}}4064 4065 % we use this if the user calls \section{} after4066 % \appendix-- which has no meaning. So, we ignore the4067 % command and its argument. Then, warn the user.4068 \def\@IEEEdestroythesectionargument#1{\typeout{** WARNING: Ignoring useless4069 \protect\section\space in Appendix (line \the\inputlineno).}}4070 4071 4072 % remember \thesection forms will be displayed in \ref calls4073 % and in the Table of Contents.4074 % The \sectiondis form is used in the actual heading itself4075 4076 % appendix command for one single appendix4077 % normally has no heading. However, if you want a 4078 % heading, you can do so via the optional argument:4079 % \appendix[Optional Heading]4080 \def\appendix{\relax}4081 \renewcommand{\appendix}[1][]{\@IEEEsaveoriginalsectiononce\par4082 % v1.6 keep hyperref‘s identifiers unique4083 \gdef\theHsection{Appendix.A}%4084 % v1.6 adjust hyperref‘s string name for the section4085 \xdef\Hy@chapapp{appendix}%4086 \setcounter{section}{0}%4087 \setcounter{subsection}{0}%4088 \setcounter{subsubsection}{0}%4089 \setcounter{paragraph}{0}%4090 \gdef\thesection{A}%4091 \gdef\thesectiondis{}% 4092 \gdef\thesubsection{\Alph{subsection}}%4093 \gdef\@IEEEthmcounterinsection##1{A}4094 \refstepcounter{section}% update the \ref counter4095 \@ifmtarg{#1}{\@IEEEappendixsavesection*{\appendixname}%4096 \addcontentsline{toc}{section}{\appendixname}}{%4097 \@IEEEappendixsavesection*{\appendixname~\\* #1}%4098 \addcontentsline{toc}{section}{\appendixname: #1}}%4099 % redefine \section command for appendix4100 % leave \section* as is4101 \def\section{\@ifstar{\@IEEEappendixsavesection*}{%4102 \@IEEEdestroythesectionargument}}% throw out the argument4103 % of the normal form4104 }4105 4106 4107 4108 % appendices command for multiple appendices4109 % user then calls \section with an argument (possibly empty) to4110 % declare the individual appendices4111 \def\appendices{\@IEEEsaveoriginalsectiononce\par4112 % v1.6 keep hyperref‘s identifiers unique4113 \gdef\theHsection{Appendix.\Alph{section}}%4114 % v1.6 adjust hyperref‘s string name for the section4115 \xdef\Hy@chapapp{appendix}%4116 \setcounter{section}{-1}% we want \refstepcounter to use section 04117 \setcounter{subsection}{0}%4118 \setcounter{subsubsection}{0}%4119 \setcounter{paragraph}{0}%4120 \ifCLASSOPTIONromanappendices%4121 \gdef\thesection{\Roman{section}}%4122 \gdef\thesectiondis{\Roman{section}}%4123 \@IEEEcompsocconfonly{\gdef\thesectiondis{\Roman{section}.}}%4124 \gdef\@IEEEthmcounterinsection##1{A\arabic{##1}}4125 \else%4126 \gdef\thesection{\Alph{section}}%4127 \gdef\thesectiondis{\Alph{section}}%4128 \@IEEEcompsocconfonly{\gdef\thesectiondis{\Alph{section}.}}%4129 \gdef\@IEEEthmcounterinsection##1{\Alph{##1}}4130 \fi%4131 \refstepcounter{section}% update the \ref counter4132 \setcounter{section}{0}% NEXT \section will be the FIRST appendix4133 % redefine \section command for appendices4134 % leave \section* as is4135 \def\section{\@ifstar{\@IEEEappendixsavesection*}{% process the *-form4136 \refstepcounter{section}% or is a new section so,4137 \@IEEEprocessthesectionargument}}% process the argument 4138 % of the normal form4139 }4140 4141 4142 4143 % \IEEEPARstart4144 % Definition for the big two line drop cap letter at the beginning of the4145 % first paragraph of journal papers. The first argument is the first letter4146 % of the first word, the second argument is the remaining letters of the4147 % first word which will be rendered in upper case.4148 % In V1.6 this has been completely rewritten to:4149 % 4150 % 1. no longer have problems when the user begins an environment4151 % within the paragraph that uses \IEEEPARstart.4152 % 2. auto-detect and use the current font family4153 % 3. revise handling of the space at the end of the first word so that4154 % interword glue will now work as normal.4155 % 4. produce correctly aligned edges for the (two) indented lines.4156 % 4157 % We generalize things via control macros - playing with these is fun too.4158 % 4159 % V1.7 added more control macros to make it easy for IEEEtrantools.sty users4160 % to change the font style.4161 % 4162 % the number of lines that are indented to clear it4163 % may need to increase if using decenders4164 \def\@IEEEPARstartDROPLINES{2}4165 % minimum number of lines left on a page to allow a \@IEEEPARstart4166 % Does not take into consideration rubber shrink, so it tends to4167 % be overly cautious4168 \def\@IEEEPARstartMINPAGELINES{2}4169 % V1.7 the height of the drop cap is adjusted to match the height of this text4170 % in the current font (when \IEEEPARstart is called).4171 \def\@IEEEPARstartHEIGHTTEXT{T}4172 % the depth the letter is lowered below the baseline4173 % the height (and size) of the letter is determined by the sum4174 % of this value and the height of the \@IEEEPARstartHEIGHTTEXT in the current4175 % font. It is a good idea to set this value in terms of the baselineskip4176 % so that it can respond to changes therein.4177 \def\@IEEEPARstartDROPDEPTH{1.1\baselineskip}4178 % V1.7 the font the drop cap will be rendered in,4179 % can take zero or one argument.4180 \def\@IEEEPARstartFONTSTYLE{\bfseries}4181 % V1.7 any additional, non-font related commands needed to modify4182 % the drop cap letter, can take zero or one argument.4183 \def\@IEEEPARstartCAPSTYLE{\MakeUppercase}4184 % V1.7 the font that will be used to render the rest of the word,4185 % can take zero or one argument.4186 \def\@IEEEPARstartWORDFONTSTYLE{\relax}4187 % V1.7 any additional, non-font related commands needed to modify4188 % the rest of the word, can take zero or one argument.4189 \def\@IEEEPARstartWORDCAPSTYLE{\MakeUppercase}4190 % This is the horizontal separation distance from the drop letter to the main text.4191 % Lengths that depend on the font (e.g., ex, em, etc.) will be referenced4192 % to the font that is active when \IEEEPARstart is called. 4193 \def\@IEEEPARstartSEP{0.15em}4194 % V1.7 horizontal offset applied to the left of the drop cap.4195 \def\@IEEEPARstartHOFFSET{0em}4196 % V1.7 Italic correction command applied at the end of the drop cap.4197 \def\@IEEEPARstartITLCORRECT{\/}4198 4199 % V1.7 compoc uses nonbold drop cap and small caps word style4200 \ifCLASSOPTIONcompsoc4201 \def\@IEEEPARstartFONTSTYLE{\mdseries}4202 \def\@IEEEPARstartWORDFONTSTYLE{\scshape}4203 \def\@IEEEPARstartWORDCAPSTYLE{\relax}4204 \fi4205 4206 % definition of \IEEEPARstart4207 % THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES4208 % 4209 % The token \@IEEEPARstartfont will be globally defined after the first use4210 % of \IEEEPARstart and will be a font command which creates the big letter4211 % The first argument is the first letter of the first word and the second4212 % argument is the rest of the first word(s).4213 \def\IEEEPARstart#1#2{\par{%4214 % if this page does not have enough space, break it and lets start4215 % on a new one4216 \@IEEEtranneedspace{\@IEEEPARstartMINPAGELINES\baselineskip}{\relax}%4217 % V1.7 move this up here in case user uses \textbf for \@IEEEPARstartFONTSTYLE4218 % which uses command \leavevmode which causes an unwanted \indent to be issued4219 \noindent4220 % calculate the desired height of the big letter4221 % it extends from the top of \@IEEEPARstartHEIGHTTEXT in the current font4222 % down to \@IEEEPARstartDROPDEPTH below the current baseline4223 \settoheight{\@IEEEtrantmpdimenA}{\@IEEEPARstartHEIGHTTEXT}%4224 \addtolength{\@IEEEtrantmpdimenA}{\@IEEEPARstartDROPDEPTH}%4225 % extract the name of the current font in bold4226 % and place it in \@IEEEPARstartFONTNAME4227 \def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}%4228 {\@IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}%4229 \xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}%4230 % define a font based on this name with a point size equal to the desired4231 % height of the drop letter4232 \font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax%4233 % save this value as a counter (integer) value (sp points)4234 \@IEEEtrantmpcountA=\@IEEEtrantmpdimenA%4235 % now get the height of the actual letter produced by this font size4236 \settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\@IEEEPARstartCAPSTYLE{#1}}%4237 % If something bogus happens like the first argument is empty or the4238 % current font is strange, do not allow a zero height.4239 \ifdim\@IEEEtrantmpdimenB=0pt\relax%4240 \typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}%4241 \typeout{ Forcing the drop letter font size to 10pt.}%4242 \@IEEEtrantmpdimenB=10pt%4243 \fi%4244 % and store it as a counter4245 \@IEEEtrantmpcountB=\@IEEEtrantmpdimenB%4246 % Since a font size doesn‘t exactly correspond to the height of the capital4247 % letters in that font, the actual height of the letter, \@IEEEtrantmpcountB,4248 % will be less than that desired, \@IEEEtrantmpcountA4249 % we need to raise the font size, \@IEEEtrantmpdimenA 4250 % by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB4251 % But, TeX doesn‘t have floating point division, so we have to use integer4252 % division. Hence the use of the counters.4253 % We need to reduce the denominator so that the loss of the remainder will4254 % have minimal affect on the accuracy of the result4255 \divide\@IEEEtrantmpcountB by 200%4256 \divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB%4257 % Then reequalize things when we use TeX‘s ability to multiply by4258 % floating point values4259 \@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA%4260 \multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA%4261 % \@IEEEPARstartfont is globaly set to the calculated font of the big letter4262 % We need to carry this out of the local calculation area to to create the4263 % big letter.4264 \global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB%4265 % Now set \@IEEEtrantmpdimenA to the width of the big letter4266 % We need to carry this out of the local calculation area to set the4267 % hanging indent4268 \settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont4269 \@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}}}%4270 % end of the isolated calculation environment4271 % add in the extra clearance we want4272 \advance\@IEEEtrantmpdimenA by \@IEEEPARstartSEP\relax%4273 % add in the optional offset4274 \advance\@IEEEtrantmpdimenA by \@IEEEPARstartHOFFSET\relax%4275 % V1.7 don‘t allow negative offsets to produce negative hanging indents4276 \@IEEEtrantmpdimenB\@IEEEtrantmpdimenA4277 \ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi4278 % \@IEEEtrantmpdimenA has the width of the big letter plus the4279 % separation space and \@IEEEPARstartfont is the font we need to use4280 % Now, we make the letter and issue the hanging indent command4281 % The letter is placed in a box of zero width and height so that other4282 % text won‘t be displaced by it.4283 \hangindent\@IEEEtrantmpdimenB\hangafter=-\@IEEEPARstartDROPLINES%4284 \makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}%4285 \raisebox{-\@IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\@IEEEPARstartHOFFSET}%4286 \@IEEEPARstartfont\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}%4287 \hspace{\@IEEEPARstartSEP}}}%4288 {\@IEEEPARstartWORDFONTSTYLE{\@IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}}4289 4290 4291 4292 4293 4294 4295 % determines if the space remaining on a given page is equal to or greater4296 % than the specified space of argument one4297 % if not, execute argument two (only if the remaining space is greater than zero)4298 % and issue a \newpage4299 % 4300 % example: \@IEEEtranneedspace{2in}{\vfill}4301 % 4302 % Does not take into consideration rubber shrinkage, so it tends to4303 % be overly cautious4304 % Based on an example posted by Donald Arseneau4305 % Note this macro uses \@IEEEtrantmpdimenB internally for calculations,4306 % so DO NOT PASS \@IEEEtrantmpdimenB to this routine4307 % if you need a dimen register, import with \@IEEEtrantmpdimenA instead4308 \def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable4309 \@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left4310 \ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left4311 \ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi%4312 \newpage%4313 \fi\endgroup}4314 4315 4316 4317 % IEEEbiography ENVIRONMENT4318 % Allows user to enter biography leaving place for picture (adapts to font size)4319 % As of V1.5, a new optional argument allows you to have a real graphic!4320 % V1.5 and later also fixes the "colliding biographies" which could happen when a 4321 % biography‘s text was shorter than the space for the photo.4322 % MDS 7/20014323 % V1.6 prevent multiple biographies from making multiple TOC entries4324 \newif\if@IEEEbiographyTOCentrynotmade4325 \global\@IEEEbiographyTOCentrynotmadetrue4326 4327 % biography counter so hyperref can jump directly to the biographies4328 % and not just the previous section4329 \newcounter{IEEEbiography}4330 \setcounter{IEEEbiography}{0}4331 4332 % photo area size4333 \def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area4334 \def\@IEEEBIOphotodepth{1.25in} % depth (height) of the biography photo area4335 % area cleared for photo4336 \def\@IEEEBIOhangwidth{1.14in} % width cleared for the biography photo area4337 \def\@IEEEBIOhangdepth{1.25in} % depth cleared for the biography photo area4338 % actual depth will be a multiple of 4339 % \baselineskip, rounded up4340 \def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography4341 4342 \newenvironment{IEEEbiography}[2][]{\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize%4343 \unitlength 1in\parskip=0pt\par\parindent 1em\interlinepenalty500%4344 % we need enough space to support the hanging indent4345 % the nominal value of the spacer4346 % and one extra line for good measure4347 \@IEEEtrantmpdimenA=\@IEEEBIOhangdepth%4348 \advance\@IEEEtrantmpdimenA by \@IEEEBIOskipN%4349 \advance\@IEEEtrantmpdimenA by 1\baselineskip%4350 % if this page does not have enough space, break it and lets start4351 % with a new one4352 \@IEEEtranneedspace{\@IEEEtrantmpdimenA}{\relax}%4353 % nominal spacer can strech, not shrink use 1fil so user can out stretch with \vfill4354 \vskip \@IEEEBIOskipN plus 1fil minus 0\baselineskip%4355 % the default box for where the photo goes4356 \def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{%4357 \begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}%4358 %4359 % detect if the optional argument was supplied, this requires the4360 % \@ifmtarg command as defined in the appendix section above4361 % and if so, override the default box with what they want4362 \@ifmtarg{#1}{\relax}{\def\@IEEEtempbiographybox{\mbox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}%4363 \centering%4364 #1%4365 \end{minipage}}}}% end if optional argument supplied4366 % Make an entry into the table of contents only if we have not done so before4367 \if@IEEEbiographyTOCentrynotmade%4368 % link labels to the biography counter so hyperref will jump4369 % to the biography, not the previous section4370 \setcounter{IEEEbiography}{-1}%4371 \refstepcounter{IEEEbiography}%4372 \addcontentsline{toc}{section}{Biographies}%4373 \global\@IEEEbiographyTOCentrynotmadefalse%4374 \fi%4375 % one more biography4376 \refstepcounter{IEEEbiography}%4377 % Make an entry for this name into the table of contents 4378 \addcontentsline{toc}{subsection}{#2}%4379 % V1.6 properly handle if a new paragraph should occur while the4380 % hanging indent is still active. Do this by redefining \par so4381 % that it will not start a new paragraph. (But it will appear to the4382 % user as if it did.) Also, strip any leading pars, newlines, or spaces.4383 \let\@IEEEBIOORGparCMD=\par% save the original \par command4384 \edef\par{\hfil\break\indent}% the new \par will not be a "real" \par4385 \settoheight{\@IEEEtrantmpdimenA}{\@IEEEtempbiographybox}% get height of biography box4386 \@IEEEtrantmpdimenB=\@IEEEBIOhangdepth%4387 \@IEEEtrantmpcountA=\@IEEEtrantmpdimenB% countA has the hang depth4388 \divide\@IEEEtrantmpcountA by \baselineskip% calculates lines needed to produce the hang depth4389 \advance\@IEEEtrantmpcountA by 1% ensure we overestimate4390 % set the hanging indent4391 \hangindent\@IEEEBIOhangwidth%4392 \hangafter-\@IEEEtrantmpcountA%4393 % reference the top of the photo area to the top of a capital T4394 \settoheight{\@IEEEtrantmpdimenB}{\mbox{T}}%4395 % set the photo box, give it zero width and height so as not to disturb anything4396 \noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{%4397 \raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}%4398 % now place the author name and begin the bio text4399 \noindent\textbf{#2\ }\@IEEEgobbleleadPARNLSP}{\relax\let\par=\@IEEEBIOORGparCMD\par%4400 % 7/2001 V1.5 detect when the biography text is shorter than the photo area4401 % and pad the unused area - preventing a collision from the next biography entry4402 % MDS4403 \ifnum \prevgraf <\@IEEEtrantmpcountA\relax% detect when the biography text is shorter than the photo4404 \advance\@IEEEtrantmpcountA by -\prevgraf% calculate how many lines we need to pad4405 \advance\@IEEEtrantmpcountA by -1\relax% we compensate for the fact that we indented an extra line4406 \@IEEEtrantmpdimenA=\baselineskip% calculate the length of the padding4407 \multiply\@IEEEtrantmpdimenA by \@IEEEtrantmpcountA%4408 \noindent\rule{0pt}{\@IEEEtrantmpdimenA}% insert an invisible support strut4409 \fi%4410 \par\normalfont}4411 4412 4413 4414 % V1.64415 % added biography without a photo environment4416 \newenvironment{IEEEbiographynophoto}[1]{%4417 % Make an entry into the table of contents only if we have not done so before4418 \if@IEEEbiographyTOCentrynotmade%4419 % link labels to the biography counter so hyperref will jump4420 % to the biography, not the previous section4421 \setcounter{IEEEbiography}{-1}%4422 \refstepcounter{IEEEbiography}%4423 \addcontentsline{toc}{section}{Biographies}%4424 \global\@IEEEbiographyTOCentrynotmadefalse%4425 \fi%4426 % one more biography4427 \refstepcounter{IEEEbiography}%4428 % Make an entry for this name into the table of contents 4429 \addcontentsline{toc}{subsection}{#1}%4430 \normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500%4431 \vskip 4\baselineskip plus 1fil minus 0\baselineskip%4432 \parskip=0pt\par%4433 \noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont}4434 4435 4436 % provide the user with some old font commands4437 % got this from article.cls4438 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}4439 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}4440 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}4441 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}4442 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}4443 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}4444 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}4445 \DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}4446 \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}4447 4448 4449 % SPECIAL PAPER NOTICE COMMANDS4450 % 4451 % holds the special notice text4452 \def\@IEEEspecialpapernotice{\relax}4453 4454 % for special papers, like invited papers, the user can do:4455 % \IEEEspecialpapernotice{(Invited Paper)} before \maketitle4456 \def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference%4457 \def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}%4458 \else%4459 \def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}%4460 \fi}4461 4462 4463 4464 4465 % PUBLISHER ID COMMANDS4466 % to insert a publisher‘s ID footer4467 % V1.6 \IEEEpubid has been changed so that the change in page size and style4468 % occurs in \maketitle. \IEEEpubid must now be issued prior to \maketitle4469 % use \IEEEpubidadjcol as before - in the second column of the title page4470 % These changes allow \maketitle to take the reduced page height into4471 % consideration when dynamically setting the space between the author 4472 % names and the maintext.4473 %4474 % the amount the main text is pulled up to make room for the4475 % publisher‘s ID footer4476 % IEEE uses about 1.3\baselineskip for journals, 4477 % dynamic title spacing will clean up the fraction4478 \def\@IEEEpubidpullup{1.3\baselineskip}4479 \ifCLASSOPTIONtechnote4480 % for technotes it must be an integer of baselineskip as there can be no4481 % dynamic title spacing for two column mode technotes (the title is in the4482 % in first column) and we should maintain an integer number of lines in the4483 % second column4484 % There are some examples (such as older issues of "Transactions on4485 % Information Theory") in which IEEE really pulls the text off the ID for4486 % technotes - about 0.55in (or 4\baselineskip). We‘ll use 2\baselineskip4487 % and call it even.4488 \def\@IEEEpubidpullup{2\baselineskip}4489 \fi4490 4491 % V1.7 compsoc does not use a pullup4492 \ifCLASSOPTIONcompsoc4493 \def\@IEEEpubidpullup{0pt}4494 \fi4495 4496 % holds the ID text4497 \def\@IEEEpubid{\relax}4498 4499 % flag so \maketitle can tell if \IEEEpubid was called4500 \newif\if@IEEEusingpubid4501 \global\@IEEEusingpubidfalse4502 % issue this command in the page to have the ID at the bottom4503 % V1.6 use before \maketitle4504 \def\IEEEpubid#1{\def\@IEEEpubid{#1}\global\@IEEEusingpubidtrue}4505 4506 4507 % command which will pull up (shorten) the column it is executed in4508 % to make room for the publisher ID. Place in the second column of4509 % the title page when using \IEEEpubid4510 % Is smart enough not to do anything when in single column text or4511 % if the user hasn‘t called \IEEEpubid4512 % currently needed in for the second column of a page with the4513 % publisher ID. If not needed in future releases, please provide this4514 % command and define it as \relax for backward compatibility4515 % v1.6b do not allow command to operate if the peer review option has been 4516 % selected because \IEEEpubidadjcol will not be on the cover page.4517 % V1.7 do nothing if compsoc4518 \def\IEEEpubidadjcol{\ifCLASSOPTIONcompsoc\else\ifCLASSOPTIONpeerreview\else4519 \if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@IEEEpubidpullup}\fi\fi\fi\fi}4520 4521 % Special thanks to Peter Wilson, Daniel Luecking, and the other4522 % gurus at comp.text.tex, for helping me to understand how best to4523 % implement the IEEEpubid command in LaTeX.4524 4525 4526 4527 %% Lockout some commands under various conditions4528 4529 % general purpose bit bucket4530 \newsavebox{\@IEEEtranrubishbin}4531 4532 % flags to prevent multiple warning messages4533 \newif\if@IEEEWARNthanks4534 \newif\if@IEEEWARNIEEEPARstart4535 \newif\if@IEEEWARNIEEEbiography4536 \newif\if@IEEEWARNIEEEbiographynophoto4537 \newif\if@IEEEWARNIEEEpubid4538 \newif\if@IEEEWARNIEEEpubidadjcol4539 \newif\if@IEEEWARNIEEEmembership4540 \newif\if@IEEEWARNIEEEaftertitletext4541 \@IEEEWARNthankstrue4542 \@IEEEWARNIEEEPARstarttrue4543 \@IEEEWARNIEEEbiographytrue4544 \@IEEEWARNIEEEbiographynophototrue4545 \@IEEEWARNIEEEpubidtrue4546 \@IEEEWARNIEEEpubidadjcoltrue4547 \@IEEEWARNIEEEmembershiptrue4548 \@IEEEWARNIEEEaftertitletexttrue4549 4550 4551 %% Lockout some commands when in various modes, but allow them to be restored if needed4552 %%4553 % save commands which might be locked out4554 % so that the user can later restore them if needed4555 \let\@IEEESAVECMDthanks\thanks4556 \let\@IEEESAVECMDIEEEPARstart\IEEEPARstart4557 \let\@IEEESAVECMDIEEEbiography\IEEEbiography4558 \let\@IEEESAVECMDendIEEEbiography\endIEEEbiography4559 \let\@IEEESAVECMDIEEEbiographynophoto\IEEEbiographynophoto4560 \let\@IEEESAVECMDendIEEEbiographynophoto\endIEEEbiographynophoto4561 \let\@IEEESAVECMDIEEEpubid\IEEEpubid4562 \let\@IEEESAVECMDIEEEpubidadjcol\IEEEpubidadjcol4563 \let\@IEEESAVECMDIEEEmembership\IEEEmembership4564 \let\@IEEESAVECMDIEEEaftertitletext\IEEEaftertitletext4565 4566 4567 % disable \IEEEPARstart when in draft mode4568 % This may have originally been done because the pre-V1.6 drop letter4569 % algorithm had problems with a non-unity baselinestretch4570 % At any rate, it seems too formal to have a drop letter in a draft4571 % paper.4572 \ifCLASSOPTIONdraftcls4573 \def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** ATTENTION: \noexpand\IEEEPARstart4574 is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse}4575 \fi4576 % and for technotes4577 \ifCLASSOPTIONtechnote4578 \def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart4579 is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse}4580 \fi4581 4582 4583 % lockout unneeded commands when in conference mode4584 \ifCLASSOPTIONconference4585 % when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid,4586 % \IEEEmembership and \IEEEaftertitletext will all swallow their given text. 4587 % \IEEEPARstart will output a normal character instead4588 % warn the user about these commands only once to prevent the console screen4589 % from filling up with redundant messages4590 \def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks4591 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse}4592 \def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart4593 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse}4594 4595 4596 % LaTeX treats environments and commands with optional arguments differently.4597 % the actual ("internal") command is stored as \\commandname 4598 % (accessed via \csname\string\commandname\endcsname )4599 % the "external" command \commandname is a macro with code to determine4600 % whether or not the optional argument is presented and to provide the 4601 % default if it is absent. So, in order to save and restore such a command4602 % we would have to save and restore \\commandname as well. But, if LaTeX4603 % ever changes the way it names the internal names, the trick would break.4604 % Instead let us just define a new environment so that the internal4605 % name can be left undisturbed.4606 \newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNIEEEbiography\typeout{** WARNING: \noexpand\IEEEbiography4607 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographyfalse%4608 \setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax}4609 % and make biography point to our bogus biography4610 \let\IEEEbiography=\@IEEEbogusbiography4611 \let\endIEEEbiography=\end@IEEEbogusbiography4612 4613 \renewenvironment{IEEEbiographynophoto}[1]{\if@IEEEWARNIEEEbiographynophoto\typeout{** WARNING: \noexpand\IEEEbiographynophoto4614 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographynophotofalse%4615 \setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax}4616 4617 \def\IEEEpubid#1{\if@IEEEWARNIEEEpubid\typeout{** WARNING: \noexpand\IEEEpubid 4618 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidfalse}4619 \def\IEEEpubidadjcol{\if@IEEEWARNIEEEpubidadjcol\typeout{** WARNING: \noexpand\IEEEpubidadjcol4620 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidadjcolfalse}4621 \def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership4622 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse}4623 \def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext4624 is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse}4625 \fi4626 4627 4628 % provide a way to restore the commands that are locked out4629 \def\IEEEoverridecommandlockouts{%4630 \typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}%4631 \let\thanks\@IEEESAVECMDthanks%4632 \let\IEEEPARstart\@IEEESAVECMDIEEEPARstart%4633 \let\IEEEbiography\@IEEESAVECMDIEEEbiography%4634 \let\endIEEEbiography\@IEEESAVECMDendIEEEbiography%4635 \let\IEEEbiographynophoto\@IEEESAVECMDIEEEbiographynophoto%4636 \let\endIEEEbiographynophoto\@IEEESAVECMDendIEEEbiographynophoto%4637 \let\IEEEpubid\@IEEESAVECMDIEEEpubid%4638 \let\IEEEpubidadjcol\@IEEESAVECMDIEEEpubidadjcol%4639 \let\IEEEmembership\@IEEESAVECMDIEEEmembership%4640 \let\IEEEaftertitletext\@IEEESAVECMDIEEEaftertitletext}4641 4642 4643 4644 % need a backslash character for typeout output4645 {\catcode`\|=0 \catcode`\\=124646 |xdef|@IEEEbackslash{\}}4647 4648 4649 % hook to allow easy disabling of all legacy warnings4650 \def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno).4651 Use \@IEEEbackslash #2 instead.}}4652 4653 4654 % provide for legacy commands4655 \def\authorblockA{\@IEEElegacywarn{authorblockA}{IEEEauthorblockA}\IEEEauthorblockA}4656 \def\authorblockN{\@IEEElegacywarn{authorblockN}{IEEEauthorblockN}\IEEEauthorblockN}4657 \def\authorrefmark{\@IEEElegacywarn{authorrefmark}{IEEEauthorrefmark}\IEEEauthorrefmark}4658 \def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart}4659 \def\pubid{\@IEEElegacywarn{pubid}{IEEEpubid}\IEEEpubid}4660 \def\pubidadjcol{\@IEEElegacywarn{pubidadjcol}{IEEEpubidadjcol}\IEEEpubidadjcol}4661 \def\QED{\@IEEElegacywarn{QED}{IEEEQED}\IEEEQED}4662 \def\QEDclosed{\@IEEElegacywarn{QEDclosed}{IEEEQEDclosed}\IEEEQEDclosed}4663 \def\QEDopen{\@IEEElegacywarn{QEDopen}{IEEEQEDopen}\IEEEQEDopen}4664 \def\specialpapernotice{\@IEEElegacywarn{specialpapernotice}{IEEEspecialpapernotice}\IEEEspecialpapernotice}4665 4666 4667 4668 % provide for legacy environments4669 \def\biography{\@IEEElegacywarn{biography}{IEEEbiography}\IEEEbiography}4670 \def\biographynophoto{\@IEEElegacywarn{biographynophoto}{IEEEbiographynophoto}\IEEEbiographynophoto}4671 \def\keywords{\@IEEElegacywarn{keywords}{IEEEkeywords}\IEEEkeywords}4672 \def\endbiography{\endIEEEbiography}4673 \def\endbiographynophoto{\endIEEEbiographynophoto}4674 \def\endkeywords{\endIEEEkeywords}4675 4676 4677 % provide for legacy IED commands/lengths when possible4678 \let\labelindent\IEEElabelindent4679 \def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin}4680 \def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth}4681 \def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep}4682 \def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc}4683 \def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl}4684 \def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr}4685 4686 4687 4688 % let \proof use the IEEEtran version even after amsthm is loaded4689 % \proof is now deprecated in favor of \IEEEproof4690 \AtBeginDocument{\def\proof{\@IEEElegacywarn{proof}{IEEEproof}\IEEEproof}\def\endproof{\endIEEEproof}}4691 4692 % V1.7 \overrideIEEEmargins is no longer supported.4693 \def\overrideIEEEmargins{%4694 \typeout{** WARNING: \string\overrideIEEEmargins \space no longer supported (line \the\inputlineno).}%4695 \typeout{** Use the \string\CLASSINPUTinnersidemargin, \string\CLASSINPUToutersidemargin \space controls instead.}}4696 4697 4698 \endinput4699 4700 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%4701 % That‘s all folks!
Draft-TCAD.tex
1 \documentclass[journal]{IEEETran} 2 \usepackage{times} 3 \usepackage{graphicx} 4 \usepackage{psfrag} 5 \usepackage{epsfig} 6 \usepackage{algorithm} 7 \usepackage{algorithmic} 8 \usepackage{multicol} 9 \usepackage{multirow} 10 \usepackage{setspace} 11 \usepackage{cite} 12 \usepackage{array} 13 \usepackage{amssymb} 14 \usepackage[cmex10]{amsmath} 15 \usepackage{mdwmath} 16 \usepackage{mdwtab} 17 \usepackage[tight,footnotesize]{subfigure} 18 \usepackage{mdwlist} 19 \usepackage{caption} 20 \usepackage{slashbox} 21 \usepackage{yhmath} 22 \usepackage[amssymb]{SIunits} 23 \usepackage[usenames]{color} 24 %\numberwithin{equation}{section} 25 %\usepackage{footnpag} 26 %\twocolumn 27 %\singlespacing 28 %\linespread{0.9} 29 \newtheorem{thm}{Theorem} 30 \newtheorem{lemma}[thm]{Lemma} 31 \newtheorem{property}[thm]{Property} 32 33 34 35 36 \begin{document} 37 38 \title{Reliability-Driven Energy Efficient Task Scheduling for Multiprocessor Real-Time Systems} 39 40 \author{Tongquan~Wei, 41 Xiaodao~Chen, 42 and ~Shiyan~Hu 43 44 \thanks{T. Wei is with the CS department of East China Normal University, Shanghai China.} 45 \thanks{X. Chen and S. Hu are with the ECE department of Michigan Tech University, Houghton, MI USA.} 46 \thanks{This work was supported in part by the Fundamental Research Funds for the Central Universities of China under the grant No. 78220021, and Shanghai Pujiang Program.} 47 } 48 49 \maketitle 50 51 52 \begin{abstract} 53 This paper presents a reliability-driven task scheduling scheme for multiprocessor real-time embedded systems that optimizes system energy consumption under stochastic fault occurrences. The task scheduling problem is formulated as an integer linear program where a novel fault adaptation variable is introduced to model the uncertainties of fault occurrences. The proposed scheme considers both the dynamic power and the leakage power, is able to handle the scheduling of independent tasks and tasks with precedence constraints, and is capable of scheduling tasks with varying deadlines. Experimental results have demonstrated that the proposed reliability-driven parallel scheduling scheme achieves energy savings of more than $15\%$ when compared to the approach of designing for the corner case of fault occurrences. 54 55 56 \end{abstract} 57 58 59 60 61 62 \section{Introduction} 63 The number of hardware transient faults has been rising due to the increasing level of integration and reducing size of transistor features in addition to harsh operating environments. The probability of fault occurrences is even higher in a multiprocessor system as a result of large number of components and increased design complexity. Since real-time applications demand both temporal and logical correctness, it is desirable that in the presence of faults real-time tasks finish execution before their respective deadlines. Therefore, real-time embedded systems are typically designed with enough margins to tolerate the worst case expected number of faults by trading off fault coverage and fault detection latency with system performance. Fault tolerance in real-time multiprocessor systems is typically achieved through primary-backup (PB) approach where two copies of a task run on different processors \cite{MOSSE94,GHOSH97}. 64 65 66 The need for energy-efficient design is increasing for battery-powered real-time systems to reduce power density and enhance the system operational lifetime. Dynamic Voltage Scaling (DVS) is a popular system level power management technique that exploits technological advances in power supply circuits to reduce processor power consumption by dynamically scaling down the processor speed. Numerous task allocation and scheduling techniques based on DVS have been proposed for energy minimization in multiprocessor systems \cite{GURURAJ09,XIAN07,ZENG09}. However, using DVS technique to reduce power consumption has a negative effects on system reliability. It has been shown that scaling down the processor speed increases the transient faults rates, especially for those induced by cosmic ray radiations, and thus degrades system reliability \cite{ZHU04}. Therefore, fault-tolerance and energy are two design constraints that interplay and need to be jointly optimized. 67 68 69 The joint optimization of energy and fault-tolerance as two important design constraints for safety-critical real-time systems has been extensively investigated in the recent past \cite{MELHEM04,ZHANG06,ZHU08}. Both energy savings and fault-tolerance are achieved by utilizing the slack time in a task schedule. However, all these researches focus on the joint optimization of the two design constraints for uni-processor systems. Wei et. al \cite{WEI08} proposed an energy efficient task allocation and scheduling schemes with deterministic fault-tolerance capabilities for symmetric multiprocessor systems executing tasks with hard real-time constraints. However, the presented scheme can not handle the scheduling of tasks with precedence constraints. In \cite{RASHID05}, the authors described a flexible multiprocessor platform using modest hardware support to enable an energy efficient fault-tolerance mechanism. Timeliness of the system is not considered as a design constraint. In \cite{POP07}, the authors addressed the scheduling and voltage scaling for hard real-time applications that have been statically mapped on heterogeneous distributed embedded systems. Tasks in a given task set are assumed to share a common deadline and the effect of voltage scaling on system reliability is taken into account. Similar to \cite{POP07}, Zhu et al. \cite{QI10} also investigate the reliability aware power management for real-time tasks sharing a common deadline, but they assume the investigated multiprocessor system is homogenous and tasks to be scheduled are independent. 70 71 72 This paper proposes a reliability-driven energy efficient task scheduling scheme for real-time homogeneous or heterogeneous multiprocessor embedded systems that optimizes system energy consumption under stochastic fault occurrences. The proposed multiprocessor task scheduling scheme is featured by a novel fault adaptation variable $\beta$ that models the uncertainties in fault occurrences. The proposed scheme considers both the dynamic power and the leakage power, is able to handle the scheduling of both independent tasks and tasks with precedence constraints, and is capable of scheduling tasks with varying deadlines. 73 74 75 The rest of the paper is organized as follows. Section~\ref{sect:models} describes the system architecture and models. Section~\ref{sect:formulation} formulates the energy optimization problem as an integer linear program. Section~\ref{sect:ProScheme} describes the proposed reliability-driven scheduling scheme that generates energy optimum task schedules. Section~\ref{sect:NumResults} presents the numerical results and Section~\ref{sect:conclusion} concludes the paper. 76 77 78 79 \section{System Architecture and Models}\label{sect:models} 80 Focus of the study is on multiprocessor systems where processing units are tightly coupled, inter-unit communication is achieved via common shared memory, and communication cost is assumed to be negligible. It is assumed that the target multiprocessor system consists of $N$ DVS-equipped processing units and each processing element supports $L$ discrete frequency levels. As part of the future work, this system model can be improved by incorporating communication cost into task execution time. The problem formulation will be slightly modified and the proposed framework could be extended to handle that. 81 82 83 84 \subsection{Application and Energy Model} 85 Consider a real-time task set $\Gamma$ consisting of $M$ periodic tasks with precedence constraints: $\{\Gamma | \tau_1, \tau_2, \cdots, \tau_M \}$. A task is ready for execution only if the execution of its predecessor is completed. Similarly, the successor of a task is ready for execution only if the execution of the task is completed. The timing characteristics of the task $\tau_m$ are defined to be a tuple $\tau_m = \{T_m, D_m, C_m\}$, where $T_m$ is the period, $D_m$ is the deadline, and $C_m$ is the task execution cycles. It is assumed that the period of a task equals its deadline, that is, $T_m = D_m$. 86 87 88 The power consumption of a CMOS device can be modeled as the sum of dynamic power consumption and static power consumption. The average dynamic power consumption $p_{d}$ can be estimated by a strictly increasing and convex function, that is, $p_{d}\propto f^3$ \cite{WESTE92}. Let $p_s$ denote the static power consumption of a device, $I_{subn}$ denote the sub-threshold leakage current, and $I_j$ denote the reverse bias junction current, then the static power consumption of the device is given by $p_s = V_{dd} I_{subn} + |V_{bs}| I_j,$ where $V_{bs}$ is the body bias voltage, and $V_{dd}$ is the supply voltage \cite{JEJURIKAR04}. 89 90 91 The total energy ($E_{tot}$) consumed by a multiprocessor system during the execution of real-time tasks in a given task set is hence estimated by 92 \begin{align} \label{eqn:Etot} 93 E_{tot} = \sum_{m=1}^M \frac{C_m} {f_m} (p_d + p_s), 94 \end{align} 95 where $\frac{C_m} {f_m}$ denotes the execution time of task $\tau_m$ at the frequency $f_m$. 96 97 98 \subsection{Recovery Model} 99 Checkpointing technique is used in this work to provide fault-tolerance. It is assumed that checkpointing intervals for a given task are equal. Let $k_m$ be the worst case number of fault occurrences during the execution of task $\tau_m$ at the frequency level $l$, $f_m$ be the operating frequency of task $\tau_m$ at the frequency level $l$, and $O_m$ be the optimal number of checkpoints for task $\tau_m$ that minimizes the task response time at the frequency level $l$, then $O_m$ is given by100 \begin{eqnarray}\label{eqn:MI}101 O_m = \left \lceil \sqrt{\frac{k_m C_m}{c_s f_m}} - 1 \right \rceil \quad \text {or} \quad \left \lfloor \sqrt{\frac{k_m C_m}{c_s f_m}} - 1 \right \rfloor,\notag102 \end{eqnarray}103 where $c_s$ is the checkpointing overhead \cite{ZHANG06}. Assuming the best case where no faults occur during the execution of task $\tau_m$, then $CB_m$, which is defined to be the execution cycles of task $\tau_m$ with only checkpointing overhead, is expressed as $CB_m = C_m + O_m \times c_s \times f_m.$ Assuming the worst case where faults occur at the end of checkpointing saving, then $CW_m$, which is defined to be the execution cycles of task $\tau_m$ including checkpointing overhead and the worst case error recovery overhead, is given by $CW_m= CB_m + \frac{k_m C_m}{(O_m + 1) } + 2 k_m \times c_s \times f_m.$ In this equation, $\frac{C_m}{(O_m + 1)}$ denotes the checkpoint interval and $\frac{k_m C_m}{(O_m + 1) }$ indicates the overhead to recover from $k_m$ fault occurrences. The term $2 k_m \times c_s \times f_m$ gives the overheads of $k_m$ checkpoint savings and $k_m$ system state retrievals \cite{ZHANG06}.104 105 $CB_m$ and $CW_m$ of task $\tau_m$ are constant for a fixed operating frequency $f_m$ or frequency level $l$ of task $\tau_m$. However, the current execution time $C_m$ of task task $\tau_m$ is a random variable due to the stochastic property of fault occurrences. Since it is difficult to solve a mathematical program with uncertainty, the energy optimization problem is transformed into a deterministic optimization problem without random variables. In this work, a variable $\beta$, referred to as fault adaptation variable, is introduced to model the uncertainty in task execution time due to fault occurrences. The current execution time of task $\tau_m$ including fault recovery overhead can be expressed as a function of $CB_m$ and $CW_m$, that is,106 \begin{align}\label{eqn:CI}107 &{C_m} = (1 - \beta) \times CB_m + \beta \times CW_m,108 \end{align}109 where $0 \leq \beta \leq 1$. The execution time of task $\tau_m$ is $ CW_m $ if $\beta = 1$ and is $CB_m $ if $\beta = 0$.110 111 112 Let $\lambda_l$ denote the average fault arrival rate at the frequency level $l$ for $1 \leq l \leq L$, where $L$ is the number of processor supported frequenc levels. The $\lambda_l$ at frequency $f_m$ can be derived using the equation $\lambda_l = \gamma \times e^{-\alpha f_m},$ where $\gamma$ and $\alpha$ are constant parameters \cite{ZHU04}. Since transient faults are typically modeled using the Poisson distribution, the probability of $k_m$ fault occurrences during the execution of task $\tau_m$ at frequency $f_m$ is hence given by113 \vspace{-0.2cm}114 $$\frac{e^{- \lambda_l \frac{C_m}{f_m}} \times ( \lambda_l \frac{C_m}{f_m})^{k_m}} {k_m!}.$$115 116 117 The reliability of a task is defined to be the probability of completing the task successfully subject to faults \cite{ZHU04}. As a result, the reliability of task $\tau_m$ is the probability of completing the task successfully subject up to $k_m$ faults. The task level reliability is maintained if all tasks in the task set finish the execution successfully under their respective given reliability target. Let $RG_m$ denote the reliability goal of task $\tau_m$ and $R_m$ denote the reliability of the task, the reliability of task $\tau_m$ is maintained if the inequality118 \begin{align}\label{eqn:Reliability}119 RG_m \le R_m = \sum_{k_m}{\frac{e^{- \lambda_l \frac{C_m}{f_m}} \times ( \lambda_l \frac{C_m}{f_m})^{k_m}} {k_m!}}120 \end{align}121 holds for $\beta$ = 1. Since $\lambda_l, C_m, f_m$, and $k_m$ all are functions of the frequency level $l$ of task $\tau_m$, $R_m$ is also a function of the frequency level $l$ of task $\tau_m$. For a given frequency level $l$ ($1 \le l \le L$) and $\beta =1$, $\lambda_l, C_m$, and $f_m$ are all known; thus, the worst case number of fault occurrences $k_m$ subject to target reliability $RG_m$ can be iteratively derived using the inequality (\ref{eqn:Reliability}).122 123 %\vspace{-0.3in}124 \section{Integer Linear Program (ILP) Formulation}\label{sect:formulation}125 %\vspace{-0.3in}126 The reliability-driven energy efficient task-to-processor assignment and scheduling is formulated as an integer linear programming (ILP) problem. The object function is the multiprocessor energy consumption that considers both the dynamic power and leakage power, as is given in Equation (\ref{eqn:Etot}). Energy optimization is performed under constraints of the task execution time as a function of the fault adaptation variable $\beta$ for both independent and dependent tasks with varying deadlines.127 128 129 The variable $A_{m,l,n}$ is introduced to denote the scheduling of task $m$ at the frequency level $l$ on processor $n$. $A_{m,l,n}$ is equal to $1$ if task $\tau_m$ is scheduled at the $l$-th frequency level on processor $n$, and is equal to $0$ if $\tau_m$ is scheduled at any other frequency levels or on any other processors. For the sake of easy presentation, an ILP definition for single processor task scheduling is given below to demonstrate the formulation. Then the variable $A_{m,l,n}$ becomes $A_{m,l,1}$. Let the variable $S_i$ and $S_j$ denote the start time of task $\tau_i$ and task $\tau_j$, respectively, and the variable $Smin_{(i,j)}$ denote the minimum of the $S_{i}$ and $S_{j}$. Thus, the equation $Smin_{(i,j)}$ = $min$($S_{i}$,$S_{j}$) holds for any two tasks in a given task set. The $b_{i,j}$ is a auxiliary binary decision variable indicating the relationship of $Smin_{(i,j)}$, $S_{i}$, and $S_{j}$. If $S_{i} < S_{j}$ holds, that is, $Smin_{(i,j)} = S_{i}$, then $b_{i,j}$ = 1; else $b_{i,j}$ = 0. $\mathcal{H}$ is a large constant number and is set to 10000 in the experimental section. Similar to $Smin_{(i,j)}$, the variable $Smax_{(i,j)}$ is introduced to indicate the maximum of the $S_{i}$ and $S_{j}$. That is, $Smax_{(i,j)}$ = $max$($S_{i}$,$S_{j}$) holds for any two tasks in a given task set. Two auxiliary variables $h_{i,j}$ and $g_{i,j}$ are also introduced as pseudo-linear constraints to facilitate the formulation.130 131 132 Given independent or dependent tasks $\tau_m$ with respective deadlines of $D_m$ for $m = 1, 2, \cdots,M$, the number of processor supported frequency levels $L$, and a value of $\beta$ for $0 \leq \beta \leq 1$, the goal is to find $A_{m,l,1}$ and $S_{m}$ for $m = 1, 2, \cdots,M$ and $l = 1, 2, \cdots, L$ that minimize the system energy consumption under the given constraints. The formulation of the ILP problem is thus given as follows.133 %\renewcommand\arraystretch{0.5} %CHANGE LINE SPACE OF ARRAY, DEFAULT IS 1134 \begin{align}135 \text{\textnormal{minimize:}} 136 &E_{tot}(A_{m,l,1};S_{m}) \notag\\137 \text{\textnormal{subject to:}} 138 &A_{m,l} = 0,1 \label{eqn:DDa}\139 &\displaystyle\sum_{l=1}^L \sum_{n=1}^N A_{m,l,1} = 1 \label{eqn:DDb}\140 &\displaystyle Smin_{(i,j)} \le S_{i} \label{eqn:DDc}\141 &\displaystyle Smin_{(i,j)} \le S_{j} \label{eqn:DDd}\142 &\displaystyle Smin_{(i,j)} \ge S_{i} - \mathcal{H} \times (1-b_{i,j}) \label{eqn:DDe}\143 &\displaystyle Smin_{(i,j)} \ge S_{j} - \mathcal{H} \times b_{i,j} \label{eqn:DDf}\144 &\displaystyle b_{i,j} = {1, 0} \label{eqn:DDh}\145 &\displaystyle Smax_{(i,j)} = S_{i} + S_{j} - Smin_{(i,j)} \label{eqn:DDg}\146 &\displaystyle h_{i,j} = \mathcal{H} \times (S_{i} - Smax_{(i,j)}) + S_{j} \label{eqn:DDj}\147 &\displaystyle S_{i} - h_{i,j} \ge \sum_{l=1}^L A_{j,l,1}\left(\frac {C_j} {f_{j}} \right) \label{eqn:DDk}\148 &\displaystyle g_{i,j} = \mathcal{H} \times (S_{j} - Smax_{(i,j)}) + S_{i} \label{eqn:DDl}149 \end{align}150 \begin{align}151 %\text{\textnormal{}}152 &\displaystyle S_{j} - g_{i,j} \ge \sum_{l=1}^L A_{i,l,1}\left(\frac {C_i} {f_{i}} \right) \label{eqn:DDm}\153 &\displaystyle S_{i} + \sum_{l=1}^L A_{i,l,1}\left(\frac {C_i} {f_{i}} \right) \le D_i \label{eqn:DDn}\154 &\displaystyle S_{m_1} < S_{m_2} \label{eqn:DDo}\155 &\displaystyle (\tau_{m_1}, \tau_{m_2}) \in \Gamma; 1\le l \le L \notag156 \end{align}157 158 Equation (\ref{eqn:DDa}) restates the definition of the variable $A_{m,l,1}$. That is, $A_{m,l,1}$ is either 0 or 1. Equation (\ref{eqn:DDb}) indicates that each task runs at one and only one processor frequency level. Inequality (\ref{eqn:DDc}) to Equation (\ref{eqn:DDh}) ensure that $Smin_{(i,j)}$ = $min$($S_{i}$,$S_{j}$) holds. Equation (\ref{eqn:DDg}) identifies the maximum of $S_{i}$ and $S_{j}$. Equation (\ref{eqn:DDj}) to (\ref{eqn:DDm}) ensure that the executions of task $\tau_i$ and $\tau_j$ on the processor have no overlapping. Equation (\ref{eqn:DDn}) indicates that each task has to finish the execution before its deadline. Equation (\ref{eqn:DDo}) enforces the precedence constraints assuming task $\tau_{m_2}$ can not start until the execution of task $\tau_{m_1}$ finishes. This formulation can be easily extended to handle the scheduling of tasks on multiple processors. Due to space limitation, it is not presented in this paper.159 160 161 \section{Reliability-Driven Parallel Task Scheduling for Multiprocessor Systems}\label{sect:ProScheme}162 The reliability-driven energy efficient task scheduling aims to generate an energy optimum schedule and meet the target task level reliability goal under the assumption of the Poisson probability distribution of fault occurrences. A systematic reliability-driven parallel task scheduling algorithm, referred to as RDPS, is proposed in this section to derive the desired fault adaptation variable $\beta$ and generate the energy optimum task schedule for a given task set with fault-tolerance requirements. As described in Fig. \ref{ALG1}, for a given task set $\Gamma$ and the target reliability $RG_m$, a value of the fault adaptation variable $\beta$ is randomly picked, and the associated fault recovery overhead is incorporated in task execution time based on the selected $\beta$ (step \textit{A}). The schedule of the task set is then generated by solving the integer linear program definition (step \textit{B}). Finally, the reliability $R_m$ of each task is derived using Monte Carlo simulation (step \textit{C}). If the reliability of the a task does not satisfies the stop-condition of the RDPS algorithm, the fault adaptation variable $\beta$ is adjusted and the above process is repeated. If the reliability of all tasks satisfies the stop-condition of the RDPS algorithm, the output task schedule is optimal in energy consumption and its reliability meets the system reliability requirement. In other words, the output task schedule is the desired task schedule if ($R_m - RG_m$) $\geq \epsilon >$ 0 holds, where $\epsilon$ is an arbitrarily small positive number. The following subsections describe each step of the RDPS algorithm in details.163 164 165 \begin{figure}166 \algsetup{linenodelimiter=.}167 \begin{algorithmic}[1]168 \REQUIRE task set $\Gamma$ $\&$ the reliability goal $RG_m$169 \ENSURE the desired $\beta$ $\&$ energy optimum task schedule170 \STATE randomly pick a value of $\beta$ in $0 \leq \beta \leq 1$171 \REPEAT172 \STATE {\textit{A}: update $C_m$ of $\tau_m$ based on $\beta$}, then update $\beta$173 \STATE {\textit{B}: generate a task schedule by solving the ILP}174 \STATE \textit{C}: derive $R_m$ of task $\tau_m$ using Monte Carlo simulation175 \UNTIL {($ R_m - RG_m$) $\geq$ $\epsilon$ $>$ 0}176 \end{algorithmic}177 \caption{Reliability-driven parallel task scheduling (RDPS)178 algorithm to iteratively derive the fault adaptation variable179 $\beta$ and generate the energy optimum task schedule} \label{ALG1}180 \vspace{-0.2in}181 \end{figure}182 183 184 \subsection{$\beta$-Enabled Parallel Multiprocessor Task Scheduling}\label{subsect:ProSchemeA}185 One of the key contributions of this work is to introduce a fault adaptation variable $\beta$ that adapts task execution time including fault recovery overhead to the Poisson probability distribution of fault occurrences. Unlike the traditional approach of designing for corner cases, this novel technique enables the designing of reliability-driven energy efficient real-time embedded systems based on status quo of fault occurrences. Since $0 \leq \beta \leq 1$, the execution time of task $\tau_m$ ranges from $CB_m$ to $CW_m$, as is shown in Equation (\ref{eqn:CI}).186 187 188 Due to the statistical property of transient fault occurrences, there exists no deterministic relationship between the fault adaptation variable $\beta$ and the reliability of a task. As a result, the current reliability $R_m$ of task $\tau_m$, if does not meet the stop-condition of the RDPS algorithm, can not be used to direct the selection of the value of $\beta$ to be used in the next iteration of the RDPS algorithm. A simple yet efficient binary search-based approach is hence utilized to obtain the next values of $\beta$.189 More specifically, given the initial range of $\beta \in [0,1]$, and the initial value of $\beta$ denoted by $\beta_0$, the next values of $\beta$ could be in the range of both $[0,\beta_0]$ and $[\beta_0, 1]$. If the current reliability $R_m$ of task $\tau_m$ does not reach the specified reliability goal of $RG_m$, the next candidates of $\beta$ that will be used to generate the task schedule are $\beta_1 = \beta_0 / 2$ and $\beta_2 = (\beta_0 + 1) / 2$. Repeat this process until the $R_m$ is greater than yet close enough to the $RG_m$.190 191 192 \subsection{Generate Task Schedules Using a LP Solver and Sequential Rounding Technique}\label{subsect:ProSchemeB}193 Due to the difficulties to solve ILP program efficiently, linear program (LP) with sequential rounding is utilized to compute task schedules by relaxing the integer constraints of the ILP. LP with sequential rounding is a well-known technique and has been extensively investigated in the literature \cite{SHAH05}.194 195 196 The integer constraint of the ILP definition that $A_{m,l,n}$ is either $0$ or $1$ is relaxed and it becomes a real number such that $0 \leq A_{m,l,n} \leq 1$. A commercial or open source linear program solver is used to solve the energy optimization problem defined in Equation (\ref{eqn:Etot}) under the relaxed constraint. The output of the LP solver, $A_{m,l,n} \in \mathbb{R}$ for $m = 1, 2, \cdots,M$, $l = 1, 2, \cdots, L$, and $n = 1, 2, \cdots, N$, indicates that each task can be assigned to more than one processors, and the task assigned to a specific processor can run at one or more frequency levels. This will incur extra overhead owing to task migration among processors and task frequency switching on the same processor. Sequential rounding technique is therefore utilized to assign a task to one and only one processor and to set the operating frequency of the task at one and only one frequency level. More specifically, the variable $A_{m,l,n}$ is rounded to either 0 or 1 by comparing the $A_{m,l,n}$ with a predefined threshold value, which can be adjusted based on time requirements to generate the desired task schedule.197 198 199 \subsection{Derive Task Reliability Using the Monte Carlo Simulation and Latin-Hypercube Sampling}\label{subsect:ProSchemeC}200 The reliability of a task in a given task set is evaluated under fault occurrences of Poisson probability distribution using Monte Carlo simulation. Oftentimes, the reliability of a task schedule is obtained in three major steps. First, the reliability evaluation of the current task schedule is started by generating the average fault arrival rate at various frequency levels at which tasks in the given task set are scheduled. In step $2$, the number of fault occurrences during the execution of each task is then generated based on the probability distribution of the task, and the execution time of the task is updated to include fault recovery overhead. In step $3$, the feasibility of the generated task schedule is verified. The step $2$ and step $3$ constitute one sample of the Monte Carlo simulation. Repeat step $2$ and $3$ to take more than $10,000$ Monte Carlo samples, and the reliability of the current task schedule is derived as the ratio of the number of samples where the schedule is feasible to the total number of Monte Carlo samples. If the current reliability is greater than and yet close enough to the target reliability, the resultant task schedule is the desired schedule and the execution of the RDPS algorithm exits. Otherwise, the RDPS algorithm jumps from step $C$ to step $A$ and continues its execution, as is described in Fig. \ref{ALG1}.201 202 203 Although the Monte Carlo simulation described above exhibits relative generality and insensitivity to the number of stochastic fault occurrences, it is expensive for accurate reliability estimation of a task schedule. Therefore, the Latin Hypercube sampling method is adopted in this work to improve the efficiency of reliability estimation for a task schedule by sampling fault occurrences more systematically. 200 samples of fault occurrences are taken in the proposed scheme for reliability evaluation.204 205 206 \begin{table*}[tbh]207 \caption {The average energy consumption (in $\milli\joule$) of task sets with varying sizes and the average CPU time (in seconds) of the proposed RDPS algorithm ($0 < \beta <1$) for target reliability of 0.99.}208 \label{table:EnergyCPUtime}209 \begin{center}210 \scriptsize211 \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}212 \hline213 \multicolumn{1}{|c|}{ } &\multicolumn{5}{c|}{1-core}&\multicolumn{5}{c|}{2-cores}&\multicolumn{5}{c|}{4-cores}\214 \cline{2-16}215 Task set &$\beta$ = 0 & \multicolumn{3}{|c|}{0 $<$ $\beta$ $<$ 1 (RDPS)} & $\beta$ = 1 & $\beta$ = 0 &\multicolumn{3}{c|}{0 $<$ $\beta$ $<$ 1 (RDPS)} & $\beta$ = 1 & $\beta$ = 0 & \multicolumn{3}{c|}{0 $<$ $\beta$ $<$ 1 (RDPS)} & $\beta$ = 1 \216 \cline{2-16}217 size &$E_B$ & $E_R$ & $CPU_4$ &$E_{WR}$ & $E_W$ &$E_B$ & $E_R$ & $CPU_4$ & $E_{WR}$ & $E_W$ &$E_B$ & $E_R$ & $CPU_4$ &$E_{WR}$ & $E_W$ \218 \hline219 10-40 & 158 & 187 & 29.1 & 19.1\% & 231 & 152 & 185 & 32.2 & 17.1\% & 223 & 165 & 192 & 87.1 & 21.6\% & 245\220 \hline221 41-70 & 273 & 298 & 36.2 & 35.4\% & 461 & 268 & 292 & 49.3 & 37.9\% & 470 & 271 & 316 & 102.7 & 31.7\% & 463\222 \hline223 71-100 & 521 & 590 & 45.7 & 20.1\% & 738 & 513 & 577 & 71.2 & 24.0\% & 759 & 542 & 595 & 172.3 & 20.9\% & 752 \224 \hline225 \end{tabular}226 \end{center}227 \vspace{-0.3in}228 \end{table*}229 230 231 Of the three steps of the RDPS algorithm, the step $A$ and the step $C$ take constant time. Hence, the computation overhead of the proposed RDPS algorithm mainly depends on the overhead to derive the task schedule using ILP solver in step $B$. In step $B$ an interior point technique-based ILP solver is adopted. The complexity of the interior point ILP solver is $O(z^3)$, where $z$ is the total number of variables in the ILP formulation \cite{BEHJAT05} and is given by $m(5m+nl+1)$. The overall computation overhead of the RDPS algorithm is $O(4mnlz^3)$ for 16 samples of the $\beta$. This computation overhead is acceptable for RDPS because it is an offline algorithm.232 233 234 \section{Numerical Results}\label{sect:NumResults}235 Extensive experiments were carried out over a simulated multiprocessor system to validate the proposed schemes for energy efficiency and running time. It is assumed that the multiprocessor supports 4 discrete voltage levels, which are 0.5\volt, 0.65\volt, 0.8\volt, and 1.0\volt. The values of the dynamic power and the leakage power of the processor, scaled to 70{\nano\meter} technology based on the technology scaling trend, is adopted from \cite{JEJURIKAR04}. The proposed reliability-driven parallel task scheduling algorithm RDPS was implemented in C++, and the simulation was performed on a machine with Intel Core 2 Quad 2.4GHz processor and 8GB memory. Task execution times are in the range of 10-40{\milli\second}. Transient fault occurrences are assumed to follow the Poisson probability distribution, and the average fault arrival rate at the lowest processor speed is assumed to be 4.236 237 238 Three designing approaches, that is, the best case, the worst case, and the proposed stochastic RDPS approach, are compared in energy savings and computational complexity under a given task level target reliability. Let $E_B$, $E_W$, and $E_R$ denote the energy consumption of a task set under the best case fault occurrences ($\beta=0$), the worst case fault occurrences ($\beta=1$), and the stochastic fault occurrences ($0 < \beta < 1 $), respectively. $E_R$ in fact indicates energy consumptions of the proposed RDPS algorithm. Then let $E_{WR} = \frac{(E_W - E_R )} { E_W} \times 100\%$ denote energy savings of the proposed RDPS scheme ($0 < \beta < 1 $) when compared to the approach of designing a system under the worst case of fault occurrences ($\beta=1$).239 240 241 Table \ref{table:EnergyCPUtime} shows the average energy consumption of task sets with varying sizes for a common target reliability of 0.99. Tasks in a task set are assigned to a 1-core, 2-core, and 4-core system respectively for both $\beta$ = 0 and $\beta$ = 1. For the proposed RDPS algorithm ($0 < \beta < 1$), tasks in a task set are always assigned to all 4 cores of the Core 2 Quad processor due to the scheduling parallelism property of the scheme. The proposed parallel RDPS algorithm ($0 < \beta <1$) achieves energy savings of up to $37\%$ when compared to the approach of designing for the worst case faults ($\beta =1$). For instance, when tasks of a given task set the size of which is 41-70 are assigned to a 2-core system, the RDPS scheme ($0 < \beta < 1$) consumes 37.9\% less energy when compared to the designing approach for the worst case faults ($\beta = 1$).242 243 244 The proposed RDPS algorithm can efficiently compute the desired task schedule in parallel. The notation $CPU_4$ is introduced to denote the CPU time the RDPS algorithm takes to compute the desired task schedule using all 4 cores of the Core 2 Quad processor. Table \ref{table:EnergyCPUtime} also gives the average CPU time of the proposed RDPS algorithm ($0 < \beta <1$) for a common target reliability of 0.99. The CPU time of the RDPS algorithm for task sets with 10 to 100 tasks is in the order of seconds. For example, the average CPU time for the task set with 41-70 tasks assigned to a 2-core system is 49.3 seconds.245 246 247 \section{Conclusion} \label{sect:conclusion}248 This paper presents a novel reliability-driven parallel task scheduling scheme that is featured by a fault adaptation variable $\beta$. The RDPS algorithm optimizes system energy consumption under stochastic fault occurrences and accelerates the computing of the desired task schedule by utilizing techniques such as the $\beta$-enabled scheduling parallelism, sequential rounding, and Latin Hypercube sampling-based Monte Carlo simulation. Experimental results have shown that the proposed parallel RDPS scheme achieves energy savings of more than 15\% when compared to the approach of designing for the corner case of fault occurrences.249 250 251 \bibliographystyle{IEEEtran}252 \bibliography{reference}253 \end{document}
reference.bib
1 @ARTICLE{FAN03, 2 AUTHOR = {X. Fan and C. Ellis and A. Lebeck}, 3 TITLE = {The synergy between power-aware memory systems and processor voltage}, 4 JOURNAL = {Workshop on Power-Aware Computing Systems}, 5 YEAR = {2003}, 6 volume = {}, 7 number = {}, 8 pages = {}, 9 } 10 11 12 13 @ARTICLE{ZHU04, 14 AUTHOR = {D. Zhu and R. Melhem and D. Mosse}, 15 TITLE = {The effects of energy management on reliability in real-time embedded systems}, 16 JOURNAL = {Proceedings of the International Conference on Computer-Aided Design}, 17 YEAR = {2004}, 18 volume = {}, 19 number = {}, 20 pages = {}, 21 } 22 23 24 25 @ARTICLE{ZHANG04, 26 AUTHOR = {Y. Zhang and K. Chakrabarty}, 27 TITLE = {Task feasibility analysis and dynamic voltage scaling in fault-tolerant real-time embedded systems}, 28 JOURNAL = {The Proceedings of the Design Automation and Test in Europe}, 29 YEAR = {2004}, 30 volume = {}, 31 number = {}, 32 pages = {}, 33 } 34 35 36 37 @ARTICLE{LANGLEY03, 38 AUTHOR = {T. Langley and R. Koga and T. Morris }, 39 TITLE = {Single-event effects test results of 512MB SDRAMs}, 40 JOURNAL = {IEEE Radiation Effects Data Workshop}, 41 YEAR = {Jul. 2003}, 42 volume = {}, 43 number = {}, 44 pages = {98-101}, 45 } 46 47 48 @ARTICLE{NORMAND96, 49 AUTHOR = {E. Normand}, 50 TITLE = {Single event upset at ground level}, 51 JOURNAL = {IEEE Transactions on Nuclear Science}, 52 YEAR = {1996}, 53 volume = {43}, 54 number = {6}, 55 pages = {2742-2750}, 56 } 57 58 59 60 @ARTICLE{JEJURIKAR04, 61 AUTHOR = {R. Jejurikar and C. Pereira and R. Gupta}, 62 TITLE = {Leakage aware dynamic voltage scaling for real-time embedded systems}, 63 JOURNAL = {Proceedings of the DAC}, 64 YEAR = {2004}, 65 volume = {}, 66 number = {}, 67 pages = {275-280}, 68 } 69 70 71 @ARTICLE{BUTTS00, 72 AUTHOR = {J. Butts and G. Sohi}, 73 TITLE = {A static power model for architects}, 74 JOURNAL = {International Symposium on Microarchitecture}, 75 YEAR = {2000}, 76 volume = {}, 77 number = {}, 78 pages = {}, 79 80 81 82 83 @ARTICLE{FAN03, 84 AUTHOR = {X. Fan and C. Ellis and A. Lebeck}, 85 TITLE = {The synergy between power-aware memory systems and processor voltage}, 86 JOURNAL = {Workshop on Power-Aware Computing Systems}, 87 YEAR = {2003}, 88 volume = {}, 89 number = {}, 90 pages = {}, 91 } 92 93 94 95 @ARTICLE{ZHU04, 96 AUTHOR = {D. Zhu and R. Melhem and D. Mosse}, 97 TITLE = {The effects of energy management on reliability in real-time embedded systems}, 98 JOURNAL = {Proceedings of the International Conference on Computer-Aided Design}, 99 YEAR = {2004}, 100 volume = {}, 101 number = {}, 102 pages = {35-40}, 103 } 104 105 106 @ARTICLE{FOAD08, 107 AUTHOR = {F. Dabiri and N. Amini and M. Rofouei and M. Sarrafzadeh}, 108 TITLE = {Reliability-aware optimization for DVS-enabled real-time embedded systems}, 109 JOURNAL = {The 9th International Symposium on Quality Electronic Design}, 110 YEAR = {2008}, 111 volume = {}, 112 number = {}, 113 pages = {780-783}, 114 } 115 116 @ARTICLE{ZHANG04, 117 AUTHOR = {Y. Zhang and K. Chakrabarty}, 118 TITLE = {Task feasibility analysis and dynamic voltage scaling in fault-tolerant real-time embedded systems}, 119 JOURNAL = {Proceedings of the Design Automation and Test in Europe}, 120 YEAR = {2004}, 121 volume = {}, 122 number = {}, 123 pages = {}, 124 } 125 126 127 128 @ARTICLE{LANGLEY03, 129 AUTHOR = {T. Langley and R. Koga and T. Morris }, 130 TITLE = {Single-event effects test results of 512MB SDRAMs}, 131 JOURNAL = {IEEE Radiation Effects Data Workshop}, 132 YEAR = {Jul. 2003}, 133 volume = {}, 134 number = {}, 135 pages = {98-101}, 136 } 137 138 139 @ARTICLE{NORMAND96, 140 AUTHOR = {E. Normand}, 141 TITLE = {Single event upset at ground level}, 142 JOURNAL = {IEEE Transactions on Nuclear Science}, 143 YEAR = {1996}, 144 volume = {}, 145 number = {}, 146 pages = {}, 147 } 148 149 @ARTICLE{CHANDRAKASAN92, 150 AUTHOR = {A. Chandrakasan and S. Sheng and R. Brodersen}, 151 TITLE = {Low-power CMOS digital design}, 152 JOURNAL = {IEEE Journal of Solid-State Circuits}, 153 YEAR = {1992}, 154 volume = {}, 155 number = {}, 156 pages = {}, 157 } 158 159 @ARTICLE{REINHARDT00, 160 AUTHOR = {S. Reinhardt and S. Mukherjee}, 161 TITLE = {Transient fault detection via simultaneous multithreading}, 162 JOURNAL = {ACM SIGARCH Computer Architecture News}, 163 YEAR = {2000}, 164 volume = {}, 165 number = {}, 166 pages = {}, 167 } 168 169 @ARTICLE{AKYILDIZ02, 170 AUTHOR = {I. Akyildiz, W. Su, Y. Sankarasubramaniam, and E. Cayirci}, 171 TITLE = {Wireless sensor networks: A survey}, 172 JOURNAL = {IEEE Communications Magazine}, 173 YEAR = {2002}, 174 volume = {}, 175 number = {}, 176 pages = {}, 177 } 178 179 @ARTICLE{SHIN84, 180 AUTHOR = {K. Shin and Y. Lee}, 181 TITLE = {Error detection process-model, design and its impact on computer performance}, 182 JOURNAL = {IEEE Transactions on Computers}, 183 YEAR = {1984}, 184 volume = {C-33}, 185 number = {6}, 186 pages = {529-540}, 187 } 188 189 @ARTICLE{CHANDY75, 190 AUTHOR = {K. Chandy and J. Browne and C. Dissly and W. Uhrig}, 191 TITLE = {Analytic models for rollback and recovery strategies in data base systems}, 192 JOURNAL = {IEEE Transactions on Software Engineering}, 193 YEAR = {1975}, 194 volume = {}, 195 number = {}, 196 pages = {}, 197 } 198 199 @ARTICLE{CHANDY75, 200 AUTHOR = {K. Chandy and J. Browne and C. Dissly and W. Uhrig}, 201 TITLE = {Analytic models for rollback and recovery strategies in data base systems}, 202 JOURNAL = {IEEE Transactions on Software Engineering}, 203 YEAR = {1975}, 204 volume = {}, 205 number = {}, 206 pages = {}, 207 } 208 209 210 @ARTICLE{SHIN87, 211 AUTHOR = {K. Shin and T. Lin and Y. Lee}, 212 TITLE = {Optimal checkpointing of real-time tasks}, 213 JOURNAL = {IEEE Transactions on Computers}, 214 YEAR = {1987}, 215 volume = {C-36}, 216 number = {11}, 217 pages = {1328-1341}, 218 } 219 220 221 @ARTICLE{ZIV97, 222 AUTHOR = {A. Ziv and J. Bruck}, 223 TITLE = {An online algorithm for checkpoint placement}, 224 JOURNAL = {IEEE Transactions on Computers}, 225 YEAR = {1997}, 226 volume = {}, 227 number = {}, 228 pages = {}, 229 } 230 231 @ARTICLE{KWAK01, 232 AUTHOR = {S. Kwak and B. Choi and B. Kim}, 233 TITLE = {An optimal checkpointing strategy for real-time control systems under transient faults}, 234 JOURNAL = {IEEE Transactions on Reliability}, 235 YEAR = {2001}, 236 volume = {50}, 237 number = {3}, 238 pages = {293-301}, 239 } 240 241 @ARTICLE{CHANDRAKASAN92, 242 AUTHOR = {A. Chandrakasan and S. Sheng and R. Brodersen}, 243 TITLE = {Low-power CMOS digital design}, 244 JOURNAL = {IEEE Journal of Solid-State Circuits}, 245 YEAR = {1992}, 246 volume = {}, 247 number = {}, 248 pages = {}, 249 } 250 251 @ARTICLE{CHANDRAKASAN98, 252 AUTHOR = {J. Lorch and A.J. Smith}, 253 TITLE = {Software strategies for portable computer energy management}, 254 JOURNAL = {IEEE Personal Communication Magazine}, 255 YEAR = {1998}, 256 volume = {}, 257 number = {}, 258 pages = {}, 259 } 260 261 @ARTICLE{BENINI00, 262 AUTHOR = {L Benini and A Bogliolo and G. Micheli}, 263 TITLE = {A survey of design techniques for system-level dynamic power management}, 264 JOURNAL = {IEEE Transactions on VLSI Systems}, 265 YEAR = {2000}, 266 volume = {8}, 267 number = {3}, 268 pages = {299-316}, 269 } 270 271 @ARTICLE{NAMGOONG97, 272 AUTHOR = {W. Namgoong and M. Yu and T. Meng}, 273 TITLE = {A high-efficiency variable-voltage CMOS dynamic DC-DC switching regulator}, 274 JOURNAL = {IEEE International Solid-State Circuits Conference}, 275 YEAR = {1997}, 276 volume = {}, 277 number = {}, 278 pages = {}, 279 } 280 281 @ARTICLE{ISHIHARA98, 282 AUTHOR = {T. Ishihara and H. Yasuura}, 283 TITLE = {Voltage scheduling problem for dynamically variable voltage processors}, 284 JOURNAL = {Proceedings of the ISLPED}, 285 YEAR = {1998}, 286 volume = {}, 287 number = {}, 288 pages = {}, 289 } 290 291 @ARTICLE{QUAN01, 292 AUTHOR = {G. Quan and X. Hu}, 293 TITLE = {Energy efficient fixed-priority scheduling for real-time systems on variable voltage processors}, 294 JOURNAL = {Proceedings of the DAC}, 295 YEAR = {2001}, 296 volume = {}, 297 number = {}, 298 pages = {}, 299 } 300 301 @ARTICLE{SHIN00, 302 AUTHOR = {Y. Shin and K. Choi and T. Sakurai}, 303 TITLE = {Power optimization of real time embedded systems on variable speed processors}, 304 JOURNAL = {Proceedings of the ICCAD}, 305 YEAR = {2000}, 306 volume = {}, 307 number = {}, 308 pages = {}, 309 } 310 311 @ARTICLE{ERNST04, 312 AUTHOR = {D. Ernst and S. Das and S. Lee and D. Blaauw and T. Austin and T. Mudge and N. S. Kim and K. Flautner. Razor}, 313 TITLE = {Circuit-level correction of timing errors for low-power operation}, 314 JOURNAL = {IEEE Micro}, 315 YEAR = {2004}, 316 volume = {24}, 317 number = {6}, 318 pages = {10-20}, 319 } 320 321 @ARTICLE{ZHANG03, 322 AUTHOR = {Y. Zhang and K. Chakrabarty}, 323 TITLE = {Energy-aware adaptive checkpointing in embedded real-time systems}, 324 JOURNAL = {Proceedings of the DATE}, 325 YEAR = {2003}, 326 volume = {}, 327 number = {}, 328 pages = {}, 329 } 330 331 @ARTICLE{ZHANG03+, 332 AUTHOR = {Y. Zhang and K. Chakrabarty and V. Swaminathan}, 333 TITLE = {Energy-aware fault tolerance in fixed-priority real-time embedded systems}, 334 JOURNAL = {Proceedings of the ICCAD}, 335 YEAR = {2003}, 336 volume = {}, 337 number = {}, 338 pages = {}, 339 } 340 341 @ARTICLE{MELHEM04, 342 AUTHOR = {R. Melhem and D. Mosse and E. Elnozahy}, 343 TITLE = {The interplay of power management and fault recovery in real-time systems}, 344 JOURNAL = {IEEE Transactions on Computers}, 345 YEAR = {2004}, 346 volume = {53}, 347 number = {2}, 348 pages = {217-231}, 349 } 350 351 @ARTICLE{ZHANG06, 352 AUTHOR = {Y. Zhang and K. Chakrabarty}, 353 TITLE = {A unified approach for fault tolerance and dynamic power management in fixed-priority real-time embedded systems}, 354 JOURNAL = {IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems}, 355 YEAR = {2006}, 356 volume = {25}, 357 number = {1}, 358 pages = {111-125}, 359 } 360 361 @ARTICLE{WEI06, 362 AUTHOR = {T. Wei and P. Mishra and K. Wu and H. Liang}, 363 TITLE = {Online task-scheduling for fault-tolerant low-energy real-time systems}, 364 JOURNAL = {Proceedings of the International Conference on Computer-Aided Design $($ICCAD$)$}, 365 YEAR = {2006}, 366 volume = {}, 367 number = {}, 368 pages = {}, 369 } 370 371 @ARTICLE{REED03, 372 AUTHOR = {R. Reed and J. Kinnison and J. Pickel and S. Buchner and P. Marshall and S. Kniffin and K. LaBel}, 373 TITLE = {Single-event effects ground testing and on-orbit rate prediction methods: the past, present, and future}, 374 JOURNAL = {IEEE Transactions on Nuclear Science}, 375 YEAR = {2006}, 376 volume = {50}, 377 number = {3}, 378 pages = {622-634}, 379 } 380 381 @ARTICLE{WEULERSSE06, 382 AUTHOR = {C. Weulersse and G. Hubert and G. Forget and N. Buard and T. Carriere and P. Heins and J. Palau and F. Saigne and R. Gaillard}, 383 TITLE = {DASIE Analytical Version: A Predictive Tool for Neutrons, Protons and Heavy Ions Induced SEU Cross Section}, 384 JOURNAL = {IEEE Transactions on Nuclear Science}, 385 YEAR = {2006}, 386 volume = {53}, 387 number = {4}, 388 pages = {1876-1882}, 389 } 390 391 392 @ARTICLE{CHANDRAKASAN92, 393 AUTHOR = {A. Chandrakasan and S. Sheng and R. Brodersen}, 394 TITLE = {Low-power CMOS digital design}, 395 JOURNAL = {IEEE Journal of Solid-State Circuits}, 396 YEAR = {1992}, 397 volume = {27}, 398 number = {4}, 399 pages = {473-484}, 400 } 401 402 403 @ARTICLE{BENINI00, 404 AUTHOR = {L Benini and A Bogliolo and G. Micheli}, 405 TITLE = {A survey of design techniques for system-level dynamic power management}, 406 JOURNAL = {IEEE Transactions on VLSI Systems}, 407 YEAR = {2000}, 408 volume = {8}, 409 number = {3}, 410 pages = {299-316}, 411 } 412 413 414 @ARTICLE{LORCH98, 415 AUTHOR = {J. Lorch and A. J. Smith}, 416 TITLE = {Software strategies for portable computer energy management}, 417 JOURNAL = {IEEE Personal Communication Magazine}, 418 YEAR = {1998}, 419 volume = {5}, 420 number = {3}, 421 pages = {60-73}, 422 } 423 424 425 @ARTICLE{GUTNIK96, 426 AUTHOR = {V. Gutnik and A. Chandrakasan}, 427 TITLE = {An efficient controller for variable supply-voltage low power processing}, 428 JOURNAL = {Symposium on VLSI Circuits}, 429 YEAR = {1996}, 430 volume = {}, 431 number = {}, 432 pages = {158-159}, 433 } 434 435 @ARTICLE{NAMGOONG97, 436 AUTHOR = {W. Namgoong and M. Yu and T. Meng}, 437 TITLE = {A high-efficiency variable-voltage CMOS dynamic DC-DC switching regulator}, 438 JOURNAL = {IEEE International Solid-State Circuits Conference}, 439 YEAR = {1997}, 440 volume = {}, 441 number = {}, 442 pages = {380-381}, 443 } 444 445 446 447 448 @ARTICLE{MOSSE94, 449 AUTHOR = {D. Mosse and R. Melhem and S. Ghosh}, 450 TITLE = {Analysis of a fault-tolerant multiprocessor scheduling algorithm}, 451 JOURNAL = {The 24th International Symposium on Fault Tolerant Computing}, 452 YEAR = {1994}, 453 volume = {}, 454 number = {}, 455 pages = {}, 456 } 457 458 459 @ARTICLE{OH91, 460 AUTHOR = {Y. Oh and S. Son}, 461 TITLE = {Multiprocessor support for real-time fault-tolerant scheduling}, 462 JOURNAL = {IEEE Workshop on Architectural Aspect of Real-Time Systems}, 463 YEAR = {1991}, 464 volume = {}, 465 number = {}, 466 pages = {}, 467 } 468 469 470 @ARTICLE{GHOSH97, 471 AUTHOR = {S. Ghosh and R. Melhem and D. Mosse}, 472 TITLE = {Fault-tolerance through scheduling of aperiodic tasks in hard real-time multiprocessor systems}, 473 JOURNAL = {IEEE Transactions on Parallel and Distributed Systems}, 474 YEAR = {1997}, 475 volume = {8}, 476 number = {3}, 477 pages = {}, 478 } 479 480 481 482 @ARTICLE{MCKAY79, 483 AUTHOR = {M. McKay and R. Beckman and W. Conover}, 484 TITLE = {A Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output from a Computer Code}, 485 JOURNAL = {Technometrics $($American Statistical Association$)$}, 486 YEAR = {1979}, 487 volume = {21}, 488 number = {2}, 489 pages = {}, 490 } 491 492 493 494 @ARTICLE{ZHU01, 495 AUTHOR = {D. Zhu and R. Melhem and B. Chiders}, 496 TITLE = {Scheduling with dynamic voltage/speed adjustment using slack reclamation in multiprocessor real-time systems 497 }, 498 JOURNAL = {IEEE Real-Time Systems Symposium}, 499 YEAR = {2001}, 500 volume = {}, 501 number = {}, 502 pages = {}, 503 } 504 505 506 @ARTICLE{YU02, 507 AUTHOR = {Y. Yu and V. Prasanna}, 508 TITLE = {Power-aware resource allocation for independent tasks in heterogeneous real-time systems}, 509 JOURNAL = {Proceedings of International Conference on Parallel and Distributed Systems}, 510 YEAR = {2002}, 511 volume = {}, 512 number = {}, 513 pages = {}, 514 } 515 516 517 @ARTICLE{AYDIN03, 518 AUTHOR = {H. Aydin and Q. Yang}, 519 TITLE = {Energy-aware partitioning for multiprocessor real-time systems}, 520 JOURNAL = {Proceedings of the International Parallel and Distributed Processing Symposium}, 521 YEAR = {2003}, 522 volume = {}, 523 number = {}, 524 pages = {}, 525 } 526 527 528 @ARTICLE{BARUAH04, 529 AUTHOR = {S. Baruah and J. Anderson}, 530 TITLE = {Energy-efficient synthesis of periodic task systems upon identical multiprocessor platforms}, 531 JOURNAL = {Proceedings of the International Conference on Distributed Computing Systems}, 532 YEAR = {2004}, 533 volume = {}, 534 number = {}, 535 pages = {}, 536 } 537 538 539 540 @ARTICLE{ALENAWY05, 541 AUTHOR = {T. AlEnawy and K. Aydin}, 542 TITLE = {Energy-aware task allocation for rate monotonic scheduling}, 543 JOURNAL = {IEEE Real-time and Embedded Technology and Applications Symposium}, 544 YEAR = {2005}, 545 volume = {}, 546 number = {}, 547 pages = {}, 548 } 549 550 551 @ARTICLE{ANDERSON04, 552 AUTHOR = {J. Anderson and S. Baruah}, 553 TITLE = {Energy-aware task allocation for rate monotonic scheduling}, 554 JOURNAL = {IEEE International Conference on Distributed Computing Systems}, 555 YEAR = {2004}, 556 volume = {}, 557 number = {}, 558 pages = {}, 559 } 560 561 562 @ARTICLE{CHEN04, 563 AUTHOR = {J. Chen and H. Hsu and K. Chuang and C. Yang and A. Pang and T. Kuo}, 564 TITLE = {Multiprocessor energy-efficient scheduling with task migration consideration}, 565 JOURNAL = {IEEE Euromicro Conference on Real-Time Systems}, 566 YEAR = {2004}, 567 volume = {}, 568 number = {}, 569 pages = {}, 570 } 571 572 573 @ARTICLE{YANG05, 574 AUTHOR = {C. Yang and J. Chen and T. Kuo}, 575 TITLE = {An approximation algorithm for energy-efficient scheduling on a chip multiprocessor}, 576 JOURNAL = {IEEE proceedings of the Design, Automation and Test in Europe}, 577 YEAR = {2005}, 578 volume = {}, 579 number = {}, 580 pages = {}, 581 } 582 583 584 @ARTICLE{WEI08, 585 AUTHOR = {T. Wei and P. Mishra and K. Wu and H. Liang }, 586 TITLE = {Fixed-Priority Allocation and Scheduling for Energy-Efficient Fault-Tolerance in Hard Real-Time Multiprocessor Systems}, 587 JOURNAL = {IEEE Transactions on Parallel and Distributed Systems}, 588 YEAR = {2008}, 589 volume = {19}, 590 number = {11}, 591 pages = {1511-1526}, 592 } 593 594 595 @ARTICLE{HONG98, 596 AUTHOR = {I. Hong and G. Qu and M. Potkonjak and M. Srivastava}, 597 TITLE = {Synthesis Techniques for Low-Power Hard Real-Time Systems on Variable Voltage Processors}, 598 JOURNAL = {Proceedings of 19th IEEE Real-Time Systems Symposium}, 599 YEAR = {1998}, 600 volume = {}, 601 number = {}, 602 pages = {}, 603 } 604 605 606 607 @ARTICLE{TERLAKY08, 608 AUTHOR = {T. Terlaky and A. Vannelli and H. Zhang}, 609 TITLE = {On routing in VLSI design and communication networks}, 610 JOURNAL = {Discrete Applied Mathematics}, 611 YEAR = {2008}, 612 volume = {156}, 613 number = {11}, 614 pages = {2178-2194}, 615 } 616 617 618 @ARTICLE{SHAH05, 619 AUTHOR = {S. Shah and A. Srivastava and D. Sharma and D. Sylvester and D. Blaauw and V. Zolotov}, 620 TITLE = {Discrete Vt assignment and gate sizing using a selfsnapping continuous formulation}, 621 JOURNAL = {ACM/IEEE International Conference on Computer-Aided Design}, 622 YEAR = {2005}, 623 volume = {}, 624 number = {}, 625 pages = {}, 626 } 627 628 629 @ARTICLE{LOCKE91, 630 AUTHOR = {D. Locke and D. Vogel and T. Mesler}, 631 TITLE = {Building a predictable avionics platform in Ada: A case study}, 632 JOURNAL = {The Proceedings of Real-Time Systems Symposium}, 633 YEAR = {1991}, 634 volume = {}, 635 number = {}, 636 pages = {}, 637 } 638 639 640 @ARTICLE{LIU73, 641 AUTHOR = {C. Liu and J. Layland}, 642 TITLE = {Scheduling algorithms for multiprogramming in a hard real time environment}, 643 JOURNAL = {Journal of the ACM}, 644 YEAR = {1973}, 645 volume = {20}, 646 number = {1}, 647 pages = {46-61}, 648 } 649 650 651 @ARTICLE{SHIVAKUMAR02, 652 AUTHOR = {P. Shivakumar and M. Kistler and S.W. Keckler and D. Burger and L. Alvisi}, 653 TITLE = {Modeling the effect of technology trends on the soft error rate of combinational logic}, 654 JOURNAL = {Proceedings of the DSN}, 655 YEAR = {2002}, 656 volume = {}, 657 number = {}, 658 pages = {}, 659 } 660 661 662 @ARTICLE{MAHMOOD88, 663 AUTHOR = {A. Mahmood and E. McCluskey}, 664 TITLE = {Concurrent error detection using watchdog processors - A survey}, 665 JOURNAL = {IEEE Transactions on Computer}, 666 YEAR = {1988}, 667 volume = {}, 668 number = {}, 669 pages = {}, 670 } 671 672 673 @ARTICLE{BORKAR99, 674 AUTHOR = {S. Borkar}, 675 TITLE = {Design challenges of technology scaling}, 676 JOURNAL = {IEEE Micro}, 677 YEAR = {1999}, 678 volume = {}, 679 number = {}, 680 pages = {23-29}, 681 } 682 683 @ARTICLE{DUARTE02, 684 AUTHOR = {D. Duarte and N. Vijaykrishnan and M. Irwin and Y. Tsai}, 685 TITLE = {Impact of technology scaling and packaging on dynamic voltage scaling techniques}, 686 JOURNAL = {15th Annual IEEE International ASIC/SOC Conference}, 687 YEAR = {2002}, 688 volume = {}, 689 number = {}, 690 pages = {}, 691 } 692 693 694 @ARTICLE{CALHOUN03, 695 AUTHOR = {B. Calhoun and F. Honore and A. Chandrakasan}, 696 TITLE = {Design methodology for fine-grained leakage control in MTCMOS}, 697 JOURNAL = {Proceedings of International Symposium on Low Power Electronics and Design}, 698 YEAR = {2003}, 699 volume = {}, 700 number = {}, 701 pages = {104-109}, 702 } 703 704 705 @ARTICLE{HU02, 706 AUTHOR = {Z. Hu and S. Kaxiras and M. Martonosi}, 707 TITLE = {Let caches decay: Reducing leakage energy via exploitation of cache generational behavior}, 708 JOURNAL = {ACM Transactions on Computer Systems}, 709 YEAR = {2002}, 710 volume = {}, 711 number = {}, 712 pages = {}, 713 } 714 715 716 @ARTICLE{MUTOH95, 717 AUTHOR = {S. Mutoh and T. Douseki and Y. Matsuya and T. Aoki and S. Shigematsu and J. Yamada}, 718 TITLE = {1-v power supply highspeed digital circuit technology with multithreshold-voltage CMOS}, 719 JOURNAL = {IEEE Journal of Solid-State Circuits}, 720 YEAR = {1995}, 721 volume = {}, 722 number = {}, 723 pages = {847-854}, 724 } 725 726 727 @ARTICLE{LEHOCZKY90, 728 AUTHOR = {J. Lehoczky}, 729 TITLE = {Fixed priority scheduling of periodic task sets with arbitrary deadlines}, 730 JOURNAL = {The Proceedings of Real-Time System Symposium}, 731 YEAR = {1990}, 732 volume = {}, 733 number = {}, 734 pages = {166-171}, 735 } 736 737 738 @ARTICLE{LEHOCZKY89, 739 AUTHOR = {J. Lehoczky and L. Sha and Y. Ding}, 740 TITLE = {The rate monotonic scheduling algorithm: Exact characterization and average case behavior}, 741 JOURNAL = {IEEE Real-Time Systems Symposium}, 742 YEAR = {1989}, 743 volume = {}, 744 number = {}, 745 pages = {}, 746 } 747 748 749 @ARTICLE{SHIN99, 750 AUTHOR = {Y. Shin and K. Choi}, 751 TITLE = {Power conscious fixed priority scheduling for hard real-time systems}, 752 JOURNAL = {Proceedings of the DAC}, 753 YEAR = {1999}, 754 volume = {}, 755 number = {}, 756 pages = {}, 757 } 758 759 760 761 @ARTICLE{CONTRERAS04, 762 AUTHOR = {G. Contreras and M. Martonosi and J. Peng and R. Ju and G. Lueh}, 763 TITLE = {XTREM: A power simulator for the Intel XScale Core}, 764 JOURNAL = {ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems}, 765 YEAR = {2004}, 766 volume = {}, 767 number = {}, 768 pages = {}, 769 } 770 771 772 773 @ARTICLE{BURGER97, 774 AUTHOR = {D. Burger and T. Austin}, 775 TITLE = {The SimpleScalar tool set, version 2.0}, 776 JOURNAL = {Computer Architecture News}, 777 YEAR = {1997}, 778 volume = {}, 779 number = {}, 780 pages = {}, 781 } 782 783 784 785 @ARTICLE{KIM96, 786 AUTHOR = {N. Kim and M. Ryu and S. Hong and M. Saksena and C. Choi and H. Shin}, 787 TITLE = {Visual assessment of a real-time system design: A case study on a CNC controller}, 788 JOURNAL = {Proceedings of the RTSS}, 789 YEAR = {1996}, 790 volume = {}, 791 number = {}, 792 pages = {}, 793 } 794 795 796 @ARTICLE{WEICKER84, 797 AUTHOR = {R. Weicker}, 798 TITLE = {Dhrystone: A Synthetic Systems Programming Benchmark}, 799 JOURNAL = {Communications of the ACM}, 800 YEAR = {1984}, 801 volume = {27}, 802 number = {10}, 803 pages = {1013-1030}, 804 } 805 806 807 @ARTICLE{HUA07, 808 AUTHOR = {S. Hua and G. Qu and S. Bhattacharyya}, 809 TITLE = {Probabilistic Design of Multimedia Embedded Systems}, 810 JOURNAL = {ACM Transactions on Embedded Computing Systems}, 811 YEAR = {2007}, 812 volume = {6}, 813 number = {3}, 814 pages = {}, 815 } 816 817 818 @ARTICLE{GRUIAN01, 819 AUTHOR = {F. Gruian}, 820 TITLE = {Hard real-time scheduling for low-energy using stochastic data and DVS processors}, 821 JOURNAL = {Proceedings of the international symposium on Low power electronics and design}, 822 YEAR = {2001}, 823 volume = {}, 824 number = {}, 825 pages = {46-51}, 826 } 827 828 @ARTICLE{ZHU08, 829 AUTHOR = {D. Zhu and H. Aydin and J. Chen}, 830 TITLE = {Optimistic Reliability Aware Energy Management for Real-Time Tasks with Probabilistic Execution Times}, 831 JOURNAL = {Proceedings of the Real-Time Systems Symposium}, 832 YEAR = {2008}, 833 volume = {}, 834 number = {}, 835 pages = {}, 836 } 837 838 @ARTICLE{IZOSIMOV08, 839 AUTHOR = {V. Izosimov and P. Pop and P. Eles and Z. Peng}, 840 TITLE = {Scheduling of fault-tolerant embedded systems with soft and hard timing constraints}, 841 JOURNAL = {Proceedings of the DATE}, 842 YEAR = {2008}, 843 volume = {}, 844 number = {}, 845 pages = {}, 846 } 847 848 849 @ARTICLE{POP07, 850 AUTHOR = {P. Pop and K. Poulsen and V. Izosimov and P. Eles}, 851 TITLE = {Scheduling and voltage scaling for energy/reliability trade-offs in fault-tolerant time-triggered embedded systems}, 852 JOURNAL = {Proceedings of the 5th IEEE/ACM international conference on Hardware/software codesign and system synthesis}, 853 YEAR = {2007}, 854 volume = {}, 855 number = {}, 856 pages = {}, 857 } 858 859 860 @ARTICLE{BINI09, 861 AUTHOR = {E. Bini and G. Buttazzo and G. Lipari}, 862 TITLE = {Minimizing CPU energy in real-time systems with discrete speed management}, 863 JOURNAL = {ACM Transactions on Embedded Computing Systems}, 864 YEAR = {2009}, 865 volume = {8}, 866 number = {4}, 867 pages = {}, 868 } 869 870 @ARTICLE{KRISHNA03, 871 AUTHOR = {C. Krishna and Y. Lee}, 872 TITLE = {Voltage-Clock-Scaling Adaptive Scheduling Techniques for Low Power in Hard Real-Time Systems}, 873 JOURNAL = {IEEE Transactions on Computers}, 874 YEAR = {2003}, 875 volume = {52}, 876 number = {12}, 877 pages = {1586-1593}, 878 } 879 880 @ARTICLE{CAMPBELL92, 881 AUTHOR = {A. Campbell and P. McDonald and K Ray }, 882 TITLE = {Single event upset rates in space}, 883 JOURNAL = {IEEE Transactions on Nuclear Science}, 884 YEAR = {1992}, 885 volume = {39}, 886 number = {6}, 887 pages = {1828-1835}, 888 } 889 890 @ARTICLE{ROUNDY04, 891 AUTHOR = {S. Roundy and D. Steingart and L. Frechette and P. Wright and J Rabaey}, 892 TITLE = {Power sources for wireless sensor networks}, 893 JOURNAL = {Proceedings of Wireless Sensor Networks}, 894 YEAR = {2004}, 895 volume = {}, 896 number = {}, 897 pages = {1-17}, 898 } 899 900 @ARTICLE{RAGHUNATHAN05, 901 AUTHOR = {V. Raghunathan and A. Kansal and J. Hsu and J. Friedman and M. Srivastava}, 902 TITLE = {Design considerations for solar energy harvesting wireless embedded systems}, 903 JOURNAL = {International Symposium on Information Processing in Sensor Networks}, 904 YEAR = {2005}, 905 volume = {}, 906 number = {}, 907 pages = {457- 462}, 908 } 909 910 @ARTICLE{JIANG05, 911 AUTHOR = {X. Jiang and J. Polastre and D. Culler}, 912 TITLE = {Perpetual environmentally powered sensor networks}, 913 JOURNAL = {International Symposium on Information Processing in Sensor Networks}, 914 YEAR = {2005}, 915 volume = {}, 916 number = {}, 917 pages = {463- 468}, 918 } 919 920 @ARTICLE{ALLAVENA01, 921 AUTHOR = {A. Allavena and D. Mosse}, 922 TITLE = {Scheduling of frame-based embedded systems with rechargeable batteries}, 923 JOURNAL = {Workshop on Power Management for Real-Time and Embedded Systems }, 924 YEAR = {2001}, 925 volume = {}, 926 number = {}, 927 pages = {}, 928 } 929 930 931 932 @ARTICLE{RUSU05, 933 AUTHOR = {C. Rusu and R. Melhem and D. Mosse }, 934 TITLE = {Multi-version scheduling in rechargeable energy-aware real-time systems}, 935 JOURNAL = {Journal of Embedded Computing}, 936 YEAR = {2005}, 937 volume = {}, 938 number = {}, 939 pages = {}, 940 } 941 942 943 @ARTICLE{MOSER06, 944 AUTHOR = {C. Moser and D. Brunelli and L. Thiele and L. Benini}, 945 TITLE = {Lazy scheduling for energy harvesting sensor nodes}, 946 JOURNAL = {Working Conference on Distributed and Parallel Embedded Systems}, 947 YEAR = {2006}, 948 volume = {}, 949 number = {}, 950 pages = {}, 951 } 952 953 @ARTICLE{LIU09, 954 AUTHOR = {S. Liu and Q. Wu and Q. Qiu}, 955 TITLE = {An adaptive scheduling and voltage/freqency selection algorithm for real-time energy harvesting systems}, 956 JOURNAL = {Proceedings of the DAC}, 957 YEAR = {2009}, 958 volume = {}, 959 number = {}, 960 pages = {}, 961 } 962 963 @ARTICLE{LIU08, 964 AUTHOR = {S. Liu and Q. Qiu and Q. Wu}, 965 TITLE = {Energy aware dynamic voltage and frequency selection for real-time systems with energy harvesting}, 966 JOURNAL = {Proceedings of the DATE}, 967 YEAR = {2008}, 968 volume = {}, 969 number = {}, 970 pages = {}, 971 } 972 973 @ARTICLE{KANSAL, 974 AUTHOR = {A. Kansal and J. Hsu and S. Zahedi and M. Srivastava}, 975 TITLE = {Power management in energy harvesting sensor networks}, 976 JOURNAL = {ACM Transactions on Embedded Computing Systems \emph{(in revision)}}, 977 YEAR = {}, 978 volume = {}, 979 number = {}, 980 pages = {}, 981 } 982 983 984 @ARTICLE{CMOSER06, 985 AUTHOR = {C. Moser and D. Brunelli and L. Thiele and L. Benini}, 986 TITLE = {Real-time scheduling for energy harvesting sensor nodes}, 987 JOURNAL = {MICS Scientific Conference and SNF panel Review}, 988 YEAR = {2006}, 989 volume = {}, 990 number = {}, 991 pages = {}, 992 } 993 994 995 @ARTICLE{XIAN07, 996 AUTHOR = {C. Xian and Y. Lu and Z. Li}, 997 TITLE = {Energy-aware scheduling for Real-time multiprocessor systems with uncertain task execution time}, 998 JOURNAL = {Proceedings of the DAC}, 999 YEAR = {2007},1000 volume = {},1001 number = {},1002 pages = {},1003 }1004 1005 1006 @ARTICLE{GURURAJ09,1007 AUTHOR = {K. Gururaj and J. Cong},1008 TITLE = {Energy Efficient Multiprocessor Task Scheduling under Input-dependent Variation},1009 JOURNAL = {Proceedings of the DATE},1010 YEAR = {2009},1011 volume = {},1012 number = {},1013 pages = {},1014 }1015 1016 1017 @ARTICLE{WATANABE07,1018 AUTHOR = {R. Watanabe and M. Kondo and M. Imai and H. Nakamura and T. Nanya},1019 TITLE = {Task Scheduling under Performance Constraints for Reducing the Energy Consumption of the GALS Multi-Processor SoC},1020 JOURNAL = {Proceedings of the DATE},1021 YEAR = {2007},1022 volume = {},1023 number = {},1024 pages = {},1025 }1026 1027 1028 @ARTICLE{BRIAO08,1029 AUTHOR = {E. Briao and D. Barcelos and F. Wagner},1030 TITLE = {Dynamic Task Allocation Strategies in MPSoC for Soft Real-time Applications},1031 JOURNAL = {Proceedings of the DATE},1032 YEAR = {2008},1033 volume = {},1034 number = {},1035 pages = {},1036 }1037 1038 1039 @ARTICLE{KOCH09,1040 AUTHOR = {P. Koch},1041 TITLE = {How to Interface Energy Harvesting Models with Multiprocessor Scheduling Paradigms},1042 JOURNAL = {Wireless VITAE},1043 YEAR = {2009},1044 volume = {},1045 number = {},1046 pages = {},1047 }1048 1049 1050 @ARTICLE{ZENG09,1051 AUTHOR = {G. Zeng and T. Yokoyama and H. Tomiyama and H. Takada},1052 TITLE = {Practical Energy-Aware Scheduling for Real-Time Multiprocessor Systems},1053 JOURNAL = {15th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications},1054 YEAR = {2009},1055 volume = {},1056 number = {},1057 pages = {},1058 }1059 1060 @ARTICLE{CHEN98,1061 AUTHOR = {C.Chen and C. Chu and D. Wong},1062 TITLE = {Fast and Exact Simultaneous Gate and Wire Sizing by Lagrangian Relaxation},1063 JOURNAL = {Proceedings of the ICCAD},1064 YEAR = {1998},1065 volume = {},1066 number = {},1067 pages = {},1068 }1069 1070 1071 @ARTICLE{WEI10,1072 AUTHOR = {T.Wei and Y. Guo and X. Chen and S.Hu},1073 TITLE = {Adaptive Task Allocation for Multiprocessor SoCs in Real-Time Energy Harvesting Systems},1074 JOURNAL = {International Symposium on Quality Electronic Design},1075 YEAR = {2010},1076 volume = {},1077 number = {},1078 pages = {},1079 }1080 1081 1082 @ARTICLE{HUA03,1083 AUTHOR = {S. Hua and G. Qu and S. Bhattacharyya},1084 TITLE = {Energy Reduction Techniques for Multimedia Applications with Tolerance to Deadline Misses},1085 JOURNAL = {Proceedings of the DAC},1086 YEAR = {2003},1087 volume = {},1088 number = {},1089 pages = {},1090 }1091 1092 1093 @ARTICLE{WU90,1094 AUTHOR = {M. Wu and D. Gajski},1095 TITLE = {Hypertool: A Programming Aid for Message-Passing Systems},1096 JOURNAL = {IEEE Transctions On Parallel and Distributed Systems},1097 YEAR = {1990},1098 volume = {1},1099 number = {3},1100 pages = {},1101 }1102 1103 1104 @ARTICLE{PERING98,1105 AUTHOR = {T. Pering and T. Burd and R. Broderson},1106 TITLE = {The simulation and evaluation of dynamic voltage scaling algorithms},1107 JOURNAL = {The International Symposium on Low Power Electronics and Design},1108 YEAR = {1998},1109 volume = {},1110 number = {},1111 pages = {76-81},1112 }1113 1114 1115 @ARTICLE{BURD00,1116 AUTHOR = {T. Burd and R. Broderson},1117 TITLE = {Design issues for dynamic voltage scaling},1118 JOURNAL = {International Symposium on Low Power Electronics and Design},1119 YEAR = {2000},1120 volume = {},1121 number = {},1122 pages = {9-14},1123 }1124 1125 @ARTICLE{NOWKA02,1126 AUTHOR = {K. Nowka and G. Carpenter and E. Donald and H. Ngo and B. Brock and K. Ishii and K. Nguyen and J. Burns},1127 TITLE = {A 0.9 V to 1.95 V dynamic voltage-scalable and frequency-scalable 32b PowerPC processor},1128 JOURNAL = {IEEE International conference on Solid State Circuits},1129 YEAR = {2002},1130 volume = {},1131 number = {},1132 pages = {340-341},1133 }1134 1135 1136 @ARTICLE{GRUNWALD00,1137 AUTHOR = {D. Grunwald and P. Levis and C. Morrey and M. Neufeld and K. Farkas},1138 TITLE = {Policies for dynamic clock scheduling},1139 JOURNAL = {The Symposium on Operating Systems Design and Implementation},1140 YEAR = {2000},1141 volume = {},1142 number = {},1143 pages = {73-86},1144 }1145 1146 @ARTICLE{LEE96,1147 AUTHOR = {C. Lee and R. Rajkumar and C. Mercer},1148 TITLE = {Experiences with Processor Reservation and Dynamic QOS in Real-Time Mach},1149 JOURNAL = {Proceedings of Multimedia},1150 YEAR = {1996},1151 volume = {},1152 number = {},1153 pages = {},1154 }1155 1156 1157 @ARTICLE{PEDREIRAS07,1158 AUTHOR = {P. Pedreiras and L. Almeida},1159 TITLE = {Task Management for Soft Real-Time Applicationsbased on General Purpose Operating Systems},1160 JOURNAL = {The 9th Workshop on Real-Time Systems},1161 YEAR = {2007},1162 volume = {},1163 number = {},1164 pages = {},1165 }1166 1167 @ARTICLE{CHU97,1168 AUTHOR = {H. Chu and K. Nahrstedt},1169 TITLE = {A Soft Real-Time Scheduling Server in UNIX Operating System},1170 JOURNAL = {Proceedings of European Workshop on Interactive Distributed Multimedia Systems and Telecommunication Services},1171 YEAR = {1997},1172 volume = {},1173 number = {},1174 pages = {},1175 }1176 1177 @ARTICLE{MERCER94,1178 AUTHOR = {C. Mercer and S. Savage and H. Tokuda},1179 TITLE = {Processor Capacity Reserves: Operating System Support for Multimedia Applications},1180 JOURNAL = {IEEE International Conference on Multimedia Computing and Systems},1181 YEAR = {1994},1182 volume = {},1183 number = {},1184 pages = {},1185 }1186 1187 @ARTICLE{LEE00,1188 AUTHOR = {S. Lee and T. Sakurai},1189 TITLE = {Run-Time Voltage Hopping for Low-Power Real-Time Systems},1190 JOURNAL = {Proceedings of the ACM/IEEE Design Automation Conference},1191 YEAR = {2000},1192 volume = {},1193 number = {},1194 pages = {},1195 }1196 1197 1198 @ARTICLE{ZHU03,1199 AUTHOR = {D. Zhu and R. Melhem and B. Chiders},1200 TITLE = {Scheduling with Dynamic Voltage/Speed Adjustment Using Slack Reclamation in Multiprocessor Real-Time Systems," IEEE Transactions on Parallel and Distributed Systems},1201 JOURNAL = {IEEE Transactions on Parallel and Distributed Systems},1202 YEAR = {2003},1203 volume = {14},1204 number = {7},1205 pages = {686-700},1206 }1207 1208 @ARTICLE{SWAMINATHAN02,1209 AUTHOR = {V. Swaminathan and C. Schweizer and K. Chakrabarty and A. Patel},1210 TITLE = {Experiences in Implementing an Energy-Driven Task Scheduler in RT-Linux},1211 JOURNAL = {Proceedings of the IEEE Real-Time and Embedded Technology and Applications Symposium},1212 YEAR = {2002},1213 volume = {},1214 number = {},1215 pages = {},1216 }1217 1218 1219 @ARTICLE{MARTIN02,1220 AUTHOR = {S. Martin and K. Flautner and T. Mudge and D. Blaauw},1221 TITLE = {Combined Dynamic Voltage Scaling and Adaptive Body Biasing for Lower Power Microprocessors under Dynamic Workloads},1222 JOURNAL = {Proceedings of the ICCAD},1223 YEAR = {2002},1224 volume = {},1225 number = {},1226 pages = {},1227 }1228 1229 @ARTICLE{ZHAO08,1230 AUTHOR = {B. Zhao and H. Aydin and D. Zhu},1231 TITLE = {Reliability-Aware Dynamic Voltage Scaling for Energy-Constrained Real-Time Embedded Systems},1232 JOURNAL = {Proceedings of the IEEE International Conference on Computer Design},1233 YEAR = {2008},1234 volume = {},1235 number = {},1236 pages = {},1237 }1238 1239 @ARTICLE{JEJURIKAR05,1240 AUTHOR = {R. Jejurikar and R.Gupta},1241 TITLE = {Dynamic Slack Reclamation with Procrastination Scheduling in Real-Time Embedded Systems},1242 JOURNAL = {Proceedings of the DAC},1243 YEAR = {2005},1244 volume = {},1245 number = {},1246 pages = {},1247 }1248 1249 @ARTICLE{CHEN07,1250 AUTHOR = {J. Chen and T. Kuo},1251 TITLE = {Procrastination Determination for Periodic RealTime Tasks in Leakage Aware Dynamic Voltage Scaling Systems},1252 JOURNAL = {Proceedings of the ICCAD},1253 YEAR = {2007},1254 volume = {},1255 number = {},1256 pages = {},1257 }1258 1259 @ARTICLE{SAEWONG03,1260 AUTHOR = {S. Saewong and R. Rajkumar},1261 TITLE = {Practical Voltage-Scaling for Fixed-Priority RT-Systems},1262 JOURNAL = {Proceedings of the IEEE Real-Time and Embedded Technology and Applications Symposium},1263 YEAR = {2003},1264 volume = {},1265 number = {},1266 pages = {},1267 }1268 1269 @ARTICLE{PILLAI01,1270 AUTHOR = {P. Pillai and K. Shin},1271 TITLE = {Real-Time Dynamic Voltage Scaling for Low-Power Embedded Operating Systems},1272 JOURNAL = {Proceedings of the ACM symposium on Operating Systems Principle},1273 YEAR = {2001},1274 volume = {},1275 number = {},1276 pages = {},1277 }1278 1279 @ARTICLE{KANGA10,1280 AUTHOR = {J. Kanga and S. Ranka},1281 Title = {Dynamic Slack Allocation Algorithms For Energy Minimization On Parallel Machines},1282 JOURNAL = {Journal of Parallel and Distributed Computing},1283 YEAR = {2010},1284 volume = {70},1285 number = {5},1286 pages = {417-430},1287 }1288 1289 1290 @ARTICLE{MOCHOCKI07,1291 AUTHOR = {B. Mochocki and X. Hu and G. Quan},1292 Title = {Transition-Overhead-Aware Voltage Scheduling for Fixed-Priority Real-Time Systems},1293 JOURNAL = {ACM Transactions on Design Automation of Electronic Systems},1294 YEAR = {2007},1295 volume = {12},1296 number = {2},1297 pages = {},1298 }1299 1300 1301 @ARTICLE{HUANG09,1302 AUTHOR = {K. Huang and L. Santinelli and J. Chen and L. Thiele and G. Buttazzo},1303 Title = {Adaptive Dynamic Power Management for Hard Real-Time Systems},1304 JOURNAL = {Proceedings of the IEEE Real-Time Systems Symposium},1305 YEAR = {2009},1306 volume = {},1307 number = {},1308 pages = {},1309 }1310 1311 1312 @ARTICLE{RASHID05,1313 AUTHOR = {M. Rashid and E. Tan and M. Huang and D. Albonesi},1314 Title = {Power-Efficient Error Tolerance in Chip Multiprocessor Systems},1315 JOURNAL = {IEEE Micro},1316 YEAR = {2005},1317 volume = {},1318 number = {},1319 pages = {},1320 }1321 1322 1323 @ARTICLE{QI10,1324 AUTHOR = {X. Qi and D. Zhu and H. Aydin},1325 Title = {Global Reliability-Aware Power Management for Multiprocessor Real-Time Systems},1326 JOURNAL = {IEEE International Conference on Embedded and Real-Time Computing Systems and Applications1327 },1328 YEAR = {2010},1329 volume = {},1330 number = {},1331 pages = {},1332 }1333 1334 1335 @ARTICLE{BEHJAT05,1336 AUTHOR = {L. Behjat and A. Chiang},1337 Title = {Fast Integer Linear Programming Based Models for VLSI Global Routing},1338 JOURNAL = {IEEE International Symposium on Circuits and Systems},1339 YEAR = {2005},1340 volume = {},1341 number = {},1342 pages = {},1343 }1344 1345 @ARTICLE{SHAFIK10,1346 AUTHOR = {R. Shafik and B. Al-Hashimi and K. Chakrabarty},1347 Title = {Soft Error-Aware Design Optimization of Low Power and Time-Constrained Embedded Systems},1348 JOURNAL = {The Proceedings of the DATE},1349 YEAR = {2010},1350 volume = {},1351 number = {},1352 pages = {},1353 }1354 1355 1356 @ARTICLE{JIANG04,1357 AUTHOR = {L. Jiang and D. Liu and B. Yang},1358 Title = {Smart Home Reserch},1359 JOURNAL = {International Conference on Machine Learning and Cybernetics},1360 YEAR = {2004},1361 volume = {2},1362 number = {},1363 pages = {659-663},1364 }1365 1366 @ARTICLE{CHEN09,1367 AUTHOR = {C. Chen and Y. Tsoul and S. Liao, and C. Lin},1368 Title = {Implementing the Design of Smart Home and Achieving Energy Conservation},1369 JOURNAL = {IEEE Conference on Industrial Informatics},1370 YEAR = {2009},1371 volume = {},1372 number = {},1373 pages = {273-276},1374 }1375 1376 1377 @ARTICLE{ROJCHAYA09,1378 AUTHOR = {S. Rojchaya and M. Konghirun},1379 Title = {Development of Energy Management and Warning System for Resident: An Energy Saving Solution},1380 JOURNAL = {International Conference on Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology},1381 YEAR = {2009},1382 volume = {1},1383 number = {},1384 pages = {426-429},1385 }1386 1387 @ARTICLE{ALLCOTT09,1388 AUTHOR = {H. Allcott},1389 Title = {Real Time Pricing and Electricity Markets},1390 JOURNAL = {Working Paper Harvard University},1391 YEAR = {2009},1392 volume = {1},1393 number = {},1394 pages = {},1395 }1396 1397 1398 @ARTICLE{PEDRASA10A,1399 AUTHOR = {M. Pedrasa and T. Spooner and I.MacGill},1400 Title = {Improved Energy Services Provision through the Intelligent Control of Distributed Energy Resources},1401 JOURNAL = {IEEE Bucharest Power Tech Conference},1402 YEAR = {2009},1403 volume = {},1404 number = {},1405 pages = {},1406 }1407 1408 1409 @ARTICLE{PEDRASA10B,1410 AUTHOR = {M. Pedrasa and T. Spooner and I.MacGill},1411 Title = {Coordinated Scheduling of Residential Distributed Energy Resources to Optimize Smart Home Energy Services},1412 JOURNAL = {IEEE Transactions on Smart Grid},1413 YEAR = {2010},1414 volume = {1},1415 number = {2},1416 pages = {134-144},1417 }1418 1419 1420 1421 @ARTICLE{REISS05,1422 AUTHOR = {P. Reiss and M. White},1423 Title = {Household Electricity Demand, Revisited},1424 JOURNAL = {Review of Economic Studies},1425 YEAR = {2005},1426 volume = {72},1427 number = {3},1428 pages = {853-883},1429 }1430 1431 1432 1433 @ARTICLE{HOLLAND08,1434 AUTHOR = {S. Holland and E. Mansur},1435 Title = {Is Real-Time Pricing Green? The Environmental Impacts of Electricity Demand Variance},1436 JOURNAL = {Review of Economics and Statistics},1437 YEAR = {2008},1438 volume = {90},1439 number = {3},1440 pages = {550-561},1441 }1442 1443 @ARTICLE{LORENZ09,1444 AUTHOR = {E. Lorenz and J. Hurka and D. Heinemann and H. Beyer},1445 Title = {Irradiance Forecasting for the Power Prediction of Grid-Connected Photovoltaic Systems},1446 JOURNAL = {IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing},1447 YEAR = {2009},1448 volume = {2},1449 number = {3},1450 pages = {2-10},1451 }1452 1453 1454 @ARTICLE{SULAIMAN09,1455 AUTHOR = {S. Sulaiman and I. Musirin and T. Rahman},1456 Title = {Prediction of Grid-Photovoltaic System Output Using Three-Variate ANN Models},1457 JOURNAL = {WSEAS Transactions on Information Science and Applications},1458 YEAR = {2009},1459 volume = {6},1460 number = {},1461 pages = {},1462 }1463 1464 1465 @ARTICLE{HAAS08,1466 AUTHOR = {R. Haas and N. Nakicenovica and A. Ajanovica and T. Fabera and L. Kranzla and A. M¨¹llera and G. Resch},1467 Title = {Towards Sustainability of Energy Systems: A Primer on How to Apply the Concept of Energy Services to Identify Necessary Trends and Policies},1468 JOURNAL = {Energy Policy},1469 YEAR = {2008},1470 volume = {36},1471 number = {11},1472 pages = {4012-4021},1473 }1474 1475 1476 @ARTICLE{EISA07,1477 AUTHOR = {},1478 Title = {Title \text{XIII}$-$Smart Grid, Sec. 1301-1308, Statement of Policy on Modernization of Electricity Grid},1479 JOURNAL = {Energy Independence and Security Act of 2007 (EISA)},1480 YEAR = {},1481 volume = {},1482 number = {},1483 pages = {},1484 }1485 1486 1487 1488 @ARTICLE{IPAKCHI09,1489 AUTHOR = {A. Ipakchi and F. Albuyeh},1490 Title = {Grid of the future},1491 JOURNAL = {IEEE Power and Energy Magazine},1492 YEAR = {2009},1493 volume = {},1494 number = {},1495 pages = {52-62},1496 }1497 1498 1499 @ARTICLE{MOHSENIAN-RAD10A,1500 AUTHOR = {A. Mohsenian-Rad and V. Wong and J. Jatskevich and R. Schober and A. Leon-Garcia},1501 Title = {Autonomous Demand-Side Management Based on Game-Theoretic Energy Consumption Scheduling for the Future Smart Grid1502 },1503 JOURNAL = {IEEE Transactions on Smart Grid},1504 YEAR = {2010},1505 volume = {1},1506 number = {3},1507 pages = {320-331},1508 }1509 1510 1511 @ARTICLE{PIPATTANASOMPORN09,1512 AUTHOR = {M. Pipattanasomporn and H. Feroze and S. Rahman},1513 Title = {Multi-Agent Systems in a Distributed Smart Grid: Design and Implementation},1514 JOURNAL = {Proceedings on IEEE PES Power Systems Conference and Exposition},1515 YEAR = {2009},1516 volume = {},1517 number = {},1518 pages = {},1519 }1520 1521 1522 @ARTICLE{MOHSENIAN-RAD10B,1523 AUTHOR = {A. Mohsenian-Rad and V. Wong and J. Jatskevich and R. Schober},1524 Title = {Optimal and Autonomous Incentive-based Energy Consumption Scheduling Algorithm for Smart Grid},1525 JOURNAL = {Innovative Smart Grid Technologies (ISGT)},1526 YEAR = {2010},1527 volume = {},1528 number = {},1529 pages = {},1530 }1531 1532 @ARTICLE{MOHSENIAN-RAD10C,1533 AUTHOR = {A. Mohsenian-Rad and A. Leon-Garcia},1534 Title = {Optimal Residential Load Control with Price Prediction in Real-Time Electricity Pricing Environments},1535 JOURNAL = {IEEE Transactions on Smart Grid},1536 YEAR = {2010},1537 volume = {1},1538 number = {2},1539 pages = {120-134},1540 }1541 1542 1543 @ARTICLE{CARON10,1544 AUTHOR = {S. Caron and G. Kesidis},1545 Title = {Incentive-based Energy Consumption Scheduling Algorithms for the Smart Grid},1546 JOURNAL = {IEEE International Conference on Smart Grid Communications (SmartGridComm)},1547 YEAR = {2010},1548 volume = {},1549 number = {},1550 pages = {},1551 }1552 1553 %@ARTICLE{CHEN11,1554 % AUTHOR = {C. Chen and S. Kishore and L. Snyder},1555 % Title = {An Innovative RTP-Based Residential Power Scheduling Scheme for Smart Grids},1556 % JOURNAL = {IEEE International Conference on Smart Grid Communications (SmartGridComm)},1557 % YEAR = {2011},1558 % volume = {},1559 % number = {},1560 % pages = {},1561 %}1562 1563 @ARTICLE{LEE11A,1564 AUTHOR = {J. Lee and G. Park and M. Kang and H. Kwak and S. Lee},1565 Title = {Design of a Power Scheduler Based on the Heuristic for Preemptive Appliances},1566 JOURNAL = {Intelligent Information And Database Systems, Lecture Notes In Computer Science},1567 YEAR = {2011},1568 volume = {6591/2011},1569 number = {},1570 pages = {396-405},1571 }1572 1573 1574 @ARTICLE{LEE11B,1575 AUTHOR = {J. Lee and G. Park and S. Kim and H. Kim and C. Sung},1576 Title = {Power consumption scheduling for peak load reduction in smart grid homes},1577 JOURNAL = {Proceedings of the ACM Symposium on Applied Computing},1578 YEAR = {2011},1579 volume = {},1580 number = {},1581 pages = {},1582 }1583 1584 1585 1586 @ARTICLE{XIONG11,1587 AUTHOR = {G. Xiong and C. Chen and S. Kishore and A. Yener},1588 Title = {Smart (In-home) Power Scheduling for Demand Response on the Smart Grid},1589 JOURNAL = {IEEE PES Innovative Smart Grid Technologies (ISGT)},1590 YEAR = {2011},1591 volume = {},1592 number = {},1593 pages = {},1594 }1595 1596 1597 @ARTICLE{ZHANG11,1598 AUTHOR = {D. Zhang and L. Papageorgiou and N. Samsatli and N. Shah},1599 Title = {Optimal Scheduling of Smart Homes Energy Consumption with Microgrid},1600 JOURNAL = {The International Conference on Smart Grids, Green Communications and IT Energy-aware Technologies},1601 YEAR = {2011},1602 volume = {},1603 number = {},1604 pages = {},1605 }1606 1607 @ARTICLE{KIM11,1608 AUTHOR = {T. Kim and H. Poor},1609 Title = {Scheduling Power Consumption with Price Uncertainty},1610 JOURNAL = {IEEE Transactions on Smart Grid},1611 YEAR = {2011},1612 volume = {2},1613 number = {3},1614 pages = {519-527},1615 }1616 1617 @ARTICLE{VENAYAGAMOORTHY09,1618 AUTHOR = {G. Venayagamoorthy},1619 Title = {Potentials and Promises of Computational Intelligence for Smart Grids},1620 JOURNAL = {IEEE Power and Energy Society General Meeting},1621 YEAR = {2009},1622 volume = {},1623 number = {},1624 pages = {},1625 }1626 1627 1628 @ARTICLE{MOSLEHI10,1629 AUTHOR = {K. Moslehi and R. Kumar},1630 Title = {A Reliability Perspective of the Smart Grid},1631 JOURNAL = {IEEE Transactions on Smart Grid},1632 YEAR = {2010},1633 volume = {1},1634 number = {1},1635 pages = {57-64},1636 }1637 1638 @ARTICLE{LIGHTNER10,1639 AUTHOR = {E. Lightner and S. Widergren},1640 Title = {An Orderly Transition to a Transformed Electricity System},1641 JOURNAL = {IEEE Transactions on Smart Grid},1642 YEAR = {2010},1643 volume = {1},1644 number = {1},1645 pages = {3-10},1646 }1647 1648 @ARTICLE{SORTOMME11,1649 AUTHOR = {E. Sortomme and M. Hindi and S. MacPherson and S. Venkata},1650 Title = {Coordinated Charging of Plug-In Hybrid Electric Vehicles to Minimize Distribution System Losses},1651 JOURNAL = {IEEE Transactions on Smart Grid},1652 YEAR = {2011},1653 volume = {2},1654 number = {1},1655 pages = {198-205},1656 }1657 1658 1659 @ARTICLE{RUSSELL10,1660 AUTHOR = {B. Russell and C. Benner},1661 Title = {Intelligent Systems for Improved Reliability and Failure Diagnosis in Distribution Systems},1662 JOURNAL = {IEEE Transactions on Smart Grid},1663 YEAR = {2010},1664 volume = {1},1665 number = {1},1666 pages = {48-56},1667 }1668 1669 @ARTICLE{MOLDERINK10,1670 AUTHOR = {A. Molderink and V. Bakker and M. Bosman and J. Hurink and G. Smit},1671 Title = {Management and Control of Domestic Smart Grid Technology},1672 JOURNAL = {IEEE Transactions on Smart Grid},1673 YEAR = {2010},1674 volume = {1},1675 number = {2},1676 pages = {109-119},1677 }1678 1679 @ARTICLE{WEI11,1680 AUTHOR = {T. Wei and X. Chen and S. Hu},1681 Title = {Reliability-Driven Energy Efficient Task Scheduling for Multiprocessor Real-Time Systems},1682 JOURNAL = {IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems},1683 YEAR = {2011},1684 volume = {},1685 number = {},1686 pages = {},1687 }1688 1689 1690 @ARTICLE{ANN-PIETTE09,1691 AUTHOR = {M. Ann-Piette and G. Ghatikar and S. Kiliccote and D. Watson and E. Koch and D. Hennage},1692 Title = {Design and Operation of an Open, Interoperable Automated Demand Response Infrastructure for Commercial Buildings},1693 JOURNAL = {Journal of Computing and Information Science in Engineering},1694 YEAR = {2009},1695 volume = {9},1696 number = {2},1697 pages = {1-9},1698 }1699 1700 1701 @ARTICLE{VOJDANI08,1702 AUTHOR = {A. Vojdani},1703 Title = {Smart integration},1704 JOURNAL = {IEEE Power and Energy Magazine},1705 YEAR = {2008},1706 volume = {},1707 number = {},1708 pages = {72-79},1709 }1710 @ARTICLE{TSOUKALAS08,1711 AUTHOR = {L. Tsoukalas and R. Gao},1712 Title = {From smart grids to an energy internet: Assumptions, architecrures, and requirements},1713 JOURNAL = {International Conference on Electric Utility Deregulation and Restructuring and Power Technologies},1714
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。